A2A — 代理间协议
什么是 A2A?
A2A(Agent-to-Agent)是 AI 代理之间发现、认证和通信的开放协议。托管代理的网站发布一个 Agent Card——位于 /.well-known/agent.json 的 JSON 清单——声明代理的身份、能力、技能以及其他代理可以到达的 URL。该协议由 Google 于 2025 年 4 月推出,并于同年晚些时候捐赠给 Linux Foundation。
A2A 与 MCP 处于不同的层。MCP 定义代理如何调用工具;A2A 定义代理如何调用另一个代理。两者可以组合:MCP 服务器向单个代理公开工具;A2A 端点向更广泛的代理网络公开整个代理。
为什么 A2A 重要
2025-2026 年的代理生态系统正在收敛于多代理模式:面向用户的代理(Claude、ChatGPT、Gemini)与其他服务托管的专家代理协调。旅游网站上的预订代理是一个专家;电子商务网站上的退款代理是另一个。面向用户的代理需要一种方法来发现这些专家、了解它们能做什么并调用它们——无需每个供应商的 SDK 集成。
A2A 是该发现和路由层的协议。Agent Card 告诉调用代理:
- 你是谁——名称、描述、版本、供应商。
- 你能做什么——命名技能列表,每个都有自己的描述。
- 如何到达你——你的代理端点的 URL 和支持的传输(HTTP、SSE、WebSocket)。
- 如何认证——认证方案,包括 OAuth 流程或 API 密钥移交。
A2A 如何工作
有两部分:Agent Card(发现)和 A2A 端点(执行)。
1. Agent Card 是位于 /.well-known/agent.json 的静态 JSON 文件。最小有效的 Agent Card:
{
"name": "Acme Support Agent",
"description": "Handles customer inquiries, refunds, and order status.",
"version": "1.0.0",
"url": "https://acme.example.com/agent",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"skills": [
{
"id": "process-refund",
"name": "Process Refund",
"description": "Issue a refund for a given order ID."
}
]
}
2. A2A 端点 在卡片中声明的 URL 接受这些技能的请求。协议在 HTTP 上使用 JSON-RPC 风格的消息(可选 SSE 用于流式传输),支持包含文本、文件和结构化数据部分的结构化消息格式。
A2A 与其他代理互操作协议
| 协议 | 目的 | 传输 | 公开什么 |
|---|---|---|---|
| A2A | 代理调用另一个代理 | HTTP/SSE | 具有命名技能的整个代理 |
| MCP | 代理调用工具 | HTTP/SSE 上的 JSON-RPC | 服务器上的离散工具 |
| OpenAPI | 代理调用 REST API | HTTP | 带 schema 的 API 端点 |
| SKILL.md | 告诉代理如何使用服务 | 静态 Markdown | HTTP 服务的散文操作手册 |
| WebMCP | 代理通过浏览器调用网站 | 浏览器 API | 标注的 HTML 表单 |
A2A 是其中唯一一个被调用者本身是代理而不是工具或静态 API 的协议。
Agent Card 字段
name——人类可读的代理名称。必需。description——代理做什么,散文形式。必需。url——A2A 端点的位置。必需。version——代理版本字符串。推荐。provider——供应商信息。capabilities——功能标志:streaming、pushNotifications、stateTransitionHistory。skills——具有id、name、description的技能对象数组。authentication——认证方案详细信息。defaultInputModes/defaultOutputModes——技能调用的支持内容类型。
AgentGrade 的 A2A 检查验证卡片存在、解析为 JSON 并至少包含 name 和 url。
谁在使用 A2A
A2A 在 Google 和合作伙伴联盟的支持下推出。2025-2026 年的公开采用者包括:
- Google——原作者;A2A 集成到 Vertex AI Agent Builder。
- Linux Foundation——A2A 捐赠给 LF 以确保中立治理。
- Atlassian——为 Jira 和 Confluence 代理发布 Agent Cards。
- Box、MongoDB、PayPal、SAP、ServiceNow、Workday——发布时列出的早期生态系统合作伙伴。
如何将 A2A 添加到你的服务
- 决定你是否有要公开的代理。 A2A 用于代理,而不是静态 API。
- 创作 Agent Card 在
/.well-known/agent.json。 - 建立 A2A 端点 在卡片的 URL。github.com/google/A2A 的 Python SDK 是参考实现。
- 至少实现一个技能。
- 用调用者测试。
- 从 llms.txt 或 SKILL.md 链接。
扫描器标记的常见错误
- 没有 Agent Card——
/.well-known/agent.json返回 404。 - 卡片返回 HTML,不是 JSON——SPA 通配路由为每个路径返回首页 HTML。
- 缺少
name或url。 url指向 404。- 技能数组为空或缺失。
- CORS 阻止获取。
FAQ
A2A 是 MCP 的替代品吗?
不是。它们解决不同的问题。MCP 用于代理调用工具;A2A 用于代理调用另一个代理。
如果我有 OpenAPI,还需要 A2A 吗?
仅当你的服务是代理(推理、规划、在回合间保持状态)时。
AgentGrade 评分是否需要 A2A?
A2A 是信息检查,不计分。
如果我的 Agent Card 谎报能力会怎样?
卡片声明代理声称的内容;调用代理最终会通过失败的请求发现。
我能发布多个 Agent Cards 吗?
规范是每个源一个卡片。
A2A 与 Google 的 Vertex AI Agent Builder 的关系?
Vertex AI Agent Builder 是 Google 托管的代理运行时;它产生和消费 A2A。
代理如何发现 Agent Cards?
直接获取 /.well-known/agent.json,或跟随 /llms.txt 的链接。
A2A 支持支付吗?
规范包括能力声明,但支付委托给底层认证方案。结合 A2A 和 x402 的网站通常在技能描述中声明支付要求。
规范成熟度
开放标准,早期采用。 A2A 由 Linux Foundation 治理。Python SDK 是参考实现。
了解更多
- A2A 协议规范 — 官方文档
- A2A GitHub 仓库 — 参考实现
- MCP — 工具调用的配套协议