Codex CLI 接入 CoderPlan 需要改两个文件:`~/.codex/config.toml` 注册并激活 coderplan 供应商(base_url 指向 CoderPlan 的 `/v1` endpoint,`wire_api = "responses"`,`requires_openai_auth = true`),`~/.codex/auth.json` 写入 OPENAI_API_KEY 字段,值为 CoderPlan 的 `sk-` 密钥。新版 Codex CLI 不再用 OPENAI_BASE_URL 环境变量切换供应商;遇到 401 时优先检查 auth.json、TOML 语法和旧环境变量残留。
# ~/.codex/config.tomlmodel_provider = "coderplan"model = "gpt-5.6-sol"[model_providers.coderplan]name = "CoderPlan"base_url = "https://api.coderplan.ai/v1"wire_api = "responses"requires_openai_auth = true先在本机安装 Codex CLI(`npm install -g @openai/codex`),终端里能运行 `codex`;再在 CoderPlan 控制台创建 `sk-` 开头的 API Key,并确认 API 使用额度足够完成一次测试调用。
现在的 Codex CLI 是 Rust 重写版,把「路由」和「凭据」拆成两个文件存放:config.toml 决定请求发往哪里、走什么协议、用哪个模型;auth.json 只存放密钥。分工的好处是换模型不动密钥、换密钥不动路由。老教程里 `export OPENAI_BASE_URL=...` 的做法针对的是旧版 Node.js 实现——新版默认引导 ChatGPT 账号登录,环境变量不再可靠地切换供应商,所以本教程改用两个文件的官方配置方式。
Codex 启动时读取这个文件决定当前用哪个供应商。做法是把 CoderPlan 注册为一个自定义供应商,再用 model_provider 这一行激活它。
model_provider = "coderplan"model = "gpt-5.6-sol"[model_providers.coderplan]name = "CoderPlan"base_url = "https://api.coderplan.ai/v1"wire_api = "responses"requires_openai_auth = true只需要一个 OPENAI_API_KEY 字段。它虽然沿用 OpenAI 的字段名,但值是你的 CoderPlan 密钥(下一步会解释为什么)。
{ "OPENAI_API_KEY": "sk-your-api-key"}每一行都有明确的作用,理解之后排错会容易得多。文件路径是 `~/.codex/config.toml`(Windows 为 `%USERPROFILE%\.codex\config.toml`),没有就新建。
auth.json 里只有一个字段 OPENAI_API_KEY,值填 CoderPlan 控制台生成的 `sk-` 密钥。字段名带 OPENAI 只是 Codex 复用内置认证槽位的命名习惯:配合上一步的 `requires_openai_auth = true`,这个值会原样作为 Bearer token 发给 config.toml 里配置的 CoderPlan endpoint,和 OpenAI 官方没有关系。
macOS / Linux 在 `~/.codex/auth.json`;Windows 在 `%USERPROFILE%\.codex\auth.json`(资源管理器地址栏直接输入 `%USERPROFILE%\.codex`)。文件不存在就新建,注意保存为合法 JSON(双引号、无尾逗号)。
{ "OPENAI_API_KEY": "sk-your-api-key"}ChatGPT 登录态也存在 auth.json 里,写入 API Key 会替换掉登录态。如果需要在 ChatGPT 订阅和 CoderPlan 之间切换,可以用 cc-switch 管理多套配置一键切换,控制台「接入」弹窗也支持一键写入。
保存两个文件后,在任意项目目录运行 `codex`,先让它做一件小事,比如解释一个函数。能正常回答,说明路由、密钥、模型全链路已通;进入交互界面后也可以用 `/status` 查看当前供应商和模型是否是刚配置的。
成功时 Codex 会正常返回模型回答;若报 401 或模型不存在,进入下一步排查。
如果之前按旧教程 `export OPENAI_BASE_URL` / `OPENAI_API_KEY` 过,建议从 `~/.zshrc`、`~/.bashrc` 里删掉:新版 Codex 以 config.toml 为准,残留变量不生效,还会干扰排查。遇到 401 unauthorized 时按顺序检查。
`OPENAI_BASE_URL` 针对的是旧版 Node.js 实现的 Codex CLI。现在的 Rust 版把供应商配置收敛到 `~/.codex/config.toml` 的 model_providers 表,默认登录方式是 ChatGPT 账号,环境变量不再可靠地切换供应商。正确做法是在 config.toml 注册自定义供应商,并把密钥写入 auth.json。
填 CoderPlan 控制台生成的 `sk-` 密钥。字段名是 Codex 复用内置 OpenAI 认证槽位的命名;配合 `requires_openai_auth = true`,这个值会作为 Bearer token 发给 config.toml 里配置的 CoderPlan endpoint,而不是发给 OpenAI 官方。
按顺序检查:auth.json 是否为合法 JSON 且密钥完整;config.toml 语法是否正确、base_url 是否以 `/v1` 结尾;是否残留 OPENAI_BASE_URL 等旧环境变量;控制台里 API 使用额度和模型权限是否可用。
auth.json 同时是 ChatGPT 登录态的存放位置,写入 API Key 会替换登录态。需要在 ChatGPT 订阅和 CoderPlan 之间切换时,可以用 cc-switch 管理多套配置,控制台「接入」弹窗支持一键写入。