Agent 之间怎么"说话"?
上一章讲了多 Agent 为什么需要协同、为什么要统一通信标准;这一章把 A2A 协议讲透:它是什么、和 MCP 是什么关系、Agent Card 与 Task 生命周期两大核心机制怎么运转、任务产出物(Artifact)和消息(Message)怎么组织,以及 4 道面试题的完整参考回答。读完你就能把"多 Agent 协作"落地到协议层面。
01什么是 A2A 协议?
A2A(Agent-to-Agent)协议是 Google 提出的 Agent 间通信标准,用于让不同厂商、不同框架构建的 Agent 能够互相发现、通信和协作。类似于 HTTP 是 Web 的通信标准,A2A 要成为 Agent 世界的通信标准。
在理解 A2A 之前,先厘清它和 MCP(Model Context Protocol)的定位差异:MCP 解决 Agent 如何连接外部工具和数据源(Agent ←→ 工具,垂直集成);A2A 解决 Agent 如何与其他 Agent 通信协作(Agent ←→ Agent,水平协作)。两者互补:Agent A 通过 MCP 连工具获取数据,通过 A2A 把数据发给 Agent B 分析,Agent B 再用 MCP 调可视化工具生成图表,最后通过 A2A 返回给 Agent A。每个 Agent 既能独立连工具(MCP),又能跨 Agent 协作(A2A)。

图1:MCP 向下连工具、A2A 向上连 Agent,互补架构
02A2A 五大核心概念
概念
说明
Agent CardAgent 的"名片",描述能力、URL、认证方式
TaskAgent 间的协作单元,有生命周期
MessageAgent 之间交换的消息
Artifact任务产出物(文件、数据等)
Streaming支持实时流式通信

图2:A2A 协议五大核心概念
03Agent Card:Agent 的能力名片
每个 A2A 的远程 Agent 都需要发布一个 JSON 格式的名片,被称为 Agent Card,用于描述这个 Agent 具有哪些技能及其认证机制,便于 Client 获得这些信息并选择合适的 Agent 来完成协作任务。一个典型的 Agent Card 长这样:
json
{
"name": "Data Analysis Agent",
"description": "专业数据分析 Agent,支持 SQL 查询和数据可视化",
"url": "https://agent.example.com",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": false
},
"skills": [
{
"id": "sql_analysis",
"name": "SQL 数据分析",
"description": "执行 SQL 查询并生成分析报告",
"inputModes": ["text"],
"outputModes": ["text", "file"]
}
],
"authentication": {
"schemes": ["bearer"]
}
}
核心字段解析:name / description 声明身份与定位;url 是服务端点;capabilities 声明是否支持流式与推送通知;skills 是能力清单(每个技能声明输入/输出模式);authentication 声明认证方案(如 bearer token)。有了它,调度器不用硬编码对方地址,解析名片即可动态发现可用服务。
04Task 生命周期:任务的状态机
Task 是 Client 和远程 Agent 之间协作的一个概念:一个 Task 代表一个需要完成的任务,每个 Task 都有一个唯一的 ID,通常包含任务状态、历史记录和执行结果等信息。Task 的主要状态有:submitted(已提交)、working(处理中)、completed(已完成)、canceled(已取消)、failed(失败),以及**input-required(等待输入)**等。

