Skip to content
Calvin's Blog

CLI 与 MCP:为什么懒加载工具定义能显著降低 Token 成本

Feb 28, 2026 — AI, Agents, Tool, Reading

当你把 Agent 接到越来越多外部工具时,成本通常不是先爆在推理,而是爆在“工具说明书”。

这篇文章最有价值的点,不是 MCP 与 CLI 谁“先进”,而是它把一个常被忽略的问题量化了:工具定义何时被注入上下文,直接决定了长期运行成本

先看结论

作者给出的实测模型是:6 个服务、每个服务 14 个工具(共 84 个工具)。

在这个设定下,作者统计的总体结果是:CLI 方案大约可减少 94% 的 token 消耗

为什么会差这么多

本质是“预加载”与“按需加载”的差异。

MCP 的默认思路

MCP 的优势是规范化与可组合性:工具定义、参数约束、调用方式都统一。但代价是,如果把完整 Schema 一次性塞进上下文,初始 token 就会很重。

优点:

代价:

CLI 的思路

CLI 方案把“工具存在性”与“工具细节”拆开:

  1. 先告诉模型有哪些命令可用
  2. 真正要用时再通过 --help 或子命令文档拉取细节

优点:

代价:

Tool Search 的位置

文章还提到 Anthropic 的 Tool Search:它同样采用“先索引、后拉取”思路,能显著减少初始注入成本,但按需拉取时仍会引入额外 token。

这说明一件事:方向已经明确,行业正在从“全量注入”转向“检索 + 按需展开”。差别主要在于展开粒度与生态兼容性。

如何在工程里落地

如果你已经有一批 MCP Server,不必做二选一,推荐按下面的增量路径推进。

1. 先做可观测性

把以下指标单独打点,否则很难判断优化是否有效:

2. 按工具分层

把工具分成三类:

3. 控制展开粒度

不要一次拉全量 schema,优先拉:

其余复杂参数(例如深层嵌套结构)只在模型明确需要时再展开。

4. 做本地缓存

同一会话内对同一工具的帮助文档做缓存,避免重复消耗。跨会话也可以做短期缓存,但要考虑工具版本变化后的失效策略。

什么时候不必强行优化

如果你的场景具备以下特征,收益可能没有想象中大:

这种情况下,保持简单、稳定、可维护,通常优先级更高。

最终建议

不要把问题变成“CLI vs MCP”的站队题。真正要优化的是:在不牺牲可靠性的前提下,最小化工具信息进入上下文的体积与时机

从工程实践看,谁能把“工具发现、展开、缓存、失效”这一层做扎实,谁就能在成本和效果之间拿到更好的平衡。