Skip to content

opencode2api v1.7.6-beta

Choose a tag to compare

@github-actions github-actions released this 15 Oct 06:07
· 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。
    严格校验的上游(实测 QwenWork qwork-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