Skip to content

CodexManager v0.7.2

Choose a tag to compare

@github-actions github-actions released this 08 Nov 15:36

CodexManager v0.7.2

本次更新围绕回复丢失与 499、Responses WebSocket 接入,以及 Chat / Messages / Responses 三种接口的协议转换修复。

修复

回复完成与 499

  • 修复完整终态已交付后,客户端结束读取仍被记为 499 / broken pipe 的问题;终态交付后及时结束流,不再等待上游关闭连接。
  • 修复部分上游只在 response.completed 提供完整助手正文、缺少消息完成事件时,Codex 收不到可显示正文的问题。补齐保持原始消息 ID 和输出位置,避免重复消息。
  • 处理末帧缺少 SSE 分隔符、CR/CRLF 换行和分块边界,避免客户端一直等待结束。
  • 保留真实取消、正文未完整交付和上游失败的错误状态,不用统一改成 200 的方式掩盖错误。

Responses WebSocket

  • 修复原生 Responses WebSocket 将 tool_choice 限定为字符串、拒绝合法指定函数对象的问题,统一保留 auto/required/none 和命名函数选择,并继续校验错误形状。

  • 保留官方 Codex 账号的原生 WebSocket 路径,为聚合 API 和混合路由增加通过现有 HTTP/SSE 网关的 WebSocket 兼容接入,解决这些路由被固定返回 426 的问题。

  • 兼容路径复用现有认证、模型路由、配额、并发限制和请求日志;日志标记为 WebSocket。

  • HTTP/SSE 兼容路径支持 generate:false 本地预热、同连接 previous_response_id 连续对话、工具结果回传和中断。历史缓存有容量限制;新连接或未知历史 ID 需要完整输入,不能依赖跨连接缓存。

  • 客户端断开或中断时取消对应上游处理,不自动重放已经提交的生成请求。

  • 修正 Windows 重连回归中的 TCP 重置模拟和握手时序,实际测试连接重置与恢复。

三种接口与协议转换

  • 修复 OpenAI SDK 仅携带通用请求追踪头时被误判为 Codex 原生客户端,导致 Chat 路径未转换、Responses 非流式请求被上游拒绝的问题。

  • 为标准 Responses 客户端处理 Codex 专有附加事件和旧版结束事件,避免 SDK 解析失败后提前断开;原生 Codex 客户端保留专有事件。

  • 修复 Messages 多轮历史中 assistant 内容被误转成 input_text;保留工具选择策略、调用 ID、工具参数和工具结果。

  • 补齐只出现在最终 Responses 快照中的 Messages 工具调用,按 ID 去重;不将失败或截断的工具参数当作可执行调用。

  • 增加 Responses 请求到 Chat Completions 上游的请求/响应转换,覆盖 JSON、SSE、正文、函数工具、用量和错误。

  • 对仅返回部分正文的长度限制响应保留正文与用量,并映射为 length / max_tokens;明确失败、无有效正文的工具截断或未知不完整状态保留错误。

  • 流式正文只在已发送内容与最终快照严格前缀匹配时补齐缺失后缀,避免重复正文或猜测内容。

  • 保留上游原始错误,不再尝试官方 Codex 并不存在的 /backend-api/codex/v1/responses 地址而将原错误覆盖成 404。

  • Responses 转 Messages 时保留 URL/base64 图片输入,非法或不支持的来源明确报错;Responses 转 Chat 时安全跳过原厂 reasoning 元数据,保留可见消息和工具历史,不把加密内容或推理摘要混入正文。

验证

实际启动 Windows CM 桌面端,使用官方 OpenAI SDK 7.53.0 和 Anthropic SDK 1.6.0 访问桌面内置网关,连接真实账号上游。最终独立验收共 50 次生成,50 次完整成功,0 次客户端重试、0 次 499;另测试 2 次预热。

接口 / 路由 生成请求 验证内容
/v1/responses HTTP 14 JSON/SSE 各 5 轮历史,函数调用与结果回传各 2 轮
/v1/chat/completions HTTP 14 JSON/SSE 各 5 轮历史,函数调用与结果回传各 2 轮
/v1/messages HTTP 14 JSON/SSE 各 5 轮历史,工具调用与结果回传各 2 轮
原生账号 Responses WebSocket 4 文本、历史、指定函数调用及结果回传,另 1 次预热
混合路由 Responses WebSocket 4 文本、历史、指定函数调用及结果回传,另 1 次预热
  • 核对最终正文、语义、工具 ID/参数、用量和结束状态,关闭客户端自动重试。50 次生成加 1 次原生 WebSocket 预热共 51 条网关日志,全部为 200、无错误;原生预热经过上游并有输入用量,混合路由预热本地完成、零用量且不增加日志。
  • 两条实际 WebSocket 连接均正常关闭;验收使用的临时密钥已删除,保留既有密钥和用户配置。
  • 官方 SDK 对实际转换输出进行离线整体与逐字节解析:Chat→Responses 及附加事件规范化共 8 项通过。
  • 此前在较早的交付修复版本上,独立完成真实 Codex CLI 的 50 轮 HTTP Responses 验收(包含长上下文),全部完整回复且无 499;另以独立服务和模拟上游验证首事件延迟 50 秒/65 秒、终态后上游不关闭的场景,均正常结束。这些不计入上表 50 次。
  • 定向网关回归 1084 项、HTTP/WebSocket 回归 239 项、工具选择回归 11 项、图片接口回归 8 项通过;前端运行时 332 项及桌面静态构建通过。
  • 完整 Rust 工作区回归 3058 项通过、0 失败;19 项需要独立数据库或外部联网环境的测试按原配置忽略,未计为通过。GitHub Actions 的 CI、全部平台构建和正式发布均已成功。

发布产物

  • 正式稳定版 v0.7.2,对应提交 1514c10544b4fe2dff34c49ac7a299e33d43a6cf。
  • 共 20 个下载文件:Windows 桌面版 2 个、macOS 桌面版 3 个、Linux 桌面版 8 个、服务端包 5 个、Web 包 2 个,均已上传完成。
  • ghcr.io/qxcnm/codexmanager-service 和 ghcr.io/qxcnm/codexmanager-web 已发布 v0.7.2,同步更新 stable、latest。
  • CI 测试、各平台构建、正式发布均成功;发布使用已验证的同一提交和构建产物。

升级说明

  • 桌面用户安装本版本;服务端和容器部署需更新实际承载请求的 CM 实例并重启。仅升级客户端不会改变远端旧版网关能力。
  • Messages 入口直接配置 Chat Completions action 不在本次支持范围,会返回明确错误;请配置 Messages 兼容 action 或使用 Responses 入口。
  • 标准函数工具可在支持的协议间转换;Chat 上游无法表示的自定义工具、专有历史引用等明确报错。跨厂商转换不会恢复原厂加密推理状态。
  • 主动停止、网络断开和实际未交付完成的请求仍可能记录 499;本次修复针对已确认的软件缺陷,有限次数验收不等于所有网络条件下永不断开。

完整变更:v0.7.1...v0.7.2