抛弃 MCP?为什么 CLI 正在成为 Agent 的默认工具层

从成本、可靠性、训练分布与安全模型四个维度,解释为什么越来越多 Agent 工作流回到 CLI-first。

过去一年,关于 Agent 工具链的争论越来越集中在一个问题上:

MCP(Model Context Protocol)是让工具调用更简单了,还是把原本简单的事情复杂化了?

在大多数日常开发任务里,CLI 正在成为更实用的默认方案。

成本差异不是“体验问题”,是数量级问题

MCP 最大的现实压力是 token 开销。

常见场景里,MCP 在真正执行任务前,需要先加载大量工具 schema。以 GitHub MCP Server 为例,初始化就可能消耗数万 tokens。对于长任务来说,这会直接挤占上下文预算。

社区基准测试也反复指向同一个结论:

  • MCP 单次调用成本常见是 CLI 的数倍到数十倍
  • 失败重试成本也更高(要重建连接、重新加载上下文)

这不是“慢一点”的差距,而是会放大成 API 费用、时延和稳定性问题。

为什么模型天然更“会用 CLI”

一个常被忽略的事实是训练分布。

LLM 在训练中看过海量终端文本:命令、输出、报错、脚本、man page。也就是说,CLI 交互模式本来就接近模型的“母语输入”。

相反,MCP 的 JSON-RPC 与 tool schema 是近两年才大规模出现的新范式。模型当然能学会,但熟悉度和压缩效率通常不如 CLI 这类历史语料。

这也解释了为什么很多时候:

  • 同样目标,CLI 指令更短
  • 输出更适合直接继续推理
  • 错误恢复路径更稳定

安全与隔离:MCP 还有补课空间

MCP 不是不能做安全,而是生态还在早期。

当前常见担忧包括:

  • 工具描述投毒(Tool Poisoning)
  • 服务行为漂移(Rug Pull)
  • 同名工具覆盖(Shadowing)

CLI 当然也有安全问题(注入、越权、路径风险),但其进程模型、权限边界、审计链路已经经过几十年工程实践验证。对生产环境而言,这种“可预期性”很重要。

这不等于 MCP 没价值

我不认为 MCP 应该被抛弃。

更合理的定位是:

  • CLI 负责执行层(本地、低延迟、高频调用)
  • MCP 负责连接层(远程服务发现、统一认证、审计与多租户)

也就是常说的混合架构:CLI + MCP Gateway

在需要对接大量远程系统、做统一权限治理和合规审计时,MCP 仍然有明显价值;但在“让 Agent 快速完成开发任务”这件事上,CLI-first 往往更符合当前模型能力边界。

在今天的工程现实里,CLI 更像 Agent 的工作母语;MCP 更适合作为连接协议,而不是唯一执行协议。

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计