A2A · hands-on

Agent 通信协议 A2A

A2A(Agent2Agent)是 agent↔agent 的开放通信协议——让一个 agent 把任务委托给另一个、可能是别家公司部署的 agent。它是 MCP(agent↔工具)的水平对应物。这份教程基于 spec v1.0.1(2026-05-28) 与 Python a2a-sdk 1.1.0,读完约半天,含动手章。下文所有代码用来演示 wire 报文与设计判断,除另行说明外均标「未在本机验证」(2026-06)。

·适合谁

  • 已读懂 MCP(host↔server 那套)——能说清 initialize 握手在协商什么、tools/call 调的是一个无状态原语。本站 MCP 教程 覆盖这部分。
  • 能写、能调 Python async——看得懂 async def / await,知道一个协程在 await 处让出意味着什么。
  • 理解 single-agent + tool use,以及基本的多 agent 协作——知道一个 agent 内部是 thought-action-observation 循环,也见过多个 agent 在同一个系统内分工。本站 多 Agent 协作模式 覆盖这部分。

·不适合谁

  • 没接触过 agent:先看 Agent 推理模式 把 ReAct / 推理-行动循环跑通,再看 Tool Use 理解一个 agent 怎么调工具,然后回来。A2A 假定你已经有一个能跑的 agent。
  • 只想要一个框架快速上手做点东西:LangGraph 教程 更直接——它给你状态图与编排,而本教程教的是跨进程、跨组织的线缆协议,不是某个框架的 API。
  • 想让 agent 连工具 / 数据,而不是连另一个 agent:你要的是 MCP。A2A 是它的正交对应物——一个连工具(垂直),一个连对等 agent(水平),下文 一句话本质 与 概念地图 会讲清这条边界。

·读完之后你能做到什么

能在『调一个工具(MCP)』还是『托付给一个对等 agent(A2A)』之间做出正确选择,并说清 A2A 为什么把对等体设计成不透明黑盒、这个设计的代价在哪——这是官方文档只字未提的取舍。

更具体地,读完后你能:

  • 读懂任意一份 A2A Agent Card——从 url、skills、capabilities、securitySchemes 里读出这个 agent 暴露了什么、支不支持流式与推送、声明了哪类认证。
  • 跑通一个从零搭起的 A2A server + client——服务端用 AgentExecutor 处理任务并发布 Agent Card,客户端发现它并发出第一条消息。
  • 认出 wire 报文上的 v1.0 与已弃的 v0.x 写法——一眼分辨 SendMessage 与旧的 message/send、TASK_STATE_COMPLETED 与旧的小写 completed、agent-card.json 与旧的 agent.json。
  • 指出一个 A2A 系统的至少 3 个安全失败模式——并说清它们大多落在「实现者责任」而非协议本身,「A2A-compliant」不等于安全。
  • 画出并实现 A2A + MCP 两层栈——一个 agent 对外用 A2A 接收委托、对内用 MCP 调自己的工具,再把结果作为 Artifact 返回。

一句话本质

A2A 把远程 agent 当成不透明的自治对等体——只靠公开的 Agent Card 和显式的消息/任务来协作,绝不共享内部状态;它解决的是跨信任边界的水平 agent↔agent 协作,与 MCP 的垂直 agent↔工具正交。用哪个,取决于你是在「调一个工具」还是「托付给一个对等 agent」。

·现状速览(截至 2026-06)

A2A 的轨迹不是一条平滑上升线:2025-04 由 Google 发布,年中曾「淡出背景」让位给 MCP,2026-03 才出第一个生产级 v1.0。分清哪些是定论、哪些还在动、哪些已被替换,比记住某个 SDK 的写法都重要——现存多数博客与 SDK 代码仍是 v0.x 写法,本教程教 v1.0 当前规范,并逐处标出迁移点。

