第 15 章:智能体间通信(A2A)
单个智能体即使具备强大能力,在面对复杂、多层次问题时仍然存在局限。为了解决这一难题,Agent 间通信(A2A)使得不同框架构建的智能体能够高效协作,实现无缝协调、任务委托和信息交换。
Google 的 A2A 协议是一项开放标准,旨在促进智能体之间的通用通信。本章将介绍 A2A 的原理、实际应用及其在 Google ADK 中的实现。
Agent 间通信模式概述
Agent2Agent(A2A)协议是一项开放标准,旨在实现不同智能体框架之间的通信与协作。它确保了互操作性,使得基于 LangGraph、CrewAI 或 Google ADK 等技术开发的智能体能够跨平台协同工作。
A2A 得到了众多科技公司和服务商的支持,包括 Atlassian、Box、LangChain、MongoDB、Salesforce、SAP 和 ServiceNow。微软计划将 A2A 集成到 Azure AI Foundry 和 Copilot Studio,彰显了对开放协议的重视。此外,Auth0 和 SAP 也在其平台和智能体中集成了 A2A 支持。
作为开源协议,A2A 鼓励社区贡献,推动其不断发展和广泛应用。
A2A 核心概念
A2A 协议为智能体交互提供了结构化方法,包含多个核心概念。理解这些基础对于开发或集成 A2A 兼容系统至关重要。A2A 的基础包括核心参与者、Agent Card、Agent 发现、通信与任务、交互机制和安全性,下面将详细介绍。
核心参与者:A2A 涉及三类主要实体:
- 用户:发起智能体协助请求。
- A2A 客户端(客户端 Agent):代表用户请求操作或信息的应用或 AI Agent。
- A2A 服务器(远程 Agent):提供 HTTP 端点以处理客户端请求并返回结果的智能体或系统。远程智能体作为“黑盒”系统,客户端无需了解其内部实现细节。
Agent Card:Agent 的数字身份由 Agent Card 定义,通常为 JSON 文件。该文件包含与客户端交互和自动发现所需的关键信息,如智能体身份、端点 URL 和版本号,还包括支持的能力(如流式传输或推送通知)、具体技能、默认输入/输出模式及认证要求。以下是 WeatherBot
的 Agent Card 示例:
|
|
Agent 发现:客户端可通过多种方式发现 Agent Card,了解可用 A2A 服务器的能力:
- Well-Known URI:Agent 在标准路径(如
/.well-known/agent.json
)托管 Agent Card,便于公开或域内自动访问。 - 管理型注册表:集中式目录,Agent 可在此发布 Agent Card,并按条件查询,适合企业环境的集中管理与访问控制。
- 直接配置:Agent Card 信息嵌入或私下共享,适用于紧密耦合或私有系统,无需动态发现。
无论采用哪种方式,都应保障 Agent Card 端点安全,可通过访问控制、双向 TLS(mTLS)或网络限制实现,尤其当卡片包含敏感(但非密钥)信息时。
通信与任务:在 A2A 框架中,通信围绕异步任务展开,任务是长流程的基本工作单元。每个任务有唯一标识,并经历提交、处理中、完成等状态,支持复杂操作的并行处理。Agent 间通过消息进行通信。
消息包含属性(如优先级、创建时间等元数据)和一个或多个内容部分(如文本、文件或结构化 JSON 数据)。Agent 在任务中生成的实际输出称为 artifact(工件),与消息类似也由多个部分组成,可按需流式传输。所有 A2A 通信均通过 HTTP(S) 并采用 JSON-RPC 2.0 协议。为保持多次交互的上下文,服务器会生成 contextId 以关联相关任务。
交互机制:请求/响应(轮询)、服务器推送事件(SSE)。A2A 提供多种交互方式,满足不同 AI 应用需求:
- 同步请求/响应:适用于快速操作,客户端发送请求并等待服务器一次性返回完整响应。
- 异步轮询:适合耗时任务,客户端发送请求,服务器立即返回“处理中”状态和任务 ID,客户端可定期轮询任务状态,直到完成或失败。
- 流式更新(SSE):适用于实时、增量结果,建立服务器到客户端的单向持久连接,服务器可持续推送状态或部分结果,无需客户端多次请求。
- 推送通知(Webhook):适合超长或资源密集型任务,客户端注册 webhook URL,服务器在任务状态显著变化时异步推送通知。
Agent Card 会声明智能体是否支持流式传输或推送通知。A2A 支持多模态数据(如文本、音频、视频),可实现丰富的 AI 应用。
|
|
同步请求使用 sendTask
方法,客户端期望一次性获得完整答案。流式请求则用 sendTaskSubscribe
方法建立持久连接,Agent 可持续返回多次增量结果。
|
|
安全性:Agent 间通信(A2A)是系统架构的重要组成部分,确保智能体间数据安全、可靠交换,具备多项内置机制:
- 双向 TLS:建立加密和认证连接,防止未授权访问和数据泄露,保障通信安全。
- 完整审计日志:记录所有智能体间通信,包括信息流、参与智能体和操作,便于审计、排查和安全分析。
- Agent Card 声明:认证要求在 Agent Card 中明确声明,集中管理智能体身份、能力和安全策略。
- 凭证处理:Agent 通常通过 OAuth 2.0 令牌或 API Key 认证,凭证通过 HTTP 头传递,避免暴露在 URL 或消息体中,提高安全性。
A2A 与 MCP 对比
A2A 协议与 Anthropic 的 Model Context Protocol(MCP)互为补充(见图 1)。MCP 关注智能体与外部数据和工具的上下文结构化,而 A2A 专注于智能体间的协调与通信,实现任务委托与协作。

