不是直接改 config 就行,必须通过代理层。
一、结论
Codex CLI 默认只认 OpenAI Responses API,所以:
- 不能直接填 DeepSeek API
- 不能直接改 model = deepseek-chat 就生效
正确方式只有两种:
| 方案 | 原理 |
|---|---|
| CC Switch(推荐) | Codex → CC Switch(本地代理)→ DeepSeek API |
| OpenRouter / 自建 gateway | Codex → OpenAI兼容API → DeepSeek |
二、CC Switch 方案原理
CC Switch 做了三件事:
- 把 Codex 的
/responses请求转换成 DeepSeek 的/chat/completions - 再把结果"翻译回" Responses 格式
- Codex 完全以为自己在用 OpenAI
三、配置步骤(Windows)
Step 1:安装 CC Switch
bash
npm install -g cc-switch
Step 2:启动本地代理
bash
cc-switch start
默认启动:
http://127.0.0.1:15721/v1
Step 3:配置 Codex config.toml
打开:
%USERPROFILE%\.codex\config.toml
写入:
toml
model = "deepseek-chat"
model_provider = "ccswitch"
[model_providers.ccswitch]
name = "CC Switch Local"
base_url = "http://127.0.0.1:15721/v1"
api_key = "dummy"
关键要求:
| 项目 | 要求 |
|---|---|
| base_url | CC Switch 本地地址 |
| api_key | 随便填,代理接管 |
| model | deepseek-chat 或 deepseek-coder |
四、替代方案:OpenRouter(更简单)
toml
model_provider = "openrouter"
[model_providers.openrouter]
base_url = "https://openrouter.ai/api/v1"
api_key = "你的key"
然后:
toml
model = "deepseek/deepseek-chat"
五、为什么必须代理层
Codex 架构:
Codex CLI → Responses API(OpenAI独有)→ tool calling / sandbox / agent loop
DeepSeek:
DeepSeek API → Chat Completions(OpenAI旧标准)
两个协议不兼容,必须有一层做转换。
六、常见坑
| 错误操作 | 结果 |
|---|---|
直接写 base_url = "https://api.deepseek.com" |
Codex 报错 / 404 / schema mismatch |
| model 写 deepseek-chat 但没开 proxy | Codex 仍然请求 OpenAI |
| CC Switch 没开 routing | 仍然走 OpenAI |
七、验证是否成功
bash运行:
codex
输入:
帮我写一个flask接口
如果日志出现:
127.0.0.1:15721
说明成功走 CC Switch。
八、推荐组合
| 用途 | 方案 |
|---|---|
| 稳定 | Codex CLI + CC Switch(本地代理)+ DeepSeek |
| 高性能 | Codex CLI + OpenRouter + DeepSeek + Claude 混用 |
如果你要一套可直接复制的生产级配置(包含 config.toml 完整模板、多模型切换、自动 fallback、成本控制、Windows 后台常驻方案),说一句"给我 Codex 多模型切换方案",我直接给你。
声明:本文网友投稿,观点仅代表作者本人,不代表鲁班SEO赞同其观点或证实其描述。
