在 Codex 会话里敲/model是个很顺手的动作:当前模型答得慢、代码风格不合口味,直接切到另一个模型继续问。问题往往出在切换后的第一请求——有时 Codex 仍在用旧的供应商地址,有时 Key 对不上,终端回 401,或者提示 model not found。/model只负责改会话里的模型名,它不负责换通道,也不负责换鉴权。把 TaoToken 作为 Codex 的 model provider,核心就是先把 Base URL 固定到https://taotoken.net/api,Key 从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建,之后/model换模型时继续用同一把YOUR_API_KEY。TaoToken 做的是把 Codex 的请求送到你选中的模型,不接管/model的会话逻辑。这样切模型和切供应商分开管,才不会每切一次都重新对账。
1. Codex 里按 /model 后,模型名和请求通道是两件事
1.1 /model 只改当前会话的模型标识
Codex 的/model命令是会话内操作,它改的是后续请求里的模型字段,不是供应商配置。你可以把它理解成在同一个窗口里换了一套“回答问题的人设和脑子”,但窗口背后连的是哪条 API 通道,仍然由~/.codex/config.toml里的model_provider决定。如果model_provider还指着默认供应商,那么你在/model里切到任何模型,请求还是发往原来的地址;如果model_provider已经切到自定义供应商,/model只是换个模型 ID,Base URL 和 Key 都不应该跟着变。
这也是很多人切完模型立刻报错的根源:他们以为/model会顺手把通道也换掉,于是把 Key、Base URL、模型 ID 三件事混在一起排查。实际上,模型 ID 归/model或config.toml的model字段管,Base URL 和 Key 归model_provider管。分开看,问题会小很多。
1.2 为什么每次切工具、切模型都要确认 Key 和通道
模型可以经常换,但 Key 通常不跟着模型走。同一把YOUR_API_KEY可以请求多个模型,前提是这些模型都在同一个 API 通道里可用。TaoToken 的模型广场会把可选模型列出来,你在 Codex 里换模型时,只要model_provider还指向https://taotoken.net/api,Key 就还是那一把。真正要确认的是:/model里输入的模型 ID 是否来自模型广场,以及config.toml里的env_key是否指向你当前终端里已经导出的变量。
切工具时更容易乱。Claude Code 常用ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL;Codex 用的是~/.codex/config.toml里的model_provider、base_url、env_key。把 Claude Code 的环境变量套到 Codex 上,Codex 不会认;把 Codex 的config.toml格式贴到别的工具里,也可能直接解析失败。每次切工具,先确认配置文件属于哪个工具,再确认 Key 和 Base URL 有没有跟着工具走。
2. 在 ~/.codex/config.toml 里把 TaoToken 设成 model_provider
2.1 去官网创建 YOUR_API_KEY,并抄下模型广场的模型 ID
配置之前先准备两样东西:API Key 和模型 ID。打开 TaoToken 注册并登录,在控制台里创建 API Key,记成YOUR_API_KEY。不要在旧项目、旧聊天记录里随便翻一把 Key 来用,因为切换模型时最怕旧 Key 已经被删、被限额或者根本不属于当前账号。创建 Key 的入口和后续管理都在同一个控制台里,建议创建后先放在密码管理器或临时环境变量里。
模型 ID 不要凭记忆写。打开模型广场,找到你准备在 Codex 里用的模型,复制它的准确 ID,暂时记成YOUR_MODEL_ID。如果你打算用/model在不同模型之间切换,就把多个模型 ID 都抄下来。模型 ID 可能带具体版本后缀,和你在其他平台看到的昵称不一定一样。凡是拿不准的,以 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 模型广场当时列表为准。
2.2 config.toml 声明 model_provider、base_url 和 env_key
Codex 的自定义供应商写在~/.codex/config.toml,Windows 通常在%USERPROFILE%\.codex\config.toml。最小可用配置如下,重点是model_provider指向下方定义的taotoken,base_url写https://taotoken.net/api,末尾不要追加/v1。
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"这里有几个容易写错的位置。第一,base_url是接口根地址,不是官网页面,不要写成https://taotoken.net/?utm_source=taotoken_aicg_blog_end,也不要写成https://taotoken.net/api/v1。第二,env_key填的是环境变量名,不是 Key 本身,所以这里写的是TAOTOKEN_API_KEY,而不是YOUR_API_KEY。第三,model字段可以先写YOUR_MODEL_ID,之后/model切换时会话内会覆盖它,但启动时仍需要一个可用的默认模型。
2.3 环境变量和 auth.json 的最小处理
配置保存后,让 Codex 能读到 Key。macOS、Linux 或 WSL 里可以在当前终端执行:
export TAOTOKEN_API_KEY="YOUR_API_KEY"Windows PowerShell 用:
$env:TAOTOKEN_API_KEY="YOUR_API_KEY"导出后重新启动 Codex,或者在同一个终端里新开会话。有人会问~/.codex/auth.json要不要改。如果当前 Codex 版本使用env_key读取自定义供应商凭据,优先保持环境变量方案,不要手动往auth.json里塞来源不明的 token。手动改认证文件容易在切换模型或切换账号时留下旧凭据,反而让 401 更难查。只有当你明确知道当前版本必须用auth.json时,再按官方说明处理,并且确认里面引用的 Key 仍然是YOUR_API_KEY对应的那一把。
3. 用 /model 切换模型时,怎么保持同一把 Key 和同一个 https://taotoken.net/api
3.1 模型 ID 只从模型广场抄,/model 里切
Codex 里的/model适合做会话级切换。你可以在一次长对话里先让模型解释模块,再换另一个模型审查 SQL,再换回去继续写代码。切换时输入的是模型 ID,不是供应商名称,也不是 Key。只要model_provider = "taotoken"没有被改,请求就一直走https://taotoken.net/api。/model不承担切换供应商的职责,它只改变请求体里的模型字段。
如果/model列表里出现你想要的模型,直接选;如果它只支持手动输入,就粘贴模型广场里的完整 ID。不要为了“看起来像”而加日期后缀、加-latest、加平台前缀,除非模型广场里就是这么写的。切模型最怕两件事:模型 ID 写错,以及把不同账号的 Key 混用。前者报 model not found,后者报 401 或权限错误。
3.2 切换后跑一次最小回归:解释代码、生成 SQL,不要连生产库
切完模型后,不要立刻让它执行重要任务。先用一条最小请求验证通道:选中一段本地代码,让 Codex 解释它做了什么;或者给一张表结构,让它写一段只读查询。注意,Codex 只能生成、解释、对照代码或 SQL,不能直连你的生产库或生产机器去执行。诊断 SQL、DDL、编译运行都应由你在本地或 SQL*Plus 等客户端执行,再把报错贴回对话让它分析。
这样做有两个好处。第一,你能快速看到新模型是否正常返回,是否走的是同一个 API 通道。第二,你不会因为一次模型切换而把高风险操作带进生产环境。模型切换是会话行为,生产操作是另一条线,不要混在一起。
3.3 从 Codex 切到其他工具时,别复制错配置
Codex 用的是~/.codex/config.toml,里面是model_provider和base_url。Claude Code 走的是环境变量或~/.claude/settings.json的env,常见字段是ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL。CC Switch 这类工具则是自定义供应商里填 Base URL、Key、模型 ID。三者可以共用同一个https://taotoken.net/api,但不能共用同一套字段名。
从 Codex 切到别的工具时,确认三件事:Base URL 仍然是https://taotoken.net/api,不要多加/v1;Key 仍然是YOUR_API_KEY,或者你为不同工具创建的另一把 Key;模型 ID 仍然来自模型广场。工具换了,配置文件名和字段名要跟着换,通道本身不用换。
4. Codex 走 TaoToken 后的报错对照:401、404 与 model not found
4.1 401:TAOTOKEN_API_KEY 没被 Codex 读到
401 通常不是模型选错,而是鉴权没对上。先检查config.toml里env_key = "TAOTOKEN_API_KEY",再检查当前终端是否真的导出了TAOTOKEN_API_KEY。变量名大小写要一致,导出后要重新启动 Codex。另一个常见情况是 Key 复制时多了空格或换行,或者你用的是旧账号的 Key,而当前账号没有该模型权限。回到控制台重新创建一把 Key,替换YOUR_API_KEY,比在旧 Key 上反复试更快。
如果同一把 Key 在模型对话里能用,在 Codex 里报 401,那就不是 Key 本身失效,而是 Codex 没读到它。优先排查env_key和环境变量,不要先去改base_url。鉴权问题和地址问题是两条线,混着改只会增加变量。
4.2 404:base_url 末尾被加了 /v1
404 常见于base_url写错。Codex 自定义供应商的base_url应该写https://taotoken.net/api,末尾不要加/v1。有些兼容接口习惯让客户端填https://host/v1,但 Codex 这里按base_url再加自己的路径规则拼接,你手动补/v1可能导致路径重复。也不要把官网落地页地址填进base_url,官网是给人打开注册、创建 Key、看模型广场的,接口根地址才是https://taotoken.net/api。
改完config.toml后保存,重启 Codex,再用/model切一次模型发请求。如果 404 变成 401,说明路径已经对了,剩下的是鉴权;如果 404 还在,检查 URL 是否被终端或编辑器自动补了斜杠、空格、引号。
4.3 model not found:/model 里的名字不是模型广场 ID
model not found 说明请求已经到达通道,但通道不认你写的模型名。回到 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 模型广场,复制准确模型 ID,再在/model里重新选择或手动输入。不要用“差不多”的名字,也不要把别的平台的模型昵称直接搬过来。config.toml里的默认model字段也要同步,否则启动时仍可能用旧模型 ID 发请求。
如果你确认模型 ID 来自模型广场,但仍然报 model not found,检查是否在config.toml里把模型 ID 写到了model_providers段下面。模型 ID 应该放在顶层model或通过/model传入,model_providers段下面只负责供应商信息。层级写错时,TOML 可能能解析,但请求行为会不符合预期。
5. 验证与对账:用模型对话和控制台确认这刀切对了
5.1 在 Codex 里连续切两次模型,观察同一个 Key
配置好后,做一次连续切换测试:在 Codex 会话里用/model选模型 A,发一条“解释这段函数”的请求;再用/model选模型 B,发一条“给这段 SQL 加注释”的请求。两次请求都使用同一把YOUR_API_KEY,都经过https://taotoken.net/api。如果两次都能返回,说明model_provider已经稳定,/model只在内层切换模型字段。如果模型 A 成功、模型 B 失败,优先查模型 B 的 ID 是否来自模型广场,而不是查 Key。
这一步不要用生产库做实验。让 Codex 生成或解释 SQL 就停住,执行动作交给你本地完成。模型切换验证的是通道和模型 ID,不是数据库权限。
5.2 去 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 看调用记录和用量
返回正常后,打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 进入控制台,查看调用记录和用量。重点看三件事:刚才的请求是否记到了当前 Key 名下;使用的模型 ID 是否就是你/model里选的那个;有没有因为 Key 混用导致记录跑到另一个项目里。如果你为 Codex 单独建了一把 Key,就趁这时给它加一个容易识别的备注,后续切模型、切工具时不容易拿错。
有人只测通一次就结束,结果第二天换模型又报 401。多数时候不是配置坏了,而是终端环境变了、Key 被换掉了,或者新开的窗口没有导出TAOTOKEN_API_KEY。把控制台用量和本地配置对一遍,能省掉很多盲猜。
5.3 多 Key 场景下,模型切换前先确认当前项目
如果你同时在 Codex、Claude Code、CC Switch 里工作,建议按项目或按工具拆 Key,而不是所有地方共用一把。Codex 的env_key指向哪个变量,就决定它用哪把 Key。切换模型不需要换 Key,但切换项目、切换账号、切换工具时可能需要换。每次/model之前,先看一眼当前终端导出的是哪一个变量,能避免把测试请求打到正式额度上。
6. 长期跑 Codex 的下一步:Coding Plan、Key 管理和文档
6.1 什么时候该看 Coding Plan
如果你只是偶尔在 Codex 里用/model切一两个模型,按量使用通常够。如果你开始每天长时间让 Codex 解释代码、对比 SQL、写测试样例,或者团队里多人共用同一个通道,就该去看套餐是否比零散调用更合适。打开 Coding Plan 对照当前用量,别等到月中才发现 Key 已经被限。
6.2 创建 Key 与模型对话入口
需要新 Key 时,直接去 控制台 API Keys 创建,替换YOUR_API_KEY后重启 Codex。想先确认模型 ID 和返回速度,可以在 模型对话 里用同一把 Key 发一条测试消息。之后如果还要把同一套 Key 接到 Claude Code,环境变量字段对照见 Claude Code 接入文档。Codex 这边记住一条就够了:/model管模型名,~/.codex/config.toml管供应商,Base URL 保持https://taotoken.net/api,Key 始终用你从控制台创建的那把。