Codex CLI 接入第三方 API:config.toml 自定义 model provider 完整配置
披露:LLM API Guide 由 SeedRouter 团队维护,本文以 SeedRouter 为示例。配置方法同样适用于其他支持 OpenAI Responses 协议的网关。
适用场景
- 想让 Codex CLI 使用更便宜或更稳定的模型线路,而不是只用官方账号额度。
- 团队统一采购 API,用一个 Base URL 和 API Key 管理用量和账单。
- 想在官方登录和第三方网关之间随时切换,而不是改来改去。
第一步:准备三项信息
| 项目 | 说明 | SeedRouter 示例 |
|---|---|---|
| Base URL | 网关的 OpenAI 兼容地址 | https://seedrouter.net/v1 |
| API Key | 在网关控制台创建的密钥 | sk-...(只在 seedrouter.net 控制台创建) |
| 模型名称 | 网关模型目录里的模型 ID | 例如 gpt-6.1-sol,以控制台模型列表为准 |
注意核对网关域名。名称相近的网站很多,Base URL 填错域名,相当于把请求发给了另一家服务。SeedRouter 的官方域名只有 seedrouter.net,详见官方渠道说明。
第二步:编辑 ~/.codex/config.toml
配置文件位置:
- macOS / Linux:
~/.codex/config.toml - Windows:
C:\Users\<用户名>\.codex\config.toml
文件不存在时直接新建。写入以下内容:
model = "gpt-6.1-sol"
model_provider = "seedrouter"
[model_providers.seedrouter]
name = "SeedRouter"
base_url = "https://seedrouter.net/v1"
env_key = "SEEDROUTER_API_KEY"
wire_api = "responses"
requires_openai_auth = false
每个字段的作用:
| 字段 | 作用 |
|---|---|
model_provider | 选中下方名为 seedrouter 的 provider |
model | 默认使用的模型 ID |
base_url | 网关地址,Codex 会在后面拼接 /responses |
env_key | 从哪个环境变量读取 API Key,Key 本身不写进配置文件 |
wire_api | 通信协议,responses 表示 OpenAI Responses API |
requires_openai_auth | 设为 false,表示这个 provider 不使用 ChatGPT 登录 |
第三步:设置 API Key 环境变量
macOS / Linux(zsh 或 bash):
echo 'export SEEDROUTER_API_KEY="sk-你的密钥"' >> ~/.zshrc
source ~/.zshrc
用 bash 的话把 ~/.zshrc 换成 ~/.bashrc。
Windows PowerShell:
setx SEEDROUTER_API_KEY "sk-你的密钥"
setx 只对新开的终端生效,执行后请关闭并重新打开 PowerShell。
第四步:验证连接
先用 curl 确认 Key 和地址可用,返回模型列表即说明认证通过:
curl https://seedrouter.net/v1/models \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"
然后启动 Codex:
codex
随便问一个问题,能正常回答就完成了。在 SeedRouter 控制台的用量日志里也能看到这次请求。
在官方登录和第三方网关之间切换
推荐用 profile,把两套配置都留在同一个文件里:
[profiles.seedrouter]
model = "gpt-6.1-sol"
model_provider = "seedrouter"
需要时用 codex --profile seedrouter 启动走网关,不带参数则使用文件顶层的默认设置。如果更习惯图形界面,也可以用 CC Switch 管理多个供应商,SeedRouter 有一份CC Switch 配置 Codex 的完整指南。
常见报错
| 现象 | 常见原因 | 处理 |
|---|---|---|
| 401 / 403 | Key 复制多了空格、环境变量没加载、Key 来自另一家网站 | 重新复制 Key,重开终端,用 echo $SEEDROUTER_API_KEY(PowerShell:$env:SEEDROUTER_API_KEY)检查 |
| 404 | base_url 少了 /v1 或拼写错误 | 对照网关文档核对完整地址 |
| 提示模型不存在 | 模型 ID 不在你账号的模型目录里 | 到控制台模型列表复制准确的模型 ID |
| 配置改了没变化 | Codex 已在运行,或终端未重开 | 退出 Codex,重新打开终端 |
| 请求跑到了别的地址 | 系统里设置了 OPENAI_BASE_URL、OPENAI_API_KEY 等变量 | 用 env | grep OPENAI(PowerShell:Get-ChildItem Env:OPENAI*)检查并清理冲突变量 |
更多报错见Codex / Claude Code 接入第三方 API 常见报错排查。
小结
Codex 接第三方网关只需要三件事:在 config.toml 里定义 provider,用环境变量提供 Key,用 wire_api = "responses" 走 Responses 协议。如果你还没有网关账号,可以在 SeedRouter 官网注册,新账号有 2 次热门模型免费试用,首页列有当前各模型与官方价格的对比。
常见问题
接入第三方 API 后还能用 ChatGPT 账号登录 Codex 吗?
可以。官方登录和自定义 provider 是两套配置,切回官方 provider 或使用不同的 profile 即可,互不覆盖。
base_url 要不要带 /v1?
要看网关文档。SeedRouter 的 Codex 地址是 https://seedrouter.net/v1,Codex 会在后面拼接 /responses。
wire_api 填 chat 还是 responses?
网关支持 Responses 协议时填 responses。SeedRouter 支持 Responses;只支持 Chat Completions 的网关需要 CC Switch 本地路由之类的转换层。
改了 config.toml 为什么没生效?
Codex 在启动时读取配置和环境变量。修改后请退出 Codex、重新打开终端再启动。