A2A 的目标是提升效率、降低集成成本、促进创新和互操作性,助力复杂多智能体系统开发。因此,深入理解 A2A 的核心组件和运行方式,是设计、实现和应用协作型智能体系统的基础。
实践应用与场景
Agent 间通信是构建复杂 AI 解决方案不可或缺的基础,带来模块化、可扩展性和智能增强。
- 多框架协作:A2A 的核心应用是让不同框架(如 ADK、LangChain、CrewAI)构建的独立智能体实现通信与协作。适用于多智能体系统,各智能体专注于问题的不同方面。
- 自动化工作流编排:在企业场景下,A2A 可实现智能体间任务委托与协调。例如,一个智能体负责数据采集,另一个负责分析,第三个生成报告,三者通过 A2A 协议协同完成复杂流程。
- 动态信息检索:Agent 可互相请求和交换实时信息。主智能体可向专门的数据获取智能体请求市场数据,后者通过外部 API 获取并返回结果。
实战代码示例
A2A 协议的实际应用可参考 samples ,其中包含 Java、Go 和 Python 示例,展示 LangGraph、CrewAI、Azure AI Foundry、AG2 等框架智能体如何通过 A2A 通信。所有代码均采用 Apache 2.0 许可。以下以 ADK 智能体为例,介绍如何用 Google 认证工具搭建 A2A 服务器。完整代码见 GitHub 。
|
|
上述 Python 代码定义了异步函数 create_agent
,用于构建 ADK LlmAgent
。首先通过客户端凭证初始化 CalendarToolset
,访问 Google Calendar API。随后创建 LlmAgent 实例,配置 Gemini 模型、名称和管理日历的说明,并集成 CalendarToolset
工具,实现日历查询和修改。说明中动态插入当前日期,便于时序上下文。
以下代码展示了如何定义智能体的具体说明和工具,完整文件见 GitHub 。
|
|
上述 Python 代码演示了如何搭建一个符合 A2A 协议的“日历 Agent”,用于检查用户日历空闲时间。包括 API Key 或 Vertex AI 配置认证、AgentCard
能力和技能定义、ADK 智能体创建、内存服务配置、Starlette Web 应用初始化、认证回调和 A2A 协议处理,并通过 Uvicorn 以 HTTP 方式暴露智能体服务。
这些示例展示了从能力定义到 Web 服务运行的 A2A 智能体构建流程。通过智能体 Card 和 ADK,开发者可创建可与 Google Calendar 等工具集成的互操作智能体,构建多智能体生态系统。
更多 A2A 实践可参考 How to Build Your First Google A2A Project: A Step-by-Step Tutorial ,该链接提供 Python 和 JavaScript 示例客户端与服务器、多智能体 Web 应用、命令行工具及多种框架实现。
一图速览
是什么:不同框架构建的单一智能体在面对复杂、多层次问题时常常力不从心。主要挑战在于缺乏统一协议,无法高效沟通与协作,导致各自为政,难以组合专长解决更大任务。没有标准化方法,集成成本高、周期长,阻碍了更强大、协同 AI 系统的开发。
为什么:Agent 间通信(A2A)协议为此问题提供了开放、标准化解决方案。它基于 HTTP 协议,实现互操作性,使不同技术栈的智能体能够无缝协调、任务委托和信息共享。核心组件是 Agent Card,描述智能体能力、技能和通信端点,便于发现和交互。A2A 支持同步和异步多种交互机制,满足多样化场景。统一标准促进了模块化、可扩展的多智能体系统生态。
使用原则:当需要编排两个或以上智能体协作,尤其是跨框架(如 Google ADK、LangGraph、CrewAI)时,建议采用此模式。适合构建复杂、模块化应用,各智能体专注于工作流不同环节,如数据分析委托给一个智能体,报告生成交由另一个。Agent 需动态发现和调用其他智能体能力时也适用。
视觉摘要

