1. Windows 下 Codex 接入 DeepSeek 的完整链路与 CC Switch 到底解决什么问题
Codex 是 OpenAI 推出的本地编码代理工具,能在你的终端或桌面端里读写文件、跑命令、改代码;DeepSeek 则是国内开发者常用的高性价比大模型,推理和代码能力都不错。把这两者接起来,本质上是让 Codex 不再走默认的 OpenAI 端点,而是把请求发到 DeepSeek 的兼容接口上。问题在于,Codex 的配置分散在auth.json、config.toml和系统环境变量里,手动改一次还行,想在不同模型之间来回切换就非常痛苦——每次都要改文件、重启、再验证,稍不留神就 401。
CC Switch 就是来解决这个痛点的。它是一个专门管理 Codex、Claude Code 这类工具 API Key 与 Base URL 的切换器,图形界面点一下就能换供应商,底层帮你把auth.json和config.toml写对。我实测下来,Windows 上用它把 Codex 的请求改到 TaoToken 的兼容端点,再让 TaoToken 转发到 DeepSeek,整个闭环大概十分钟能跑通。这篇笔记就按「装 Codex → 装 CC Switch → 填 Key 和 Base URL → 发一次对话验证」的顺序,把每一步的可复制配置都写清楚,适合刚接触 Codex、想在 Windows 上换模型的开发者跟做。
需要先说明一点:Codex 本身不绑定任何一家模型,它只认「OpenAI 兼容格式」的接口。DeepSeek 官方接口是兼容的,TaoToken 的 API 也是兼容的,所以你可以直接把 Base URL 指向 TaoToken,由它统一管理 Key 和模型路由。这样做的额外好处是,以后想换别的模型,只改 CC Switch 里的一个下拉项,不用再动 Codex 的配置文件。
2. 前置准备:Codex 安装、CC Switch 获取与 TaoToken API Key 申请
2.1 在 Windows 上装好 Codex
Codex 桌面版在 Microsoft Store 有官方包,产品 ID 是9PLM9XGG6VKS,直接在商店搜索这个 ID 就能找到。如果你的系统商店打不开,也可以走 GitHub 上的镜像仓库Wangnov/codex-app-mirror,它把官方安装包同步到了 Releases 里,下载 exe 双击安装即可。这里有个坑要注意:Windows 更新服务必须是开启状态,否则 Codex 安装到一半会报组件缺失,我试过把 Windows Update 临时关掉,结果装完打不开,重新开启更新并重启才正常。
装完之后,你可以在开始菜单里看到 Codex,首次启动它会引导你登录。先别急着登录 OpenAI 账号,因为我们后面要用 CC Switch 把认证方式改掉。如果你已经登录过,也没关系,CC Switch 会覆盖auth.json里的字段。
2.2 获取 CC Switch
CC Switch 的官网是https://www.ccswitch.io/zh/,在下载页选 Windows 版本,得到一个安装包。安装过程没什么特别的,一路下一步就行。装好后打开,界面左侧是供应商列表,右侧是当前选中供应商的 Base URL、API Key、模型名等字段。它支持 Codex、Claude Code 两种目标工具,顶部有切换标签,记得选到 Codex。
2.3 申请 TaoToken API Key
打开 TaoToken 官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,注册登录后进入控制台。在「API Keys」页面点新建,复制生成的 Key,形如sk-xxxxxxxx。这个 Key 只显示一次,建议先粘到记事本里备用。TaoToken 的 API 根地址是https://taotoken.net/api,注意这个地址后面不加 UTM 参数,配置时原样填入即可。
如果你还没想好要用哪个模型,可以先去「模型对话」页面https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite试聊几句,确认 DeepSeek 系列模型在你的账号下可用。长期做编码代理的话,可以看看 Coding Planhttps://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite,它针对高频调用做了额度优化。
3. 可复制配置:CC Switch 里填 Base URL、API Key 与 Codex 的 auth.json / config.toml
3.1 在 CC Switch 中新增供应商
打开 CC Switch,切到 Codex 标签,点「新增供应商」。名称随便填,比如TaoToken-DeepSeek。然后填三个关键字段:
| 字段 | 填写值 |
|---|---|
| Base URL | https://taotoken.net/api |
| API Key | 你从 TaoToken 控制台复制的sk-... |
| Model ID | deepseek-chat或deepseek-reasoner |
Model ID 这一项很关键,Codex 发请求时会把它作为model参数传给接口。DeepSeek 的对话模型是deepseek-chat,推理模型是deepseek-reasoner,按需选一个。填完点保存,再点「启用」,CC Switch 会自动把配置写入 Codex 的配置目录。
3.2 Codex 的 auth.json 长什么样
CC Switch 写入后,你可以打开%USERPROFILE%\.codex\auth.json核对。内容大致如下:
{ "OPENAI_API_KEY": "sk-你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api" }注意字段名是OPENAI_API_KEY和OPENAI_BASE_URL,Codex 读的就是这两个。如果你之前登录过 OpenAI 账号,这里可能还有tokens字段,CC Switch 启用新供应商时会把它清掉或覆盖,避免冲突。
3.3 config.toml 里的模型声明
同目录下的config.toml负责声明模型和 provider。CC Switch 一般会帮你写好,但如果你想手动确认,可以看这几行:
model = "deepseek-chat" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "OPENAI_API_KEY"env_key指向环境变量名,Codex 会从auth.json或系统环境变量里取这个 Key。如果你在系统里设过OPENAI_API_KEY环境变量,注意别和 CC Switch 写入的值打架,建议以auth.json为准,把系统环境变量清掉。
3.4 开启路由功能
CC Switch 界面上有个「路由」开关,打开后它会在本地起一个轻量转发,把 Codex 的请求按当前选中的供应商转发出去。这样你切换供应商时,Codex 侧完全无感,不用重启。实测这个路由对 Windows 防火墙友好,不需要额外放行端口,它走的是本地回环。
4. 验证请求:发一次对话确认 Codex 已经走通 DeepSeek
配置写完,别急着写代码,先做一次最小验证。打开 PowerShell,进到任意一个空目录,运行:
codex "用一句话解释什么是递归"如果配置正确,Codex 会把这句话发给https://taotoken.net/api,TaoToken 再转发给 DeepSeek,几秒后终端里会打印出模型回复。你看到类似「递归就是函数自己调用自己」这样的回答,就说明链路通了。
想更直观地确认请求确实走了 TaoToken,可以打开 CC Switch 的日志面板,或者去 TaoToken 控制台的「调用记录」页面,那里会显示刚才这次请求的模型名、耗时和 token 消耗。我实测下来,deepseek-chat首次响应大概 1 到 2 秒,deepseek-reasoner因为要推理,会慢一些,但输出质量更稳。
如果你在 Codex 里用的是交互模式,也可以直接输入/model查看当前模型,确认显示的是deepseek-chat而不是默认的gpt-4之类。这一步能帮你排除「配置写了但没生效」的情况。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth 逐个拆
5.1 401 Unauthorized
这是最常见的。原因通常是auth.json里的 Key 和 CC Switch 里填的不一致,或者 Key 复制时带了空格。打开%USERPROFILE%\.codex\auth.json,确认OPENAI_API_KEY的值是完整的sk-开头字符串,前后没有引号外的多余字符。另外检查 TaoToken 控制台里这个 Key 是否被禁用或额度耗尽。
5.2 local proxy failed
这个报错说明 CC Switch 的本地路由没起来。先确认 CC Switch 主界面右上角的「路由」是开启状态,然后看 Windows 任务管理器里有没有 CC Switch 的后台进程。如果被杀毒软件拦了,把 CC Switch 加入白名单再重启。还有一种情况是端口被占用,CC Switch 默认用的本地端口如果和别的工具冲突,可以在设置里换一个。
5.3 reading choices 相关报错
这类报错通常出现在响应格式解析阶段,提示reading 'choices'或类似字段缺失。原因是接口返回的不是 OpenAI 兼容格式,Codex 解析不了。检查 Base URL 是不是写成了https://taotoken.net/api,有没有多写/v1或少写/api。TaoToken 的兼容端点路径是固定的,写错就会返回非标准结构。
5.4 OAuth 相关报错
如果你之前用 OpenAI 账号登录过 Codex,auth.json里会残留tokens字段,Codex 可能优先走 OAuth 而不是 API Key。解决办法是在 CC Switch 里重新点一次「启用」,让它覆盖auth.json;或者手动把tokens字段删掉,只保留OPENAI_API_KEY和OPENAI_BASE_URL。删之前建议备份一下原文件。
5.5 模型名不识别
如果报错说 model 不存在,检查config.toml里的model值是不是deepseek-chat或deepseek-reasoner。DeepSeek 的模型名区分大小写,写成DeepSeek-Chat可能不认。另外确认 TaoToken 账号下这两个模型是开通状态。
6. 把配置固化下来:日常切换与长期使用的建议
跑通一次之后,建议把 CC Switch 的配置导出备份,路径在它的设置里有「导出配置」选项,存成一个 json 文件。这样换电脑或者重装系统时,导入就能恢复,不用重新填 Key。日常使用中,如果你想在 DeepSeek 和别的模型之间切换,直接在 CC Switch 里点另一个供应商的「启用」,Codex 侧不用做任何改动,路由会自动接管。
对于长期做编码代理的场景,建议把deepseek-chat设为默认,遇到复杂推理任务再临时切到deepseek-reasoner。TaoToken 的 Coding Plan 页面https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite里有针对高频调用的额度说明,可以按自己的调用量选。如果只是想先验证模型效果,模型对话页面https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite更轻量,不用配 Codex 就能试。
最后提醒一个细节:Windows 上 Codex 的配置目录是%USERPROFILE%\.codex\,如果你用管理员权限运行过 Codex,配置可能写到另一个用户目录下,导致 CC Switch 改的文件和 Codex 读的文件不是同一个。遇到「配置明明改了却不生效」的情况,先确认当前登录用户和 Codex 运行用户是否一致。