A2A 协议详解:Agent 间通信标准、四大核心机制与 MCP 互补

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 互补关系"和"四大核心机制"讲清楚,就抓住了协议本质。

关注我们,一起把技术讲明白(寻码札记)

相关推荐
小范的技术工坊1 小时前
大模型同步、异步、流式输出
大模型·结构化
光依旧6 小时前
MCP实战手记(九):生产化MCP Server的6层安全防护
java·人工智能·spring boot·安全·网络安全·ai agent·mcp
浅安的邂逅16 小时前
20929-OpenAI 一天踩三脚急刹:暂停前沿训练、叫停 Astra、披露越权访问澳政府网站
人工智能·大模型·ai编程·行业动态·ai日报
问天_观心20 小时前
大模型训练与推理优化(二)
人工智能·深度学习·学习·大模型·transformer
小范的技术工坊1 天前
大模型蒸馏
人工智能·算法·数据挖掘·大模型
liferecords1 天前
笔记本硬跑 744B 大模型:GitHub 上的『蜂鸟』把 SSD 当显存用
人工智能·开源·大模型·推理优化
爱喝雪碧的可乐1 天前
CSDN|爆火哑巴AI Jev模型深度实战|技术博客
人工智能·大模型·jev
梦想不只是梦与想1 天前
LangGraph控制流:条件边、循环与并行(二)
langchain·大模型·边