Agent 工具数量变多、上下文被工具定义占满时使用——设计工具发现与渐进式披露机制、实现 discover_tools 元工具与两层语义路由、选择索引式/检索式/主动发现/Skills 方案、处理动态加载破坏 KV Cache 的问题、评估 token 成本与工具选择准确率时查阅。含渐进式加载五步流程、工具数量阈值与关键实验数据。
82%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
| 工具规模 | 推荐方案 |
|---|---|
| 十几个 | 全量注入,无需额外机制 |
| 几十个 | 只暴露索引,按需查定义 |
| 上百个 | 检索式预筛选(top-k 后注入) |
| 上百至上千 | 主动工具发现(元工具 + 两层语义路由)或 Skills 渐进式披露 |
| 上千 | Skills / Skill Hub;专用工具须另建索引层 |
层次化组织按信息源性质分类,并在系统提示词中显式说明,帮助 LLM 快速定位工具组:搜索工具(主动查找:网络/知识库/文件搜索)、读取工具(从已知位置提取:网页阅读、文档读取、DB 查询)、解析工具(处理非结构化数据:OCR、视频分析、音频转录)、查询工具(访问结构化数据源:天气、股票、公开数据库 API)。
name + description(数百 token),不注入完整 schema。<tool_request>server: GitHub for repository operations; tool: search repositories by keyword</tool_request>。系统提示词中只保留少数基础工具(web_search、code_interpreter)加一个 discover_tools 元工具。两层匹配候选相似度都低于阈值时,明确返回"未找到",让 Agent 改写需求重试、用基础工具手工实现,或创造新工具。
| 策略 | 注入内容 | 适用 |
|---|---|---|
| 全量注入(all-tools) | 全部 N 个 schema,token 随目录规模线性增长 | 工具少的基线 |
| 检索预筛选(retrieval) | 按初始查询语义 top-k | 工具上百、需求可预估 |
| 主动发现(active) | Agent 迭代声明需求,上下文按需增长 | 工具上千、多步骤跨领域任务 |
实测(top-k=5):全量注入 35 个工具 3,857 token,且 400 个工具时涨到 40,258 token;retrieval 恒为约 540-550 token 且 recall 保持 100%——按需选择把"选哪个工具"变成"查哪条资料",且成本不随生态规模膨胀。
tool_search + defer_loading(要求后续请求保持 tool_search_output 项的原位置,同一工具无需重复加载);Anthropic tool_reference(在会话历史原位置内联展开 block,官方文档明确后续每轮保持缓存命中);Codex CLI 默认开启 tool_search。不需要嵌入索引、检索元工具、tool_search/tool_reference 这类基础设施。Agent 启动时只看到一份薄目录(每个 skill 的 name + description),当前上下文真的需要某种能力时,才读取对应 sub-skill,并顺着引用再往下读具体脚本或子文档。类比:没人会把工具书从第一页读到最后一页,而是顺着索引按需查词条。专用工具要达到同样的渐进式披露,必须在工具之外另建一层基础设施——这正是那些机制存在的理由。
实验 4-1 的做法(Qwen3-4B 面对 120+ 工具):
web_search、code_interpreter、discover_tools;discover_tools 收自然语言需求,经嵌入相似度返回 3-5 个候选及完整 schema;新定义追加到对话历史,状态栏更新工具名列表;提示词引导模型在遇到能力缺口时主动调用 discover_tools。chapter4/active-tool-discovery/ — 在 126 个跨领域工具上对比全量注入 / 检索预筛选 / 主动发现;python demo.py --offline 跑通机制,run_exact_experiment.py 是正式实验入口。chapter4/active-tool-selection/ — MCP-Zero 风格教学实现:<tool_request> 结构化请求、服务器级→工具级两层语义路由、demo_comparison.py --offline 输出 recall/token/规模曲线。book/chapter4.md「工具太多怎么办:层次化组织与主动工具发现」bojieli/ai-agent-book
dbc046e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.