前言

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 Google
协议 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 四大趋势

  1. Agent 互联标准化:A2A 正在成为 Agent 通信的"HTTP",就像互联网时代所有网站都基于 HTTP 一样,AI Agent 时代所有 Agent 都将基于 A2A 互通

  2. MCP + A2A 组合成为标配:IDC 预测到 2026 年底,超过 60% 的企业级 AI 应用采用 MCP + A2A 架构

  3. Agent 市场涌现:基于 AgentCard 自动发现机制,将出现类似 App Store 的 Agent 市场,企业可以"订阅"外部 Agent 服务

  4. 国产开源全面崛起:中国产开源模型和 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'一样——答案是两个都要,它们解决不同层次的问题。"

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