Codex CLI 接入第三方 API:版本、配置文件层与 Base URL 核对。

Codex CLI 接第三方 API 的常见失败,几乎都不是“协议不支持”,而是被几样假设一起搞错:CLI 版本记错、配置改在错的那一层、Key 还没验证就去动 CLI、或者把一年前的博客片段直接复制到新版本里。先在客户端外验证 API,再改 Codex 配置,是最稳的顺序。

Base URLhttps://monkeytheme.com/v1
协议OpenAI Compatible
推荐起点独立 profile + .env
常见坏味道版本错了还改配置

本教程实际验证了什么

2026-08-09 的隔离测试用 Codex CLI 0.146.0 接入 MonkeyAI,profile 名 monkeyai,Key 写进 $CODEX_HOME/.env。一次真实 codex exec 请求被发到 https://monkeytheme.com/v1/responses,MonkeyAI 按预期返回 401 INVALID_API_KEY(测试用假 Key)。移除 .env 后,错误从 401 变为 Missing environment variable: MONKEYAI_API_KEY,证明 .env 确实被读取。

本教程不验证「任何 Codex CLI 版本都按同一套字段工作」这种强结论。Codex CLI 的 model_provider、model_providers.* 块和 env_key 字段在 0.146.0 有效;更早或更新的版本,字段名可能略有差异,写完配置先打一次 /v1/models 验证。

本页不替代 OpenAI 官方文档。具体到 model_provider、model_providers、env_key、requires_openai_auth 字段名,以 codex --help 与本机 ~/.codex 目录下的样例为准。本页只解决「我要接第三方 API 时,按什么顺序验证、按什么层写配置」。

推荐流程(5 步)

  1. 用当前 Key 直接请求一次 Base URL:curl -sS https://monkeytheme.com/v1/models -H "Authorization: Bearer $MONKEYAI_API_KEY"。返回 JSON 而不是 HTML,就说明路由、Key、协议都对。
  2. 用 codex --version 看清楚本机装的是哪个版本,不要按一年前博客里的字段名直接抄。
  3. 判断这次想走哪一层:环境变量(.env)、config.toml、还是「独立 profile + .env」。三选一,不要两套都改,否则后面对照日志会很乱。
  4. 把 Base URL、Model ID 写进那一层。注意 Model ID 必须用账号当前 /v1/models 实际返回的名字,不要用旧文档里的别名。
  5. 用 codex --profile <name> exec --skip-git-repo-check "Reply with OK only" 跑一条真实请求,看到模型真实返回再宣告完成。--skip-git-repo-check 仅用于这次快速验证,正式开发时应进入项目目录再跑。

改配置前先核这四项

项看什么错的多
Base URLhttps://monkeytheme.com/v1,必须含 /v1客户端配置里写成了根域名 https://monkeytheme.com,于是请求落到 SPA 首页
CLI 版本codex --version 实际返回的字符串按 0.30.x 的博客片段写到 0.146.0 上,字段名已变
配置层环境变量 / config.toml / 自定义 profile,哪一层真的生效改了 ~/.codex/config.toml,但本机 CODEX_HOME 指向别处
成功信号一条 codex exec 真的能从目标模型拿到回复看到 config.toml 写好就宣告完成,没真的跑

常见错误

常见问题

Codex CLI 可以指向第三方 API 吗?

可以。Codex CLI 的 model_provider 字段允许指向任意 OpenAI 兼容端点。具体写法取决于本机 CLI 版本和生效的配置层。先打一次 /v1/models 验证 Key 与端点,再去动 Codex 配置。

改配置前应该先验证什么?

用当前 Key 直接请求一次 Base URL,例如 https://monkeytheme.com/v1/models,确认路由存在、Key 有效、返回的是 JSON 而不是 HTML。返回 JSON 后再去改 config.toml 或 profile。

迁移时最容易踩的坑是什么?

三类坑占绝大多数:①CLI 版本对错,字段名照旧文档抄;②配置改在错的那一层(改了 config.toml 但 CLI 实际读的是 .env);③Model ID 用了别名而不是 /v1/models 返回的实际 ID。第三个最容易发生在「换了端点但没换模型名」的场景。

下一步