KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
A2A Protocol Engineering 课程设计 — keel 龙骨
A2A Protocol Engineering 的参考信息:A2A Protocol Engineering 课程设计
目标能力
本课程不追求背诵方法名,而是让学习者能在一个真实接入需求中回答五个问题:
- 对端能被发现到什么程度?哪些字段是必填、哪些声明可以被信任?
- 用哪个协议版本、哪种绑定连它?不兼容时如何明确拒绝而不是静默降级?
- 一次委派的状态怎么解释?中断态和终态分别该触发什么动作?
- 产物通过轮询、流式还是推送取回?各自的失败模式是什么?
- 哪些教学替身必须被真实基础设施替换?
与 MCP 课的分工
| 维度 | MCP | A2A |
|---|---|---|
| 方向 | 垂直:Agent ↔ 工具/资源 | 水平:Agent ↔ Agent |
| 对端 | 我可以看进实现细节 | 必须假设不透明 |
| 典型失败 | 越权调用、版本不匹配 | 卡面过期、中断态误判、凭据主体错配 |
| 共享机制 | 无 | 任务状态机、流式、可观测 |
两课不是替代关系。本课程在需要时引用 MCP 的契约,但不重复讲它的原语。
评估证据
- 能构造并校验 Agent Card,指出 8 个必填字段与签名校验的作用。
- 能说明
A2A-Version缺失与版本不匹配分别返回什么,以及错误里为什么必须带supported。 - 能让一个
TASK_STATE_INPUT_REQUIRED任务在补输入后继续,而不是被判成失败。 - 能区分流式断线重订阅与推送回调的适用场景,并说明重复投递如何去重。
- 能解释
TASK_NOT_FOUND为什么同时意味着"不存在"和"你看不见"。 - 能完成项目的 capstone:一次跨边界委派全程只有卡面、状态和产物可见,且每次调用能被同一个 trace 串起来。
生产替换点
| 教学实现 | 生产替换 |
|---|---|
| 内存字典存卡与任务 | 持久化存储、租约、TTL、幂等键 |
| HMAC bearer 替身 | OAuth 2.0 + PKCE、Device Code、JWKS 轮转 |
| JWS 签名(教学密钥) | 真实 JWS + JCS 规范化、可信签发方清单、证书轮转 |
| 生成器产出流式帧 | 真实 SSE / gRPC streaming,带断线重连与游标 |
| 回调直接调用 | 回调白名单、签名、重试与幂等去重 |
| 列表式事件记录 | OpenTelemetry spans、metrics、logs 和 SIEM |
| unittest 兼容矩阵 | 契约测试、灰度、官方 SDK 互操作与回滚门禁 |