先把配置文件路径放在 Codex CLI 能读到的位置
很多人配置第三方 API 失败,第一步就踩在路径上。Codex CLI 默认读取的是用户目录下的 .codex/config.toml。Linux 和 macOS 通常是 ~/.codex/config.toml,Windows 则是 C:\Users\你的用户名\.codex\config.toml。我见过不少人在项目根目录新建了一个 config.toml,里面写得再漂亮也没用,因为 Codex CLI 根本不会去那里找。更稳的方式是先确认文件存在,再用编辑器打开,不要凭记忆改。Windows 下可以在终端里执行:
New-Item -ItemType Directory -Path "$env:USERPROFILE/.codex"
New-Item -ItemType File -Path "$env:USERPROFILE/.codex/config.toml"
如果目录已经存在,New-Item -ItemType File 可能会提示文件已存在,这不算报错。真正影响配置的是 TOML 语法:config.toml 不是 JSON,也不是 YAML,末尾逗号、缩进、引号都有讲究。你如果刚写完配置发现 Codex CLI 直接退出,先别怀疑 API 地址,多半是 TOML 解析失败。

model_provider 段完整写法,少一个名字都不行
配置第三方 API 的关键是告诉 Codex CLI 用哪个 provider。一个可用的 model_provider 段通常长这样:
model_provider = 'yushou'
[model_providers.yushou]
name = 'Yushou'
base_url = 'https://api.yushou.xyz/v1'
en_key = 'YUSHOU_API_KEY'
wire_api = 'chat'
这里最容易被误读的是 model_provider 和 model_providers.yushou 的关系。顶层 model_provider = 'yushou' 是在选当前默认 provider,下面 [model_providers.yushou] 才定义这个 provider 的名字。如果你写成 [model_providers.other],顶层却写 model_provider = 'yushou',启动时大概率会看到 unknown model provider "yushou" 这类错误。它不是网络问题,是名字没对上。
env_key 放的是环境变量名,不是 API Key 本身。也就是说 env_key = 'YUSHOU_API_KEY' 的意思是:启动时去系统环境变量里读取 YUSHOU_API_KEY。不要把密钥直接写进 config.toml,除非你确定文件不会进版本仓库。base_url 一般写到 /v1 为止,不要写成 /v1/chat/completions。Codex CLI 发起对话请求时还会拼接路径,如果你提前把路径写满,第三方接口经常返回 404。wire_api = 'chat' 表示走兼容 Chat Completions 的接口;如果你误写成 responses,而中转 API 没实现对应模式,就会报 unsupported endpoint 或 404。具体接口以你接入的文档为准。
Windows 路径坑:反斜杠、中文目录、执行策略
Windows 用户最常见的坑是把文件路径直接塞进 TOML。比如有人写了:
command = "C:\Users\me\proxy\codex-proxy.exe"
在 TOML 的双引号字符串里,反斜杠是转义符,\U 这类写法很容易触发 invalid escape sequence。如果你确实需要 Windows 路径,建议用正斜杠,TOML 会把它当普通字符处理:
command = 'C:/Users/me/proxy/codex-proxy.exe'
另一种写法是在双引号里把反斜杠转义成两个反斜杠,但这会明显降低可读性。我更推荐单引号路径,或者把启动命令放到用户目录之外的纯英文路径里。路径里有中文、空格、网盘同步目录,都可能让某些启动脚本找不到文件。尤其是类似 C:\Users\me\桌面\codex\proxy.exe 这种路径,看着能用,实际换终端就可能断。
Windows 终端里的环境变量也有坑。$env:YUSHOU_API_KEY = "sk-xxx" 只对当前会话有效,你关掉窗口再打开 Codex CLI,它就没了。如果你用 setx YUSHOU_API_KEY "sk-xxx" 永久写入,当前已经打开的终端也不会立刻读到新值,需要新开一个窗口。验证环境变量是否生效,可以直接访问模型列表:
curl -H "Authorization: Bearer $env:YUSHOU_API_KEY" https://api.yushou.xyz/v1/models
返回 401,通常是 key 没写对或环境变量没生效;返回 404,通常是 base_url 路径多写了;返回 JSON 模型列表,才说明网络、鉴权和地址基本没问题。若你在 Windows 的 cmd 里执行,记得把 $env:YUSHOU_API_KEY 换成 %YUSHOU_API_KEY%,否则它会把变量名当字符串传给请求头。
从报错反推配置是否真的生效
配置写完后,不要只看 Codex CLI 有没有启动,要看请求有没有打到你的第三方地址。一个简单判断方法:把 base_url 临时改成明显错误的域名,比如 https://api.example.invalid/v1,如果还能正常对话,说明 Codex CLI 没有使用你刚写的 provider;如果开始报网络错误,才说明配置确实生效。这个动作很土,但比反复重启有效。
常见报错可以按位置判断。TOML parse error 在配置文件里,通常是引号、反斜杠、缩进或重复 key;unknown model provider 在 provider 名字上,通常是顶层选择段和定义段不一致;missing api key 在环境变量上,通常是 env_key 名称和系统变量不一致;404 Not Found 在接口路径上,通常是 base_url 写到 /v1 以下;429 Too Many Requests 在额度和分组倍率上,这时要去看当前套餐是否限流。你可以先跑一条最小请求,确认 Codex CLI 的模型参数能透传。比如启动时指定模型:
codex --model "你的模型ID" "写一个 hello.py"
如果第三方只接受它列出的模型 ID,Codex CLI 传过去什么名字,它就要认什么名字。你填一个不存在的模型 ID,报错里会明确写模型不支持。反过来,如果模型列表里是 your-model-id,而 Codex CLI 配置里写成 your_model_id,也会失败。模型名不是越大越贵越好,建议先看 大模型调用排行榜,找真实可用的稳定型号。
配好之后,成本别只看“能不能跑”
第三方 API 的价值是入口统一,但真正用起来最怕成本失控。Codex CLI 会连续发起对话、工具调用和重试,token 消耗比你手动聊天快得多。尤其是开了长上下文、自动补全、多文件编辑时,单次请求的输入 token 可能轻松上几千。你可以先按 寓守API 模型价格表 查当前单价,再按自己的分组倍率估算。常见轻量模型的输入价格通常在每百万 tokens 几毛到几块之间,输出价格会高一些;高能力模型则可能到十几元每百万 tokens 以上。别只按“一次对话几分钱”估算,按天、按项目、按缓存命中率算,才更接近实际。
如果你刚配完 Codex CLI,建议先跑一个最小任务:创建文件、读取文件、修改文件,观察日志里模型名、provider 名、请求地址是否都符合预期。能稳定跑通,再把它接到日常开发里。更多 Codex CLI 配置细节可以看 Codex CLI 配置完全指南,里面有从安装到常用参数的整理。最终选择平台时,我还是建议把接口稳定性、价格透明度和用量排行放在一起看,寓守API 这类平台适合做统一入口,但配置前一定先拿最小请求验证。
相关阅读:把主题读全
寓守API:一个 Key 调用 Claude / GPT / Gemini
[…] Codex CLI 配置完全指南 检查本地配置,再看 Codex CLI 第三方 API 配置避坑 […]