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 进度和中间输出
PushTask 完成后通过 Webhook 主动通知调用方

与 MCP 的区别

维度A2AMCP
定位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 身份验证、权限边界)仍在演进中

相关概念