A2A 协议 Agent2Agent
AI Agent之间的互联网:让不同厂商的AI直接对话
"MCP让AI能使用工具,但AI和AI之间还是各说各话。就像每个公司都有自己的电话系统,但彼此打不通。2025年4月,Google发布了A2A协议。这一次,不是给AI配工具,而是让AI之间能直接聊天。"
🌐 一句话理解
A2A = AI Agent之间的通用语言。MCP解决AI→工具的问题,A2A解决AI→AI的问题。它让不同公司、不同框架的AI Agent能够互相发现、通信和协作。
💡 周星驰式吐槽理解
MCP是给AI配电话——AI可以打电话给工具(搜索引擎、数据库)。A2A是给AI建了一个互联网——AI可以打电话给其他AI。你的OpenClaw Agent可以跟Google的Gemini Agent、Microsoft的Copilot Agent聊天,一起干活。就像你用微信可以给用WhatsApp的朋友发消息一样——虽然底层不一样,但能通。
⚖️ MCP vs A2A:关键区别
| 特性 | MCP | A2A |
|---|---|---|
| 解决什么问题 | AI如何调用工具 | AI如何与其他AI通信 |
| 通信方向 | AI → 工具/服务 | AI ↔ AI |
| 发起者 | Anthropic (2024) | Google (2025) |
| 关系 | 互补,不冲突 | 互补,不冲突 |
| 比喻 | AI的USB接口 | AI的互联网 |
| 实际项目 | Claude Desktop, OpenClaw | Gemini, Microsoft Agentspace |
💡 叠加理解
MCP和A2A不是竞争关系,而是互补。一个完整的AI Agent可能同时使用MCP(调用工具)和A2A(与其他Agent协作)。就像你的电脑既有USB接口(MCP)又有网卡(A2A)。
🏗️ A2A协议核心概念
Agent Card(名片)
每个Agent公开一张"名片",描述自己的能力和接口:
{
"name": "travel-planner",
"description": "帮你规划旅行路线",
"capabilities": ["search-flights", "book-hotels", "plan-itinerary"],
"endpoint": "https://agents.example.com/travel-planner",
"auth": "oauth2"
}
Task(任务)
Agent之间的工作单元,支持消息流:
// Agent A 向 Agent B 发送任务
POST /tasks
{
"message": {
"role": "user",
"parts": [{ "text": "帮我查北京到东京最便宜的机票" }]
}
}
// Agent B 流式返回结果
SSE: {
"taskId": "abc123",
"status": "working",
"message": {
"role": "agent",
"parts": [{ "text": "找到了3条航线..." }]
}
}
核心特性
- Agent发现:Agent Card让其他Agent能找到自己
- 任务管理:创建、查询、取消任务
- 消息流:支持文本、文件、图片等富媒体
- 状态追踪:submitted → working → completed
- 安全认证:OAuth2等标准认证机制
🏛️ 行业支持
- Google:发起者,集成到Gemini和Agentspace
- Microsoft:宣布支持A2A,集成到Copilot
- Linux Foundation:2025年6月接管A2A项目治理
- Salesforce:在Agentforce中支持A2A
- SAP:集成到Joule AI Agent
A2A已从Google的项目成长为行业标准,获得Linux基金会管理。
🛠️ 代码示例:A2A Client
# Python A2A Client 示例
from a2a import A2AClient
async def main():
# 连接到远程Agent
client = A2AClient("https://agents.example.com/travel-planner")
# 发送任务
task = await client.send_message(
"帮我规划一个5天的东京之旅,预算8000元"
)
# 流式接收结果
async for event in task.stream():
if event.type == "message":
print(event.text)
elif event.type == "completed":
print(f"任务完成!花费: {event.metadata['cost']}")
# 或者等待完整结果
result = await task.wait()
print(result.text)
# 运行
import asyncio
asyncio.run(main())
🔮 未来展望
- Agent市场:类似App Store,发现和购买AI Agent服务
- 跨平台协作:不同厂商的Agent组成虚拟团队
- 企业级部署:企业内部的Agent之间安全通信
- 与MCP融合:A2A+MCP构成完整的Agent生态
💡 A2A的出现标志着AI Agent从"单兵作战"走向"社会化协作",是AI生态基础设施的重要里程碑。