求助求助求助
【求助】Codex 桌面端接入 DeepSeek:模型名不显示、显示为"自定义",cc-switch 生成的 model_catalog_json 字段名(snake_case)与 Codex≥0.144 契约(camelCase)不匹配
平台:Windows 11 | Codex 桌面端 26.812.11052(对应 Codex ~0.147)| cc-switch v3.19.2 | 模型:DeepSeek V4 Flash / V4 Pro
说明:无官方 ChatGPT 账号,纯 API-Key + cc-switch 本地代理模式。CLI 一切正常,仅桌面端模型名不显示。
一、问题现象
通过 cc-switch 给 Codex 桌面端接入 DeepSeek 后:
- 桌面端「切换模型」下拉框不显示模型名(DeepSeek V4 Flash / Pro),只显示「自定义(Custom)」
- 无法在 Flash / Pro 两个模型之间切换
- 推理档位(reasoning effort)选择器异常
- 命令行 codex 的
/model一切正常,请求实际能发到正确模型
二、环境信息
- OS:Windows 11
- Codex 桌面端:OpenAI.Codex 26.812.11052(内部版本约 0.147,>= 0.144)
- cc-switch:v3.19.2(2026-08,已是最新)
- 接入方式:cc-switch 本地路由
http://127.0.0.1:15721/v1,wire_api = "responses",requires_openai_auth = true - 无官方 ChatGPT / Codex 账号(无法走「保留官方登录」路线)
三、配置与已排查内容
~/.codex/config.toml(已隐去 token):
model_provider = "custom"
model = "deepseek-v4-flash"
model_catalog_json = "cc-switch-model-catalog.json"
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers.custom]
name = "deepseek"
base_url = "http://127.0.0.1:15721/v1"
wire_api = "responses"
requires_openai_auth = true
~/.codex/cc-switch-model-catalog.json(v3.19.2 重新生成后的内容,字段为 snake_case):
{
"models": [
{
"display_name": "DeepSeek V4 Flash",
"slug": "deepseek-v4-flash",
"context_window": 1048576,
"max_context_window": 1048576,
"additional_speed_tiers": [],
"supported_reasoning_levels": [ { "effort": "none" }, { "effort": "high" } ],
"supported_in_api": true,
"visibility": "list",
"priority": 1000
},
{ "display_name": "DeepSeek V4 Pro", "slug": "deepseek-v4-pro", "additional_speed_tiers": [], "...": "同上结构" }
]
}
已尝试:
- 在 cc-switch 里重新打开 DeepSeek 供应商并保存,catalog 已重新生成(时间戳确认),字段仍是 snake_case
- 升级 cc-switch 到最新 v3.19.2,生成的 catalog 仍是 snake_case
- 完全退出并重启 Codex 桌面端 + 新开线程,仍显示「自定义」
四、根因分析(已定位到官方仓库 schema)
-
字段命名契约不匹配(主因):参考 cc-switch issue #5182,Codex ≥ 0.144 读取 model catalog 只认 camelCase 字段:
displayName/supportedReasoningEfforts/defaultReasoningEffort/contextWindow/additionalSpeedTiers/serviceTiers
而 cc-switch 导出的 catalog 是 snake_case:display_name/supported_reasoning_levels/default_reasoning_level/context_window/additional_speed_tiers
→ 桌面端解析不出字段 → 模型列表、推理档位全空 → 显示「自定义」。 -
additional_speed_tiers 为空:参考 cc-switch issue #4453,桌面端模型切换 UI 依赖
additionalSpeedTiers判断「是否可切换的模型」,为空数组时模型不被列入切换菜单。 -
桌面端登录门控:Codex 桌面端按登录身份(OAuth)决定是否放行自定义模型;官方已把「桌面 GUI 暴露自定义供应商模型」标记为 not planned。无官方账号时无法绕过。
五、相关 Issue 链接
- cc-switch #5182(snake_case vs camelCase 契约不匹配,与本问题直接相关):https://github.com/farion1231/cc-switch/issues/5182
- cc-switch #4453(additional_speed_tiers 为空导致模型名变「自定义」):https://github.com/farion1231/cc-switch/issues/4453
- cc-switch #4382(DeepSeek 模型名不显示,同类问题):https://github.com/farion1231/cc-switch/issues/4382
- openai/codex #17772(Fast Mode 依赖 additional_speed_tiers):https://github.com/openai/codex/issues/17772
六、想请教大家的问题
- cc-switch 官方什么时候修复 #5182(按 Codex 版本输出 camelCase)?有没有现成的临时 workaround?
- 手工把
cc-switch-model-catalog.json整体转成 camelCase 字段,是否能让桌面端正常显示模型名/切换?有没有完整的字段对照表或可用的模板?(希望有人贴一份能用的 camelCase catalog 示例) - 在没有官方 ChatGPT 账号的前提下,有没有办法让 Codex 桌面端显示自定义模型名并支持切换?(目前只能靠改 config.toml + 重启实现切换,界面不显示)
- 如果手工转 camelCase 可行,
additionalSpeedTiers应该填什么?(官方 schema 里它是Array<string>,且标注 Deprecated,改用serviceTiers)直接把两个模型 slug 塞进去是否可行?
七、附:官方 schema 证据
openai/codex 仓库 codex-rs/app-server-protocol/schema/typescript/v2/Model.ts:
additionalSpeedTiers: Array<string>, serviceTiers: Array<ModelServiceTier>,
openai/codex 仓库 sdk/python/src/openai_codex/generated/v2_all.py:
Field(alias="additionalSpeedTiers", description="Deprecated: use `serviceTiers` instead.")
欢迎有经验的大佬指点,尤其是「手工 camelCase catalog」和「无官方账号的桌面端显示」这两块,先谢过!
更多推荐


所有评论(0)