Issue Description
使用自定义 openai-responses 提供商,经 New-API 代理接入 Codex 后端时,遇到以下错误:
400 System messages are not allowed
检查 Qoder App 0.4.1 代码发现,已有的 Codex 兼容处理仅在请求 URL 完全匹配官方直连地址时启用,未覆盖通过代理接入相同后端的场景。
Steps to Reproduce
- 添加自定义提供商,协议选择
openai-responses。 - Base URL 配置为代理地址,例如
https://<proxy-host>/v1。 - 代理将请求转发到
https://chatgpt.com/backend-api/codex/responses,不额外转换消息角色。 - 发送消息,检查出站请求及响应。
Expected Behavior
通过代理接入 Codex 后端时,也应能启用系统消息兼容处理,而不是仅依赖官方 URL 的完全匹配。
建议提供兼容选项,或在 Responses 专用序列化中支持将 system 映射为 developer,同时保留消息内容及其他协议的原有行为。
Actual Behavior
客户端仅针对以下直连地址,将系统消息提取到顶层 instructions:
https://chatgpt.com/backend-api/codex/responses
使用代理地址时,不会触发该处理,input 中仍包含 role: "system",在拒绝该角色的后端上会导致请求失败。
本地通过以下最小修改完成了兼容补丁:
- role: message.role
+ role: message.role === "system" ? "developer" : message.role
验证说明: 原始 400 错误有历史抓包;0.4.1 仍发送 system 已通过本地代码及离线请求构造确认。补丁通过 30 项离线测试,但未对 0.4.1 进行新的服务端重放。
Screenshots / Screen Recordings
暂无截图,可提供脱敏后的历史抓包、相关代码片段及离线测试记录。
Operating System
Windows(x64)
Current Qoder Version (Menu → About Qoder → Copy)
Qoder App 0.4.1