Repository navigation
opencode2api v1.7.6-beta
·
14 commits
to main
since this release
修复「工具 schema 里名为
title的属性被宿主当注解删掉」导致严格校验的上游 400:
表现为同网关下qw2api/qwork-advanced恒 502、而qwork-auto正常。
🐛 修复
- 工具 schema 的属性名被误当注解删除(
qw2api/qwork-advanced恒 502 的真因):
core/protocol/claude_convert.go的CleanJSONSchema(Anthropic 入口转换工具声明时
剔掉$schema/title/examples等注解键)原按「键名等于这三个之一就丢弃」递归过滤,
无法区分「schema 关键字title」与「调用方恰好把属性命名为title」——于是
properties.title被整段删掉,而兄弟节点required里的"title"原样保留,
一个自洽的 schema 被改造成「required引用了不存在属性」的非法 schema。
严格校验的上游(实测 QwenWorkqwork-advanced后端)对此直接 400 拒掉整条请求,
宽松后端(同厂商qwork-auto)容忍 —— 故表面现象是「换个模型就好」,极易误判为上游限流。
现改为区分「schema 关键字位置」与「名字容器位置」(properties/patternProperties/
$defs/definitions/dependentSchemas/dependencies):名字容器内的键一律保留、
只清洗其值(值才是 schema),仅在关键字位置剔除注解键。注解title仍照旧剔除、
additionalProperties/format等约束键仍保留、仍返回副本不改入参。
该函数同时服务vendors/custom/{proto_anthropic,proto_gemini,proto_responses}.go的出站声明,
三处一并受益。
Full Changelog: v1.7.6...v1.7.6-beta