A2A Protocol · 中文图解 · v1.0

让 Agent 以“黑盒能力”彼此协作

A2A(Agent2Agent)定义了发现、消息交换、长期任务追踪和结果交付的共同语言。它不暴露远端 Agent 的模型、记忆与工具,只约定如何安全地协作。

Architecture · 01

A2A 的核心概念

Client Agent 先读取 Agent Card,确认能力、端点与认证方式;随后通过 HTTP(S) 发送由 Part 组成的 Message。远端 Agent 可以直接返回 Message,也可以创建可追踪的 Task,并用 Artifact 交付成果。

A2A 核心概念与组件 A2A 架构图,展示用户、Client Agent、Remote Agent、Agent Card、Message、Task、Artifact 和 Part 之间的关系。 CLIENT SIDE SERVER SIDE GOAL DISCOVER · JSON SENDMESSAGE DIRECT MESSAGE CREATE TASK PRODUCES STATUS · ARTIFACT ONE OR MORE USER用户human / service CLIENTA2A Client代表用户发起协作Client Agent JSONAgent Cardidentity · endpoint · skills · auth SERVERA2A Server远端 Agent(黑盒)HTTP(S) · JSON-RPC 2.0 TASK有状态工作单元taskId · contextId · status ARTIFACT可交付成果document · image · data PART · MESSAGE 与 ARTIFACT 共用的内容容器 text · 文本 raw · 字节 url · 文件 data · JSON Message 是一次沟通;Artifact 才是成果。

先发现,再调用

Agent Card 是数字名片:描述身份、能力、技能、服务端点和认证要求。

立即回答或创建 Task

简单交互可直接返回 Message;长期、可追踪工作返回 Task

多模态不绑死

Part 统一承载文本、字节、URL 与结构化数据。

Sequence · 02

一次 Task 如何运行

下面是典型的有状态路径:发现远端 Agent、创建 Task、持续接收状态或 Artifact 更新;如果需要补充输入,则沿同一 taskIdcontextId 继续,直到 Task 进入终态。

A2A Task 的典型时序 时序图展示用户、Client Agent 与 Remote Agent 从发现、发送消息、创建任务、补充输入到完成并返回 Artifact 的过程。 OPT [需要更多输入] 定义目标 / 请求 GET /.WELL-KNOWN/AGENT-CARD AGENT CARD · JSON SENDMESSAGE · MESSAGE{PARTS} TASK · WORKING TASK · INPUT_REQUIRED 向用户请求补充信息 补充输入 / 确认 SENDMESSAGE · SAME TASKID + CONTEXTID COMPLETED · ARTIFACT{PARTS} 展示最终成果 USER用户goal owner CLIENTClient Agentorchestrator SERVERRemote Agentopaque executor UPDATE CHANNEL 轮询 GetTask/SSE 流式事件/Webhook 推送通知 三种机制,服务同一份 Task 状态。

contextId 管“同一段协作”

它把多个 Message 与多个 Task 组织在共同上下文中,也允许并行的后续任务。

taskId 管“这一份工作”

input-requiredauth-required 后继续原 Task,需要带回相同标识。

更新方式可替换

轮询、SSE 与推送只改变收取更新的方式,不改变 Task 语义。

State machine · 03

Task 状态机

Task 从已提交进入处理中;可能暂停等待输入或授权,也可能抵达四种终态。终态不可重启——任何修改、追问或衍生工作都应该在同一 contextId 下创建一个新的 Task。

A2A Task 状态机 状态机展示 Task 从 SUBMITTED 到 WORKING,经 INPUT_REQUIRED 或 AUTH_REQUIRED 暂停并恢复,最终进入 COMPLETED、FAILED、CANCELED 或 REJECTED 终态。 TERMINAL STATES NEW START WORK NEED USER INPUT INPUT RECEIVED NEED AUTH AUTH RESOLVED SUCCESS ERROR CANCEL DECLINE / UNSUPPORTED STATE已提交TASK_STATE_SUBMITTED STATE处理中TASK_STATE_WORKING INTERRUPT等待输入TASK_STATE_INPUT_REQUIRED INTERRUPT等待授权TASK_STATE_AUTH_REQUIRED TERMINAL已完成TASK_STATE_COMPLETED TERMINAL失败TASK_STATE_FAILED TERMINAL已取消TASK_STATE_CANCELED TERMINAL已拒绝TASK_STATE_REJECTED IMMUTABILITY 终态 Task 不可重启后续修改 = 新 Task + 相同 contextId + 可选 referenceTaskIds

中断态不是终态

INPUT_REQUIREDAUTH_REQUIRED 表示暂停;条件满足后可以回到 WORKING

终态保证可追踪

完成、失败、取消、拒绝都封存该工作单元,输入、输出与状态映射保持清晰。

Artifact 版本由 Client 管

规范不替 Client 维护成果版本链;Client 应向用户呈现自己认可的最新版本。