Tool Search上线,Claude Code token消耗暴降95%

7 阅读5分钟

cover

👀 最新、最有用的AI编程姿势,总来自「知识药丸」

《贾杰的AI编程秘籍》付费合集,共10篇,现已完结。30元交个朋友,学不到真东西找我退钱;)

以及我的墨问合集《100个思维碎片》,1块钱100篇,与你探讨一些有意思的话题(文末有订阅方式


写在前面

就在刚刚,看到 Claude Code 一条推送:Tool Search now in Claude Code

点进去一看,我人傻了。

这个困扰了我整整 4 个月的问题——MCP 工具占满 context window——居然就这么被解决了。

问题有多致命?

先说说这个问题有多恐怖。

我的 Claude Code 配了 7 个 MCP 服务器:GitHub、filesystem、sequential-thinking、brave-search、context7、puppeteer,还有一个 Google Drive。

打开会话,直接给我来了这个:

Context Usage: 67k/200k tokens (33.5%) 还没开始聊,三分之一没了。

更惨的在 GitHub issue #7336 里。有个哥们儿的配置:

  • • MCP tools: 39.8k tokens
  • • Custom agents: 9.7k tokens
  • • System tools: 22.6k tokens
  • • Memory files: 36.0k tokens

108k tokens,占了 54%。

好家伙,200k 的 context window,还没开始干活就烧掉一半。

而且这还不是最糟的。真正要命的是 tool selection accuracy 会随着工具数量暴跌——超过 50 个工具,Claude 挑错工具的概率直线上升。

想象一下,你给 Claude 提供 73 个工具,让它从里面找一个合适的。这就像让人从 73 把相似的螺丝刀里,闭着眼睛挑出最合适的那把。

能选对才怪。

Tool Search 怎么干的?

Anthropic 的解法超级简单:lazy loading(懒加载)。

工作流程是这样的:

  1. 1. 启动时只加载索引 - 不塞所有工具定义进 context,只加载一个 5k tokens 的「工具目录」
  2. 2. 需要时再搜索 - Claude 想用工具时,先搜这个目录
  3. 3. 按需加载 3-5 个 - 只把真正需要的工具加载进来
  4. 4. 自动触发 - 工具描述超过 10% context?Tool Search 自动接管

其他时候,MCP 完全不变。对开发者透明。

两种搜索方式

API 层面提供了两个变体:

Regex 版(tool_search_tool_regex_20251119

用 Python 正则搜索:

  • "weather" - 匹配包含 weather 的工具
  • "get_.*_data" - 匹配 get_user_dataget_weather_data
  • "database.*query|query.*database" - OR 模式

BM25 版(tool_search_tool_bm25_20251119

自然语言搜索。Claude 把需求转成语义查询,找最相关的工具。

用法?加一行:

{  "name": "get_weather",  "description": "Get current weather for a location",  "defer_loading": true  // 就这 }

效果

Token 消耗:

  • • 之前:108k tokens(54%)
  • • 现在:5k tokens(2.5%)
  • 省了 95%

准确率:

  • • Opus 4:49% → 74%
  • • Opus 4.5:79.5% → 88.1%

(数据来自 Anthropic 官方博客)

原本只剩 92k tokens 的场景,现在有 195k tokens 了。

你可以:

  • • 聊更长的对话
  • • 处理更复杂的代码
  • • 加载更多文档
  • • 连接更多 MCP 服务器

Claude Code 的实现

Claude Code 团队没用 Anthropic API 的内置功能,而是自己写了自定义搜索函数

为什么?

因为 Claude Code 的场景更复杂:

  1. 1. 多个 MCP 服务器同时跑 - 不同服务器可能有相似工具,需要更精确匹配
  2. 2. Server instructions 变重要了 - 你可以在 MCP 配置里写"什么时候用这个服务器的工具"
  3. 3. 和 Skills 整合 - Skills 也要按需加载

最妙的是,自动触发

When triggered, tools are loaded via search instead of preloaded

工具定义超过 10% context?Tool Search 自动接管。你什么都不用做。

给 MCP 开发者的建议

如果你在写 MCP 服务器,server instructions 现在变得超级重要了。

以前这个字段是可选的说明。现在是 Claude 决定何时搜索你的工具的关键线索

举例:

{  "name": "database-server",  "instructions": "Use this server when you need to query PostgreSQL databases, search user records, or analyze sales data." }

这样,用户说「查最近的销售数据」时,Claude 就知道该去这个服务器搜工具了。

为什么不早点做?

其实社区早就在折腾各种 workaround:

  • • McPick 工具手动开关 MCP 服务器
  • • 写脚本启动时选择性加载
  • • 优化每个工具的描述长度

都是治标不治本。

Tool Search 是从根上解决——让 Claude 自己决定需要什么工具

这个思路在软件工程里是经典模式:

  • • VS Code 的插件按文件类型懒加载
  • • JetBrains IDE 的功能按项目类型加载
  • • Vim 的 lazy.nvim

现在,这个思路来到了 AI Agent 领域。

一个有意思的细节

文章里提到他们「实验了 programmatic tool calling」(编程式工具调用),最终还是先推 Tool Search。

编程式调用是让 MCP 工具通过代码互相组合,处理更复杂的工作流。

但他们发现,大部分用户更迫切需要的是「减少 context 消耗」,而不是「工具编排」。

Context window 用完了,再强的工具也白搭。

优先级抓得很准。

总结

Tool Search 解决的问题看似简单,实则致命:工具太多会把 context window 撑爆

对普通用户:Claude Code 突然变「聪明」了——记住更多上下文,处理更复杂任务,选工具也更准了。

对开发者:可以放心接入更多 MCP 服务器,不用担心 context 爆炸。

这就是 Anthropic 的思路——不只是扩大 context window,而是让它被更高效地使用

这才是工程。

参考资料

  • • Tool Search now in Claude Code(官方公告)
  • • GitHub Issue #7336: Lazy Loading for MCP Servers
  • • Anthropic 官方文档:Tool search tool
  • • Scott Spence: Optimising MCP Server Context Usage

P.S. 去看看你的 /context 输出。说不定你也在不知不觉中浪费了几万 tokens。


 坚持创作不易,求个一键三连,谢谢你~❤️

以及「AI Coding技术交流群」,联系 ayqywx 我拉你进群,共同交流学习~