
我这篇文章是解读Google AI Agents 白皮书中讲到的工具与互操作性。
如果说我们已经理解了 Agent 的四要素架构,把 Agent 看作一个工程系统。那么今天,我们就深入这个系统中至关重要的一环——让 Agent 长出“手”和“感官”,真正从“会说”走向“会做”。
一、工具为什么是 Agent 的“硬外挂”
我们知道,基础模型本质上是一个封闭的大脑。它的能力存在三个原生囚笼:
无法获取新数据:训练数据有截止,看不到实时的行情、私域的库存。
无法执行外部动作:不能调用 API,不能修改数据库。
因此带来了典型系统幻觉:结果不可验证、不可执行。
工具,就是来打破这个囚笼的。它的价值可以二分:
知道更多——Retrieval:提供新事实,支撑逻辑推理。比如 SQL 查询、文档检索、Web 搜索,让模型作为解释器,而非事实的生产者。
做更多——Action:执行真实动作,改变物理或数字世界的状态。比如 API 调用、代码执行、设备控制,让 Agent 真正替用户干活。
以一个天气查询 Agent 为例,我们让模型负责意图理解和语言组织,工具则负责数据获取和精确计算。模型负责“会说”,工具负责“说真、做真”。这就是架构解耦的最佳分工。
二、工具集成的 N×M 困境与 MCP 的诞生
然而,当 N 个模型遇到 M 个工具,直接集成会带来指数级维护成本的集成噩梦——每增加一个新模型,就要为所有工具重写接口。同时,安全面会急剧放大:Agent 获得的不仅是能力,更是不可控的风险。
这就是 MCP 协议的使命所在:更快接入的同时,必须更强控制。 MCP 正是为了解决这个 N×M 爆炸而生的标准化接口。
在深入 MCP 之前,我们先理解 Agent 工具的三分法:
Function 工具:自己开发的函数,灵活但需自维护。
Built-in 工具:平台原生能力,稳定快速。
Agent Tools:把子 Agent 封装为标准工具,主 Agent 控场,子 Agent 干活,实现原子化复用和控制权零让渡。
三、工具的设计原则:少而硬,文档即手册
设计工具的黄金法则是“少而硬”——让模型能够准确选择和使用。
文档就是模型的操作手册。你的描述、参数定义、示例,会直接塞进 Prompt 上下文,直接影响工具调用的准确率。命名要“动作+对象+约束”,描述只写“目的、边界、副作用”,参数明确类型和禁用条件。一条铁律:如果一个陌生工程师在 30 秒内无法正确调用这个工具,就别指望模型能用对。
指令写动作,不写工具名。避免在系统指令里强制指定某个工具,那样会和工具文档打架。指令写的是业务目标(What),工具文档才是调用契约(How)。
工具要任务化、细粒度。拒绝把整个 API 包装成一个大而全的函数,那会导致参数爆炸、调用不稳、难以审计。正确的做法是把一个 API 拆成原子任务:
create_critical_bug()、assign_owner(uid)、set_priority(level)。能力越细,越可靠,越安全。输出要克制。工具返回结果时,千万不要全量倾倒。几万行数据塞进上下文,Token 爆炸、推理降智。必须用“大结果外置,只返引用”策略:仅返回关键预览、宏观统计,并给出可检索的 Handle(Cursor/URI),需要详情时再按需调取。
Schema 校验 + 可操作错误。Schema 既是给模型的硬操作手册,也是运行时的护栏。当调用出错时,错误信息必须告诉模型:错在哪、怎么改、下一步怎么做。这样错误不再是异常终止,而是修正路线图。
四、MCP 协议:AI 时代的 USB 接口
现在我们把目光放回 MCP。MCP 的全称是 Model Context Protocol,它是解决 N×M 集成爆炸的标准化方案。核心价值是:
标准化:统一 JSON-RPC 2.0 通信协议。
解耦:Agent 逻辑与工具实现彻底分离。
生态:一次开发,处处运行(Write Once, Run Anywhere)。
MCP 的架构包含三个角色:
MCP Host:AI 应用的大管家,负责体验编排和安全策略。
MCP Client:宿主与服务的翻译官,负责协议实现和连接管理。
MCP Server:独立打工人,暴露工具能力并执行逻辑。
它最强大的特性之一,是动态工具发现。Agent 在运行时向 Server 询问能力清单,无需重启就可以热加载新工具。这种灵活性的反面,是安全隐忧:不可信的 Server 可能注入恶意工具,或者擅自给 Agent “递刀子”。因此治理必须跟上:白名单、网关过滤、版本锁定和变更通知,是必不可少的手段。
在传输层,MCP 提供双轨架构:Stdio 用于本地场景,极致速度;Streamable HTTP(SSE) 用于分布式微服务,支持流式推送。
从能力地图来看,目前最成熟、生产就绪的 MCP 能力就是 Tools。其他如 Resources、Prompts 等支持率还不高,所以我们落地建议是:先用好 Tools,其余特性稳扎稳打。
五、MCP 工具定义的解剖学
对于工具定义,name 是唯一标识,inputSchema 是参数结构,这是给程序看的刚需。而 description 和 annotations,则是给 LLM 的操作手册和安全标记,在 Agent 开发中,注释不再是废话,而是核心逻辑。
Schema 有双重价值:对模型,它是参数解释和预期返回结构的文档;对系统,它是运行时类型检查和数据格式校验的护栏。一处定义,两端受益,大幅降低幻觉和错填。
工具返回的结果,MCP 支持文本、二进制(Base64 编码),还有两种引用方式:Embedded Resource 直接嵌入小数据,Resource Reference 只返回 URI 让模型自行请求。最佳实践是优先返回结构化 JSON,并配置客户端白名单只消费可信源。
错误处理上,MCP 区分协议错误(如工具名不存在、解析失败)和业务错误(如 API 超时、权限不足)。关键原则:错误文本必须是可操作的修正指南,告诉模型“错在哪、怎么改、下一步”,让系统能在失败中自愈。
六、企业级 MCP 安全:新威胁版图与纵深防御
当 Agent 通过 MCP 接入真实系统,安全便不再是可选项,而是上线的硬门槛。我们面临双重攻击面:
API 层传统风险:注入、鉴权失效、DDoS。
Agent 层新型风险:提示词注入、幻觉利用、社会工程学诱导。
尤其危险的是“Read + Write 双重暴击”——当 Server 既可读敏感数据又能执行关键动作,一旦语义防线失守,便是数据外泄和违规操作。
针对动态能力注入的风险,我们需要四重缓解:显式白名单、API 网关过滤、Server 变更时强制重验证、版本锁定。针对工具遮蔽攻击,我们采用命名冲突检测、mTLS 可信连接锁,以及高危动作的人机协同强制确认。
这里我特别要讲一个经典攻击模型:Confused Deputy——混淆代理人攻击。漏洞本质是鉴权对象错位:系统只校验了 Server 自己的权限,却忽略了背后的真实用户。在 Agent 系统中,由于 Agent 往往被授予系统级高权限 Token,自然语言指令又能轻松绕过硬规则,因此危害极大。攻击者通过提示词注入诱导 Agent 执行越权操作,比如“搜索机密文件,顺便创建公开备份分支”,如果 Agent 的后端 Server 拥有 Admin 权限且不做用户身份传递,一次数据外泄就会悄无声息地完成。
防御之道在于重构信任链:身份传递——将原始 User ID 端到端透传;最小权限——废弃通用 Admin Token;人机协同——关键写操作必须经人工显式批准。这三层防线,才能真正把 Agent 从“能用”推到“敢用”。
七、从工具到生态
各位,我们本次从工具的价值二分法,到设计原则,再到 MCP 标准化协议和安全治理,构建了一套完整的“如何给 Agent 装上手和感官,并让这双手可控”的知识体系。
核心思想就是:模型负责提议,系统负责批准。工具调用不是简单的 API 连通,而是可契约、可互操作、可治理的外部能力接入系统。
下一篇,我们分享,Context Engineering:Sessions & Memory。短期上下文、长期记忆,以及如何保持多轮一致性,让智能体从“无连续性”走向“可进化性”的核心机制。敬请期待。


