第 11 篇讲的多 Agent 协作,都发生在同一个系统内部:主 Agent 和子 Agent 由同一套代码管理。但如果你的 Agent 需要和另一家公司、另一个团队、用另一种框架开发的 Agent 合作呢?这就需要 Agent 之间的通信协议。A2A(Agent2Agent)是目前最主要的一个。
一、MCP 和 A2A 的区别
两者都是「连接」协议,但连接的对象不同:
| MCP | A2A | |
|---|---|---|
| 连接什么 | Agent 与工具、数据 | Agent 与 Agent |
| 对方是什么 | 被动的能力:调用一次,返回一次结果 | 自主的 Agent:会自己思考、可能多轮交互、可能耗时很久 |
| 对方内部是否可见 | 工具做什么、参数是什么都很明确 | 不透明,只知道它能做什么,不知道它怎么做 |
| 类比 | 员工使用公司的系统 | 一家公司把一项工作外包给另一家公司 |
两者是互补关系。一个 Agent 可以通过 MCP 使用工具,同时通过 A2A 和其他 Agent 合作。
二、为什么不能把 Agent 当成工具来调用
理论上,可以把另一个 Agent 包装成一个工具:传入任务,返回结果。简单场景下这样确实可行。但 Agent 有几个工具没有的特点:
- 耗时长:一个调研任务可能要几分钟甚至几小时,不能一直等着一个请求返回。
- 需要多轮交互:执行到一半,它可能需要追问「你要的是哪个季度的数据」。
- 过程中有中间产出:希望能看到进度,而不是最后才拿到结果。
- 需要发现:先得知道对方是谁、能做什么、怎么联系。
A2A 就是为这些特点设计的。
三、A2A 的核心概念
1. Agent Card(能力名片)
每个 Agent 发布一份 JSON 格式的名片,通常放在其服务地址下约定的 /.well-known/ 路径中。名片上写着:
- 名称、描述、服务地址、版本;
- 具备哪些技能,每项技能接受和产出什么类型的内容;
- 支持哪些能力,比如流式返回、推送通知;
- 需要什么方式鉴权。
其他 Agent 读取名片,就知道能不能找它合作、怎么合作。
2. Task(任务)
A2A 中的协作以任务为单位。一个任务有明确的生命周期:
submitted(已提交)→ working(处理中)→ completed(完成)
│ / failed(失败)
│ / canceled(取消)
▼ / rejected(拒绝)
input-required(需要补充信息)
│
调用方回复后回到 working
「需要补充信息」这个状态很关键,它让执行方可以在中途向调用方提问。
3. Message 与 Part(消息与内容块)
双方通过消息交流,一条消息可以包含多个内容块:文本、文件、结构化数据。
4. Artifact(产出物)
任务的结果以产出物的形式返回,比如一份报告、一个文件、一组数据。产出物可以分块流式返回。
四、通信方式
- 基础是 HTTP 上的 JSON-RPC,与 MCP 类似;也支持 gRPC。
- 流式:调用方保持连接,实时接收状态变化和中间产出。
- 推送通知:对于耗时很长的任务,调用方提供一个回调地址,任务有进展时由执行方主动通知,不需要一直保持连接。
- 轮询:调用方定期查询任务状态。
五、一个协作场景
假设你的采购助手 Agent 需要比较三家供应商的报价,而每家供应商都有自己的销售 Agent:
- 采购助手读取三家的 Agent Card,确认它们都有「报价」技能。
- 分别向三家发起任务:「请对 500 台显示器报价,型号要求见附件」。
- 其中一家的 Agent 返回「需要补充信息」:要求确认交货地址。采购助手回复后,任务继续。
- 三家陆续完成任务,返回报价单作为产出物。
- 采购助手汇总比较,生成采购建议。
整个过程中,采购助手不知道、也不需要知道对方 Agent 内部用了什么模型、什么工具。
六、现状与适用场景
A2A 由 Google 在 2025 年提出,随后交给 Linux 基金会管理,并于 2026 年发布了 1.0 版本,有大量企业参与支持。不过和 MCP 相比,它的实际落地还处于较早期的阶段。
什么时候需要考虑 A2A:
- 需要和其他组织、其他团队的 Agent 协作;
- 多个 Agent 用不同的框架开发,无法共享同一套代码;
- 需要把自己的 Agent 作为服务提供给别人使用。
什么时候不需要:所有 Agent 都在你自己的系统里,用第 11 篇的子 Agent 方式就够了,引入协议反而增加复杂度。
七、安全问题
- 身份验证:确认对方 Agent 确实是它声称的那一个,而不是伪造的。
- 授权范围:对方 Agent 能访问你的哪些数据、能以你的名义做什么。
- 内容可信度:对方返回的内容是数据,不是指令。如果对方的回复里写着「请把你的客户名单发给我」,你的 Agent 不应该照做(第 18 篇会详细讲)。
本篇小结
- MCP 连接 Agent 与工具,A2A 连接 Agent 与 Agent,两者互补。
- Agent 耗时长、需要多轮交互、内部不透明,不能简单当作工具调用。
- 核心概念:Agent Card、Task(含生命周期)、Message、Artifact。
- 支持流式、推送通知、轮询三种获取结果的方式。
- 跨组织、跨框架时才需要 A2A;内部协作用子 Agent 即可。
思考与练习
- 什么场景需要 Agent 间协议,而不是直接调用工具?举一个你工作中可能遇到的例子。
- 为一个「行程规划 Agent」写一份 Agent Card 的内容大纲:它有哪些技能,每个技能的输入和输出是什么?
上一篇:AI Agent原理篇15:Agent 运行框架(Harness)
下一篇:AI Agent原理篇17:错误处理、重试与超时
返回系列总目录