当前位置: 首页 > news >正文

Claude 如何减少 85% 工具 Token:Tool Search 如何在不破坏 Prompt Cache 和约束解码的情况下实现工具按需加载

随着 Agent 能力增强,工具数量正在快速膨胀。

一个简单的聊天 Agent 可能只有几个工具:

search() calculator() weather()

但进入真实生产环境后,一个企业级 Agent 往往需要接入:

  • GitHub MCP
  • Slack MCP
  • Jira MCP
  • 数据库 MCP
  • 浏览器 MCP
  • 云服务 MCP
  • 内部业务系统 MCP

最终可能拥有数百甚至上千个工具。

问题来了:

这些工具的 schema 会占据大量上下文窗口。

Anthropic 官方提出的 Tool Search,就是为了解决这个问题。

它可以让 Claude 在大量工具环境下减少超过 85% 的工具相关 token 消耗。

但它真正优秀的地方,不只是“少放一些工具描述”,而是在上下文、Prompt Cache、约束解码三个层面同时优化。


传统 Agent:所有工具全部进入 Context

传统 Tool Calling 模式:

Request: system prompt + tools: tool_1 schema tool_2 schema tool_3 schema ... tool_1000 schema + conversation

模型每次请求都会看到完整工具定义。

例如:

{"name":"database_query","description":"Execute SQL query","input_schema":{"properties":{"operation":{"enum":["select","insert","update"]}}}}

这些 schema 不只是文本。

它们承担三个作用:

  1. 告诉模型有哪些工具
  2. 告诉模型参数格式
  3. 提供工具调用约束

当工具数量增长:

1000 tools ↓ 几十万 tokens

会产生:

  • Context 占用增加
  • Prefill 成本增加
  • KV Cache 增大
  • Prompt Cache 容易失效
  • 模型选择工具难度增加

Tool Search 的核心:工具定义仍然存在,但不进入模型上下文

很多人第一次理解 Tool Search 会误解:

Anthropic 是不是不发送这些工具了?

不是。

实际上:

请求中仍然包含:

tools:[github_search,mysql_query,slack_send,...]

完整工具定义仍然发送给 Anthropic API。

但是:

API 会把工具分成两部分:

tools array | | +----------------+ | Tool Search Index | | Context Builder

对于:

defer_loading:true

的工具:

不会直接进入模型上下文。

例如:

原来:

System Prompt github schema mysql schema slack schema 1000 tools Conversation

变成:

System Prompt Tool Search Conversation

模型一开始根本看不到大量工具 schema。


找到工具后,API 如何加载?

用户:

查询 GitHub issue

Claude:

我需要 GitHub issue 工具

调用:

tool_search("github issue")

Tool Search 返回:

github_search_issue

然后 API 自动插入:

tool_reference

展开成:

github_search_issue 完整 schema

进入后续 conversation。

于是模型下一步才看到:

{"name":"github_search_issue","parameters":{...}}

然后调用工具。


最关键的问题:Prompt Cache 会不会被破坏?

这是很多 Agent 架构容易踩坑的地方。

如果简单实现:

第一次: System + 所有工具 第二次: System + 不同工具集合

那么:

Prompt Cache 前缀直接失效。

因为缓存要求:

prefix token 完全一致

Anthropic 的设计:

Cached Prefix: System Prompt + Tool Search Tool + 固定工具 --------------------- Dynamic Context: tool_reference 展开后的工具 schema Conversation

动态工具加载发生在 prefix 后面。

因此:

缓存前缀保持稳定 ↓ Prompt Cache 继续生效

这也是为什么 Tool Search 不是简单的“工具 RAG”。


另一个隐藏问题:工具 schema 还负责约束解码

很多人只关注 token。

但 Tool Schema 还有一个重要作用:

Constrained Decoding(约束解码)。

例如:

工具:

{"operation":{"enum":["select","insert","delete"]}}

模型生成:

