背景
当前 extension URI 采用如下风格:
urn:opencode-a2a:extension:shared:stream-hints:v1
urn:opencode-a2a:extension:private:session-management:v1
这里的 opencode-a2a namespace 已经表达了 URI ownership:这些 extension 都是 opencode-a2a 自己定义和维护的扩展。继续在 URI path 中加入 shared / private 会引入第二层语义,容易被误解为 auth / disclosure 层级。
实际需要表达的维度应拆开:
- URI ownership:由
urn:opencode-a2a:* 表达。
- contract semantic family:例如 portable metadata contract、provider-owned operational surface、machine-readable metadata。
- disclosure/auth:由 public Agent Card、authenticated extended Agent Card、OpenAPI disclosure 和 endpoint auth 控制。
需求
评估并实施移除 extension URI 中的 shared / private 语义占位层,将 canonical URI 收敛为更扁平的形式。
建议目标形态示例:
urn:opencode-a2a:extension:session-binding:v1
urn:opencode-a2a:extension:model-selection:v1
urn:opencode-a2a:extension:stream-hints:v1
urn:opencode-a2a:extension:interactive-interrupt:v1
urn:opencode-a2a:extension:session-management:v1
urn:opencode-a2a:extension:provider-discovery:v1
urn:opencode-a2a:extension:workspace-control:v1
urn:opencode-a2a:extension:interrupt-recovery:v1
urn:opencode-a2a:extension:compatibility-profile:v1
urn:opencode-a2a:extension:wire-contract:v1
设计原则
- 不改变
metadata.shared.* payload namespace;这里的 shared 表示跨实现可读的 metadata 区域,和 URI path 中的 shared/private 不是同一层。
- 不把 URI path 用作 auth/disclosure 信号。
- 若仍需要分类,应放在 registry / params / compatibility metadata 中,例如
family、semantic_scope、public_agent_card、authenticated_agent_card、negotiation_mode。
- 客户端应把 URI 当作 opaque identifier,而不是从 path segment 推断安全语义。
验收标准
- Agent Card、extended Agent Card、OpenAPI extension metadata 统一使用新的 canonical URI。
- extension spec 文档与 contract consistency tests 更新。
- machine-readable compatibility / wire contract 中的
extension_uris 使用新 URI。
- 如需短期 alias,必须明确标注为 migration-only,并创建后续清理项;不建议长期保留旧 URI alias。
- 与 downstream consumer(例如
a2a-client-hub)的适配需求通过跨仓 issue 链接跟踪。
快照
- HEAD:
45b183ccdb48591e3f1615978f57a688f71a1133
背景
当前 extension URI 采用如下风格:
这里的
opencode-a2anamespace 已经表达了 URI ownership:这些 extension 都是opencode-a2a自己定义和维护的扩展。继续在 URI path 中加入shared/private会引入第二层语义,容易被误解为 auth / disclosure 层级。实际需要表达的维度应拆开:
urn:opencode-a2a:*表达。需求
评估并实施移除 extension URI 中的
shared/private语义占位层,将 canonical URI 收敛为更扁平的形式。建议目标形态示例:
设计原则
metadata.shared.*payload namespace;这里的shared表示跨实现可读的 metadata 区域,和 URI path 中的shared/private不是同一层。family、semantic_scope、public_agent_card、authenticated_agent_card、negotiation_mode。验收标准
extension_uris使用新 URI。a2a-client-hub)的适配需求通过跨仓 issue 链接跟踪。快照
45b183ccdb48591e3f1615978f57a688f71a1133