A2A 是什么?
A2A(Agent2Agent Protocol)是面向 Agent 与 Agent 之间通信的开放标准,让不同厂商、不同框架、不同部署位置的 Agent 可以互相发现、通信和协作。
2026 年 4 月底,A2A Protocol v1.0 正式发布,这是第一个生产级稳定版本,由 AWS、Cisco、Google、IBM Research、Microsoft、Salesforce、SAP、ServiceNow 八家公司的技术指导委员会共同维护。
一句话理解分层:
- MCP 解决"Agent 怎么接工具和上下文"
- A2A 解决"Agent 怎么找别的 Agent 并协同完成任务"
v1.0 带来了什么?
v1.0 不是概念重做,而是在 v0.3 草稿基础上加了企业级生产环境必需的能力:
| 新能力 | 说明 |
|---|---|
| 多协议绑定 | 支持 HTTP+JSON(首选)和 JSON-RPC(降级),客户端可协商 |
| 版本协商 | Agent 可同时声明支持 v0.3 和 v1.0,客户端渐进迁移 |
| 多租户 | 单个端点可安全托管多个 Agent |
| 签名 Agent Card | 用加密方式验证 Agent 身份和元数据,跨组织协作时可信任 |
| 安全加固 | 移除旧版不安全的通信模式,对齐当前最佳实践 |
v1.0 对齐了 Web 架构原则:无状态、分层、标准协议绑定、基础设施友好。这意味着组织可以用现有负载均衡、网关、安全和可观测工具来扩展 Agent 交互。
为什么 2026 年必须关注 A2A
| 痛点 | 传统做法 | A2A 改进 |
|---|---|---|
| 跨团队系统孤岛 | 每个团队做私有对接 | 用统一协议进行能力发现 |
| 多 Agent 编排复杂 | 手写大量适配层 | 标准化任务生命周期 |
| 长任务状态同步难 | 自建状态机和回调 | 原生支持长任务与状态更新 |
| 供应商锁定 | 强绑定单一平台 | 框架无关、厂商无关 |
| 跨组织协作 | 复杂的 API 对接和安全审计 | 签名 Agent Card + 多租户开箱即用 |
A2A 的核心对象
1) Agent Card(能力名片)
Agent Card 公开 Agent 的能力、接口地址、认证方式和支持的协议版本。v1.0 Agent Card 向后兼容 v0.3,可同时声明多个协议绑定:
{
"name": "research-agent",
"version": "1.0.0",
"skills": [
{ "id": "web_search", "description": "Web search and summarization" },
{ "id": "report_writer", "description": "Markdown report generation" }
],
"endpoints": [
{
"url": "https://agent.example.com/a2a",
"protocol": "http+json",
"auth": { "type": "bearer" }
},
{
"url": "https://agent.example.com/a2a-jsonrpc",
"protocol": "json-rpc",
"auth": { "type": "bearer" }
}
],
"agentCard": {
"signature": "base64-encoded-signature",
"tenant": "org-example"
}
}
调用方先读名片,根据 skills 做动态路由,根据 endpoints 选择协议。
2) Task(任务)
跨 Agent 协作的核心单位,支持创建、进行中、完成、失败等状态。v1.0 强化了长任务的生命周期管理。
3) Artifact(产物)
任务输出结果,可以是文本、结构化 JSON、文件链接或多模态内容。
基本交互流程
[Client Agent]
│ 1. 发现远端 Agent Card(支持签名验证)
▼
[Remote Agent]
│ 2. 通过协商协议发送 Task
│ 3. 持续回传状态/事件(streaming)
▼
[Client Agent]
│ 4. 收集 Artifact
▼
[最终用户结果]
v1.0 交互示例:HTTP+JSON(首选)
v1.0 首选协议绑定是 HTTP+JSON,比 JSON-RPC 更符合 Web 标准,便于使用现有负载均衡和安全设施:
POST /a2a HTTP/1.1
Host: agent.example.com
Content-Type: application/json
Authorization: Bearer <token>
{
"method": "tasks.send",
"params": {
"id": "task-001",
"skill": "web_search",
"input": {
"query": "A2A protocol v1.0 enterprise adoption 2026",
"language": "en"
}
}
}
流式响应:
HTTP/1.1 200 OK
Content-Type: application/x-ndjson
{"type": "status", "data": {"state": "working", "progress": 0.3}}
{"type": "status", "data": {"state": "working", "progress": 0.7}}
{"type": "artifact", "data": {"type": "text/markdown", "content": "# Search Results..."}}
{"type": "status", "data": {"state": "completed"}}
如果客户端不支持 HTTP+JSON,可以降级到 JSON-RPC(v0.3 风格,v1.0 保留兼容)。
从 v0.3 迁移到 v1.0
| 方面 | v0.3 | v1.0 |
|---|---|---|
| 首选协议 | JSON-RPC | HTTP+JSON,JSON-RPC 为降级 |
| Agent Card | 单 endpoint 字段 | endpoints 数组,支持多协议绑定 |
| 签名 | 无 | 可选签名 Agent Card |
| 多租户 | 不支持 | 原生支持 |
| 版本声明 | 隐含 | 显式声明,可同时兼容多版本 |
迁移时,Agent Card 可同时声明两个版本的 endpoints,客户端渐进式切换,无需一次性 cutover。
A2A 与 MCP 怎么配合?
这是很多人容易混淆的地方,v1.0 官方文档也专门澄清了两者的关系:
| 层级 | 协议 | 解决问题 |
|---|---|---|
| Agent 内部能力层 | MCP | Agent 如何调用工具、读取资源、使用提示模板 |
| Agent 协作层 | A2A | Agent 如何发现/协同其他 Agent |
MCP 和 A2A 解决不同层次的问题,实际系统中通常会同时使用两者:
用户
↓
总控 Agent(A2A Client)
├─ A2A 调用 研究 Agent(内部用 MCP 连接搜索引擎)
├─ A2A 调用 报告 Agent(内部用 MCP 连接文档库)
└─ A2A 调用 执行 Agent(内部用 MCP 连接 API)
每个 Agent 内部:MCP 接工具 ↔ Agent 之间:A2A 做协作
这个模式可以避免单 Agent 过度膨胀,也方便团队按职责拆分。
实战建议
- 先定义 Agent Card 规范:技能命名、输入输出约定、错误码统一。v1.0 Agent Card 的签名机制可以保证跨组织调用的可信度。
- 任务要可恢复:长任务务必支持幂等重试与状态查询。
- 协议协商用默认值:首选 HTTP+JSON,客户端不支持时自动降级 JSON-RPC。
- 多租户设计前置:如果系统需要服务多个团队或客户,从第一天就使用 v1.0 的多租户能力。
- 把可观察性前置:记录 task id、调用链、耗时和失败原因。HTTP+JSON 绑定让标准 Web 观测工具可直接复用。
典型落地场景
| 场景 | A2A 设计 |
|---|---|
| 企业知识助手 | 问答 Agent 调用权限 Agent、检索 Agent、报表 Agent |
| 招聘自动化 | 筛选 Agent 调用简历解析 Agent 与面试安排 Agent |
| DevOps 自动化 | 变更分析 Agent 调用测试 Agent、发布 Agent、回滚 Agent |
| 跨组织供应链 | 签名 Agent Card 保证各方身份可信,多租户隔离不同供应商 |
与单体 Agent 方案对比
| 维度 | 单体 Agent | A2A 多 Agent |
|---|---|---|
| 实现速度 | 初期快 | 初期略慢 |
| 可维护性 | 易臃肿 | 高,职责清晰 |
| 扩展性 | 限制多 | 高,按技能新增 Agent |
| 组织协作 | 团队边界不清 | 团队可按 Agent 拆分负责 |
| 跨组织互操作 | 需定制对接 | 标准协议 + 签名认证 |