h1A2A (Agent-to-Agent) 协议详解/h1 A2A 是一个开放协议,让不同框架、不同厂商、不同服务器上运行的 AI Agent 能够互相通信和协作。当前版本 v1.0.0。 h2一、原始内容概述/h2 h31.1 什么是 A2A/h3 A2A(Agent-to-Agent,代理间通信协议)是一个开放协议,由 Google 贡献给 Linux Foundation 作为开源项目,Apache 2.0 许可。当前版本为 strongv1.0.0/strong(正式发布版)。 它的核心使命是:strong让不同框架、不同厂商、不同服务器上运行的 AI Agent 能够像 Agent 一样互相通信和协作——而不是作为对方的"工具"。/strong h31.2 核心问题/h3 A2A 解决的核心问题是:strong异构 AI Agent 系统之间如何实现互操作?/strong ul liAgent 可能用不同框架构建(ADK、LangGraph、BeeAI 等)/li liAgent 可能由不同公司运营(跨企业协作)/li liAgent 运行在不同服务器上(跨信任边界)/li liAgent 不能暴露内部状态、记忆或工具/li /ul A2A 的答案:定义一套通用语言,让 Agent 发现彼此、协商交互、安全协作,同时保持各自的不透明性。 h31.3 核心设计原则/h3 ol listrong简单/strong:复用成熟标准(HTTP、JSON-RPC 2.0、SSE)/li listrong企业就绪/strong:认证、授权、审计、追踪/li listrong异步优先/strong:长耗时任务和 HITL/li listrong模态无关/strong:文本、文件、结构化数据、音视频/li listrong透明执行/strong:不共享内部状态/li /ol h31.4 三层架构/h3 strongL1 — 数据模型层/strong:Task、Message、Part、Artifact、AgentCard、Extension strongL2 — 操作层/strong:Send Message、Send Streaming Message、Get Task、List Tasks、Cancel Task、Get Agent Card strongL3 — 协议绑定层/strong:JSON-RPC over HTTP(S)、gRPC、HTTP+JSON/REST h31.5 Agent 卡片(Agent Card)/h3 Agent Card 是 JSON 格式的"名片",包含身份信息、能力、技能、端点 URL、认证要求、租户标识。 h31.6 任务生命周期/h3 SUBMITTED → WORKING → COMPLETED / FAILED / CANCELED / REJECTED h31.7 三种交互模式/h3 strong① 同步请求/响应/strong:立即返回 Task 或 Message strong② 流式交互/strong:SSE 连接,实时推送中间结果 strong③ 异步推送通知/strong:webhook URL,服务器主动 POST h31.8 官方 SDK/h3 ul liPython:codepip install a2a-sdk/code/li liJavaScript:codenpm install @a2a-js/sdk/code/li liGo:codego get github.com/a2aproject/a2a-go/code/li liJava、.NET、Rust 均有 SDK/li /ul hr / h2二、使用场景举例/h2 h3场景 1:跨 Agent 任务委派/h3 主 Agent 通过 Agent Card 发现 Travel Agent 和 Hotel Agent,分别委派机票和酒店任务,子 Agent 各自处理返回结果。 h3场景 2:人机协同审批/h3 Agent A 提交报销审批 Task(状态 WORKING),等待主管审批(HITL),完成后 Task 变 COMPLETED。 h3场景 3:流式数据分析报告/h3 分析 Agent 流式返回中间结果,最终输出完整报告 Artifact,客户端实时看到分析进度。 h3场景 4:跨企业 Agent 协作/h3 企业 A 的供应链 Agent 查询企业 B 的库存 Agent——跨信任边界的协作典范。 h3场景 5:多框架异构 Agent 协同/h3 ADK + LangGraph + BeeAI 的 Agent 通过 A2A 在同一工作流中协作。 hr / h2三、最佳实践/h2 h3Agent 卡片设计/h3 ul li精确描述能力,不夸大/li li明确认证要求/li li版本管理/li /ul h3Task 管理/h3 ul li合理使用 historyLength/li li游标分页而非 offset/li licontextId 关联对话/li /ul h3错误处理/h3 ul li区分可重试和不可重试错误/li li流式中断后 Get Task 恢复/li li考虑幂等性/li /ul h3安全/h3 ul li始终验证 Agent Card/li li能力最小化/li li数据最小化/li li全程 HTTPS/li /ul hr / h2四、避坑指南/h2 ol listrong混淆 Send/Streaming Message/strong/li listrong忽视流式中断恢复/strong/li listrong不使用 contextId/strong/li listrongPush notification URL 不可达/strong/li listrong向终态 Task 发消息/strong:返回 UnsupportedOperationError/li listrong长轮询代替流式/推送/strong/li listrong忽略 historyLength 限制/strong/li listrong信任非…