A2A 协议(Agent-to-Agent)是 Google 于 2025 年 4 月发布的开放标准,定义了不同 AI Agent 之间的互操作规范。如果说 MCP 协议解决的是"Agent 如何连接工具",那么 A2A 解决的是"Agent 如何协作"——两者共同构成了 2026 年 Agentic AI 的基础设施层。本文从协议架构、核心概念、实现细节到落地方案,全面解析 A2A 的工程化实践。
核心要点
- A2A 是 Agent 间通信的标准化协议,类似于 Web 领域的 HTTP
- 与 MCP 互补:MCP 管"Agent→工具"(纵向),A2A 管"Agent→Agent"(横向)
- 核心四要素:Agent Card(能力发现)、Task(任务管理)、Message(通信载体)、Streaming(实时交互)
- 已获 50+ 企业支持,Google Vertex AI 原生集成
- 生产级应用场景:跨部门 Agent 协作、多租户 Agent 市场、企业 Agent 编排
A2A 与 MCP:互补而非竞争
| 维度 | MCP | A2A |
|---|---|---|
| 解决问题 | Agent 如何使用工具和数据 | Agent 如何相互协作 |
| 通信方向 | Agent → Tool/Resource | Agent ↔ Agent |
| 类比 | USB(设备连接标准) | HTTP(服务间通信标准) |
| 协议角色 | Client/Server | Client/Remote Agent |
| 发现机制 | 工具列表(tools/list) | Agent Card(能力声明) |
| 任务模型 | 请求-响应(单次调用) | 任务生命周期(多轮、长时) |
| 主导方 | Anthropic → Linux Foundation | Google + 50 企业 |
| 适用场景 | 工具集成、数据获取 | 多 Agent 协作、任务委派 |
典型协作模式
code
用户 → 主 Agent
│
├── [MCP] 调用搜索工具获取数据
├── [MCP] 调用数据库读取历史
│
├── [A2A] 委派分析任务给数据分析 Agent
├── [A2A] 委派报告生成给文档 Agent
│
└── 汇总所有结果 → 回复用户
A2A 协议架构
Agent Card(能力声明)
每个 A2A Agent 必须发布一个 Agent Card,描述自身能力,用于服务发现:
json
{
"name": "DataAnalyst",
"description": "Analyzes datasets and generates insights with visualizations",
"url": "https://analyst.example.com/a2a",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true,
"stateTransitionHistory": true
},
"skills": [
{
"id": "data-analysis",
"name": "Dataset Analysis",
"description": "Analyzes CSV/JSON datasets and produces statistical summaries",
"inputModes": ["text/plain", "application/json"],
"outputModes": ["text/plain", "image/png"]
}
],
"authentication": {
"schemes": ["OAuth2", "Bearer"]
}
}
Task 生命周期
A2A 中的 Task 不是简单的请求-响应,而是有完整生命周期:
code
submitted → working → [input-required] → working → completed
→ failed
→ canceled
| 状态 | 含义 | 触发条件 |
|---|---|---|
| submitted | 任务已提交 | Client 发送新任务 |
| working | Agent 处理中 | Agent 开始执行 |
| input-required | 需要补充信息 | Agent 需要 Client 提供更多输入 |
| completed | 任务完成 | Agent 生成最终结果 |
| failed | 任务失败 | 执行出错 |
| canceled | 任务取消 | Client 主动取消 |
Message 与 Part
json
{
"role": "agent",
"parts": [
{
"type": "text",
"text": "Analysis complete. Here are the key findings:"
},
{
"type": "file",
"file": {
"mimeType": "image/png",
"data": "<base64-encoded-chart>"
}
},
{
"type": "data",
"data": {
"summary": {"mean": 42.5, "median": 38.0, "std": 12.3}
}
}
]
}
实现示例
Python A2A Server
python
from a2a import A2AServer, AgentCard, Task, Message, TextPart
card = AgentCard(
name="CodeReviewer",
description="Reviews code for bugs, security issues, and best practices",
skills=[{
"id": "review",
"name": "Code Review",
"inputModes": ["text/plain"],
"outputModes": ["text/plain", "application/json"]
}]
)
server = A2AServer(card)
@server.on_task
async def handle_task(task: Task) -> Task:
code = task.messages[-1].parts[0].text
review_result = await perform_review(code)
task.add_message(Message(
role="agent",
parts=[TextPart(text=review_result)]
))
task.status = "completed"
return task
server.run(port=8080)
TypeScript A2A Client
typescript
import { A2AClient, Task } from '@anthropic-ai/a2a-sdk';
const client = new A2AClient('https://reviewer.example.com/a2a');
const card = await client.getAgentCard();
console.log(`Agent: ${card.name}, Skills: ${card.skills.length}`);
const task = await client.createTask({
messages: [{
role: 'user',
parts: [{ type: 'text', text: 'Review this Python function...' }]
}]
});
const result = await client.waitForCompletion(task.id);
console.log(result.messages.at(-1).parts[0].text);
企业级落地方案
场景:跨部门 Agent 协作
code
┌─────────────────────────────────────────┐
│ A2A Orchestrator │
│ (企业 Agent 编排层) │
└─────────────┬───────────────────────────┘
│
┌─────────┼─────────┬──────────┐
▼ ▼ ▼ ▼
┌────────┐┌────────┐┌────────┐┌────────┐
│ 销售 ││ 法务 ││ 财务 ││ 技术 │
│ Agent ││ Agent ││ Agent ││ Agent │
└────────┘└────────┘└────────┘└────────┘
│ │ │ │
[MCP] [MCP] [MCP] [MCP]
│ │ │ │
CRM DB 合同库 ERP系统 代码仓库
安全模型
| 层级 | 机制 | 说明 |
|---|---|---|
| 传输层 | mTLS | Agent 间通信加密 |
| 认证层 | OAuth 2.0 / JWT | Agent 身份验证 |
| 授权层 | RBAC + Skill 级别 | 细粒度能力授权 |
| 审计层 | Task 日志 + Trace | 完整操作可追溯 |
与现有框架集成
| 框架 | A2A 支持状态 | 集成方式 |
|---|---|---|
| LangChain/LangGraph | ✅ 官方适配器 | a2a-langchain |
| CrewAI | ✅ 原生支持 | 内置 A2A Transport |
| AutoGen | ✅ 社区插件 | autogen-a2a |
| Google ADK | ✅ 原生 | Agent Development Kit |
| Semantic Kernel | 🔄 开发中 | Microsoft 适配中 |
总结
A2A 协议为 2026 年的多 Agent 系统提供了标准化的协作基础设施:
- 发现:Agent Card 让 Agent 能自动发现彼此的能力
- 通信:结构化 Message 支持文本、文件、数据等多模态交互
- 协作:Task 生命周期管理让复杂的多轮协作有据可查
- 安全:内置认证授权机制满足企业级要求
对于正在构建多 Agent 系统的团队,建议从"Agent Card 定义"开始,逐步实现 A2A Server 接口。与 MCP 协议搭配使用,形成完整的 Agent 基础设施栈。