A2A协议:Agent间通信的开放标准
什么是A2A
A2A(Agent-to-Agent Protocol)是Google提出的开放协议,解决不同来源的Agent之间如何互操作的问题。类比:MCP = Agent与工具之间的USB-C,A2A = Agent与Agent之间的互联网协议。
核心概念
AgentCard(智能体名片)
每个Agent发布一张"名片",描述自己的能力:name、description、url、capabilities、skills。其他Agent通过AgentCard发现和匹配。
{
"name": "travel-planner",
"description": "旅行规划Agent",
"url": "https://agent.example.com/a2a",
"capabilities": { "streaming": true, "pushNotifications": true },
"skills": [{ "id": "plan-itinerary", "name": "行程规划" }]
}
Task(任务)
Agent间交互的基本单元是Task。生命周期:submitted → working → completed / failed / canceled / input-required。
Message & Part
Task中包含Message,Message由多个Part组成。支持文本、文件、表单数据、流等多种Part类型。
Artifact(产出物)
Agent完成Task后返回的成果,同样由Part组成。
通信协议:HTTP + JSON-RPC 2.0
// 请求
{
"jsonrpc": "2.0", "id": "task-001",
"method": "tasks/send",
"params": { "id": "task-001", "message": { "role": "user", "parts": [...] } }
}
// 响应
{
"jsonrpc": "2.0", "id": "task-001",
"result": { "id": "task-001", "status": {"state": "completed"}, "artifacts": [...] }
}
长任务通过SSE(Server-Sent Events)推送进度更新。
A2A vs MCP:互补而非竞争
| 维度 | MCP | A2A |
|---|---|---|
| 通信对象 | Agent ↔ 工具 | Agent ↔ Agent |
| 关系 | 主从 | 对等 |
| 核心原语 | Tools / Resources / Prompts | Task / Message / Artifact |
| 状态管理 | 无状态 | Task状态机 |
联合使用:一个Agent通过MCP连接工具,通过A2A与其他Agent协作。
2026年生态
- 50+技术合作伙伴支持(AWS、Azure、Salesforce等)
- 与LangGraph、CrewAI、AutoGen的适配层建设中
- Google Cloud已提供A2A托管服务
避坑经验
- A2A还在快速演进中,API可能变化,不要过早深度绑定
- AgentCard描述越精准,被其他Agent发现和匹配的效率越高
- 长任务必须用SSE,HTTP请求有超时
- 不透明执行:Agent间不共享内部逻辑,既是安全特性也是调试难点