A2A 核心架构概述
A2A 让不同厂商、不同框架的 AI Agent 以对等代理身份协作,而不是把对方仅当作「一个 tool」。
1. 核心问题
- 代理运行在异构系统上,缺少通用交互层。
- 需要长时间任务、人机协同、流式输出。
- 不应要求暴露内部 prompt、memory、tool 实现。
2. 解决思路
| 能力 | 机制 |
|---|---|
| 发现 | Agent Card(well-known JSON) |
| 通信 | HTTP(S) + JSON-RPC 2.0(及 REST/gRPC 绑定) |
| 工作单元 | Task 状态机 |
| 内容 | Message(多 part:文本、文件、表单等) |
| 实时 | SSE 等流式事件 |
数据模型用 Protocol Buffers 定义,序列化可用 JSON / ProtoJSON。
3. 设计原则
| 原则 | 含义 |
|---|---|
| 复用现有标准 | HTTP、OAuth、SSE,不发明新传输 |
| 企业就绪 | 标准 TLS、Bearer、API Key |
| 异步优先 | Task 先提交再轮询/流式跟进 |
| 代理黑盒 | 只交换协议层消息,不共享内部状态 |
4. 与 MCP 区别(简表)
| A2A | MCP | |
|---|---|---|
| 角色 | 代理 ↔ 代理 | 主机 ↔ 工具/资源 |
| 单元 | Task + Message | tools/call |
| 发现 | Agent Card | MCP 能力协商 |
二者可并存:Agent 对内 MCP、对外 A2A。
5. 实现参考
- 规范:
specification/a2a.proto - JS SDK:a2ajs
总结
A2A = Card 发现 + Task 异步协作 + Message 交换 + 标准 HTTP 安全。