1. 多 CLI 共存时,配置到底乱在哪
Claude Code、Codex、Gemini CLI 这三个工具,单独拎出来任何一个都不难配。难的是你三个都想用,而且都想走同一个 API 通道。我自己的机器上就同时装了这三个,外加一个 OpenCode,结果就是每个工具一套配置格式、一个环境变量名、一份 API Key 存放位置,改一次 Key 要翻四个目录。
先说清楚这三个工具分别是什么、能干什么、适合谁。Claude Code 是 Anthropic 出的终端编程助手,擅长长上下文重构和跨文件改动;Codex CLI 是 OpenAI 的命令行代理,走responses协议,适合快速生成脚本和 README;Gemini CLI 是 Google 的终端工具,对多模态和长文档理解有优势。三者都支持自定义base_url,也就是说都能指向同一个兼容 OpenAI 或 Anthropic 协议的网关地址。
问题就出在「都能自定义」这件事上。Claude Code 读的是~/.claude/settings.json,Codex 读的是~/.codex/config.toml,Gemini CLI 读的是~/.gemini/settings.json加环境变量。格式不同、字段名不同、有的用 JSON 有的用 TOML。你手动改,改错一个字段名工具就静默失败,连报错都不给你。
CC Switch 这个工具解决的就是这层管理问题。它是一个桌面应用,把 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 五个 CLI 的供应商配置、MCP 服务器、Skills 扩展和系统提示词统一管起来,底层用 SQLite 存配置,写入是原子操作,不会出现改到一半配置损坏的情况。内置了 50 多个供应商预设,也支持自定义。切换供应商一键完成,不用再手动编辑文件。
这篇要交付的东西很具体:一份可复制的config.toml骨架、一份settings.json片段、CC Switch 的切换步骤,以及连通性验证动作。目标是一次配置,三个工具统一走 TaoToken 的 API 通道。
2. 前置准备:TaoToken 通道与 CC Switch 安装
2.1 拿到 TaoToken 的 API Key
TaoToken 在这里扮演的角色是统一的 API 通道。你不需要为每个 CLI 单独申请不同厂商的 Key,而是用同一个 Key 走同一个base_url,让三个工具都指向它。这样切换模型、换供应商、看用量都在一个地方。
先去控制台创建 API Key。打开 https://taotoken.net/api-keys ,登录后新建一个 Key,复制出来存好。这个 Key 后面要填进三个工具的配置里。
注意:Key 只在创建时完整显示一次,关掉页面就看不到了。建议先粘到本地临时文件,配完再删。
TaoToken 的 API 入口是 https://taotoken.net/api ,这个地址是给程序调用的,不带任何跟踪参数。文档在 https://taotoken.net/doc ,配置字段有疑问的时候对着文档核对。
2.2 安装 CC Switch
CC Switch 的发布页在 GitHub Releases。Windows 用户下载普通.msi后缀的安装包,双击装完即可。macOS 用户下载对应的.dmg。装完之后打开,界面左侧是五个 CLI 工具的标签页,右侧是当前供应商的配置详情。
如果你在树莓派或者 ARM 服务器上用命令行版本,可以装 CLI 版:
curl -LO https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-arm64-musl.tar.gz tar -xzf cc-switch-cli-linux-arm64-musl.tar.gz chmod +x cc-switch sudo mv cc-switch /usr/local/bin/装完执行cc-switch --help能看到子命令列表就说明成功了。CLI 版适合无图形界面的服务器环境,操作逻辑和桌面版一致,只是用命令代替点击。
2.3 装好三个 CLI 本体
三个工具都依赖 Node.js。推荐用 nvm 管理版本,避免系统自带的 Node 太旧:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash . "$HOME/.nvm/nvm.sh" nvm install 24 node -v npm -vnode -v输出v24.x就对了。国内网络下 npm 装包慢,先切镜像:
npm config set registry https://registry.npmmirror.com然后依次装三个 CLI:
npm i -g @anthropic-ai/claude-code@latest --verbose npm i -g @openai/codex@latest --verbose npm i -g @google/gemini-cli@latest --verbose三个都装完后,分别执行claude --version、codex --version、gemini --version确认能输出版本号。这一步不通过,后面配置写得再对也没用。
3. 可复制配置:config.toml 骨架与 settings.json 片段
3.1 Codex 的 config.toml 骨架
Codex 的配置文件在~/.codex/config.toml。Windows 下是C:\Users\你的用户名\.codex\config.toml。这份骨架可以直接抄,把base_url和 Key 换成你自己的:
model_provider = "TaoToken" model = "gpt-5.6-sol" model_reasoning_effort = "medium" disable_response_storage = true [model_providers.TaoToken] name = "TaoToken" base_url = "https://taotoken.net/api/v1" wire_api = "responses" requires_openai_auth = true [projects."/home/yourname/yourproject"] trust_level = "trusted"几个字段解释一下。model_provider指向下面[model_providers.TaoToken]这个块,名字要一致。wire_api = "responses"表示走 OpenAI 的 responses 协议,Codex 默认就是这个。requires_openai_auth = true让 Codex 去读环境变量里的 Key。disable_response_storage = true关掉服务端存储,避免某些网关不支持这个特性时报错。
[projects."..."]那段是给特定项目目录设信任级别,trusted表示在这个目录下 Codex 不用每次确认就能读写文件。路径换成你自己的项目绝对路径,Windows 下写成C:/Users/yourname/project这种正斜杠形式更稳。
Key 不写在config.toml里,而是走环境变量。在~/.codex/下建一个.env文件,或者直接在 shell 配置里导出:
export OPENAI_API_KEY="你的TaoToken Key"Windows 下用setx OPENAI_API_KEY "你的Key",然后重开一个终端生效。
3.2 Claude Code 的 settings.json 片段
Claude Code 的配置在~/.claude/settings.json。如果文件不存在就新建一个。核心是让它的ANTHROPIC_BASE_URL指向 TaoToken:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "你的TaoToken Key", "ANTHROPIC_MODEL": "claude-sonnet-4-5" }, "permissions": { "allow": [ "Read", "Write", "Bash(git status)", "Bash(npm run test)" ] } }ANTHROPIC_BASE_URL填 TaoToken 的 API 入口,注意这里不带/v1,Claude Code 会自己拼路径。ANTHROPIC_AUTH_TOKEN就是你的 Key。ANTHROPIC_MODEL指定默认模型,不写的话用工具内置默认值。
permissions.allow是白名单,列出的操作不用每次确认。建议先只放Read和Write,跑顺了再逐步加 Bash 命令,别一上来就全放开。
3.3 Gemini CLI 的配置
Gemini CLI 读环境变量和~/.gemini/settings.json。环境变量方式最直接:
export GEMINI_API_KEY="你的TaoToken Key" export GOOGLE_GEMINI_BASE_URL="https://taotoken.net/api"settings.json里可以配模型和主题:
{ "model": "gemini-2.5-pro", "theme": "Default", "autoAccept": false }autoAccept: false表示每次文件改动都要你确认,安全起见先关着。
3.4 用 CC Switch 统一管理
上面三份配置手动写完之后,其实已经能跑了。但下次你想换个模型、换套 Key,又得改三个文件。CC Switch 的价值在这里体现:它把这三份配置抽象成「供应商」概念,你在界面里维护一个 TaoToken 供应商,三个工具标签页都指向它,切换时一键生效。
在 CC Switch 里新建供应商,类型选自定义,填入:
| 字段 | 值 |
|---|---|
| 名称 | TaoToken |
| Base URL | https://taotoken.net/api |
| API Key | 你的 TaoToken Key |
| 协议 | OpenAI 兼容 / Anthropic 兼容按工具选 |
保存后,在 Claude Code 标签页选中这个供应商,点应用;切到 Codex 标签页同样选中应用;Gemini CLI 标签页重复。CC Switch 会分别写入三个工具各自的配置文件,你不用管格式差异。
4. 验证请求:确认三个工具都通了
配置写完不验证等于没配。三个工具分别测一遍。
4.1 验证 Codex
打开终端,直接输入codex进入交互模式。第一次进会提示你选模型,用/model命令可以看到当前可用的模型列表。如果列表能正常拉出来,说明base_url和 Key 都通了。
然后让它干个活:
帮我写一个 readme 关于 codex cli 简易使用,并输出保存的位置,并打开Codex 会生成内容、写入文件、告诉你路径。如果它卡在「正在连接」或者报 401,说明 Key 或base_url有问题,回到第 5 节排查。
4.2 验证 Claude Code
终端里执行claude,进入后输入一句简单指令,比如「读一下当前目录的 package.json,告诉我项目名」。能正常返回就说明通道通了。如果报authentication_error,检查settings.json里的ANTHROPIC_AUTH_TOKEN有没有写错,以及ANTHROPIC_BASE_URL是不是多了/v1。
4.3 验证 Gemini CLI
执行gemini,输入「用一句话解释什么是闭包」。能返回就通了。Gemini CLI 对GOOGLE_GEMINI_BASE_URL的读取有时需要重启终端,改完环境变量记得开新窗口。
4.4 用 curl 直接测通道
如果某个工具报错但你不确定是工具的问题还是通道的问题,用 curl 直接打 TaoToken 的接口,绕开工具本身:
curl https://taotoken.net/api/v1/models \ -H "Authorization: Bearer 你的TaoToken Key"返回模型列表 JSON 就说明通道没问题,问题在工具配置。返回 401 就是 Key 错了,返回 404 就是路径拼错了。
5. 本篇常见错排查
5.1 base_url 多写或少写 /v1
这是最高频的坑。Claude Code 的ANTHROPIC_BASE_URL填https://taotoken.net/api,不要带/v1,它自己会拼。Codex 的base_url要填https://taotoken.net/api/v1,因为它不会自动补。Gemini CLI 的GOOGLE_GEMINI_BASE_URL填https://taotoken.net/api。三个工具规则不一样,混了就 404。
5.2 环境变量没生效
export只在当前终端会话有效,关掉窗口就没了。要持久化得写进~/.bashrc或~/.zshrc,然后source一下。Windows 用setx之后必须重开终端,当前窗口读不到新值。改完环境变量先echo $OPENAI_API_KEY确认能打印出来。
5.3 config.toml 字段名写错
TOML 对大小写和拼写敏感。model_provider写成model-provider或者ModelProvider都会导致 Codex 读不到配置,然后它用默认值去连官方地址,报一个跟 Key 无关的错,让你以为是 Key 的问题。对着第 3.1 节的骨架逐字核对。
5.4 CC Switch 写入后工具没变化
CC Switch 写入配置后,已经打开的 CLI 进程不会自动重载。关掉终端重新开,或者退出 CLI 再进。桌面版 CC Switch 有个「应用」按钮,点完要确认状态变成「已激活」才算写入成功。
5.5 权限白名单太宽导致误操作
permissions.allow里如果放了Bash(*),Claude Code 执行任何命令都不问你。测试阶段建议只放读操作,写操作和删除操作保持手动确认。等跑顺了再逐步放开。
5.6 模型名不存在
model字段填的模型名必须是 TaoToken 通道支持的。填一个不存在的名字,有的工具会静默回退到默认模型,有的直接报错。先用第 4.4 节的 curl 拉一下模型列表,从列表里挑名字填。
6. 后续怎么用:模型对话、Coding Plan 与文档
三个工具都通了之后,日常使用其实很简单。想快速验证某个模型的表现,直接开模型对话页面试,不用装任何东西:https://taotoken.net/model-chat 。想长期用 CLI 做编码和 Agent 任务,Coding Plan 更划算,额度按周期算:https://taotoken.net/coding-plan 。配置过程中遇到字段疑问,接入文档里有完整的参数说明:https://taotoken.net/doc 。Key 管理和新建在控制台:https://taotoken.net/api-keys 。
我自己的习惯是:CC Switch 里维护两套供应商,一套日常用,一套备用。哪天主通道抽风,一键切过去,三个工具同时生效,不用挨个改文件。这套配置一次搭好,后面基本不用再动。