A2A 协议全解析:2026 年 AI Agent 通信标准的前沿技术深度实践
前言
2026 年,AI Agent 已从单点工具演化为多 Agent 协作系统。LangGraph、CrewAI、AutoGen 等框架可以编排多个 Agent,但这些 Agent 被"困"在同一个框架内。一旦需要与外部 Agent 通信,就变得非常困难。
A2A(Agent2Agent Protocol) 正是为解决这一问题而生的开放标准。就像 HTTP 让不同网站可以互联一样,A2A 让不同 Agent 可以互通。
本文将从技术背景、核心架构、代码实战、生态现状四个维度,全面解析这项最近三个月最热门的 AI 应用开发技术。
一、技术背景:为什么需要 A2A?
1.1 多 Agent 协作的痛点
在实际企业场景中,一个复杂任务往往需要多个专业 Agent 协作完成。例如:
-
研究 Agent 负责信息搜集
-
分析 Agent 负责数据处理
-
写作 Agent 负责生成报告
这些 Agent 可能由不同团队、不同框架、不同厂商构建。在 A2A 出现之前,主要面临三种方案:
| 方案 | 问题 |
|---|---|
| 同框架编排(LangGraph/CrewAI) | Agent 被"困"在同一个框架内,无法跨框架协作 |
| 自定义 API | 缺乏标准,Agent 之间很难互操作,维护成本高 |
| 手动集成 | 每次对接都需要重新开发,无法规模化 |
1.2 A2A 的诞生
A2A 由 Google 于 2025 年 4 月 发布,专为 AI Agent 之间的通信与协作设计。2025 年 6 月,该项目贡献给 Linux Foundation,由新成立的 Agentic AI Foundation(AAIF) 负责管理。
六大创始成员:OpenAI、Anthropic、Google、Microsoft、AWS、Block。
截至 2026 年中,已有 150+ 组织(包括 AWS、Microsoft、Salesforce、SAP、IBM、ServiceNow 等)在生产环境中采用 A2A 协议,GitHub 仓库 Star 数超过 22,000。
二、核心架构:三层架构 + 五大概念 + 七大原语
2.1 三层架构
A2A 协议在逻辑上分为三层,自上而下职责分明:
┌─────────────────────────────────────────┐ │ Protocol Bindings 层(传输绑定) │ │ JSON-RPC over HTTP / gRPC / REST │ ├─────────────────────────────────────────┤ │ 操作原语层(7个核心操作) │ │ SendMessage / GetTask / Subscribe... │ ├─────────────────────────────────────────┤ │ 数据模型层(5个核心概念) │ │ Task / Message / Part / Card / Artifact│ └─────────────────────────────────────────┘
2.2 五大核心概念
| 概念 | 说明 |
|---|---|
| AgentCard | Agent 的自描述 JSON 清单,发布于 /.well-known/agent-card.json,声明名称、能力、技能列表和认证方式。客户端可通过标准 URI 自动发现 |
| Task | 工作单元,具有完整生命周期:working → completed / failed / canceled / rejected / input-required。每个 Task 有全局唯一 ID,支持跨 Agent 追踪 |
| Message | 通信单元,角色为 "user" 或 "agent",包含一个或多个 Part,是 Agent 间对话的载体 |
| Part | 消息的组成部分,支持文本、图片、文件等多种格式 |
| Artifact | Agent 产出的输出物,由 Part 组成,支持版本控制和增量更新,流式场景下可逐步追加内容 |
2.3 七大操作原语
| 操作 | 功能 | 适用场景 |
|---|---|---|
SendMessage |
发起任务或在已有 Task 下追加消息 | 同步短任务 |
GetTask |
轮询指定 Task 的当前状态和输出 | 异步任务状态查询 |
ListTasks |
分页查询当前 Agent 的 Task 列表 | 任务管理后台 |
CancelTask |
幂等取消任务,返回最终状态 | 超时处理、用户撤销 |
SubscribeToTask |
持久流订阅任务更新(gRPC 双向流) | 长时间运行的 Agent 任务 |
Push Notifications |
Agent 主动向调用方 Webhook 推送状态变更 | 跨服务器异步通知 |
Streaming |
通过 SSE 流式返回任务进展 | 实时进度展示 |
2.4 AgentCard 示例
以下是一个标准的 AgentCard JSON 结构,发布于 https://agent.example.com/.well-known/agent-card.json:
{
"name": "Research Agent",
"description": "专业的研究分析 Agent,擅长信息搜集和整理",
"url": "https://agent.example.com/a2a",
"version": "1.0.0",
"capabilities": {
"streaming": true,
"pushNotifications": true
},
"skills": [
{
"id": "web_search",
"name": "互联网搜索",
"description": "搜索互联网上的最新信息",
"examples": ["搜索 2026 年 AI Agent 发展趋势"]
},
{
"id": "code_review",
"name": "代码审查",
"description": "审查代码质量并提出改进建议",
"examples": ["审查这个 PR 的代码质量"]
}
],
"authentication": {
"type": "bearer",
"token": "your-api-key"
}
}
任何支持 A2A 的客户端或编排框架,只需请求 /.well-known/agent-card.json 即可自动发现该 Agent 的能力,无需手动配置。这与 MCP 需要显式注册 Server 的方式形成鲜明对比。
三、A2A vs MCP:不是竞争,而是互补
3.1 核心定位
| 维度 | MCP | A2A |
|---|---|---|
| 定位 | Agent → 工具/数据 | Agent → Agent |
| 提出者 | Anthropic | |
| 协议 | JSON-RPC over stdio/SSE | JSON-RPC / gRPC / HTTP REST |
| 发现机制 | 手动配置 MCP Server 列表 | AgentCard 自动发现(/.well-known/) |
| 生态规模 | 8,000+ 社区服务器 | 150+ 组织支持 |
| 治理 | Anthropic 主导 | Linux Foundation / AAIF |
3.2 什么时候用 MCP?
-
Agent 需要读写文件系统
-
Agent 需要查询数据库
-
Agent 需要调用本地工具(代码执行、浏览器控制)
3.3 什么时候用 A2A?
-
需要协调多个专用 Agent 完成复杂任务
-
Agent 跨服务器、跨组织部署
-
任务需要分配给远程 Agent 并等待结果
-
需要与第三方 Agent 服务对接
3.4 完整企业 AI 栈架构
┌──────────────────────────────────────────────┐ │ 用户请求 / 业务触发 │ ├──────────────────────────────────────────────┤ │ A2A 层(Agent 协作层) │ │ ┌──────────┐ A2A ┌──────────┐ │ │ │ Agent A │◄────►│ Agent B │ │ │ │ (编排者) │ │ (搜索者) │ │ │ └────┬─────┘ └────┬─────┘ │ │ │ MCP │ MCP │ ├───────┼──────────────────┼──────────────────┤ │ MCP 层(工具接入层) │ │ ┌─────▼─────┐ ┌──────▼─────┐ │ │ │ 数据库工具 │ │ 搜索API工具 │ │ │ │ 文件系统 │ │ 代码执行器 │ │ │ └───────────┘ └────────────┘ │ └──────────────────────────────────────────────┘
一句话关系:完整的企业 Agent 栈 = MCP(工具接入层)+ A2A(Agent 协作层)。两者解决不同层次的问题,不存在"选哪个"的问题。
四、代码实战:A2A + MCP 组合开发
4.1 场景:自动化研究报告生成
构建一个自动生成行业研究报告的系统:
-
研究 Agent(A2A Client):协调整个流程
-
搜索 Agent(A2A Server + MCP):负责信息搜集
-
分析 Agent(A2A Server + MCP):负责数据分析
-
写作 Agent(A2A Server + MCP):负责生成报告
4.2 安装 A2A Python SDK
pip install a2a-python
4.3 定义 Agent Card
# search_agent_card.py
from a2a.types import AgentCard, Skill
agent_card = AgentCard(
name="Search Agent",
description="专业的互联网信息搜索 Agent",
url="http://localhost:8001/a2a",
version="1.0.0",
capabilities={
"streaming": True,
"pushNotifications": True
},
skills=[
Skill(
id="web_search",
name="互联网搜索",
description="搜索互联网上的最新信息",
examples=["搜索 2026 年 AI Agent 发展趋势"]
)
]
)
4.4 实现 A2A Server(搜索 Agent)
# search_agent_server.py
from a2a.server import A2AServer
from a2a.types import AgentCard, TextMessage, TaskStatus
import asyncio
agent_card = AgentCard(
name="Search Agent",
description="专业的互联网信息搜索 Agent",
url="http://localhost:8001",
version="1.0.0",
capabilities={"streaming": True, "pushNotifications": True},
skills=[...]
)
server = A2AServer(agent_card=agent_card)
@server.on_task
async def handle_task(task):
"""处理搜索任务"""
user_message = task.message.content # 获取用户输入
# 调用 MCP 工具执行搜索
from mcp import Client
mcp_client = Client("search-tools-server")
search_results = await mcp_client.call_tool(
"web_search", {"query": user_message}
)
# 返回结果
task.status = TaskStatus.COMPLETED
task.artifacts = [
TextMessage(content=f"搜索结果:\n{search_results}")
]
return task
if __name__ == "__main__":
asyncio.run(server.run(host="0.0.0.0", port=8001))
4.5 实现 A2A Client(研究编排 Agent)
# research_orchestrator.py
from a2a.client import A2AClient
import asyncio
async def main():
# 自动发现搜索 Agent
search_client = A2AClient("https://search-agent.example.com/a2a")
# 发送搜索任务
task = await search_client.send_message({
"role": "user",
"parts": [{"type": "text", "content": "搜索 2026 年 AI Agent 发展趋势"}]
})
# 订阅任务进展(流式)
async for update in search_client.subscribe_to_task(task.id):
print(f"任务状态: {update.status}")
if update.status == "completed":
print(f"搜索结果: {update.artifacts[0].content}")
# 将搜索结果发送给分析 Agent
analysis_client = A2AClient("https://analysis-agent.example.com/a2a")
analysis_task = await analysis_client.send_message({
"role": "user",
"parts": [{"type": "text", "content": f"分析以下数据:{task.result}"}]
})
# 等待分析完成
result = await analysis_client.get_task(analysis_task.id)
print(f"分析结果: {result.artifacts[0].content}")
asyncio.run(main())
4.6 MCP 集成:每个 Agent 内部连接工具
# mcp_integration.py
from mcp import Client
# 搜索 Agent 通过 MCP 连接搜索工具
mcp_client = Client("search-tools-server")
# 注册可用工具
await mcp_client.register_tool(
name="web_search",
description="搜索互联网信息",
schema={"query": "string"}
)
await mcp_client.register_tool(
name="news_search",
description="搜索新闻",
schema={"query": "string", "date_range": "string"}
)
五、2026 年生态现状
5.1 生态数据
| 指标 | 数据 |
|---|---|
| A2A 支持组织 | 150+(含 AWS、Microsoft、Salesforce、SAP、IBM、ServiceNow) |
| GitHub Stars | 22,000+ |
| 协议版本 | v0.3(2026年最新) |
| 治理机构 | Linux Foundation / AAIF |
| 创始成员 | OpenAI、Anthropic、Google、Microsoft、AWS、Block |
| ACP 合并 | ACP 已于 2025 年 8 月合并入 A2A |
5.2 主要 SDK
| 语言 | 仓库 | 说明 |
|---|---|---|
| Python | a2aproject/a2a-python |
官方 Python SDK,最活跃 |
| JavaScript/TypeScript | a2aproject/a2a-js |
官方 JS SDK |
| Go | a2aproject/a2a-go |
社区维护 |
| Java | a2aproject/a2a-java |
企业版 |
5.3 框架集成情况
| 框架 | A2A 支持 | MCP 支持 |
|---|---|---|
| LangGraph | ✅ 原生支持 | ✅ 原生支持 |
| CrewAI | ✅ 原生支持 | ✅ 原生支持 |
| Microsoft Agent Framework | ✅ 原生支持 | ✅ 原生支持 |
| Google ADK | ✅ 原生支持 | ✅ 原生支持 |
| OpenAI Agents SDK | ✅ 支持 | ✅ 支持 |
| Claude Agent SDK | ✅ 支持 | ✅ 支持 |
六、企业落地建议
6.1 什么时候应该引入 A2A?
| 场景 | 建议 |
|---|---|
| 单 Agent + 工具调用 | 仅用 MCP 即可 |
| 多 Agent 同框架编排 | 用 LangGraph/CrewAI 内部编排 |
| 多 Agent 跨框架/跨组织协作 | 引入 A2A |
| 对外提供 Agent 服务 | 引入 A2A,让外部可以标准方式调用 |
| 企业内部 Agent 微服务化 | A2A + MCP 组合 |
6.2 落地路线图
第一阶段:MCP 工具接入 └── 为每个 Agent 接入 MCP 工具(数据库、文件、API) 第二阶段:AgentCard 发布 └── 每个 Agent 发布 /.well-known/agent-card.json 第三阶段:A2A 通信接入 └── Agent 之间通过 A2A 协议委托任务、同步结果 第四阶段:编排层建设 └── 使用 LangGraph 或自研编排层协调多 Agent 第五阶段:治理与监控 └── 任务追踪、日志审计、安全认证
七、技术趋势与展望
7.1 四大趋势
-
Agent 互联标准化:A2A 正在成为 Agent 通信的"HTTP",就像互联网时代所有网站都基于 HTTP 一样,AI Agent 时代所有 Agent 都将基于 A2A 互通
-
MCP + A2A 组合成为标配:IDC 预测到 2026 年底,超过 60% 的企业级 AI 应用采用 MCP + A2A 架构
-
Agent 市场涌现:基于 AgentCard 自动发现机制,将出现类似 App Store 的 Agent 市场,企业可以"订阅"外部 Agent 服务
-
国产开源全面崛起:中国产开源模型和 Agent 框架下载量半年增长超过 300%,DeepSeek、阿里 Qwen 等已实现 A2A Day 0 适配
7.2 开发者行动建议
-
学习 A2A 协议:阅读官方文档(a2aprotocol.org),上手 Python SDK
-
为现有 Agent 添加 AgentCard:即使暂时不需要多 Agent 协作,提前发布 AgentCard 为未来做准备
-
关注 MCP 生态:为 Agent 接入 MCP 工具,构建工具接入层
-
尝试 A2A + MCP 组合:构建一个端到端的多 Agent 系统,体验协议协作的威力
总结
A2A 协议是 2026 年 AI 应用开发领域最重要的技术标准之一。它解决了多 Agent 协作的最后一公里问题——让不同框架、不同厂商的 Agent 能够像 HTTP 网站一样自由互联。
核心要点回顾:
-
A2A 解决 Agent → Agent 通信,MCP 解决 Agent → 工具调用,两者互补
-
AgentCard 自动发现是 A2A 的核心创新,无需手动配置
-
三层架构 + 五大概念 + 七大原语构成了完整的协议语义
-
150+ 组织已采用,生态正在快速成熟
-
企业落地路线:先 MCP 工具接入 → 再 AgentCard 发布 → 最后 A2A 通信
"把 MCP 和 A2A 放在一起比较,就像在问'应该用 HTTP 还是 SQL'一样——答案是两个都要,它们解决不同层次的问题。"
更多推荐



所有评论(0)