AI-Agent 中 Agent2Agent(A2A)详解
主题:AI Agent 系统中的 Agent-to-Agent / Agent2Agent(A2A)通信、任务委托、能力发现、流式状态更新与 Artifact 输出。
适用场景:企业级 Agent 编排、多 Agent 协作、A2A + MCP 架构设计、AI Agent 工程落地。
动态展示效果如下:
1. A2A 是什么?
A2A = Agent2Agent / Agent-to-Agent Protocol,可以理解为 AI Agent 之间的通信与协作协议。
它解决的问题是:
一个 Agent 如何发现另一个 Agent 的能力、把任务委托给它、跟踪任务状态,并拿回结构化结果。
A2A 的重点不是“聊天”,而是任务级协作:
- 能力发现:通过 Agent Card 描述 Agent 会什么、支持什么接口、需要什么认证。
- 任务委托:Client Agent 将任务发送给 Remote Agent。
- 状态追踪:任务有生命周期状态,例如 submitted、working、input required、completed、failed。
- 流式更新:长任务可通过 SSE 或异步通知持续返回进度。
- 结果交付:Remote Agent 生成 Artifact,Client Agent 汇总后输出给用户。
2. A2A 与 MCP 的区别
A2A 和 MCP 经常一起出现,但它们解决的是不同层次的问题。
| 协议 | 解决的问题 | 典型通信对象 | 例子 |
|---|---|---|---|
| A2A | Agent 如何调用 / 委托另一个 Agent | Agent ↔ Agent | Supervisor Agent 调 Research Agent |
| MCP | Agent 如何调用工具、数据源、API、资源 | Agent ↔ Tool | Research Agent 调搜索工具、数据库、文件系统 |
一句话:
A2A 负责 Agent 找 Agent;MCP 负责 Agent 用工具。
典型组合:
User ↓ Supervisor Agent ↓ A2A Research Agent / Code Agent / Report Agent ↓ MCP Search / Database / API / File System ↓ Artifact ↓ Final Response3. A2A 的核心对象模型
| 对象 | 含义 | 工程作用 |
|---|---|---|
| A2A Client | 发起请求的一方 | 通常是主控 Agent、Supervisor、Orchestrator |
| A2A Server / Remote Agent | 接收任务并执行的一方 | 一个独立 Agent 服务 |
| Agent Card | Agent 能力说明书 | 暴露身份、技能、接口、认证、模态能力 |
| Message | 通信消息 | 承载用户输入、Agent 回复或中间交互 |
| Part | 消息或结果中的最小内容单元 | 文本、文件、结构化数据等 |
| Task | 一次任务执行单元 | 有 taskId、状态、历史、结果 |
| Artifact | 任务产物 | 报告、代码、图片、表格、JSON、文件等 |
| Streaming | 流式更新机制 | 长任务实时返回状态和部分结果 |
| Push Notification | 异步通知 | 适合长时间任务或断开连接场景 |
4. 标准 A2A 执行流程
5. A2A 动态链路拆解
Step 1:能力发现
Client Agent 先读取 Remote Agent 的 Agent Card。
Agent Card 通常包含:
- Agent 名称
- Agent 描述
- 支持的技能
- 服务端点
- 认证方式
- 支持输入 / 输出模态
- 是否支持 streaming
- 是否支持 push notification
示例:
{"name":"Research Agent","description":"用于资料检索、摘要、事实校验的远程 Agent","skills":[{"id":"research","name":"Deep Research","description":"执行长任务资料研究并返回结构化报告"}],"capabilities":{"streaming":true,"pushNotifications":true}}Step 2:任务发送
Client Agent 选择合适的 Remote Agent 后发送任务。
{"method":"SendMessage","params":{"message":{"role":"ROLE_USER","parts":[{"text":"请生成一份新能源汽车行业分析报告"}]}}}Step 3:任务执行
Remote Agent 接收任务后进入工作状态。它可能会:
- 调用内部工具
- 调用 MCP Server
- 查询数据库
- 调用企业 API
- 请求人工确认
- 生成中间结果
- 生成最终 Artifact
Step 4:流式状态更新
长任务不能只等最终结果,通常需要实时反馈。
典型状态流:
TASK_STATE_SUBMITTED → TASK_STATE_WORKING → TASK_STATE_INPUT_REQUIRED → TASK_STATE_WORKING → TASK_STATE_COMPLETED如果任务失败:
TASK_STATE_SUBMITTED → TASK_STATE_WORKING → TASK_STATE_FAILEDStep 5:Artifact 返回
Artifact 是 Remote Agent 的实际交付物,例如:
report.mdanalysis.jsonchart.pngcode.pysummary.txtdashboard.html
示例:
{"artifactId":"artifact-report-001","name":"industry_report.md","parts":[{"text":"# 新能源汽车行业分析报告\n..."}]}6. A2A 架构分层
┌────────────────────────────────────────────┐ │ User / Application UI │ ├────────────────────────────────────────────┤ │ Supervisor Agent / Orchestrator │ │ - 任务拆解 │ │ - Agent 选择 │ │ - 多 Agent 编排 │ ├────────────────────────────────────────────┤ │ A2A Client Layer │ │ - 读取 Agent Card │ │ - SendMessage / SendStreamingMessage │ │ - GetTask / SubscribeToTask │ ├────────────────────────────────────────────┤ │ A2A Protocol Layer │ │ - Message │ │ - Task │ │ - Part │ │ - Artifact │ │ - Streaming / Push │ ├────────────────────────────────────────────┤ │ Remote Agent Layer │ │ - Research Agent │ │ - Code Agent │ │ - Data Agent │ │ - Business Agent │ ├────────────────────────────────────────────┤ │ Tool / MCP / API / Database Layer │ └────────────────────────────────────────────┘7. A2A 三种常见协作模式
7.1 Supervisor + Worker 模式
最常见,适合企业系统。
Supervisor Agent ├── Research Agent ├── Data Agent ├── Code Agent ├── Report Agent └── Review Agent优点:
- 路由清晰
- 权限容易管理
- 日志容易追踪
- 便于加入人审和安全策略
缺点:
- Supervisor 可能成为瓶颈
- 调度逻辑复杂
7.2 Peer-to-Peer 模式
Agent 之间直接互相委托。
Agent A ↔ Agent B ↔ Agent C优点:
- 去中心化
- 灵活
- 适合开放生态
缺点:
- 治理复杂
- 容易产生循环调用
- 成本和安全边界更难控制
7.3 Hierarchical 多层模式
适合大型企业或复杂业务系统。
Global Supervisor ├── Research Team Lead │ ├── Web Research Agent │ └── Fact Check Agent ├── Engineering Team Lead │ ├── Code Agent │ └── Test Agent └── Business Team Lead ├── CRM Agent └── Finance Agent8. A2A 的工程开发重点
8.1 Agent Card 服务
必须让外部 Agent 能发现当前 Agent 的能力。
重点字段:
- name
- description
- skills
- capabilities
- endpoints
- authentication
- supported input modes
- supported output modes
8.2 Agent Registry
用于维护 Agent 列表:
agent-registry ├── research-agent ├── code-agent ├── finance-agent ├── hr-agent └── customer-service-agentRegistry 可以是:
- 静态配置
- 数据库
- 服务发现系统
- 企业 API Gateway
- 内部 Agent Marketplace
8.3 Router / Planner
Router 决定把任务交给谁。
判断依据:
- Agent Card 中的 skills
- 历史成功率
- 当前负载
- 权限范围
- 成本
- 延迟
- 用户偏好
- 安全策略
8.4 Task Store
任务需要可追踪:
taskId contextId status createdAt updatedAt assignedAgent messages artifacts cost traceId8.5 Streaming Gateway
用于实时输出:
- SSE
- WebSocket
- Push Notification
- Message Queue
8.6 Observability
生产系统必须记录:
- taskId
- contextId
- traceId
- agentId
- latency
- token usage
- tool usage
- retry count
- error type
- artifact metadata
8.7 Safety Layer
A2A 系统尤其需要安全控制:
- Agent 身份认证
- 调用权限校验
- Prompt injection 防护
- 数据脱敏
- 敏感工具隔离
- Agent 调用白名单
- 循环调用检测
- 成本上限
- 人工确认机制
9. A2A + MPC 的高级组合
如果结合前面提到的MPC(Model Predictive Control),可以形成更强的多 Agent 决策系统。
核心思想:
Supervisor Agent 不只是把任务分发出去,而是模拟未来多步协作路径,评估成本、风险和成功率,再执行第一步并持续重规划。
流程:
当前任务状态 ↓ 生成多个 Agent 协作方案 ↓ 预测每条方案未来 N 步结果 ↓ 计算 reward / cost / risk ↓ 选择最优方案的第一步 ↓ 执行并观察结果 ↓ 重新规划适合:
- 自动化运营
- 自动数据分析
- 编程 Agent
- 金融研究 Agent
- 复杂业务审批 Agent
- 企业知识工作流
10. 最小工程实现伪代码
classA2AClient:defdiscover(self,agent_url):returnhttp_get(f"{agent_url}/.well-known/agent-card.json")defsend_message(self,agent_url,message):returnhttp_post(f"{agent_url}/a2a",json={"method":"SendMessage","params":{"message":message}})classSupervisorAgent:def__init__(self,registry):self.registry=registrydefroute(self,user_task):candidates=[]foragentinself.registry:card=A2AClient().discover(agent.url)ifself.match(user_task,card):candidates.append((agent,card))returnself.rank(user_task,candidates)[0]defexecute(self,user_task):agent=self.route(user_task)response=A2AClient().send_message(agent.url,{"role":"ROLE_USER","parts":[{"text":user_task}]})returnresponse11. A2A 适合哪些业务?
| 场景 | A2A 价值 |
|---|---|
| 企业知识库 | 不同部门 Agent 协作回答复杂问题 |
| 编程 Agent | Planner、Coder、Reviewer、Tester 分工 |
| 金融分析 | 数据 Agent、研究 Agent、风控 Agent 协作 |
| 电商运营 | 商品 Agent、价格 Agent、广告 Agent、客服 Agent 协作 |
| 自动化办公 | 邮件、日历、文档、CRM Agent 联动 |
| 数据分析 | Data Agent、Chart Agent、Report Agent 协作 |
| 智能客服 | 售前、售后、订单、物流、知识库 Agent 协同 |
12. 总结
A2A 是 AI Agent 生态中的Agent 间通信与任务协作标准。
它的核心价值是:
- 发现能力:通过 Agent Card 知道远程 Agent 能做什么。
- 委托任务:Client Agent 可以把任务交给 Remote Agent。
- 追踪状态:Task 生命周期让复杂任务可观测。
- 流式反馈:长任务可以逐步返回中间状态。
- 交付结果:Artifact 让输出结构化、可追踪、可复用。
- 保护边界:Agent 可以协作,但不必暴露内部 prompt、memory、tools。
- 生态互通:不同框架、不同团队、不同厂商的 Agent 可以互相协作。
最终可以记成:
A2A:Agent ↔ Agent MCP:Agent ↔ Tool Task:协作过程的状态载体 Artifact:最终或中间交付物 Agent Card:Agent 的能力说明书参考资料
- A2A Protocol latest specification: https://a2a-protocol.org/latest/specification/
- What is A2A: https://a2a-protocol.org/latest/topics/what-is-a2a/
- A2A and MCP: https://a2a-protocol.org/latest/topics/a2a-and-mcp/
- Key Concepts: https://a2a-protocol.org/latest/topics/key-concepts/
- Streaming & Asynchronous Operations: https://a2a-protocol.org/latest/topics/streaming-and-async/
- Protocol Definitions: https://a2a-protocol.org/latest/definitions/