Agent 工具体系:从 MCP 协议到层次化工具发现

Agent 工具体系:从 MCP 协议到层次化工具发现

工具是连接 Agent 语言"大脑"与真实数字世界的"手脚和感官"。本章从五类工具的分类出发,系统讨论了工具设计的通用原则、能力分发渠道(MCP 协议与 Skill Hub),以及当工具数量爆炸时的层次化组织与主动发现机制,最后逐类深入分析了感知、执行、协作三类工具的设计要点。

五类工具的分类框架

书中从两个维度来审视工具:调用方向 (交互由谁发起)和作用对象(交互作用于什么),将 Agent 工具分为五类:

工具类型 调用方向 作用对象
感知工具 Agent 主动调用 获取信息
执行工具 Agent 主动调用 改变世界
协作工具 Agent 主动调用 驱动其他 Agent 或人类
用户沟通工具 Agent 主动调用 向用户传递信息
事件触发工具 Agent 注册、外部触发 驱动 Agent 开始执行

前三类由 Agent 主动调用,是本章讨论的核心。事件触发工具和用户沟通工具涉及异步运行时,属于另一层面的设计。

工具设计的通用原则:ACI 与三个维度

能力的表达形式:专用工具 vs Skill

同一项能力可以做成不同形态,构成从专用通用的谱系:

  • 专用工具:结构化函数调用,确定性高、可测试、参数受 schema 约束,代价是每个工具定义占用数百 token。
  • Skill:用自然语言编写的操作文档,Agent 通过终端或代码解释器执行,只需少量通用工具即可覆盖大量场景。

书中提出的默认取向是:通用工具优于专用工具,除非存在安全、权限或性能理由。提供通用执行器(如 code_interpreter)相当于给 Agent 一个"元能力",一个 Python 解释器可以替代数十个特定功能工具。

退回专用工具有四种情况:安全与权限审计需要、屏蔽平台差异、使用频率极高、参数结构复杂。

工具描述的艺术

工具描述的核心是让 LLM 知道"什么时候用",而不只是"能做什么"。书中强调:清晰列出工具的边界条件------做不到什么、不接受什么输入------往往比描述能力本身更重要。参数描述应使用具体例子代替抽象规范,并为每个工具附带 1-5 个真实调用示例,加入示例后工具调用准确率可从约 72% 提升到 90%。

参数传递的保真性

一个容易被忽视的反模式是静默输入转换 ------工具在执行前悄悄"修正"模型的输入参数。书中以 Cursor 的弯引号转直引号问题为例:读取工具原样返回弯引号,替换工具却将其静默转换为直引号,导致匹配失败而模型无法自行诊断。核心原则是:模型感知到的世界与工具操作的世界之间,不能存在系统性偏差

MCP 协议与 Skill Hub:能力分发的两条渠道

MCP:统一工具接入的开放标准

Model Context Protocol(MCP)是 Anthropic 于 2024 年底发布的开放标准,旨在统一 AI 模型与外部工具、数据源之间的通信协议。其核心设计包括:

  • 标准化工具描述格式:通过 JSON Schema 定义参数类型和约束
  • 传输层灵活性:本地采用 stdio,远程采用 Streamable HTTP
  • 三类原语:工具(可执行操作)、资源(只读数据)、提示模板(可复用提示词)

MCP 的生态价值在于"一次开发,处处可用"。一个 MCP 服务器可以同时被 Cursor、Claude Desktop、OpenClaw 等兼容客户端使用。

Skill Hub:更轻量的分发机制

Skill 不需要协议,一个 skill 就是一个装着 SKILL.md 的文件夹,分发机制是注册表。Vercel 的 skills.sh 和 OpenClaw 的 ClawHub 是两个代表性平台。Skill 的常驻上下文成本比 MCP 工具定义便宜一到两个数量级------安装一个 skill 只是往磁盘拷一个文件夹,常驻上下文的只有目录中的 name 和 description。

第三方能力的安全风险

无论走 MCP 还是 Skill Hub,引入第三方能力都意味着把不受控制的文本注入 Agent 上下文。主要风险包括工具描述投毒(提示注入的变种)、恶意或被劫持的服务器、以及同名工具遮蔽。Skill 比 MCP 风险更大,因为它不仅包括工具描述,还包括可能运行在用户电脑上的代码。

工具规模问题:从层次化组织到主动发现

当可用工具从十几个增长到成百上千时,"选哪个工具"本身就成为一个需要设计的问题。书中给出了三层递进的解决方案。

