首页 › AI Agent › Agent100道面试题 › 多 Agentmulti-agent › A2A(Agent-to-Agent)协议是什么?它与 MCP 有何区别?

A2A(Agent-to-Agent)协议是什么?它与 MCP 有何区别?

难度:中级 分类:Multi-Agent​

简短回答​

A2A(Agent-to-Agent) 是 Google 于 2025 年 4 月发布的开放协议,旨在让不同厂商、不同框架构建的 AI Agent 之间实现标准化通信与协作。2025 年 6 月由 Google 捐赠给 Linux Foundation 托管,目前已有 150+ 组织参与。协议在版本演进中将核心方法名从 tasks/send / tasks/sendSubscribe 重命名为 message/send / message/stream,并将 Agent Card 路径从 /.well-known/agent.json 改为 /.well-known/agent-card.json(RFC 8615 合规),还新增了 gRPC binding 与 Agent Card signing 支持(具体版本号以 A2A 协议仓库最新版本为准)。协议基于 HTTP + JSON-RPC 2.0 + SSE 构建,核心概念包括 Agent Card(服务发现)、Task(任务生命周期管理)、Message 和 Artifact(交互载体)。与 Anthropic 主导的 MCP(Model Context Protocol) 不同,MCP 解决的是 Agent 与 Tool 之间的纵向能力扩展("Agent 如何调用工具"),A2A 解决的是 Agent 与 Agent 之间的横向协作("Agent 如何委托另一个 Agent")。两者定位互补——一个 Agent 可以同时用 MCP 连接工具、用 A2A 与其他 Agent 协作。进入 2026 年,A2A 工具链快速成熟:Google 在开源的 Agent Development Kit(ADK)中原生支持 A2A,Agent 可直接部署到 Vertex AI Agent Engine,「MCP 管工具 + A2A 管 Agent 间协作」的双层标准格局基本成型。​

详细解析​

A2A 的诞生背景​

随着 AI Agent 在企业中大规模部署,不同团队、不同厂商构建的 Agent 之间无法直接对话,形成了"Agent 孤岛"。​

​

代码块​

Plain Text

┌─────────────┐ ╳ ┌─────────────┐ ╳ ┌─────────────┐​

│ LangChain │ 不兼容 │ CrewAI │ 不兼容 │ AutoGen │​

│ Agent │◄────────► │ Agent │◄────────► │ Agent │​

└─────────────┘ └─────────────┘ └─────────────┘​

引入 A2A 后 ↓​

┌─────────────┐ A2A ┌─────────────┐ A2A ┌─────────────┐​

│ LangChain │◄────────► │ CrewAI │◄────────► │ AutoGen │​

│ Agent │ JSON-RPC │ Agent │ JSON-RPC │ Agent │​

└─────────────┘ └─────────────┘ └─────────────┘​

​

Google 联合 Atlassian、Salesforce、SAP 等 50+ 企业伙伴推出 A2A,目标是成为 Agent 间通信的"HTTP"——与框架无关、与模型无关的开放标准。​

协议层次架构​

​

#qnfzmtCHBklr text { white-space: pre; }#qnfzmtCHBklr .fb0 { stroke: var(--N900-FG, 0.15); }#qnfzmtCHBklr .fb0 {stroke: rgba(31,35,41, 0.15)}#qnfzmtCHBklr .fx0 { stroke-miterlimit: 10; }#qnfzmtCHBklr .fx0 {stroke-miterlimit: 10}#qnfzmtCHBklr .fa1 { fill: rgb(187, 191, 196); }#qnfzmtCHBklr .fa1 {fill: rgb(187, 191, 196)}#qnfzmtCHBklr .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#qnfzmtCHBklr .fx1 {font-style: normal}#qnfzmtCHBklr .fx2 { text-anchor: middle; }#qnfzmtCHBklr .fx2 {text-anchor: middle}#qnfzmtCHBklr .fx3 { dominant-baseline: central; }#qnfzmtCHBklr .fx3 {dominant-baseline: central}#qnfzmtCHBklr .fx4 { stroke: none; }#qnfzmtCHBklr .fx4 {stroke: none}#qnfzmtCHBklr .fc0 { fill: var(--text-caption); }#qnfzmtCHBklr .fc0 {fill: #646a73}#qnfzmtCHBklr .fa2 { fill: var(--text-link-disabled); }#qnfzmtCHBklr .fa2 {fill: rgb(187, 191, 196)}#qnfzmtCHBklr .fx5 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#qnfzmtCHBklr .fx5 {font-style: normal}#qnfzmtCHBklr .fx6 { text-anchor: start; }#qnfzmtCHBklr .fx6 {text-anchor: start}#qnfzmtCHBklr .fx7 { dominant-baseline: alphabetic; }#qnfzmtCHBklr .fx7 {dominant-baseline: alphabetic}#qnfzmtCHBklr .fc1 { fill: rgb(0, 0, 0); }#qnfzmtCHBklr .fc1 {fill: rgb(0, 0, 0)}#qnfzmtCHBklr .fb1 { fill: var(--N900-FG, 0.15); }#qnfzmtCHBklr .fb1 {fill: rgba(31,35,41, 0.15)}#qnfzmtCHBklr .fb2 { fill: rgb(209, 217, 224); }#qnfzmtCHBklr .fb2 {fill: rgb(209, 217, 224)}#qnfzmtCHBklr .fa3 { fill: var(--bg-body); }#qnfzmtCHBklr .fa3 {fill: #fff}AB123456层应用层消息格式实时推送传输层安全层技术/协议Agent Card / Task / Message / ArtifactJSON-RPC 2.0SSE(Server-Sent Events)HTTP / HTTPSOAuth 2.0 / API Key / JWT

