当你接入 5 个 MCP 服务器、34 个工具时,每次对话有 50% 的 token 消耗在工具定义上。Hermes Agent v0.16 的 Tool Search 一次性解决了这个瓶颈,而且不是通过减少工具——是通过"渐进式披露",让模型只加载它需要的那一个。
▲ Tool Search 三桥接工具架构:tool_search 搜索 → tool_describe 加载 Schema → tool_call 调用工具,模型按需加载,上下文窗口节省 85%
问题:MCP 工具在吃掉你的上下文窗口
AI 创业者都会遇到这个场景:给 Agent 接上 GitHub、文件系统、浏览器、数据库、飞书……工具越接越多,Agent 反而越来越"笨"了。
这不是错觉。真实数据来自 Anthropic 工程团队的测量:
- 一个部署了 5 个 MCP 服务器、34 个工具(gong ju)的 Hermes 实例,每次对话平均消耗 45,000 tokens,其中约 22,000 tokens(接近 50%)纯粹是工具定义的 JSON Schema 开销
- Anthropic 自己的数据显示,未优化前工具定义可以吃掉 134,000 tokens
- 学术论文测量的"MCP 工具税"在典型多服务器部署中达到 15,000–60,000 tokens/轮
问题不只是浪费钱。更深层的问题是决策瘫痪(decision paralysis):当模型面前摆着几十个用不到的工具时,它选错工具的概率大幅上升。Anthropic 内部 MCP 评测显示,大工具目录下的准确率只有 49%。
Tool Search 是什么?
Hermes Agent v0.16 的 Tool Search 是一个渐进式披露层(progressive-disclosure layer)。核心理念很简单:不在一开始就把所有工具定义塞给模型,而是让模型按需搜索和加载。
Tool Search 激活后,MCP 和插件的原生工具从模型可见的工具列表中被移除,替换为三个"桥接工具":
一次典型的交互流程是这样的:
模型先搜索自己需要的工具,加载它的 schema,然后调用。整个过程对用户完全透明——你看不到中间步骤,但上下文窗口省下了大量空间。
准确率数据:49% → 74%
这不是一个单纯"省 token"的功能。Tool Search 同时提升了模型准确率。
根据 Anthropic 内部 MCP 评测数据(来源:Anthropic Engineering 博客"Advanced Tool Use"),启用 Tool Search 后:
- 工具选择准确率从 49% 跃升至 74%(使用 Opus 4 模型)
- 工具定义 token 消耗减少 85%
- 完全工具库依然可用——没有删掉任何工具
为什么去掉无关工具反而提高了准确率?因为大工具目录造成"决策瘫痪"——模型在几十个无关选项中犹豫不决,容易选错。把无关选项从上下文窗口移除,假阳性率自然下降。
底层实现:BM25 + 后备匹配
Tool Search 的检索引擎非常轻量,用的是BM25——一个经典的信息检索算法,对工具名称、描述和参数名进行匹配。
BM25 计算每个工具与查询的相关性分数。如果没有任何工具获得正分数(极端情况,比如所有工具名都包含"github"导致 IDF 退化),系统会降级为字面量子串匹配(literal substring match),确保搜索不会返回空结果。
目录是跨轮次无状态的——每轮从当前工具定义列表重新构建。这避免了缓存目录与实际工具注册表不同步的 bug。
▲ 传统模式 vs Tool Search:34 个工具全量加载(49% 准确率)对比渐进式披露(74% 准确率),节省 85% 工具定义 token
配置指南
Tool Search 的配置在 hermes.yaml 中(如果你在用旧版 config.yaml,需要迁移到新版格式):
三个模式的含义:
| 模式 | 行为 |
|---|---|
auto(默认) | 仅当延迟工具 schema 超过上下文窗口的 10% 时激活。低于此阈值时,工具列表直接透传,零开销 |
on | 只要有一个延迟工具就始终激活 |
off | 完全关闭,回到传统模式 |
关键细节:激活阈值是每轮重新评估的。如果某一轮连接的工具很少,Tool Search 自动关闭——你不会为不需要的功能付出任何代价。
什么场景最受益?
Tool Search 不是万能的。以下场景收益最大:
- 多 MCP 服务器部署(3 个以上服务器)——这是设计的核心场景。文件系统 + GitHub + 浏览器 + 数据库 + 飞书,五六个服务器一接,工具 schema 轻松破 30,000 tokens。
- 使用大上下文模型但工具很多——即使你有 200K 上下文,也不代表应该浪费一半在工具定义上。
- 工具选择频繁出错——如果你的 Agent 经常调用错误的工具,试试开启 Tool Search(设为
on而不是auto),很可能立竿见影。
以下场景收益不大:
- 只有 1-2 个 MCP 服务器、工具总数不到 10 个
- 使用小模型(上下文窗口本身就小,threshold_pct=10 可能永远不会触发)
实操步骤
第一步:升级到 v0.16
▲ Tool Search 配置决策:auto 智能激活 / on 始终开启 / off 关闭,threshold_pct 控制激活阈值,多服务器部署收益最大
第二步:检查当前工具负载
如果输出超过 20 个工具,你基本确定需要 Tool Search。
第三步:配置并启用
编辑 ~/.hermes/hermes.yaml(或 config.yaml 根据你的版本):
保存后重启 Gateway:
第四步:验证效果
观察输出——你应该看不到任何不同,但背后的工具调用已经是"搜索→描述→调用"的三步模式了。
踩坑提醒
auto模式可能不触发——如果你的工具总数不多、模型上下文窗口很大,threshold_pct=10可能永远不会达到。如果确定需要 Tool Search,直接设为on。- BM25 对中文查询支持有限——Tool Search 的检索算法基于英文分词。如果你的工具描述是中文的,搜索效果可能打折。建议工具描述使用英文。
- 桥接工具增加了一次往返——Tool Search 意味着每次工具调用从"直接调用"变成"搜索→描述→调用"三步,多了一次工具调用的延迟。对于简单场景(工具少、选择明确),
auto模式会自动跳过这个开销。 - 不是所有工具都被延迟——Hermes 的核心工具(terminal、read_file、write_file 等)不受 Tool Search 影响,始终直接可见。只有 MCP 服务器和插件提供的工具会被延迟。
- v0.16 需要 Python 3.10+——如果你还在用 Python 3.9 或更低版本,升级前先检查 Python 版本。
小结
Tool Search 是那种"看不见但处处受益"的基础设施级改进。它不改变你使用 Hermes Agent 的方式,但默默地把每次对话的成本降低了 50%,同时把工具选择的准确率提升了 25 个百分点。
对于 AI 创业者来说,这意味着:
- 同样的 API 预算,能跑更多轮对话
- Agent 不会因为工具太多而"犯糊涂"
- 不需要在"功能多"和"准确率高"之间做取舍
v0.16 还有一个重磅更新——Hermes Desktop 原生桌面应用,支持远程连接、拖拽文件、简体中文界面。这个话题我们下期拆解。
#AI创业 #Agent工坊 #HermesAgent #MCP #ToolSearch
本文由AI辅助创作,经人工审核编辑发布
