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 Response
3. 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_FAILED
Step 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 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. 最小工程实现伪代码
class A2AClient:
def discover(self, agent_url):
return http_get(f"{agent_url}/.well-known/agent-card.json")
def send_message(self, agent_url, message):
return http_post(
f"{agent_url}/a2a",
json={
"method": "SendMessage",
"params": {
"message": message
}
}
)
class SupervisorAgent:
def __init__(self, registry):
self.registry = registry
def route(self, user_task):
candidates = []
for agent in self.registry:
card = A2AClient().discover(agent.url)
if self.match(user_task, card):
candidates.append((agent, card))
return self.rank(user_task, candidates)[0]
def execute(self, user_task):
agent = self.route(user_task)
response = A2AClient().send_message(
agent.url,
{
"role": "ROLE_USER",
"parts": [{"text": user_task}]
}
)
return response
11. 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/
更多推荐



所有评论(0)