层次化组织与按需加载

最朴素的方案是只暴露索引,需要时再查询具体定义。Cursor 的实践显示,这种方式使 MCP 工具相关任务的总 token 消耗减少了 46.9%。Pi Coding Agent 走得更远:核心模块刻意不内置 MCP,默认只看到一个约 200 token 的代理工具,通过"搜索→查看定义→调用"按需发现后端工具。

模型原生的主动工具发现

更进一步的思路是让 Agent 从被动接受者变为主动发现者:在执行过程中意识到能力缺口时,主动用自然语言声明需求,系统再动态匹配并注入。MCP-Zero 是代表性工作,论文报告在约 2800 个工具上比全量注入节省约 98% 的 token。

动态加载工具会破坏 KV Cache,但 OpenAI 的 tool_searchdefer_loading、Anthropic 的 tool_reference 等原生支持已经解决了这个问题------把新工具的完整 schema 追加到上下文末尾,静态前缀保持稳定。

Skills:把工具发现变成"按需查阅"

Skills 机制采用渐进式披露策略,不再需要嵌入索引和语义匹配基础设施。Agent 启动时只看到一份薄薄的目录,当前上下文真正需要某种能力时,模型才去读取对应的 sub-skill。这更接近人类使用参考资料的方式------顺着索引和目录,根据当下需要逐个查阅。

三类工具的设计要点

感知工具:控制信息量

感知工具的核心挑战是返回信息量可能远超 Agent 处理能力。设计要点包括:

  • 搜索类工具返回结构化候选列表而非全文,提供分页或游标
  • 读取类工具支持 offset/limit 参数,截断时明确标示
  • 只读性带来工程红利:结果可缓存、调用可并行
  • 多模态感知有三种路径:原生多模态处理、提取为文本、工具化分析

执行工具:安全是核心

执行工具的错误代价可能极高,安全机制应构建多层防护体系:

  • 输入验证:路径遍历检查、命令注入检测、快速失败
  • 权限控制:文件操作限制工作目录、命令黑名单、API 配额
  • 提议者-审核者机制:事前审批用不同模型家族的独立审查者,事后验证采用模态切换
  • Sidecar 机制:与主模型流式输出并行的轻量级安全校验,只读结构化工具调用数据,不被提示注入操纵

协作工具:子 Agent 与人工介入

协作工具的核心是子 Agent 的生命周期原语:启动与取消(spawn_subagent、cancel_subagent)、消息传递(send_message_to_subagent)、发现(list_agents)。人工介入(HITL)需要设置超时阈值和默认行为,并形成学习循环------人类的批准、拒绝及其理由构成带证据的反馈数据。

小结

工具设计决定 Agent 的能力上限。本章的核心脉络可以概括为三个层次:第一,能力用什么形式表达------默认往通用端靠,只在安全、参数复杂度等四种情况下退回专用工具;第二,能力靠两条渠道分发------MCP 统一专用工具接入,Skill Hub 用包管理器分发 Skill 文档;第三,当工具增长到成百上千时,层次化组织、按需加载、主动发现与 Skills 依次接管,把"选哪个工具"变成"查哪条资料"。感知工具的关键在粒度与输出控制,执行工具的关键在层次化安全防护,协作工具的关键在子 Agent 生命周期与人工介入闭环。

本文内容整理自开源技术书《深入理解 AI Agent》(bojieli/ai-agent-book),采用 Apache 2.0 许可证

相关推荐
天空属于哈夫克310 小时前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
回眸&啤酒鸭10 小时前
【回眸】Minicart 电商购物车核心功能落地指南
人工智能
一隅论数智10 小时前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
AI的探索之旅10 小时前
97 个 OpenCV 实例(三十):双目立体,从标定到点云
人工智能·opencv·计算机视觉
AlbertZein10 小时前
Step-5-Preview 上手实测:3D 游戏、金融分析、网页设计一次跑完
人工智能·aigc
LaughingZhu10 小时前
Product Hunt 每日热榜 | 2026-09-19
人工智能·深度学习·神经网络·搜索引擎·百度
美狐美颜SDK开放平台11 小时前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
wukangjupingbb11 小时前
智能网联汽车安全能力框架
人工智能
龙亘川11 小时前
明月照湾区,智启新赛道:从顶流文旅IP盛会看智慧文旅升级路径
人工智能·智慧城市·开源软件·数据可视化