从单体智能到群体智慧:A2A 协议解析


AI模型已然从文字走向多模态,能力边界不断拓展。从斯坦福小镇到 ChatDev,再到 AutoGen 和 LangGraph,多 Agent 协作模式也在不断发展。
个体越聪明,协作越复杂,群体智慧越强大——人类如此,AI亦然。
当个体 LLM 成熟到一定程度,协作复杂度达到新的临界点,A2A(Agent to Agent)协议的出现,为智能体互联提供标准化规范。

一、A2A 是什么

A2A (Agent to Agent) 是 Google 于 2025 年 4 月推出的智能体间协作协议,解决异构AI智能体的互操作问题。其核心是使智能体能够具备:

  • 发现能力:通过 Agent Card 了解其他智能体的技能
  • 协商交互:选择合适的通信模态和格式
  • 管理任务:处理有状态的、长期的协作工作流
  • 安全协作:在不暴露内部实现的前提下交换信息

这种协议,是对 MCP 协议的补充,MCP 是面向上下文的协议,极大的扩展了 Agent 的能力,增强了 LLM 和外部系统的交互能力。A2A 是面向 Agent 互通的协议。两者结合,为 LLM 处理更加复杂任务提供的技术框架。

五大设计原则:

  • 简单原则:基于 HTTP、JSON-RPC 2.0、SSE 等成熟标准,降低实施门槛
  • 企业就绪:协议架构兼容企业级身份验证、授权、安全、隐私、审计、监控标准,支持与现有企业基础设施无缝集成
  • 异步优先:原生支持长期任务执行和人机协作循环,通过状态管理和多种通信模式实现异步协作。
  • 模态无关:协议在设计上不偏向特定模态,通过统一的 Part 类型系统支持文本、文件、结构化数据、多媒体等多种内容类型的交换
  • 不透明执行:基于能力声明进行协作,隐藏内部实现细节

A2A 是为 AI 智能体生态设计的”网络协议”,实现了标准化、安全化、产业化的智能体协作机制。

二、核心概念

A2A 核心协议实体,涉及 Agent 本身以及通信所需的数据对象。

2.1 Agent


一个 Agent 系统,如上所示。它是一个独立的、能够自主决策的智能系统,可以规划、调用工具、完成动作,具备记忆。
在 A2A 协议中,其被赋予了更多能力,比如 Remote Agent 的通信与协作。

  • Client Agent:一次交互中的用户意图代理执行者,通过 AgentCard 发现和匹配合适的 Remote Agent,明确期待的结果格式,但无需了解具体实现方式。
  • Remote Agent:一次交互中的专业服务提供者,通过 A2A 标准接口接收请求,以不透明方式处理任务并交付结果,内部实现对 Client 完全隐藏。

Client Agent 和 Remote Agent 的身份本身是相对的。

