mirror of
https://github.com/Wei-Shaw/sub2api.git
synced 2026-10-07 17:27:58 +08:00
convertResponsesInputToAnthropic 的 default 分支把未知 item 的 content 逐字 透传成 Anthropic user 消息,Responses 专有的分片类型会原样进入上游请求体。 最典型的是工具执行后回放的 reasoning item:带 content 数组时,reasoning_text 块直接发给 Anthropic,上游回 400 Request body format invalid,而该 item 会一直 留在会话历史里,导致此后每一轮都继续失败。 同时修正两处会产出空内容消息的路径——Anthropic 拒收空内容消息与空白 text 块: 分片全部不可识别时,user 消息退化成 content:""、assistant 消息退化成单个空 text 块。 改动: - type=reasoning 显式跳过。Anthropic 无法摄入 OpenAI reasoning:encrypted_content 不透明,thinking 重放需要上游签发的 signature。Codex 常见形态(只带 summary + encrypted_content)本来就会被丢弃,这里让带 content 的形态行为一致。 - default 分支改走 convertResponsesUserToAnthropicContent 白名单转换,保留其中 可识别的文本/图片,丢弃其余分片。 - user / assistant 分支在转换结果为空内容或纯空白文本时跳过该消息。 Fixes #5329