A2A 入门与使用场景
当 Tool Use、MCP 这些能力逐渐清楚之后,下一步很容易出现一个新问题:
如果一个 Agent 已经不只是自己调工具,而是需要把任务交给另一个独立 Agent 去完成,系统之间应该怎么协作?
A2A 讨论的就是这一层。
这篇文档主要回答 5 件事:
A2A是什么- 它和
MCP的区别是什么 - 它的核心对象为什么是
Task - 什么场景值得上
A2A - 在这个模块里它应该放在什么位置来学
本文参考的主要资料:
1. A2A 是什么
A2A 全称通常写作 Agent2Agent Protocol。
按官方说明,它是一套开放协议,用来支持不同 Agent 系统之间的通信与互操作。
这句话里有两个关键词:
不同 Agent 系统互操作
A2A 不是讨论单个 Agent 内部怎么调工具,而是在讨论:
- 一个 Agent 怎样发现另一个 Agent 的能力
- 怎样把任务发给对方
- 怎样接收进度、状态和最终产物
- 怎样在彼此不共享内部实现的前提下完成协作
可以先这样理解:
A2A 关注的是 Agent 与 Agent 之间怎样以统一方式协作。
2. 为什么会需要 A2A
当系统还是单 Agent 时,很多事都还能在一个进程、一个框架、一个状态树里解决。
但一旦开始出现这些情况:
- 不同团队维护不同 Agent
- 不同 Agent 用不同框架实现
- 某些能力已经是独立服务
- 一个 Agent 需要把子任务交给另一个 Agent
问题就会从“怎么调工具”变成:
怎么和另一个独立 Agent 系统合作。
这时直接把对方当工具调用,有时也能工作,但会逐渐遇到边界:
- 对方不只是一个同步函数
- 对方任务可能会长时 间运行
- 对方会产出阶段性结果和工件
- 对方可能需要自己的权限、认证和任务状态管理
这就是 A2A 的典型出现位置。
3. A2A 的核心对象为什么是 Task
A2A 和普通工具调用很不一样的一点,是它把 Task 放在协议中心。
在 A2A 里,任务通常不是“一次函数调用立即返回”,而是:
- 有唯一 ID
- 有状态生命周期
- 有历史消息
- 有产物
Artifacts - 可以流式更新
- 可以异步通知
A2A 更接近:
把另一个 Agent 当成一个会持续处理任务的远程协作者。
而不是把它当作“一个立刻返回结果的函数”。
4. A2A 的几个核心概念
4.1 Agent Card
Agent Card 可以理解成一个 Agent 的公开说明书。
它通常用来描述:
- 这个 Agent 是谁
- 它能做什么
- 支持哪些输入输出模式
- 有哪些 技能
skills - 能否流式返回
- 支持哪些安全方案
它的作用很像能力发现层。
4.2 Skills
Skills 用来声明这个 Agent 擅长的能力。
例如:
- 法务审查
- 调研摘要
- 日程协调
- 数据清洗
这有助于上游 Agent 判断:
- 这个任务该不该交给它
- 这个 Agent 是不是合适的协作者
4.3 Task
Task 是 A2A 里的工作单元。
它代表一个完整请求从开始到结束的生命周期。
4.4 Artifact
Artifact 是任务产物。
它可以是:
- 文本
- 文件
- 结构化数据
- 增量结果
A2A 不只是“问一句答一句”,也支持更完整的结果交付。
4.5 Streaming / Push Notifications
A2A 规范还考虑了:
- 流式更新
- 长任务重连
- 异步推送
所以它更适合长任务和跨系统协作,而不只是一次短请求。
5. A2A 和 MCP 的区别
这两个概念很容易被放在一起,但它们讨论的问题并不一样。
5.1 MCP 主要是能力接入协议
MCP 的重点是:
- 工具怎么暴露
- 资源怎么暴露
- 提示模板怎么暴露
- 客户端怎么连接 server
它通常是:
把外部能力以统一协议接进 AI 应用。
5.2 A2A 主要是 Agent 互联协议
A2A 的重点是:
- Agent 怎样发现另一个 Agent
- 怎样发起任务
- 怎样追踪进度
- 怎样接收产物
它通常是:
让一个 Agent 系统和另一个 Agent 系统合作。
5.3 一个简单区分
可以这样记:
MCP:连接工具、资源、提示A2A:连接 Agent、任务、产物
6. A2A 和 Tool Calling 的区别
Tool Calling 通常是:
- 当前 Agent 选择一个能力
- 立刻调用
- 得到结果
- 回到本地继续推理
A2A 通常是:
- 当前 Agent 发现另一个远程协作者
- 把任务发给对方
- 接收任务状态变化
- 最后整合对方产物
所以 A2A 常见于:
- 子任务委派
- 多团队协作
- 远程 Agent 编排
- 长流程代理合作
7. 什么场景适合 A2A
7.1 多 Agent 系统是独立部署的
如果多个 Agent 并不在同一运行时里,而是各自独立服务化部署,A2A 就很自然。
7.2 一个 Agent 需要把任务委派出去
例如:
- 主控 Agent 负责拆任务
- 调研 Agent 负责搜集资料
- 合规 Agent 负责审查
- 汇总 Agent 负责整理输出
这时 A2A 的任务模型会比普通函数调用更贴切。
7.3 任务有中间状态和产物
如果远程任务会:
- 持续运行
- 分阶段产出结果
- 需要断线重连
- 需要流式回传
A2A 的协议设计会更合适。
7.4 需要跨框架互联
如果一侧是 LangGraph,另一侧是 OpenAI Agents SDK,还有第三侧是内部自研系统,互联协议的价值会更明显。
8. 什么场景不一定需要 A2A
8.1 单运行时内的多 Agent
如果所有 Agent 都在同一个框架和同一个运行时里,先用框架自己的:
- graph
- workflow
- handoff
- team / crew
通常更简单。
8.2 只是同步工具调用
如果下游能力只是:
- 查一个接口
- 读一个资源
- 返回一段数据
那它往往按工具处理就够了,不一定需要变成远程 Agent。
9. 在这个模块里,A2A 应该放在哪里
推荐放在:
- Tool Use / Function Calling
- MCP 入门与实践
- MCP vs Tool Calling
- 本文
- Workflow vs Agent
- Agent Planning Patterns
这条顺序背后的逻辑是:
- 先理解单 Agent 的工具调用
- 再理解能力接入协议
- 最后进入 Agent 与 Agent 的协作协议
10. 和哪些框架章节一起看最合适
A2A 最适合和这些内容一起看:
- OpenAI Agents SDK 指南
- LangGraph 入门与编排设计
- CrewAI 入门与 Workflow 实战定位
- Microsoft Agent Framework 与 AutoGen 现状
因为到这一步,核心问题已经不是“怎么调一个工具”,而是:
- 怎样做任务委派
- 怎样做远程协作
- 怎样处理跨系统状态与产物
11. 小结
A2A 最适合放在 Agent 协作层来理解。
它不是 MCP 的替代品,也不是普通 tool calling 的升级版。
它真正处理的是:
- Agent 怎样发现另一个 Agent
- 怎样发起和管理任务
- 怎样接收中间状态与最终产物
- 怎样在不同系统之间完成 协作