#代码工具

宝玉
1周前
对于向深入学习上下文工程(Context Engineering)的同学,这又是一篇必看的文章。 这篇文章讲的是如何解决 MCP 工具太多的问题,但凡你做过 Agent 开发,用了大量 MCP 工具,就会知道 MCP 工具多了后最大的问题就是上下文占用太多,不仅导致成本高,还会影响推理和生成质量。 另外一个问题就是 MCP 工具返回的中间结果也会挤占大量的上下文空间。 看这文章的时候忍不住夸了一下 Manus,他们确实在上下文工程方面探索的很深入了,里面的工程技巧和他们以前分享过的很类似(我一会把之前分享过的 Manus 相关的文章在评论也发一下)。 Anthropic 的方案也很简单直接,就是把“代码”也当作工具的一种,然后从代码中去调用 MCP。 这样做有很多好处: 1. 解决了系统提示词中工具定义太多的问题 不需要在系统提示词中加载所有 MCP 工具,只需要定义一个“代码”工具。 那需要工具了怎么办呢? 这些代码都保存在统一的目录下,去目录检索下就能找到合适的工具了,比如这是文中的一个目录示例: servers ├── google-drive │ ├── getDocument.ts │ ├── ... (other tools) │ └── index.ts ├── salesforce │ ├── updateRecord.ts │ ├── ... (other tools) │ └── index.ts └── ... (other servers) 找不到现成的工具怎么办? 直接现写一个!写完了还可以保存起来下次继续用。 2. 解决了 MCP 工具返回结果太长的问题 比如说我们要用 MPC 工具获取 1 万行数据后筛选转换出合格的数据,就可以先从代码中调用 MCP 工具获取这 1 万行数据,然后从代码中去筛选过滤,最后只返回 5 条数据,这样上下文中就只需要保留那 5 条过滤的数据,而不是像以前一样有 1 万条数据在里面。 3. 解决了数据隐私问题 如果你直接使用 MCP 工具,工具返回的数据都要加载到上下文每次上传给 LLM,用代码就可以对敏感数据先二次处理再加到上下文 4. 中间结果持久化和技能沉淀 代码可以把一些中间结果写入文件保存到硬盘,一方面可以不占用上下文空间,另一方面也可以随时从硬盘避免反复调用 MCP。 还有就是虽然很多代码是临时生成的,但是这些临时生成的代码可以保存下来,沉淀为“技能”(Skill),加上 SKILL .MD 文件就和 Claude Code 的技能一样可以被反复使用了。