​

核心概念详解​

Agent Card(服务发现)​

每个 A2A Agent 在 /.well-known/agent-card.json 发布 Agent Card,声明能力和认证方式,类似 OpenAPI spec。注:早期版本使用 /.well-known/agent.json 路径,后改为 agent-card.json 以符合 RFC 8615(具体版本以 A2A 协议仓库最新版本为准)。​

Task 生命周期​

Task 是协议核心工作单元,有明确的状态机:​

​

飞书文档 - 图片

​

Task 是有状态的工作单元:可暂停等待输入(input-required)再恢复,而非单次无状态调用。​

Message 和 Artifact​

Message 是 Agent 间的对话载体(含 text、file 等多模态 parts);Artifact 是任务产出的结构化成果物,与 Message 分离,便于下游消费。​

A2A 与 MCP 的定位差异​

​

飞书文档 - 图片

​

MCP 纵向连工具,A2A 横向连 Agent——双层标准互补而非替代。​

​

表格加载中...

​

一句话概括:MCP 让 Agent 变得更强(纵向),A2A 让 Agent 之间能合作(横向)。​

A2A 工具链与生态进展(2026)​

A2A 自 2025 年捐赠给 Linux Foundation 后,2026 年的核心进展集中在工具链成熟化和与 MCP 的双层标准格局落地:​

​

​

​

架构全景见上文「A2A 与 MCP 的定位差异」配图。​

​

​

代码块​

Plain Text

​

​

为什么 ADK 原生支持是关键节点:在 ADK 之前,实现一个合规的 A2A Agent 需要自行拼装协议层样板代码,准入门槛高;ADK 把这些沉淀为框架内置能力,使 A2A 从「协议规范」走向「可直接用于生产的工程平台」,是生态从"纸面标准"转向"规模化采用"的分水岭。​

​

Python 代码示例:A2A 交互模拟​

​

代码块​

Python

import json​

import uuid​

​

A2A 的关键设计原则​

​

​

常见误区 / 面试追问​

误区:"A2A 会取代 MCP" — A2A 和 MCP 解决的是两个正交问题。MCP 是 Agent 连接工具和数据源的标准(纵向扩展能力),A2A 是 Agent 之间协作通信的标准(横向建立合作)。一个成熟的 Agent 系统往往同时需要两者:用 MCP 获取能力,用 A2A 实现分工协作。它们更像是 TCP 和 HTTP 的关系——不同层次、互相配合。2026 年这一"双层标准"定位已成行业共识——Google ADK 同时内置 A2A 与 MCP 支持,一个 Agent 既是 A2A Server(对外暴露能力),又作为 MCP Client(调用工具)。​

误区:"A2A 只适用于同构 Agent" — 恰恰相反,A2A 的核心设计目标就是让异构 Agent 互通。无论 Agent 基于 Claude、GPT 还是 Gemini,用 LangChain 还是自研框架,只要实现 A2A 协议就能互相协作。Agent Card 中的 skills 是语义级描述,而非实现级绑定。​

追问:"A2A 如何处理长时间运行的任务?" — 三种机制:(1) SSE 流式推送——通过 message/stream(早期版本为 tasks/sendSubscribe)实时推送中间状态和增量结果;(2) Push Notification——客户端注册 webhook 回调,服务端在状态变更时主动通知,适合数小时级任务;(3) Task 状态轮询——通过 tasks/get 随时查询进度。三种机制覆盖秒级到天级的各种任务时长。​

追问:"如何在 A2A 中实现身份验证和授权?" — Agent Card 的 authentication 字段声明支持的认证方案。协议复用成熟的 Web 安全标准:OAuth 2.0(企业间协作首选)、API Key(内部系统)、JWT Bearer Token(无状态场景)。同时 Agent Card 的 skills 可设置权限级别,实现细粒度能力授权——如允许"查询"但禁止"修改"。​