Codex接入第三方模型,对话经常自动中断 - cc-switch
Quick fix
根因是 cc-switch 把 Codex 的 Responses API 工具调用转成上游 Chat Completions 时丢失了 function call 的 name/call_id;可让 DeepSeek 直连 Codex 绕过代理,或升级 cc-switch 后复测。
Symptom
Section titled “Symptom”用ccs给codex桌面版接入第三方大模型,发了个请求,模型只回答一次就停止了,不会继续执行任务。然后就成了问一句回一句的模式。Codex 按 OpenAI Responses API 的工具调用协议运行,而 DeepSeek、Kimi、MiniMax 等第三方上游实际是 Chat Completions 风格接口。纯文本聊天尚能凑合返回,但一旦 Codex 发起工具调用,cc-switch 适配层就要负责双向转换;用户排查发现转换会坏掉:模型/代理返回了 function call,但 name 和 call_id 都是空,Codex 只能报 unsupported call:,于是会话在首次工具调用后就中断,退化成「问一句回一句」。有用户实测不用工具就不会中断,但不用工具的 Codex 基本不可用。该问题在 3.16.3、3.19.1、3.19.2 上均有报告,涉及 deepseek-v4-flash、Kimi K3、minimax-m3、NIMO V2.5 等多个模型,issue 关闭时未见官方确认的修复版本。 本簇还包含若干「升级后失效」的相邻问题,各有独立根因与修复版本:#5280 是 Codex 桌面端合并进 ChatGPT Desktop 后,cc-switch 切换覆盖了其配置/登录态(有用户反馈一切正常、也有用户反馈登录态与 MCP 配置被冲掉只能重装,反馈相互矛盾;维护者称 v3.17.0 已适配并可保留官方登录切换第三方供应商);#3945 是 v3.16.2 引入的「Anthropic 系统消息上提(#3775)」改写了发往 DeepSeek 的请求前缀,破坏前缀缓存导致命中率下降、消耗升高,已在 v3.16.4 回退;#3922 是 3.15.0 之后 Codex 配置无法获取全部模型列表,4.0 重做供应商表单、4.0.2 起提供可搜索的模型选择器;#8115 是同一对话内切换模型后用量仍记到旧模型名下(统计口径问题,并非请求真发给了旧模型),v4.0.10 修复,且回退旧版会因数据库版本 19/20 被拒绝打开;#7322(仍未关闭)是手工编辑过模型定价后 repair_current_model_pricing 的守卫永不匹配,deepseek-v4-flash 等模型的官方调价永久失效。
优先规避:让 DeepSeek 直连客户端,不经 cc-switch 本地代理。有用户反馈 DeepSeek 已可直连 Codex;另有用户确认 Claude Code 2.1.178 不开本地路由也能直接接入 DeepSeek、不再报 400 错误(#4338)。
临时排查:避免触发工具调用。用户实测不调用工具就不会中断,可用来确认是否命中本问题,但这会显著降低 Codex 可用性,不能算作正式修复。
把 cc-switch 升级到最新版后复测:本簇中相邻的升级回归已分别修复——DeepSeek 缓存命中率下降修复于 v3.16.4,ChatGPT Desktop 适配修复于 v3.17.0,Codex 模型列表获取修复于 4.0.2,对话内换模型的用量统计修复于 v4.0.10(升级后可在「用量」页面的「数据来源」里点「重建 Codex 用量」重新导入历史)。注意不要回退旧版本:4.0 的数据库结构更新,旧版会以版本 19/20 为由拒绝打开,这是预期行为。
工具调用中断本身在 issue 关闭时未见官方确认的修复版本,升级最新版后若仍复现,请回原 issue 补充系统、cc-switch 版本、接入的模型与日志。
若你曾在设置页 PricingConfigPanel 手工编辑过某个模型的单价,注意该模型此后的官方调价不会再自动下发且无任何界面提示(#7322,未修复),对账时需手工核对该模型价格。
Affected Versions
Section titled “Affected Versions”Source Issues
Section titled “Source Issues”本页汇总自 7 个真实 issue
- #3922最新版本codex无法获取全部模型 只能手动填写进去
- #39453.16.2 版本缓存命中率下降
- #4338DeepSeek已经可以直接在Claude Code 2.1.178上直接接入了,不需要开启路由都可以。
- #4341Codex接入第三方模型,对话经常自动中断
- #5280codex升级为ChatGPT后适配问题
- #7322[pricing] repair_current_model_pricing 守卫与"定价表可编辑"冲突,官方调价永久失效
- #8115使用 newapi 的站点,同时使用 GPT 6 的模型和 Deepseek V 4的模型。我在同一个对话中,前面使用的 GPT6,然后后面切换成 V4。然后它还会一直请求 GPT6
- 不用工具是不是就不会中断?
- 是的,有用户实测不触发工具调用就不会中断;但根本原因正是工具调用的协议转换失败(返回的 function call 的 name 和 call_id 为空),不用工具的 Codex 很难正常使用,所以只能算排查手段。
- Codex 升级为 ChatGPT 桌面端后,cc-switch 切换会覆盖配置吗?是我一个人遇到还是大家都遇到了?
- 反馈相互矛盾:有用户直接升级后一切正常、能正常切换供应商,也有用户反馈配置、登录态、本地 MCP 配置被覆盖只能卸载重装。维护者表示 v3.17.0 已适配 Codex 合并到 ChatGPT Desktop 后的官方账号代理接管,支持保留官方登录的同时切换第三方供应商。
- 为什么升级到 3.16.2 后 DeepSeek 缓存命中率下降、实际消耗变高?
- v3.16.2 引入的「Anthropic 系统消息上提(#3775)」改写了发往 DeepSeek 的请求前缀,破坏了前缀缓存复用。官方已在 v3.16.4 回退该改动,并配套修复了缓存重复计费与流式 input_tokens 虚高的统计口径问题,升级到最新版即可。
- Codex 配置里获取不到全部模型列表、只能手动填写,怎么解决?
- 3.15.0 之后的版本都有此问题。4.0 重做了 Codex 供应商表单,4.0.2 起在完整表单里点击获取模型后会出现可搜索的模型选择器,选中即自动补全上下文窗口等参数,请升级到最新版复测。
- 同一对话里从 GPT 6 切换到 deepseek-v4-flash 后,日志里还在请求 GPT 6,是没切换成功吗?
- 大概率只是用量统计问题:Codex 换模型时写的是 thread_settings_applied 事件,v4.0.10 之前 cc-switch 导入用量时不认这条事件,换模型后的请求仍记到旧模型名下。升级到 v4.0.10 后在「用量」页面用「重建 Codex 用量」重新导入即可(重建前会自动备份数据库)。
- 手工改过模型价格后,官方调价还会自动生效吗?
- 不会(#7322 仍开放):repair_current_model_pricing 是守卫式更新,只在当前值仍等于旧内置值时才更新;只要手工保存过一次,该模型的官方调价就永久失效且无界面提示,例如 deepseek-v4-flash 会停留在涨价前的 0.14 / 0.28 / 0.0028(USD/M)。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。