背景
对照 a2a-python 1.0+ 的扩展实践复审后,当前仓库在扩展协商与承载方式上仍有缺口,需要单独跟进。
发现
AgentCard.capabilities.extensions 已按 SDK v1 推荐声明扩展能力。
- 客户端当前只把扩展 URI 放进
Message.extensions,没有通过 ClientCallContext.service_parameters 发出 A2A-Extensions 请求头。
- 服务端虽已通过 SDK 默认
ServerCallContextBuilder 读取 A2A-Extensions 并填入 requested_extensions,但仓库主路径没有消费 requested_extensions,共享扩展行为仍只依赖 metadata.shared.* / metadata.opencode.*。
- 共享扩展中的 session binding / model selection / streaming 已经主要承载在标准 A2A 方法上,但 provider-private 能力仍大量通过
opencode.* JSON-RPC 方法暴露。
期望
- 客户端按官方推荐显式发送
A2A-Extensions。
- 服务端基于
requested_extensions 真正参与扩展协商,而不是只声明能力或被动读取 header。
- 共享扩展继续优先承载在标准 A2A 方法上,并明确哪些 provider-private 方法仍保留为自定义扩展接口。
- 补齐测试与文档,确保扩展声明、协商和运行时行为一致。
背景
对照
a2a-python1.0+ 的扩展实践复审后,当前仓库在扩展协商与承载方式上仍有缺口,需要单独跟进。发现
AgentCard.capabilities.extensions已按 SDK v1 推荐声明扩展能力。Message.extensions,没有通过ClientCallContext.service_parameters发出A2A-Extensions请求头。ServerCallContextBuilder读取A2A-Extensions并填入requested_extensions,但仓库主路径没有消费requested_extensions,共享扩展行为仍只依赖metadata.shared.*/metadata.opencode.*。opencode.*JSON-RPC 方法暴露。期望
A2A-Extensions。requested_extensions真正参与扩展协商,而不是只声明能力或被动读取 header。