跳到主要内容

层次化组织与按需加载

工具过多会带来什么具体伤害?​

  • 选择精度: 工具数量超过一百个时,即使最先进的大语言模型也容易在工具选择上出错;
  • 上下文成本: 全部平铺进上下文要占去大量 token;
  • 缓存: 每一次工具集的变动都会击穿 KV Cache;
  • 定位: 这是“工具太多怎么办”的第一层答案——工具定义仍然事先备好,只是不再全量塞进上下文;

按需加载如何只暴露索引?​

  • 问题规模: 仅仅 5 个 MCP 服务器就可能引入数万 token 的工具定义开销,在 200K 的上下文窗口里还没开始对话就用掉了近三成;
  • Cursor 方案: 将工具描述同步到文件夹中,Agent 默认只看到工具名称的索引,需要时再查询具体的定义;
  • 效果: A/B 测试显示,这种方式使 MCP 工具相关任务的总 token 消耗减少了 46.9%;

Pi Coding Agent 的架构取舍是什么?​

  • 取舍: 核心模块刻意不内置 MCP,优先建议把能力封装成带 README 的 CLI 工具、再由 Skills 按需加载;确实需要 MCP 生态时通过扩展接入;
  • 社区折中: pi-mcp-adapter 让模型默认只看到一个约 200 token 的代理工具,通过“搜索→查看定义→调用”按需发现后端工具,MCP 服务器也延迟到首次使用时才启动;
  • 结论: 是否采用 MCP 作为互操作协议与是否在会话开始时暴露所有 MCP 工具定义是两个独立决策;
  • 建议: 后端保留 MCP 的生态兼容性,前端仍应以 CLI + Skills 或代理工具实现渐进式披露,避免服务器越接越多时上下文和 token 开销同步膨胀;

工具应按什么结构分类组织?​

  • 方式: 按信息源的性质分类,并在系统提示词中显式说明分类结构,帮助 LLM 快速定位相关工具组;
  • 搜索工具: 主动查找信息——网络搜索、知识库搜索、文件搜索;
  • 读取工具: 从已知位置提取内容——网页阅读、文档读取、数据库查询;
  • 解析工具: 处理非结构化数据——图片 OCR、视频分析、音频转录;
  • 查询工具: 访问结构化数据源——天气 API、股票 API、公开数据库;

检索式预筛选的效果如何?​

  • 机制: 不把全部工具定义一次性注入上下文,而是按语义相似度先筛出一批候选工具再注入;
  • 依据: 可用工具达到上百个时,平铺到上下文中既浪费 token 又干扰决策;
  • 数据: Anthropic 的实验显示,这种按需检索的方式使 Opus 4 在工具使用基准上的准确率从 49% 提升到 74%;
  • 局限: 它按用户的初始查询做一次性匹配,任务中途出现的新需求无法覆盖,见 主动工具发现与动态加载;