1. 为什么 Windows 上跑 Codex 要配 ccswitch
Codex 是 OpenAI 推出的 AI 编程助手,在 Windows 上可以直接从 Microsoft Store 安装,不需要 Node.js、Python 这些运行环境,装完就能打开。它支持代码生成、解释、重构、终端操作等能力,对习惯图形界面的开发者来说门槛很低。但真正用起来会遇到一个现实问题:Codex 默认走 OpenAI 官方 API,按 token 计费,重度使用成本不低;而且如果你同时还在用 Claude Code、Cursor、其他 CLI 工具,每个工具都要单独配一份 Key,改一次配置要翻好几个文件,很容易配错。
ccswitch 就是来解决这个问题的。它是一个本地代理工具,在你自己电脑上起一个轻量服务,把 Codex 发出的请求转发到你指定的后端——比如 DeepSeek 这类性价比更高的 API。Codex 说 OpenAI 的"语言",ccswitch 翻译成 DeepSeek 能听懂的格式,再把结果翻译回来。整个过程 Codex 界面完全不变,你感知不到中间多了一层。
这套组合适合谁?适合 Windows 10/11 用户、想用 Codex 但不想承担高额 API 费用、又希望多个工具共用一套 Key 的人。我实测下来,ccswitch v3.16.3 已经正式支持 Codex,配置逻辑清晰,一次配好之后基本不用再动。下面从安装到验证,一步步走完。
2. TaoToken 前置:统一 Key 与接入地址
在动手之前,先把"Key 从哪来、请求发到哪"这件事理清楚。多工具 Key 分散的根源,是每个后端平台各发一套 Key、各有一套计费。TaoToken 的思路是提供一个统一的接入层:你在这里拿到一个 Key,就能对接多种模型,Codex、Claude Code、其他 CLI 工具都可以共用,不用每个工具去不同平台注册。
具体地址如下,建议先收藏:
- 官网入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=
- API 基址:https://taotoken.net/api(这个地址不加 UTM 参数,配置里直接填)
- 模型对话体验:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
- Coding Plan(长期编码/Agent 场景):https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
- 控制台:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite
- API Keys 管理:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite
- 接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
注意:API 基址
https://taotoken.net/api是给程序调用的,不要带 UTM 后缀,否则部分客户端会把参数当成路径的一部分导致 404。
拿到 Key 之后,你只需要记住一件事:Codex 通过 ccswitch 转发时,后端填的是 TaoToken 的 API 基址和这个统一 Key。这样即使你后面换模型、加工具,Key 都不用重新申请。
3. 可复制配置:config.toml 骨架与 ccswitch 配置
这一节是全文核心,直接给可复制的配置。分两部分:Codex 侧的config.toml,和 ccswitch 侧的供应商配置。
3.1 Codex 的 config.toml 骨架
Codex 在 Windows 上的配置文件通常位于用户目录下的.codex文件夹。你可以在文件资源管理器地址栏输入%USERPROFILE%\.codex回车,如果文件夹不存在就手动新建一个,然后在里面创建config.toml。
# %USERPROFILE%\.codex\config.toml # Codex 通过 ccswitch 本地代理转发到 TaoToken 统一接入层 model = "deepseek-chat" model_provider = "ccswitch" [model_providers.ccswitch] name = "ccswitch-local" base_url = "http://127.0.0.1:8787/v1" wire_api = "chat" env_key = "CCSWITCH_LOCAL_KEY" # 可选:控制上下文与超时,避免长任务被截断 [model_providers.ccswitch.request] timeout_ms = 120000几个关键点解释一下。base_url指向的是 ccswitch 在本地监听的地址,默认端口常见为8787,具体以你 ccswitch 界面显示的端口为准。wire_api = "chat"表示走 Chat Completions 协议,DeepSeek 和 TaoToken 都兼容这个格式。env_key是环境变量名,ccswitch 会用它来校验本地请求,真正的上游 Key 由 ccswitch 保管,不直接暴露给 Codex。
如果你不想用环境变量,也可以把 Key 直接写进 ccswitch 的配置里,Codex 侧只认本地代理即可。
3.2 ccswitch 供应商配置
打开 ccswitch 主界面,点击"新建配置",按下面这张表填:
| 配置项 | 填写内容 | 说明 |
|---|---|---|
| 配置名称 | TaoToken-DeepSeek | 自定义,方便识别 |
| 供应商类型 | 自定义 OpenAI 兼容 | 不要选死板的官方预设 |
| API 基址 | https://taotoken.net/api | 不带 UTM,结尾不要多加斜杠 |
| API Key | 你在 TaoToken 拿到的 Key | 粘贴后不要留空格 |
| 默认模型 | deepseek-chat | 也可填其他可用模型名 |
| 路由开关 | 开启 | Codex 适配需要打开 |
保存之后,ccswitch 主界面会列出这条配置。确认"路由"处于开启状态,界面上一般会有绿色标识或"运行中"字样。这一步不做,Codex 的请求就发不出去。
3.3 环境变量设置(可选但推荐)
如果你在config.toml里用了env_key,需要在 Windows 里设一个环境变量。打开 PowerShell,执行:
# 设置当前用户级别的环境变量,重启终端后生效 [Environment]::SetEnvironmentVariable("CCSWITCH_LOCAL_KEY", "ccswitch-local", "User")这里的值ccswitch-local只是本地占位,真正的上游 Key 在 ccswitch 里。设完之后关掉所有终端重新打开,让变量生效。
4. 验证请求:确认 Codex 真的调通了 DeepSeek
配置写完不代表通了,必须验证。分三步:先验 ccswitch 本地代理活着,再验上游 API 能通,最后验 Codex 端到端。
4.1 验证 ccswitch 本地服务
打开 PowerShell,用 curl 打一下本地代理的健康检查或模型列表接口:
# 检查本地代理是否在监听 curl.exe http://127.0.0.1:8787/v1/models ` -H "Authorization: Bearer ccswitch-local"如果返回一段 JSON,里面能看到模型列表,说明 ccswitch 本地服务正常。如果报"无法连接",说明 ccswitch 没启动或端口不对,回到 ccswitch 界面确认端口号。
4.2 验证 TaoToken 上游连通性
绕过 ccswitch,直接打 TaoToken 的接口,确认 Key 和基址没问题:
# 直接请求 TaoToken,验证 Key 有效性 curl.exe https://taotoken.net/api/v1/chat/completions ` -H "Content-Type: application/json" ` -H "Authorization: Bearer 你的TaoTokenKey" ` -d "{\"model\":\"deepseek-chat\",\"messages\":[{\"role\":\"user\",\"content\":\"ping\"}]}"正常会返回一个包含choices字段的 JSON,content里是模型回复。如果返回 401,是 Key 错了;返回 404,多半是基址写错,检查是不是多写了/v1或少了/api。
4.3 Codex 端到端验证
打开 Codex 应用,在对话面板输入一个简单需求,比如"用 Python 写一个读取 CSV 并统计行数的函数"。如果几秒内返回了代码,并且代码风格、注释符合 DeepSeek 的输出特征,说明整条链路通了。你也可以在 ccswitch 的日志面板看到对应的请求记录,确认请求确实经过了本地代理。
5. 本篇常见错排查
配置过程中最容易踩的坑集中在这几个地方,对照排查能省不少时间。
报错一:Codex 提示连接超时或 connection refused。九成是 ccswitch 没启动,或者config.toml里的端口和 ccswitch 实际监听端口不一致。打开 ccswitch 界面看端口,再核对base_url。另外确认 ccswitch 没有被 Windows 防火墙拦掉,首次运行时如果弹出防火墙提示,要允许专用网络访问。
报错二:返回 401 Unauthorized。分两种。如果是打 TaoToken 直连报 401,是 Key 复制错了,注意别把首尾空格带进去。如果是经过 ccswitch 报 401,检查 ccswitch 里填的 Key 是否正确,以及env_key对应的环境变量是否真的生效——环境变量改完必须重开终端。
报错三:返回 404 或 model not found。基址写错是主因。TaoToken 的基址是https://taotoken.net/api,有些客户端会自动补/v1,你就要确认最终请求路径是/api/v1/chat/completions。模型名也要和平台实际提供的对齐,写错模型名同样会 404。
报错四:Codex 界面能开但对话无响应。检查 ccswitch 的"路由"开关是否打开。这个开关不开,ccswitch 只保存配置不转发请求,Codex 就会一直等。另外看 ccswitch 日志有没有报上游错误,如果有,多半是上游 Key 余额不足或模型不可用。
报错五:配置改了不生效。Codex 和 ccswitch 都有缓存。改完config.toml后完全退出 Codex 再重开;改完 ccswitch 配置后点保存并重启路由。Windows 上有些应用退出不彻底,可以在任务管理器里确认进程真的结束了。
6. 长期使用与 CTA
一次配好之后,日常使用其实很简单:开机后确认 ccswitch 在后台运行,打开 Codex 直接用。如果你后面要加 Claude Code 或其他 CLI 工具,思路一样——它们都指向 ccswitch 本地代理,上游统一走 TaoToken,Key 只维护一份。
对于长期编码、跑 Agent 任务的场景,建议看一下 Coding Plan,它在持续调用下的成本结构更友好:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite
如果你在接入过程中遇到报错,先去 API Keys 页面核对 Key 状态,再对照接入文档检查基址和参数:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 和 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite
想先确认某个模型的实际输出效果,不用配环境,直接在模型对话页面试:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite
最后提醒一句:ccswitch 的版本更新较快,界面按钮位置可能变,但配置逻辑——本地代理 + 上游基址 + 统一 Key——是不变的。把config.toml骨架和供应商配置这两块存好,换版本时照着填就行。