协议介绍
Agent2Agent(A2A)协议是一个开放标准,用于让不透明的智能体应用之间实现通信与互操作。它最初由 Google 开发,后捐赠给 Linux Foundation,现为 Agentic AI Foundation(AAIF)的成长期项目,采用 Apache License 2.0,由技术指导委员会(TSC)维护。
背景与定位
企业越来越多地构建并部署自主智能体,用于扩展、自动化和增强各种工作流程。当这些智能体由不同团队、不同厂商、不同框架构建时,跨边界协作就成了难题:要么为每一对智能体写定制集成,要么把智能体强行包装成“工具”,削弱它原本的协商与推理能力。
A2A 的做法是提供一套通用语言:智能体通过标准方法与数据结构互相发现、委派任务、交换结果,同时保持不透明,无需共享内部记忆、工具或专有逻辑。参见什么是 A2A 。
A2A 与模型上下文协议(MCP)互补:MCP 解决智能体如何连接工具和数据,A2A 解决智能体之间如何协作。在实践中,许多系统会同时使用两者:智能体内部用 MCP,智能体之间用 A2A。详见 A2A 与 MCP 。
设计原则
| 原则 | 含义 |
|---|---|
| 简单 | 复用 HTTP、JSON、SSE、gRPC 等现有标准,加速开发者采用 |
| 企业就绪 | 沿用标准 Web 实践处理认证、授权、安全、隐私、追踪与监控 |
| 异步优先 | 原生支持长任务与断开连接的场景,提供流式传输与推送通知 |
| 模态无关 | 支持多种内容类型,不局限于纯文本 |
| 不透明执行 | 智能体只基于声明的能力和共享上下文协作,不暴露内部逻辑、记忆或工具 |
参与者
A2A 交互涉及三类角色:
- 用户(User):使用智能体系统完成任务的人或服务;
- A2A 客户端(Client):代表用户向远程智能体发起请求的应用或智能体;
- A2A 服务端(Server):暴露 A2A 端点、对客户端不透明的远程智能体。
graph LR
User[用户] --> Client[A2A 客户端<br/>客户端智能体]
Client -->|A2A| Server[A2A 服务端<br/>远程智能体]
核心概念
- Agent Card:智能体发布的 JSON 元数据,描述身份、能力、技能、支持的接口与认证要求,通常位于
/.well-known/agent-card.json,供客户端发现; - Task(任务):客户端与远程智能体围绕一个目标协作的有状态过程,具有明确的生命周期;
- Message(消息):客户端与智能体之间交换的一轮通信,承载指令、上下文与状态;
- Part(内容单元):消息或产出物中的最小内容单元,可以是文本、文件或结构化数据;
- Artifact(产出物):智能体在任务中生成的结果。
技术架构
一份数据模型,三种协议绑定
a2a.proto 是 A2A 数据模型与操作的规范性定义。在此基础上,协议提供三种绑定,并保证它们之间的功能等价:
- JSON-RPC 2.0:基于 HTTP(S) 的 JSON-RPC 方法调用;
- gRPC:基于 Protocol Buffers 的高性能调用;
- HTTP+JSON/REST:资源化的 HTTP 接口,例如
POST /message:send。
智能体在 Agent Card 的 supportedInterfaces 中声明自己支持的绑定与协议版本,客户端据此选择合适的接口。
通信模型
一次典型的交互包含:
- 发现:客户端读取 Agent Card,了解智能体的能力、技能与认证要求;
- 认证:按 Agent Card 中声明的安全方案获取凭据;
- 交互:客户端通过
SendMessage发起请求,智能体返回消息或创建任务;对长任务,可用流式传输、轮询或推送通知获取进展。
应用场景
- 多智能体工作流:把专业智能体串联起来,自动化复杂流程,例如招聘中的候选人寻访,或供应链物流的协同;
- 智能体市场:搭建平台,让智能体发现并使用来自不同提供方的其他智能体的能力;
- 跨平台集成:让基于不同框架构建的智能体无缝协作;
- 多智能体系统评估:评估协作型智能体轨迹的表现与成效。
下一步
- 动手实践:Python 教程 、官方 SDK ;
- 查证细节:协议规范 ;
- 从旧版本升级:A2A v1.0 有哪些变化 ;
- 参与社区:社区中心 。
来源:A2A 官方文档