2.2 数据对象

  • AgentCard:Agent的”身份证”和”能力说明书”,即我是谁,我能干什么。它被用于服务发现和能力匹配。本质上,它是 Agent 向外界声明自己身份、技能和接入方式的标准化元数据的 json 文档。
    核心字段:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    {
    "name": "翻译专家Agent",
    "description": "支持多语言翻译服务",
    "url": "https://translate-agent.example.com/a2a/v1", //Agent的HTTP服务地址
    "capabilities": {
    "streaming": true, // 支持Server-Sent Events流式更新
    "pushNotifications": false // 不支持webhook异步推送
    },
    "securitySchemes": { // 声明Agent支持哪些认证方式
    "oauth2": {
    "type": "oauth2",
    "flows": {...}
    }
    },
    "security": [{"oauth2": ["translate"]}], // 声明访问该Agent的安全要求:必须使用oauth2方案并具备translate权限
    }
    "skills": [
    {
    "id": "text-translation", // 技能ID
    "name": "文本翻译", // 技能名称
    "description": "多语言文本翻译", // 技能描述
    "tags": ["translation"] // 技能标签,支持基于标签的模糊匹配和分类搜索
    }
    ]
    }
  • Message:Agent 间通信的基本载体,承载一次对话回合的完整信息,包括发送者身份、内容和上下文。
    核心字段:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "messageId": "msg-12345", // 每次消息传递都必须唯一
    "role": "user", // "user" 或 "agent"
    "parts": [ // 多模态内容数组
    {
    "kind": "text",
    "text": "请帮我分析这个数据文件"
    },
    {
    "kind": "file",
    "file": {
    "name": "data.csv",
    "mimeType": "text/csv",
    "bytes": "base64编码内容..."
    }
    }
    ],
    "taskId": "task-67890", // 可选,任务关联标识
    "contextId": "ctx-abc123", // 可选,会话上下文标识。唯一表示一次请求的一个业务流程
    "kind": "message" // message, task, status-update 等
    }
  • Part:Message 和 Artifact 的最小内容单元,通过统一的类型系统表示多模态数据,支持在 A2A 协议中进行序列化传输。
    核心字段:
    1
    2
    3
    4
    5
    6
    7
    8
    {
    "kind": "file",
    "file": {
    "name": "image.png",
    "mimeType": "image/png",
    "bytes": "iVBORw0KGgoAAAANSUhEUgAAAAUA..." // base64编码
    }
    }
  • Task:复杂请求的生命周期管理容器,跟踪任务状态、存储交互历史、管理执行上下文。
    核心字段:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    {
    "id": "task-987654", // Task的全局唯一标识符
    "contextId": "ctx-abc123",
    "status": {
    "state": "working", // Task 的生命周期:submitted/working/completed/failed等
    "timestamp": "2025-06-17T10:35:30Z"
    },
    "history": [ // 历史记录
    {
    "messageId": "msg-12345",
    "role": "user",
    "parts": [...],
    "kind": "message"
    }
    ],
    "artifacts": [ // 任务成果
    {
    "artifactId": "report-001",
    "name": "分析报告",
    "parts": [...]
    }
    ],
    "kind": "task"
    }
  • Artifact:任务执行的最终交付物,包含 Agent 生成的具体成果,支持增量更新和流式传输。
    核心字段:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
    "artifactId": "report-001",
    "name": "分析报告",
    "description": "数据分析结果",
    "parts": [
    {
    "kind": "text",
    "text": "# 分析报告\n\n本次分析发现..."
    },
    {
    "kind": "file",
    "file": {
    "name": "chart.png",
    "mimeType": "image/png",
    "uri": "https://storage.example.com/chart.png"
    }
    }
    ]
    }

三、主要流程

3.1 标准流程

  • 发现阶段
    Client Agent 通过获取 Remote Agent 的 AgentCard 了解其身份和能力。AgentCard 包含 agent 的服务端点、认证要求、支持的输入输出模式、具体能力等元数据信息,实现智能体的标准化服务发现。
    在实践过程中,可以通过注册中心(比如 Nacos)实现 Agent 的自动注册和发现。
  • 通信阶段
    Client Agent 基于 AgentCard 中的认证要求,在 HTTP 请求头中携带预先获得的认证凭证(如Bearer token、API Key等),通过 JSON-RPC 2.0 的 message/sendmessage/stream 方法向 Remote Agent 发送Message。Message包含角色标识(user/agent)、多模态内容部分(Parts)和元数据,建立标准化的安全通信信道。
  • 协作阶段
    Remote Agent 接收 Message 后,根据请求复杂度选择直接返回 Message 响应,或创建 Task 管理复杂的处理过程。对于Task模式,在生命周期内双方通过Message进行多轮交互。每个 Message 由多个 Part 组成以承载具体的多模态内容(文本、文件、结构化数据)。
  • 交付阶段
    Remote Agent 通过 Artifact 交付任务成果,支持流式传输(SSE)实现实时更新,以及异步推送通知到 Client 的 webhook 端点。

3.2 基于 A2A 的应用增强

基于 A2A 协议的标准化接口,可以在应用层构建以下增强型功能:

  • 智能路由:Client 通过解析 AgentCard 元数据,根据能力匹配度、负载状况、响应时延等指标,实现任务的智能分发和负载均衡。

  • 任务编排:Client 作为编排引擎,将复杂业务流程分解为多个子任务,通过 A2A 协议协调多个专门 Agent,支持串行、并行、条件分支等执行模式。

  • 服务治理:结合注册中心和监控系统,基于 AgentCard 的标准化描述实现Agent的自动发现、健康检查、故障转移和版本管理。

四、参考链接

Kafka, A2A, MCP, and Flink: The New Stack for AI Agents
Smart Routing: The Hidden Secret Behind 10x More Powerful AI Systems
Key Concepts in A2A
Agent2Agent (A2A) Protocol Specification
万字长文深入浅出教你优雅开发复杂AI Agent

© 2025 YueGS