大家好,我是技术老金。
最近我朋友圈被一个词刷屏了——A2A。
不是”AA制”那个A2A,是Agent-to-Agent,Agent与Agent之间的通信协议。
如果说2025年大家都在讨论”怎么做一个Agent”,那2026年的话题已经变成了”怎么让一群Agent一起干活”。而A2A协议,就是让Agent们能互相说话的通用语言。
今天老金来聊聊这个2026年最值得关注的Agent基础设施级更新。
一、为什么需要A2A?
咱们先想一个问题:
你做了一个客服Agent,用的是LangChain。隔壁团队做了一个订单查询Agent,用的是AutoGen。老板说:你们两个能不能让客服Agent直接调用订单Agent?
传统方案:写自定义API、处理认证、定义数据格式、处理错误……没有两周搞不定。
A2A要解决的问题就是:让不同框架、不同厂商的Agent能开箱即用互相对话。
就像HTTP协议让所有网页浏览器能访问所有网站一样——A2A协议想要成为Agent世界的HTTP。
二、A2A协议v1.2的核心设计
目前A2A协议已经发展到v1.2版本,由Linux基金会正式管理,背后有Google Cloud主导,已有150多个组织投入生产环境。
技术栈:
| 组件 | 选择 | 为什么 |
|---|---|---|
| 传输层 | HTTP/SSE | 现成的Web基础设施 |
| 消息格式 | JSON-RPC | 轻量、成熟 |
| 认证 | OAuth 2.0 | 企业标配 |
| 任务模型 | 长时任务支持 | Agent任务可能跑几分钟甚至几小时 |
核心概念:Agent Card
每个Agent通过一个 Agent Card(类似名片)描述自己:
- 能做什么(技能列表)
- 输入输出格式
- 收费方式(如果有)
- 可靠性指标
当Agent A需要找Agent B帮忙时,先读Agent Card,就知道”这家伙能不能干我要的活,怎么跟它说话”。
三、真实案例:Salesforce + Google Cloud的跨平台Agent
这不是纸上谈兵。
Salesforce和Google Cloud已经在用A2A协议创建跨平台的AI Agent。
想象一下这个场景:
- 用户在Salesforce CRM里创建了一个工单
- 客服Agent发现需要查询订单物流信息
- 客服Agent通过A2A协议,调用Google Cloud上的物流Agent
- 物流Agent查完数据,通过A2A返回结果
- 客服Agent把结果整合后回复用户
整个过程,用户感觉在跟一个Agent对话——但实际上背后是两个不同平台、不同框架的Agent在协作。
这就是A2A的价值:让复杂系统对用户保持简单。
四、A2A vs MCP:别搞混了
很多人把A2A和MCP搞混,老金给你一个简单的区分:
- MCP(Model Context Protocol):Agent调用工具的协议。比如Agent要查数据库、调API、发邮件。
- A2A(Agent-to-Agent):Agent调用Agent的协议。比如一个Agent请另一个Agent帮忙处理任务。
一句话总结:MCP是Agent的手和脚,A2A是Agent之间的电话线。 两者互补,不冲突。
我之前在AI应用开发实战系列里写过工具调用的内容——MCP就是那个”让Agent能用工具”的标准协议。而A2A则是让Agent之间能”互相打电话”的标准协议。
五、开发者怎么接入A2A?
如果你现在就想让你的Agent支持A2A,大概需要这几步:
# 伪代码:实现一个A2A兼容的Agent Card
agent_card = {
"name": "order-query-agent",
"version": "1.0.0",
"capabilities": [
{
"id": "query_order",
"description": "查询订单状态",
"input_schema": {
"order_id": "string",
"customer_id": "string"
},
"output_schema": {
"status": "string",
"estimated_delivery": "string"
}
}
],
"authentication": {
"type": "oauth2",
"endpoint": "https://auth.example.com/token"
}
}
# 处理A2A请求
@app.post("/a2a/task")
async def handle_a2a_task(request: A2ARequest):
# 验证调用方Agent
await verify_agent(request.agent_card)
# 执行任务
result = await execute_task(request.task)
# 返回结果(支持同步和异步)
return A2AResponse(
task_id=request.task_id,
status="completed",
result=result
)
Google Cloud已经提供了A2A的SDK和示例代码,去GitHub搜 google/A2A 就能找到。
六、老金的判断
A2A协议的意义,怎么强调都不过分。
- 对企业:不用被单一厂商绑定,可以混搭不同框架的最佳Agent
- 对开发者:不用重复造轮子,专注于自己Agent的核心能力
- 对行业:统一的互操作标准,加速整个生态发展
但有一个现实问题:A2A现在还处于早期阶段。 v1.2虽然已经有150+组织在使用,但距离”HTTP级别的普及”还有距离。
我的建议是:关注但不盲从。 如果你的项目需要跨平台Agent协作,A2A是目前最好的选择。如果你的Agent只在单一平台内运行,没必要为了用A2A而用A2A。
相关阅读