表 0.1 · A2A 现状三层(截至 2026-06)
层内容日期 / 依据
稳定(可放心建心智模型) Agent Card + Task 生命周期 + Message / Artifact + 流式(自 v0.1.0 以来概念不变);三传输绑定 JSON-RPC / gRPC / REST;签名 Agent Card(JWS + JCS);Linux Foundation 治理,Google 捐赠,5 个官方 SDK(Python / JS / Java / Go / .NET)。 v0.1.0(2025-04-09)起;三传输 v0.2.2(2025-06-09);签名卡 v0.3.0(2025-07-30);LF 接管 2025-06-23。
在变(盯紧版本) v1.0 系列是首个生产级、含 breaking changes(新增 tasks/list、gRPC 原生多租户);HTTP content-type 转向偏好 application/a2a+json;公开 RFC 流程启动;路线图含互操作规范、registry 整合、安全最佳实践;据报 Q3 2026 有 A2A↔MCP 联合互操作规范。 v1.0.0(2026-03-12);当前 v1.0.1(2026-05-28);a2a-sdk 1.1.0(2026-05-29)。无 v1.1/v1.2 规范存在。
已替换(别当默认) 发现路径 agent.json → agent-card.json;方法名斜杠式 message/send → SendMessage;TaskState 小写 completed → 大写 TASK_STATE_COMPLETED;拼写 cancelled → canceled;OAuth2 implicit / password grant 被移除,改 device-code + PKCE。整条 v0.x 线相对 v1.0 都属遗留。 多数改动定于 v0.3.0 与 v1.0;但社区现存代码大量仍是 v0.x,需当迁移点逐一识别。

来源:a2a-protocol.org · A2A Specification、github.com/a2aproject/A2A releases。事实采自 2026-06 的公开资料,本领域演进快,请以官方规范为准。

流畅感警告

这一页读起来会很顺,正因为顺,三种假象最容易出现:

「我读得很顺」——顺只证明句子通顺,不证明你能在一份陌生的 Agent Card 或 wire 报文上认出门道。

「我做题很快」——题做得快,多半是套路题:答案就在上一段,换一个跨信任边界的场景就卡住。

「我没卡壳」——没卡壳多半意味着还没碰到 schema:真正的理解发生在你被迫读懂一个 TASK_STATE_* 字段、或判别 A2A 与 MCP 边界的时刻,而不是被讲解抚平的时刻。

·概念地图

A2A 协议 agent↔agent Agent Card 能力声明 JSON 靠它发现 Task / Message Part / Artifact 交换什么 三传输 + SSE 流 + webhook 推送 怎么传 Task 生命周期 submitted→…→done 状态怎么走 不透明 agent 原则 设计灵魂 不共享内部状态 安全模型 大量留给实现者 compliant≠secure A2A ⊥ MCP 水平 ⊥ 垂直 定位 .well-known 路径 静态可缓存 从此 GET
图 0.1读这张图盯三件事: 一,中心是一个协议而不是框架——它定义线缆上交换什么、怎么传,不规定 agent 内部怎么想。 二,不透明 agent 原则(朱红那条边)是设计灵魂——其余六条边都是它的推论。 三,最左的 A2A ⊥ MCP 是与 MCP 的正交关系:一个水平连对等 agent,一个垂直连工具,不是竞品。

·学习路径建议

这是一份 hands-on 教程(含动手章),按目的挑路径:

  • 只想理解协议:01 概念 → 02 原理 → 06 自测。01 建立 Agent Card / 数据模型 / 不透明原则 / 定位四个概念,02 讲清线缆与生命周期的取舍,06 用分层题验证你真懂而非读顺。
  • 要落地实现:全程通读,重心放在 03 实操(搭 server + client)与 05 综合项目(A2A + MCP 两层栈)。沿途的 wire 报文细节是你调试时的对照表。
  • 做选型评估(A2A vs MCP vs 直接函数调用):先看 01 的 §1.5 A2A ⊥ MCP,再到 §2.2 发现机制取舍,最后用 §5.2 的跨章判别决策 在真实场景上做一次选择。

·目录

·学完之后

  • AP2(Agent Payments Protocol)——在 A2A 之上加一层支付的 schema:mandate / 授权凭证 / 加密的支付意图,让对等 agent 之间不只是交换 Task,还能完成可审计的付款。截至 2026-06 已有数十家支付与金融机构参与。
  • AGNTCY / Internet of Agents——补上 A2A 刻意留空的那层 schema:agent 的 identity 与 discovery 基础设施(统一身份、可信注册与发现),把「卡可伪造、无中心注册」从协议留白变成可运营的设施。
  • 深化 MCP——把垂直那条腿走深:resources / prompts / sampling 等 A2A 不涉及的 primitive,正是两层栈里「对内取工具」一侧的 schema 细节。
  • Agent 安全专题——把 04 的失败模式系统化:威胁建模(MAESTRO)、prompt 注入防御、跨 agent 的 authz 与 replay 防护,补齐 A2A 规范判为「实现者责任」的那一整块 schema。