AI-Agent 中 Agent2Agent(A2A)详解

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 经常一起出现,但它们解决的是不同层次的问题。

协议解决的问题典型通信对象例子
A2AAgent 如何调用 / 委托另一个 AgentAgent ↔ AgentSupervisor Agent 调 Research Agent
MCPAgent 如何调用工具、数据源、API、资源Agent ↔ ToolResearch Agent 调搜索工具、数据库、文件系统

一句话:

A2A 负责 Agent 找 Agent;MCP 负责 Agent 用工具。

典型组合:

User ↓ Supervisor Agent ↓ A2A Research Agent / Code Agent / Report Agent ↓ MCP Search / Database / API / File System ↓ Artifact ↓ Final Response

3. A2A 的核心对象模型

对象含义工程作用
A2A Client发起请求的一方通常是主控 Agent、Supervisor、Orchestrator
A2A Server / Remote Agent接收任务并执行的一方一个独立 Agent 服务
Agent CardAgent 能力说明书暴露身份、技能、接口、认证、模态能力
Message通信消息承载用户输入、Agent 回复或中间交互
Part消息或结果中的最小内容单元文本、文件、结构化数据等
Task一次任务执行单元有 taskId、状态、历史、结果
Artifact任务产物报告、代码、图片、表格、JSON、文件等
Streaming流式更新机制长任务实时返回状态和部分结果
Push Notification异步通知适合长时间任务或断开连接场景

4. 标准 A2A 执行流程

UI / AppTool / MCP / APIRemote AgentClient Agent / SupervisorUserUI / AppTool / MCP / APIRemote AgentClient Agent / SupervisorUser提出复杂任务读取 Agent Card返回能力、技能、接口、认证方式SendMessage / SendStreamingMessageTask submittedTask working调用工具、数据库、MCP Server 或业务系统返回执行结果Streaming status updateArtifact updateTask completed汇总结果并输出

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_FAILED

Step 5:Artifact 返回

Artifact 是 Remote Agent 的实际交付物,例如:

  • report.md
  • analysis.json
  • chart.png
  • code.py
  • summary.txt
  • dashboard.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 Agent

8. 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-agent

Registry 可以是:

  • 静态配置
  • 数据库
  • 服务发现系统
  • 企业 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 traceId

8.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}]})returnresponse

11. A2A 适合哪些业务?

场景A2A 价值
企业知识库不同部门 Agent 协作回答复杂问题
编程 AgentPlanner、Coder、Reviewer、Tester 分工
金融分析数据 Agent、研究 Agent、风控 Agent 协作
电商运营商品 Agent、价格 Agent、广告 Agent、客服 Agent 协作
自动化办公邮件、日历、文档、CRM Agent 联动
数据分析Data Agent、Chart Agent、Report Agent 协作
智能客服售前、售后、订单、物流、知识库 Agent 协同

12. 总结

A2A 是 AI Agent 生态中的Agent 间通信与任务协作标准

它的核心价值是:

  1. 发现能力:通过 Agent Card 知道远程 Agent 能做什么。
  2. 委托任务:Client Agent 可以把任务交给 Remote Agent。
  3. 追踪状态:Task 生命周期让复杂任务可观测。
  4. 流式反馈:长任务可以逐步返回中间状态。
  5. 交付结果:Artifact 让输出结构化、可追踪、可复用。
  6. 保护边界:Agent 可以协作,但不必暴露内部 prompt、memory、tools。
  7. 生态互通:不同框架、不同团队、不同厂商的 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/