关键要点
- Google A2A 协议是一项开放、基于 HTTP 的标准,促进不同框架智能体间的通信与协作。
- AgentCard 是智能体的数字身份,便于其他智能体自动发现和理解其能力。
- A2A 支持同步请求 - 响应(
tasks/send
)和流式更新(tasks/sendSubscribe
),满足不同通信需求。 - 协议支持多轮对话,包括
input-required
状态,Agent 可请求补充信息并保持上下文。 - A2A 鼓励模块化架构,专用智能体可独立运行于不同端口,实现系统可扩展和分布式部署。
- Trickle AI 等工具可可视化和跟踪 A2A 通信,便于开发者监控、调试和优化多智能体系统。
- A2A 专注于智能体间任务和工作流管理,MCP 则为 LLM 与外部资源交互提供标准接口。
总结
Agent 间通信(A2A)协议为打破单体智能体孤岛提供了关键开放标准。通过统一的 HTTP 框架,实现了不同平台(如 Google ADK、LangGraph、CrewAI)Agent 的无缝协作与互操作。Agent Card 作为数字身份,清晰定义智能体能力,支持动态发现。协议灵活,涵盖同步请求、异步轮询和实时流式等多种交互模式,满足广泛应用需求。
A2A 支持模块化、可扩展架构,专用智能体可组合编排复杂自动化流程。安全性为核心,内置 mTLS 和认证机制保障通信安全。A2A 与 MCP 等标准互补,专注于高层智能体协调与任务委托。主流科技公司支持和丰富实践案例,彰显其重要性。A2A 为开发者构建更复杂、分布式、智能化多智能体系统奠定了基础,是协作型 AI 生态的关键支柱。
参考文献
- 陈博(2025 年 4 月 22 日)《Google A2A 项目入门教程》- trickle.so
- Google A2A GitHub 仓库 - github.com
- Google Agent Development Kit (ADK) - google.github.io
- Agent-to-Agent (A2A) 协议入门 - codelabs.developers.google.com
- Google AgentDiscovery - a2a-protocol.org
- LangGraph、CrewAI、Google ADK 等框架智能体间通信 - trickle.so
- 使用 A2A 协议设计协作型多智能体系统 - oreilly.com