图3:Task 生命周期状态机
Task 生命周期完整流转:创建后进入处理中;处理过程中如果 Agent 需要用户或另一个 Agent 补充输入,则进入"等待输入"状态,收到输入后继续处理;最终到达完成或失败;任务可被取消。TaskManager 负责追踪每个任务的当前状态与所有权,支持异步回调与状态轮询,让长周期任务可被可靠管理。
05Artifact 与 Message:产出物和消息
**Artifact(任务产出物)**与 DevOps CI/CD 流水线中的 Artifact 概念类似,是远程 Agent 执行完任务后生成的输出结果。每个任务的结果可能都不一样,一个 Artifact 可以包含多个部分(parts),每个 part 可以是文本、文档、图像等。按类型分三种:
Part 类型
用途
示例
TextPart纯文本内容
指令、问题、回答
FilePart文件传输
文档、图片、数据文件
DataPart结构化数据
JSON 表单、参数、机器可读信息
**Message(消息)**是 Client 和远程 Agent 之间通信的消息对象,通常包含指令和状态更新等内容。一个 Message 对象也可以包含多个 parts,用于传递文本、文件或结构化数据等不同类型的内容。每个 Message 都有发送方设置的唯一 messageId,并通过关键词如 user(代表 Client 发送)或 agent(代表服务端发送)来区分角色。
06面试高频追问:4 道题与参考回答
Q1:A2A 协议有了解过吗?说说你的理解?
A2A(Agent-to-Agent)是 Google 提出的 Agent 间通信标准,目标是像 HTTP 统一 Web 通信那样,统一 Agent 世界的发现、通信与协作。它解决的核心问题是异构 Agent 的互操作:不同厂商、不同框架构建的 Agent,通过统一的 Agent Card 暴露能力、通过标准化的 Task 生命周期管理任务流转、通过 Message/Artifact 交换消息与产出物、通过 Streaming 实现实时同步。它的定位与 MCP 互补:MCP 向下连工具和数据源(垂直集成),A2A 向上连 Agent(水平协作)。
Q2(追问):A2A 协议和 MCP 区别?
两者解决不同层面的问题,互补而非竞争。MCP(Model Context Protocol)定义"单个模型如何调用外部工具":通信双方是大语言模型与外部工具/数据源(数据库、API、文件系统),调用方向单向(模型主动调用、工具被动执行),适用于 Agent 获取外部数据或执行具体操作的场景。A2A 定义"多个智能体如何相互通信与协作":通信双方是 AI 智能体与 AI 智能体(可以是不同公司、不同框架构建的),调用方向双向(任意一方均可发起请求、委派任务、同步状态、返回结果),适用于多 Agent 协同完成复杂任务的场景。总结:MCP 向下连工具,A2A 向上连 Agent,复杂的多 Agent 系统里两者通常都要用到。
Q3(追问):有实际用过吗?一般什么场景用 A2A,什么场景用 MCP?
MCP 适用于单个智能体需要获取外部实时数据或执行具体操作的场景:查询天气、读取本地文件、发送邮件、调用企业内部 API、操作数据库等。A2A 适用于多个智能体协同完成复杂任务的场景:例如一个客服 Agent 收到用户请求后,委派订单 Agent 查询物流状态,再委派售后 Agent 处理退款,最后将结果汇总返回给用户。两者常组合使用------Agent A 通过 MCP 连接数据库获取数据,通过 A2A 将数据发送给 Agent B 做分析,Agent B 通过 MCP 调用可视化工具生成图表后通过 A2A 返回给 Agent A。回答时建议结合自己的项目举例说明具体落地方式。
Q4:你觉得整个 A2A 协议的核心原理是什么?
A2A 的核心原理是通过标准化的 Agent 能力描述与任务生命周期管理,实现异构 Agent 间的互操作。它不关心 Agent 内部如何推理,只定义对外协作的契约。核心机制拆解为四点:第一,Agent Card 与能力注册------每个 Agent 通过 Agent Card 暴露身份、技能、接口地址与认证方式,调度器解析"能力名片"即可动态发现可用服务,实现松耦合绑定,无需硬编码对方地址。第二,Task 生命周期管理------协议围绕 Task 对象定义完整流转状态(提交、处理中、等待输入、完成、失败),TaskManager 追踪每个任务的当前状态与所有权,支持异步回调与状态轮询,让长周期任务可被可靠管理。第三,Stream 流式同步机制------StreamManager 管理流式通道,允许执行端持续推送中间产物、消费端实时接收,大幅降低感知延迟。第四,Message 与传输通道抽象------Message 承载任务内容(含 role、parts 等结构字段),底层传输通过 HTTP、gRPC 等通道实现,消息格式与传输方式解耦,保证协议扩展性。总结:Agent Card 解决"谁有能力",Task/TaskManager 解决"任务交给谁、到哪一步了",StreamManager 解决"如何实时同步中间结果"------三者共同构成一套让异构 Agent 可发现、可委托、可追踪的协作协议。
落地总结
A2A 协议记住三句话:**MCP 向下连工具、A2A 向上连 Agent,二者互补不互斥;Agent Card 解决"谁有能力"、Task 生命周期解决"任务到哪一步了"、Streaming 解决"结果怎么实时同步";多 Agent 系统落地时,用 Agent Card 做服务发现、用 Task 做任务追踪、用 Message/Artifact 做数据交换,即可实现异构 Agent 的可发现、可委托、可追踪。**面试时把"A2A vs MCP 互补关系"和"四大核心机制"讲清楚,就抓住了协议本质。
关注我们,一起把技术讲明白(寻码札记)