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

发布时间:2026/9/21 2:05:36

Claude 如何减少 85% 工具 Token:Tool Search 如何在不破坏 Prompt Cache 和约束解码的情况下实现工具按需加载 随着 Agent 能力增强工具数量正在快速膨胀。一个简单的聊天 Agent 可能只有几个工具search() calculator() weather()但进入真实生产环境后一个企业级 Agent 往往需要接入GitHub MCPSlack MCPJira 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 不只是文本。它们承担三个作用告诉模型有哪些工具告诉模型参数格式提供工具调用约束当工具数量增长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 issueClaude我需要 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 三个任务全部塞进 ContextTool 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 频繁失效最终优化变成反优化。
延伸阅读

更多相关文章

2026/9/21 2:05:34

嵌入式MIPI DSI触摸屏驱动实战:从硬件连接到LVGL集成

1. 项目概述:7-DSI-TOUCH-C 是什么?最近在调试一块新的核心板,板载的显示屏接口是 MIPI DSI,触摸屏是 I2C 接口的电容屏。在 CubeMX 里配置引脚时,看到那个 “DSI_HOST” 和 “I2C2” 的标签,突然就让我想起…

2026/9/19 19:43:33

虚幻引擎射线检测实战:从原理到精准交互实现

1. 项目概述:射线检测在虚幻引擎中的核心地位在虚幻引擎(UE4/UE5)里做交互,尤其是涉及到从屏幕上那个小小的2D光标去“触碰”3D世界里某个具体的物体或位置时,射线检测(Raycast)绝对是你绕不开的…

2026/9/21 2:02:30

3DES源代码全解析:加解密实现、CBC模式与踩坑指南

简介:3DES源代码包面向信息安全与密码学学习者,提供加密与解密的完整实现,可直接用于理解三重DES算法的工作流程。资源共11个文件,核心为main.cpp源程序,并配有可执行exe、C工程配置文件(cbp/layout/depend…

2026/9/21 2:02:30

大模型入门指南:从零开始的技术路线与实战经验

1. 大模型转行指南:从零开始的认知重塑去年夏天,我偶然在GitHub上看到一个用Stable Diffusion生成动漫头像的项目,当时完全看不懂那些术语——transformer、LoRA、prompt engineering...但正是这种"看不懂"激发了我的好奇心。三个月…

2026/9/21 2:02:30

单点、多点、混合接地:PCB地设计完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:02:30

Ghidra逆向工程实战:从安装配置到脚本化批量分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 2:02:30

UL 1562电热器具安全标准解析:从范围判定到落地测试

简介:这份PDF为美国保险商实验室发布的《UL 1562-2020-08-11》干式配电变压器安全标准,面向额定电压超过600伏的变压器制造商、设计人员及电力行业相关工程与质检从业者。标准基于2013年第四版并于2020年8月11日修订,重点更新了绝缘系统的要求…

2026/9/21 1:57:30

SAP按销售订单结算全解析:从配置到月结实践

简介:按销售订单结算之SAP系统的配置及操作是一份聚焦SAP中按单结算场景的专业操作资料,面向SAP实施顾问、财务成本控制关键用户及制造企业IT人员,重点区分“无差异模式”与“有差异模式”两种业务场景,系统梳理从生产订单结算、销…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/20 5:01:23

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/20 5:09:33

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码