在 WSL 里装 cc-switch,下载 deb 文件只是第一步;真正麻烦的是装完之后,Codex 和 Claude Code 各要一套 Key。我把两边的供应商都指向 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 上创建的一把 TaoToken Key,之后在 cc-switch 里点一下就能从 Codex 切到 Claude Code,再也不用同时维护两套密钥。
这篇文章顺着原来的安装路径写:先解决 deb 依赖,再处理 WSL 启动乱码,最后才是「一个 Key 喂两家」的供应商配置。每一步都是实际执行过的,顺序也按真实操作来,方便你照着抄;如果你已经装好 cc-switch 只是切换不顺,直接从第 3 节开始看。文中所有命令都基于 WSL + Ubuntu,其他发行版命令略有差异,但思路一样。
1. WSL 里装 cc-switch:先把 deb 的依赖坑填上
1.1 从 releases 下载 deb,进 WSL 直接装大概率报错
cc-switch 的安装包在 GitHub releases 页面,文件命名一般是 CC-Switch-v3.5.1-Linux.deb 这种,版本号以后续 release 为准。下载时注意别下成 Windows 的 exe,Linux 版才对应 WSL 环境。下载完成后,在 WSL 里先确认文件所在目录:
cd /mnt/c/Users/你的用户名/Downloads ls -l CC-Switch-*.deb这里有个 WSL 的细节:从 Windows 浏览器下载的文件默认放在 /mnt/c 下的 Windows 目录,直接cd过去安装没问题,但如果遇到权限相关报错,把文件先拷回 WSL 的 home 目录再装:
cp CC-Switch-*.deb ~/ cd ~/随后执行安装命令:
sudo dpkg -i CC-Switch-v3.5.1-Linux.deb这一步大概率会报「dependency problems」或「依赖关系不满足」之类的提示,原因不是安装包损坏,而是系统里缺少 cc-switch 运行所依赖的几个基础库。
1.2 用 --fix-broken install 收尾,再重跑 dpkg
修依赖不需要你手动去找缺了哪些包,apt 会自动补齐:
sudo apt --fix-broken install这条命令会检查当前系统里所有未完成的依赖安装,把缺的包装好,顺带把刚才 dpkg -i 留下的半安装状态处理掉。等它跑完,再执行一次安装:
sudo dpkg -i CC-Switch-v3.5.1-Linux.deb这次不会再有依赖报错,安装输出最后会出现 done 之类的提示。启动命令也简单:
cc-switch如果此时窗口弹出来了但界面全是方块,说明你提前遇到了下面这段乱码问题。
2. 启动乱码补字体,别让界面挡住后续配置
2.1 中文界面变方块,原因多半在字体
cc-switch 的界面是中文的,而 WSL 默认不带任何中文字体。缺少字体时,文字渲染不出字形,界面上就是一排排方块或问号,选项看不清,后续供应商配置根本没法操作。这属于启动阶段最影响体验的一个坑,我在第一次启动时也碰到过。
2.2 给 WSL 补一套中文字体
在 Ubuntu 里装中文字体最常见的选择是 Noto CJK,安装命令:
sudo apt install fonts-noto-cjk也可以选文泉驿微米黑:
sudo apt install fonts-wqy-microhei装完字体后退出 cc-switch 再重新启动,界面文字就能正常显示了。如果还是乱码,先确认终端本身有没有关闭自定义字体,WSL 的 Windows Terminal 一般不用额外设置,但老版本终端可能需要把字体改成支持中文的字体,比如「等距更纱黑体」或「微软雅黑」。
字体搞定后,cc-switch 的主界面能看清楚,接下来才轮到配置供应商。
3. 切供应商前,先到 TaoToken 拿一把 Key
3.1 注册、创建 API Key 一气呵成
打开 TaoToken 的落地页,注册账号后进控制台,在 API Keys 界面点创建按钮,生成一把以 sk- 开头的密钥。创建后先复制保存,后续填进 cc-switch 需要用到,页面关闭后密钥不会再完整显示。这里创建的 Key 就是之后 Codex 和 Claude Code 共同使用的那一把,所以复制时留意别多带空格或换行。
3.2 在 cc-switch 里新增供应商,Base URL 填 https://taotoken.net/api
打开 cc-switch,找到供应商管理入口,新增一条记录。需要填写的字段并不复杂,关键信息如下:
| 配置项 | 填写内容 |
|---|---|
| 供应商名称 | 自己起一个,比如 TaoToken |
| API Base URL | https://taotoken.net/api |
| API Key | YOUR_API_KEY |
| 模型 ID | 以 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 模型广场为准 |
Base URL 这一项特别容易写错,注意两点:一是末尾不要加 /v1,二是不要把官网首页地址填进去。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 只用来注册和看用量,工具真正请求的接口是 https://taotoken.net/api,两者各司其职。
模型 ID 不要凭记忆填,以 TaoToken 官网模型广场当时展示的 ID 为准。不同模型的路由、生效逻辑可能不同,选好之后记下来,Codex 和 Claude Code 两侧用同一个模型 ID 即可。
3.3 一把 Key 喂两家的原理
cc-switch 切换供应商时,会往 Codex 和 Claude Code 各自的配置文件里写入对应配置:Codex 读 ~/.codex/config.toml 里的 model_provider,Claude Code 读 ~/.claude/settings.json 里的 env。两者请求的地址和密钥都来自同一条 TaoToken 供应商记录,所以切换模型只发生在 cc-switch 这一层,Key 始终是同一把。这也是用 cc-switch 而不是手动改配置的原因——手动改很容易漏改一半,切来切去就乱了。
4. 从 Codex 切到 Claude Code,验证同一把 Key 生效
4.1 先让 Codex 跑一条测试消息
在 cc-switch 里选中刚创建的供应商,点击应用或切换。然后打开终端,运行codex:
codex输入任意一条开发相关的问题,比如「解释一下这段代码的时间复杂度」,让 Codex 正常回答一轮。回答成功后,先别急着切走,去官网控制台的用量页面看一眼刚刚这次请求有没有被记录。能查到记录,说明 Codex 侧已经成功走上 TaoToken 通道。
4.2 切到 Claude Code 再跑一条
回到 cc-switch,把供应商切换记录切到刚才那条记录,再在项目目录里运行:
claudeClaude Code 启动后同样问一个问题,例如「当前项目的文件结构是怎样的」。注意 Claude Code 是对话式工具,它会先读取项目上下文再回答,所以建议在测试目录里跑,避免它扫描整个磁盘。回答完成后,再次去控制台核对,这次应该能看到 Claude Code 产生的第二条调用记录,两条记录挂在同一把 Key 下。
4.3 两边的配置文件长什么样
cc-switch 不会让你手动去编辑这些文件,但了解它在改什么,排查问题时更有方向。Codex 侧的 ~/.codex/config.toml 会写入类似下面的 provider:
model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api"Claude Code 侧的 ~/.claude/settings.json 会写入:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }其中 ANTHROPIC_MODEL 的取值以模型广场实际选择为准,不要照抄成字面字符串。手动改过这两个文件的话,再切一次 cc-switch 会覆盖回来,所以来回横跳逻辑以 cc-switch 当前选中的供应商为准。
5. 切换报错排查:401、/v1 和没生效
5.1 401:Key 复制出了问题
如果 Codex 或 Claude Code 在切换后返回 401 认证失败,大概率是 API Key 粘贴时带了空格或换行。去 TaoToken 控制台重新复制一次,粘贴到 cc-switch 的 Key 输入框,确认首尾没有多余字符。另一种情况是 Key 在创建后已经被删除或重置,去控制台重新生成一把再试。
5.2 model not found:模型 ID 没按模型广场选
返回 404 或提示模型不存在,基本是模型 ID 填错了。在 3.2 里我们就强调模型 ID 必须以模型广场为准,这里单独拿出来说,是因为排障时最容易被忽略:报错信息里提示的模型名和你填进去的 ID 往往只有细微差别,比如大小写、连接符、日期后缀。如果你在 Codex 或 Claude Code 的报错里看到「model not found」或「unknown model」,先回官网模型广场复制准确 ID,再回 cc-switch 粘贴,避免手打。手打很容易把短横线或点号打错。
5.3 Base URL 多了 /v1:接口返回 404
很多工具默认习惯在 Base URL 后补 /v1,但 https://taotoken.net/api 已经包含了路由前缀,末尾再加 /v1 会拼出不存在且多冗余的路径,请求就会失败。这也是切换后最容易遇到的一类问题,先检查这一项,再去动其他配置。
5.4 切了没生效:cc-switch 是否真正应用
在 cc-switch 的供应商列表里,选中状态高亮不等于配置已生效,有些版本需要再点一次应用按钮才会覆盖配置文件。应用后可以打开 ~/.claude/settings.json 或 ~/.codex/config.toml 确认内容确实被替换。如果文件被其他工具或手动编辑过程覆盖,重新切一遍供应商即可恢复。
6. 回控制台对账,顺手把文档收藏
6.1 用同一把 Key 发一条测试消息热身
配置保存后,先在 TaoToken 模型对话 里用你刚创建的 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错。这一步能帮你把「配置问题」和「用量问题」快速分开:网页对话能通,说明 Key 和模型没问题;网页对话不通,赶紧回 cc-switch 检查配置。
6.2 去控制台看这次切换是否记上账
刚才 Codex 和 Claude Code 各跑了一轮测试,现在打开 控制台 API Keys,查看这把 Key 的调用记录,应该能看到两条来自不同工具的请求。以后用量、计费相关的细节,以这里实时展示的数据为准。
6.3 再留一份 Claude Code 接入文档
如果后续要用到 Claude Code 的更多环境变量或高级参数,可以对照 Claude Code 接入文档 里的说明调整。日常使用其实只需要 cc-switch 里那条供应商配置就够,文档是给你查漏补缺用的,别一上来就把环境变量堆满。
到这一步,cc-switch 的价值才真正体现出来:Key 还是同一把 TaoToken Key,Codex 和 Claude Code 却能在各自的入口自由切换,互不干扰。以后新增模型或调整套餐,也只需要在控制台操作,工具这边不用再动。