Google 于 2025 年 4 月发布的开放协议,用于不同平台、不同厂商的 AI Agent 之间的发现、通信与任务委托。
GitHub:https://github.com/google/A2A
核心定位
解决多 Agent 系统中的互操作问题:一个编排 Agent(Orchestrator)需要把子任务委托给专门的 Agent(搜索 Agent、代码 Agent、数据分析 Agent 等),但各 Agent 来自不同厂商、不同框架,无法直接通信。
A2A 提供标准化的任务委托接口,让 Agent 之间无需紧耦合集成即可协作。
技术基础
- 传输层:HTTP/HTTPS,JSON 格式
- Agent 发现:Agent Card(
/.well-known/agent.json) - 任务模型:以 Task 为单位,有明确生命周期
- 流式支持:SSE(Server-Sent Events)
- Push 通知:Webhook 回调
Agent Card
每个 Agent 在 /.well-known/agent.json 发布自身描述:
{
"name": "search-agent",
"description": "Searches the web and returns structured results",
"version": "1.0.0",
"capabilities": ["web_search", "summarization"],
"authentication": { "type": "bearer" },
"endpoint": "https://example.com/agent"
}Client 通过 GET /.well-known/agent.json 发现 Agent 能力,无需预先配置。
Task 生命周期
submitted → working → completed
↘ failed
↘ cancelled
Task 是 A2A 的核心通信单元,包含:
- 输入消息(多模态:文本、文件、结构化数据)
- 状态跟踪
- 中间输出(流式)
- 最终结果
消息格式(Parts)
A2A 消息由多个 Part 组成,支持多模态:
| Part 类型 | 说明 |
|---|---|
TextPart | 纯文本 |
FilePart | 文件(内联或 URI 引用) |
DataPart | 结构化 JSON 数据 |
三种交互模式
| 模式 | 说明 |
|---|---|
| 同步 | 等待 Task 完成,直接返回结果 |
| 流式 | SSE 实时推送 Task 进度和中间输出 |
| Push | Task 完成后通过 Webhook 主动通知调用方 |
与 MCP 的区别
| 维度 | A2A | MCP |
|---|---|---|
| 定位 | Agent ↔ Agent 协作 | Agent ↔ 工具/资源 |
| 通信方向 | 对等(peer-to-peer) | 客户端-服务端 |
| 任务粒度 | 高层任务委托 | 原子工具调用 |
| 发起方 | 任意 Agent | 固定的 Host |
简单说:MCP 解决”Agent 如何用工具”,A2A 解决”Agent 如何委托另一个 Agent”。
典型场景
用户请求 → 编排 Agent
├─ A2A → 搜索 Agent(收集信息)
├─ A2A → 代码 Agent(生成代码)
└─ A2A → 数据分析 Agent(处理结果)
↓
汇总输出 → 用户
现状
- Google 主导,50+ 合作伙伴(Salesforce、SAP、Atlassian 等)
- 规范托管在 GitHub:
google/A2A,Apache 2.0 协议 - 与 BeeAI ACP 定位高度重叠,2025 年底 ACP 已并入 A2A,在 Linux Foundation 下统一治理
- 业界逐渐形成”MCP 管工具,A2A 管协作”的分工共识
开放问题
- A2A 与 ACP(Agent Client Protocol)的边界尚不清晰——前者侧重 Agent 间委托,后者侧重编辑器与 Agent 的交互
- 安全模型(Agent 身份验证、权限边界)仍在演进中
相关概念
- agent-client-protocol — Zed Industries 的 ACP,编辑器 ↔ Agent 通信协议
- openclaw-acp-protocol — OpenClaw 内部的 ACP 机制
- agent-protocols — 三大 Agent 协议对比