协议设计详解
A2A 在 wire 层提供多种绑定,共享同一 proto 消息模型。
1. 绑定方式
| 绑定 | 特点 |
|---|---|
| JSON-RPC 2.0 | 方法如 message/send,易集成 |
| HTTP+JSON (REST) | 资源 URL,ProtoJSON 体 |
| gRPC | 服务间高性能 |
| SSE | 服务端推送任务/消息事件 |
Agent Card 声明 preferredTransport 与支持列表。
2. 核心 RPC(概念)
| 方法族 | 用途 |
|---|---|
| message/send | 发起或继续对话,创建/推进 Task |
| tasks/get | 查询任务 |
| tasks/cancel | 取消 |
| tasks/resubscribe | 断线重订阅流 |
精确方法名以当前规范为准。
3. 消息模型
- Message:role + parts(text、file、data…)。
- Task:id、status、artifacts、history 指针。
- Event:流式增量(状态、artifact 块)。
4. 序列化
- 规范真相来源:proto3。
- REST 常用 ProtoJSON(字段命名与 proto 一致,见 ADR-001)。
- 版本字段在 Card 与请求头协商。
5. 错误模型
JSON-RPC error.code + 消息;HTTP 映射 4xx/5xx。
业务态失败用 Task failed + 可读 description。
6. 总结
实现协议 = 选对绑定 + 严格遵守 proto 字段与状态机;勿在 payload 里塞实现细节。