CC Switch 配合 Codex 接入 DeepSeek 中转 API
写在前面
如果你已经看完前面的「什么是 API」,大概知道了 Cherry Studio 这种聚合客户端,那这篇算是「进阶版」——这次主角不是网页,也不是 GUI,而是 Codex 这个命令行编程 Agent。
用 Codex 最爽的一点是它真的能自己改代码、跑命令、提交 commit,像雇了一个不用睡觉的实习生。但问题来了:Codex 官方只认 OpenAI 的 API,国内用起来要么贵、要么卡。而 DeepSeek 和一堆中转站便宜大碗,怎么让它们接上 Codex?答案就是今天的主角:CC Switch。
这套配置我自己在 Windows 上跑通了,下面每一步都是实操过的,照着来就行。
一、为什么要用 CC Switch:两个协议根本聊不到一块
先说结论:不能把中转站的地址直接填进 Codex。
原因很简单,Codex 用的是 OpenAI 新一代 Responses API(/v1/responses),而 DeepSeek、Kimi、MiniMax 以及绝大多数中转站,对外只提供老牌的 Chat Completions API(/chat/completions)。
这两套接口在请求字段、流式输出(SSE)事件、工具调用数据结构上全都不一样。直接硬连的结果就是经典三连:
- ❌ 请求
/responses返回 404 - ❌ 参数解析失败,请求直接被拒
- ❌ 就算能回,流式输出也会断成一段一段
CC Switch 就是来解决这个问题的:它在本机起一个代理(127.0.0.1:15721),Codex 的 Responses 请求先进代理,被翻译成 Chat Completions 发给 DeepSeek/中转站,返回再翻译回 Responses 给 Codex。全程无感,而且你的中转站密钥只存在 CC Switch 本地,不会写进 Codex 配置里,不容易泄露。
Codex CLI ──Responses──▶ CC Switch 本地代理(127.0.0.1:15721) ──Chat Completions──▶ DeepSeek / 中转站
二、准备工作(5 分钟)
| 需要准备的东西 | 说明 |
|---|---|
| CC Switch | 版本要 ≥ 3.16.0,GitHub 搜 farion1231/cc-switch 下 Release,Windows 装 exe 即可 |
| Codex CLI | 装好并至少启动过一次(让 ~/.codex/config.toml 生成出来,不然 CC Switch 没地方写配置) |
| 中转站 API Key | 中转站后台创建 key(或 DeepSeek 官方 key,platform.deepseek.com) |
| 端口 15721 | 确认本机没被其他程序占用 |
💡 为什么强调要启动过一次 Codex?因为 CC Switch 的「接管」是去改
~/.codex/config.toml,这个文件不存在的话它会无从下手。
三、开始配置(重点:自定义中转站)
📷 本文截图来自 CC Switch 官方文档的脱敏示例数据,不涉及真实密钥。
3.1 打开 CC Switch,切到 Codex 标签页
启动 CC Switch,顶部标签切到 Codex,点击右上角 + 新建渠道。

新建渠道的表单大致长这样:右侧是预设列表,左侧填 Key 和 BaseURL,高级选项里藏着 API 格式的开关:

3.2 方式 A:官方 DeepSeek 预设(最简单)
如果你用的是 DeepSeek 官方 API,直接在预设列表里选 DeepSeek,CC Switch 会把接口地址、可用模型、思维链参数全部帮你填好,你只需要:
- 粘贴你的 DeepSeek API Key
- 保存
💡 小更新:CC Switch 3.19.1 之后,官方 DeepSeek 预设改成了原生直连,保存后卡片上不会有「需要路由」徽章,那部分配置可以跳过本地路由。但中转站和自定义渠道依然是 Chat 格式,必须走下面的方式 B + 路由,这篇教程的主线不变。
3.3 方式 B:自定义中转站(今天的主角)
中转站和官方不太一样,每家给的基础地址、模型名都可能不同,所以走「自定义」:
- 新建渠道时选 自定义
- API 格式选「OpenAI Chat(需路由)」 —— 这一步决定了 CC Switch 要不要做协议转换,选错了必挂
- BaseURL 只填域名根,比如
https://your-relay.com—— 千万别在后面手动加/chat/completions,CC Switch 会自己拼 - 粘贴中转站给你的 API Key
- 填一个你常用的模型名(中转站后台能看到它支持哪些,比如
deepseek-chat、deepseek-reasoner,有些站还会自定义型号名) - 保存
3.4 开启本地路由(核心中的核心)
进 CC Switch 的设置 → 本地路由,把两个开关都打开:
- ✅ 路由总开关
- ✅ Codex 应用开关

打开后 CC Switch 会自动把 ~/.codex/config.toml 改写成指向本地代理,大致长这样:
[model_providers.custom]
name = "deepseek"
base_url = "http://127.0.0.1:15721/v1"
wire_api = "responses"
requires_openai_auth = true
看到 127.0.0.1:15721/v1 就说明接管成功了。你的真实密钥不会出现在这里,放心。
3.5 启用供应商 + 重启 Codex
- 回到 Codex 渠道列表,点启用 DeepSeek 这条(依赖本地路由的渠道,路由没开时会提示先开)
- 完全退出当前所有 Codex 终端窗口,重新打开
- 在 Codex 里输入
/model,看到 DeepSeek / 中转站的模型列表就成功了
⚠️ Codex 启动时会把配置一次性读进内存,不监听文件变化,所以换完供应商一定要重启终端,别只开新标签页。
四、验证一下真的在用 DeepSeek 吗
Codex 里随便问一句,让它回个「你好」,然后:
- 打开 CC Switch 的统计/日志面板,能看到这次请求的真实厂商、Token 消耗、耗时
- 看到调用目标是 DeepSeek / 中转站,就说明协议转换链路全通了
有个小坑:对话里偶尔会显示
OpenAI GPT之类的标识,那只是内置系统提示文本,不是真在用 GPT。以统计面板的实际消耗为准。
五、避坑指南
- ❌ 报
/responses404 → 八成是本地路由没开,去设置里确认两个开关,重启 CC Switch 和 Codex - ❌ 自定义 BaseURL 加了
/chat/completions→ 删掉,只留域名根 - ❌
/model看不到模型 → 模型目录是 CC Switch 生成的,重启 Codex 进程才会重新加载 - ❌ 密钥填错/渠道停用 → 请求会一直失败,去中转站后台检查额度
- ❌ 某些模型报错提示「会在 xx 时间后才可用」 → 别硬刚,说明这个型号当前渠道还没放开,换一个渠道支持的型号(比如
deepseek-v4-flash这类)就行 - ✅ 密钥只在 CC Switch 本地存 → Codex 配置里只有本地代理地址,泄露风险小很多
小结
CC Switch 的本地路由本质上就是在中间加了一个免费翻译官,让听不懂 Responses 的 DeepSeek/中转站也能给 Codex 打工。整套配置熟悉之后十分钟搞定,之后你想在 Claude Code、Gemini 之间来回切,也是同一个套路。
下一篇预告:把 Codex 配合 Skill(技能)用起来,让它在项目里自动按你的规范写代码、跑测试,真正变成「会干活的实习生」。