扩展与协议绑定治理
A2A 组织为扩展 和自定义协议绑定 建立了统一的治理框架。本文定义在 A2A 组织内提议、开发、晋升和维护这些制品的正式流程。
任何人都可以独立开发和发布扩展或自定义协议绑定。这里描述的层级与生命周期,仅适用于托管在 a2aproject GitHub 组织下的制品。
层级
在 a2aproject 组织内,扩展和自定义协议绑定都采用两级体系。仓库命名和 URI 前缀因类型而异:
| 扩展 | 自定义协议绑定 | |
|---|---|---|
| 官方仓库前缀 | ext-{name} | cpb-{name} |
| 实验性仓库前缀 | experimental-ext-{name} | experimental-cpb-{name} |
| 官方 URI 前缀 | https://a2a-protocol.org/extensions/ | https://a2a-protocol.org/bindings/ |
URI 命名空间
官方 URI 前缀是规范的命名空间标识,用于为扩展和自定义协议绑定分配全局唯一的 URI。智能体和客户端在 Agent Card、请求头和协议消息中引用这些 URI,以声明并协商支持情况。
前缀下的具体 URI 标识一个特定的制品,并在适用时标识其版本,例如 https://a2a-protocol.org/extensions/{name}/v1 或 https://a2a-protocol.org/bindings/{name}/v1。这些 URI 只是标识符,并不要求能通过 HTTP 访问。
官方(Official)
官方制品在 a2aproject GitHub 组织下开发和维护,由技术指导委员会(TSC)正式推荐。每个仓库都在 MAINTAINERS.md 中指定了维护者。
要求:
- 规范必须使用与核心规范相同的措辞规范(RFC 2119 );
- 必须采用 Apache 2.0 许可;
- 必须至少有一个参考实现;
- 应在 A2A 网站上有配套文档。
实验性(Experimental)
实验性制品为社区贡献者提供孵化通道,让他们在晋升为官方之前对想法进行原型验证和协作。
创建要求:
- 实验性仓库只能在 A2A 维护者的赞助下创建;
- 赞助维护者负责实验性制品的初期监督;
- 实验性仓库必须在 README 中清楚标明其实验性/非官方状态;
- 任何发布的软件包必须使用能清楚表明实验性质的命名;
- TSC 保留监督权,包括归档或移除实验性仓库的权力。
生命周期
扩展和自定义协议绑定经历以下阶段。
提议阶段
任何社区成员都可以提议一个扩展或自定义协议绑定:
- 提交 Issue:在主仓库
a2aproject/A2A中创建 Issue,说明:- 摘要:扩展的目的,或绑定所对应的传输方式与用例;
- 动机:说明为什么无法用核心协议或既有的标准绑定实现;
- 初步的技术方案或规范草案。
- 社区讨论:提议开放给社区反馈和完善。
维护者赞助
提议要进入实验性状态,需要:
- 获得赞助人:一位 A2A 维护者必须同意赞助该提议;
- 创建仓库:赞助维护者在
a2aproject下创建experimental-ext-*或experimental-cpb-*仓库; - 监督:赞助维护者提供初期监督,确保与 A2A 设计原则一致。
实验性开发
处于实验性状态期间:
- 贡献者对规范和参考实现进行迭代;
- 早期采用者可以使用该实验性制品,但需要理解会出现破坏性变更;
- 收集并吸纳社区反馈;
- 实验性仓库必须清楚标明其非官方状态。
晋升为官方
要把实验性扩展或绑定晋升为官方,需要:
- 成熟度要求:
- 至少一个生产级质量的参考实现;
- 满足 A2A 标准的文档;
- 社区采用或关注的证据;
- 维护者对持续维护的明确承诺。
- 晋升提议:在
a2aproject/A2A中创建 Issue,包含:- 对实验性仓库及其实现的引用;
- 社区反馈与采用情况的摘要;
- 官方制品的拟任维护者。
- TSC 投票:
- 提议被列入 TSC 会议议程;
- 法定人数:至少 50% 的 TSC 表决成员出席;
- 通过条件:需要出席成员的多数票同意(依据 A2A 治理规则);
- TSC 可以在最终投票前要求修订。
- 接受:
- (扩展)仓库从
experimental-ext-*重命名为ext-*,并在 A2A 网站的扩展页面添加文档; - (自定义协议绑定)仓库从
experimental-cpb-*重命名为cpb-*,并在 A2A 网站的自定义协议绑定页面添加文档。
- (扩展)仓库从
官方后的迭代
成为官方之后,扩展和绑定仍可继续迭代:
- 仓库维护者负责日常治理;
- 变更应通过相关工作组协调(如果存在);
- 破坏性变更需要新的标识符;
- 破坏性变更需要 TSC 审查;
- 维护者应与 SDK 维护者协调实现更新。
晋升为核心协议
部分扩展最终可能转变为核心协议特性,部分自定义协议绑定也可能转变为核心绑定。这通过既有的 A2A 规范增强流程管理:
- 按标准的规范变更流程提交提议;
- 提议引用官方扩展或绑定及其采用情况;
- 适用标准法定人数和多数票要求的 TSC 投票;
- 并非所有扩展或绑定都适合纳入核心,许多会长期保持扩展或自定义绑定的形态。
SDK 支持
扩展与官方自定义协议绑定的 SDK 支持要求不同,反映了它们在协议生态中角色的差异。
扩展:A2A SDK 可以实现扩展。如果实现:
- 扩展必须默认禁用,需要显式启用;
- SDK 文档应列出所支持的扩展;
- SDK 维护者对扩展支持决策拥有完全自主权;
- 扩展支持不是协议一致性所必需的。
官方自定义协议绑定:A2A SDK 应实现官方自定义协议绑定。如果实现:
- 自定义协议绑定必须默认禁用,需要显式启用;
- SDK 文档应列出所支持的自定义协议绑定;
- SDK 维护者对绑定支持决策拥有完全自主权;
- 自定义协议绑定支持不是协议一致性所必需的。
法律要求
许可
官方扩展和自定义协议绑定必须采用 Apache 2.0 许可,与 A2A 核心项目保持一致。
贡献者授权
向官方 A2A 扩展或自定义协议绑定仓库提交贡献,即表示贡献者声明:
- 他们具有授予相关权利的法律权限;
- 贡献是原创作品,或他们拥有足够的权利提交该内容;
- 他们向 Linux Foundation 及接收方授予永久、全球范围、非排他、免版税的许可,用于使用、复制、修改和分发该贡献。
反垄断
扩展和自定义协议绑定的开发者确认:
- 他们可能与其他参与者存在竞争;
- 他们没有义务实现任何扩展或绑定;
- 他们可以自由开发相互竞争的扩展或绑定;
- 官方扩展或绑定的地位不构成排他性关系。