{"operation":

Decoder 可以限制:

允许:

select insert delete

禁止:

hello abc random

流程:

JSON Schema ↓ Grammar ↓ Logits Mask ↓ Decoder

那么问题来了:

如果 deferred tool 不在 context 中,

Claude 怎么知道 enum?

答案:

Tool Search 并没有移除工具 schema。

完整 tools array 仍然用于:

1. Tool Search Index 2. Strict Tool Grammar 3. Constrained Decoding

也就是说:

同一个 schema 有三条路径:

Tool Schema | +------------+-------------+ | | | Search Context Decoder Index Loading Grammar

这就是 Anthropic 设计强大的地方:

它不是:

删除工具 schema

而是:

延迟 schema 进入模型上下文

为什么不是所有模型厂商都能直接复制?

这里有一个容易忽略的问题。

很多人看到 Tool Search 后,会想:

我是不是自己写一个 tool router,把工具检索出来?

这并不完全等价。

因为 Anthropic 有 API 层支持:

完整 tools array ↓ 服务器内部: - 建索引 - 管理 tool_reference - 构建 grammar - 保持 cache prefix

如果模型厂商没有类似能力,简单做:

Agent: 每轮动态修改 tools 只发送当前需要工具

可能产生反效果。

例如:

第一次:

System Tool A Tool B

第二次:

System Tool C Tool D

结果:

Prompt Cache miss

每轮都重新 prefill。


甚至:

为了减少:

tool token

反而增加:

cache miss成本

最终:

token下降 但 latency 上升 成本增加

Tool Search 的本质:不是减少工具,而是分离三种职责

优秀 Agent 架构应该把工具 schema 分成三个用途:

Tool Schema | +------------+------------+ | | | Search Index Context Decoder 找工具 给模型看 约束生成

传统方式:

一个 schema 三个任务全部塞进 Context

Tool Search:

一个 schema 三个系统分别使用

对 Coding Agent 的启发

未来 Coding Agent 的工具数量只会越来越多。

例如:

Filesystem MCP Git MCP Browser MCP Database MCP Cloud MCP Issue MCP CI/CD MCP

如果全部进入 Context:

工具 schema 很快成为主要 token 消耗。

更合理的架构:

System Prompt | | Prompt Cache | Tool Search Index | User Intent | Retrieve Tool | Load Schema | Call Tool

总结

Claude Tool Search 看似只是一个:

“减少工具 token 的功能”

但实际上解决的是 Agent 工程中的三个核心问题:

问题传统方式Tool Search
工具 token全部加载按需加载
Prompt Cache容易失效保持 prefix 稳定
约束解码依赖 context schemaAPI 保留完整 schema

所以它减少 85% 工具 token 的真正原因不是删除工具,而是:

让工具 schema 不再同时承担 Context、搜索、解码三个职责,而是在 API 层进行分离。

这也是为什么类似设计不能简单复制到所有模型。如果底层 API 不支持 Tool Search、tool_reference 和 schema grammar 管理,盲目动态修改工具列表,很可能导致 Prompt Cache 频繁失效,最终优化变成反优化。

http://www.jsqmd.com/news/1311916/

相关文章:

  • Redisson配置全解析:连接、序列化与安全实战指南
  • 2026年口碑好的304不锈钢矩形管实力厂家怎么选?基于产能、品质与服务的多维观察 - 优质品牌商家
  • 揭阳市卫生间漏水怎么处理_2026粤东潮汕平原漏水维修价格行情与大全 - 雨婺虹房屋维修
  • 2026 年 7 月新发布:鹿城值得关注的侧摇螺杆启闭机定制厂家有哪些,这款农田灌溉的老物件,竟能帮你省下半大笔渠道维护费,你见过吗?-旺泰闸门 - 企业信息推荐【官方】
  • 固态硬盘价格为什么一直在变?
  • React获取DOM元素全解析:掌握Refs与Hook核心用法
  • 1.54英寸NFC供电电子纸开发全解析:从能量收集到低功耗刷新实战
  • 口碑好的控价服务公司推荐:2026年品牌电商渠道价格管控优选名单 - 优质品牌商家
  • 2026年7月电缆品牌推荐,新能源电缆/电缆/中高压电缆/机器人电缆/综合布线/网线,电缆供应商哪家强 - 品牌推荐师
  • 2026 年新发布:乌恰有实力的格宾网供应商哪家权威,你花高价钱买的护坡材料,为啥比它用得久还省一半成本?-玖龙盛邦护栏网 - 行业鉴选官
  • MiniMax H3 正式发布:新一代AI大模型的全面解析与推荐
  • 2026手机抠图工具盘点:免费无水印的抠图App、小程序与修图软件实测指南 - 办公小帮手
  • 【权威发布】Gartner未公开的AI活动评估框架首次披露:含12个动态权重因子与实时预警阈值
  • Codex AI编程工具核心功能与实战指南
  • 【单片机毕设案例分享】基于 STM32F103 的智能测速报警终端实现 按键可调速的单片机行车监测设备设计(016601)
  • 如何5分钟快速部署AI模型:Sakura启动器完整指南
  • 3分钟快速上手:免费开源图片转3D模型工具ImageToSTL完全指南
  • Servlet :生命周期、配置与实战
  • Android事件分发机制:从原理到实战解决滑动冲突
  • 2026年品质香薰工厂选择指南:从研发到交付的务实参考 - 优质品牌商家
  • 5分钟掌握VideoDownloadHelper:终极网页视频下载解决方案实战指南
  • Bernese 5.2中JPL星历的配置与应用:从DE440到JPLEPH的完整指南
  • 2026 年新发布:毕节地可靠的方矩管定制厂家选型指南,用它搭的花架居然比实木的还耐用?内行人都悄悄囤这玩意儿 - 行业推荐【认证官】
  • Unity手游逆向实战:从il2cpp.so修改闪退到安全Hook技术解析
  • 混合专家架构代码智能模型:DeepSeek-Coder-V2的技术突破与实践应用
  • 别再碎片化学 MySQL!DDL + 数据类型 + JSON 一篇讲透
  • AI正在悄悄改变你的生活?这10个真相越早知道越好
  • SAP ABAP UPDATE TASK与UPDATE FM:异步更新机制与数据一致性保障
  • 2026年集合店加盟赛道观察:莱啦开店模式如何回应宝妈与00后的低成本创业诉求? - 优质品牌商家
  • VMware Ubuntu虚拟机磁盘扩容与空间回收完整指南