跳到主要内容

A2A 概览与协议

A2A(Agent-to-Agent / Agent2Agent) 是 Google 贡献、Linux Foundation 托管的开放协议,让 不同框架、不同厂商的 Agent 能互相发现能力、委派任务、交换结果,而无需暴露各自内部记忆与工具实现。本篇讲选型与面试答法;单 Agent 循环见 Agent 核心概念与架构;工具接入见 MCP 概览与实践。

A2A 解决什么问题​

痛点没有 A2A有 A2A
多 Agent 协作自定义 HTTP / 消息队列,每家一套统一 Task / Message 语义
能力发现硬编码 endpointAgent Card 自描述能力
跨团队 / 跨云集成成本高标准绑定(JSON-RPC / gRPC / REST)
长任务各写各的轮询原生 异步、流式、推送

一句话:A2A 是 Agent 之间的「商务语言」——谈任务、进度、交付物,不谈对方脑子里怎么想。

核心原则(规范强调)​

原则含义
Simple复用 HTTP、JSON-RPC 2.0、SSE 等成熟标准
Enterprise Ready鉴权、审计、追踪对齐企业实践
Async First长任务、人审、多步协作是一等公民
Modality Agnostic文本、文件、结构化数据、可嵌 UI
Opaque Execution只交换 能力声明与结果,不暴露内部 CoT / 工具链

协议分层​

Layer 1 数据模型 Task / Message / AgentCard / Part / Artifact …
Layer 2 抽象操作 Send Message / Stream / Get Task / Cancel / Get Agent Card …
Layer 3 协议绑定 JSON-RPC · gRPC · HTTP/REST

面试记忆:先统一「说什么」(数据模型),再统一「怎么调」(绑定)。

关键概念​

Agent Card(能力名片)​

每个 Remote Agent 发布 Agent Card,描述:

  • 身份与版本
  • 支持的技能 / 输入输出类型
  • 端点与认证方式
  • 是否支持流式、异步回调

Client Agent 通过 Card 发现「谁能做这件事」,而不需要知道对方用 LangGraph 还是自研框架。

Client Agent vs Remote Agent​

角色做什么
Client Agent代表用户拆解目标、发起任务、汇总结果
Remote Agent对外暴露能力,执行 Client 派来的 Task

这与 MCP 的 Host/Server 不同:A2A 两边都是 对等意义上的 Agent 服务,只是这次对话里一个扮演发起方。

Task / Message / Artifact​

对象直觉
Task一次协作工单:有状态(进行中 / 完成 / 失败 / 取消)
Message任务中的往来消息(可含多 Part)
Part内容片段:文本、文件引用、结构化字段等
Artifact任务产出物(报告、文件、结构化结果)
用户目标
→ Client Agent 读 Agent Card,选 Remote Agent
→ Send Message / Stream Message 创建或推进 Task
→ Remote Agent 异步执行(可 SSE 推送进度)
→ Client 收 Artifact,继续编排或回复用户

交互模式​

模式适合
同步请求/响应短问答、轻量查询
Streaming(SSE)实时进度、生成式输出
异步 + 推送通知长任务、人审、批处理

规范当前稳定版为 1.0.0;实现以 a2a-protocol.org 与 a2a.proto 为准。

vs MCP:互补而非竞争​

MCPA2A
连接对象应用 ↔ 工具/数据 ServerAgent ↔ Agent
暴露什么Tools、Resources、Prompts任务能力、Agent Card
典型问题「帮我把这个 PR 建好」的工具从哪来「差旅 Agent 把行程交给审批 Agent」
官方定位给 Agent 上下文与工具让 Agent 协作完成任务

Google 公开材料明确:A2A 与 MCP 互补——MCP 接工具,A2A 接同事。

vs 多 Agent 框架内置编排​

维度框架内多 Agent(如 [LangGraph](/docs/ai/Agent/LangGraph 编排实践) 子图)A2A
边界通常同代码库、同运行时跨服务、跨组织
发现编译期已知节点运行时读 Agent Card
适用单产品内分工企业间、多产品组合
复杂度较低鉴权、版本、SLA 更重

单产品内子 Agent 用框架编排往往够用;跨团队可替换的 Agent 市场才更需要 A2A。

何时用 / 不用​

信号建议
多个独立部署的 Agent 要互相派活评估 A2A
同一进程里的 planner / worker 子角色框架内编排即可
只需调数据库、APIMCP 或直连工具
强合规、需审计谁调了谁A2A + 标准 OAuth / mTLS
纯 FAQ、单轮 RAG不需要 A2A

落地注意点​

  1. 先画信任域:哪些 Agent 可互调、数据能否出境
  2. Agent Card 版本化:能力变更要向后兼容或显式升级
  3. 幂等与取消:长任务必须支持 Get Task / Cancel Task
  4. 可观测性:Task ID 贯穿日志与追踪,便于排障
  5. 别过早多 Agent:单 Agent + MCP 工具往往更简单;见 Agent 核心概念与架构 决策表

常见误解​

  1. 「A2A = 多 Agent 框架」——A2A 是 跨系统 wire 协议,不是编排 DSL
  2. 「有 A2A 就不要 MCP」——工具层仍常用 MCP;协作层用 A2A
  3. 「Remote Agent 要暴露思维链」——规范强调 Opaque Execution
  4. 「A2A 适合所有多 Agent」——同应用内子角色用框架更轻

面试速记​

  1. A2A 是什么? 开放标准,让异构 Agent 通过 Agent Card 发现能力,用 Task/Message 协作,不暴露内部实现。
  2. 和 MCP 区别? MCP:应用连工具与数据;A2A:Agent 连 Agent。互补。
  3. Agent Card 干什么? 自描述能力、端点、认证与交互模式,供发现与路由。
  4. 为什么强调 Async? 企业场景长任务、人审、流式进度是常态。
  5. 何时不上 A2A? 单 Agent 闭环、同进程子角色、纯工具调用——用框架 + MCP 即可。