OpenAI Codex CLI
OpenAI 2025 发布的开源命令行 AI 编程工具(@openai/codex)。
区分两个 "Codex"
- 本节说的 Codex CLI = OpenAI 官方 agentic CLI
- 不是 PrimeRouter 里底层的
ChannelTypeCodex渠道类型
在配置前请先准备好 PrimeRouter API Key(参考 通用准备)。
安装
# 全平台(需 Node 20+)
npm install -g @openai/codex
codex --version配置文件位置
| 系统 | 配置文件路径 |
|---|---|
| macOS | ~/.codex/config.toml |
| Linux | ~/.codex/config.toml |
| Windows | %USERPROFILE%\.codex\config.toml(即 C:\Users\<你>\.codex\config.toml) |
编辑配置
mkdir -p ~/.codex
vim ~/.codex/config.tomlNew-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.codex" | Out-Null
notepad "$env:USERPROFILE\.codex\config.toml"写入(⚠️ 顶层配置必须放在 [model_providers.*] 段之前——TOML 会把段头之后的键全部归入该段,写反顺序 Codex 会静默回落到默认 OpenAI provider):
推荐方式 · key 写入 Codex 登录凭证(auth.json)
key 存在 Codex 自己的凭证文件里,不依赖任何环境变量——终端、GUI 双击、IDE 扩展都能读到:
# 默认用哪个 provider + model(必须在最前面)
model_provider = "primerouter"
model = "gpt-5.6-sol"
model_reasoning_effort = "high"
disable_response_storage = true
# 自定义 provider 指向 PrimeRouter
[model_providers]
[model_providers.primerouter]
name = "PrimeRouter"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://primerouter.ai/v1"printf '%s' "sk-你的primerouter-key" | codex login --with-api-key
codex"sk-你的primerouter-key" | codex login --with-api-key
codex⚠️ 与 ChatGPT 账号登录互斥:
codex login只保存一份凭证,之后登录 ChatGPT 账号会顶掉这里的 key(反之亦然)。一键脚本会先把原auth.json备份为auth.json.bak.<时间戳>,需要换回去时codex login重新登录即可。
备选方式 · key 走环境变量(env_key)
只在你需要 ChatGPT 账号登录与 PrimeRouter 并存、靠切 model_provider 来回换时才用:
model_provider = "primerouter"
model = "gpt-5.6-sol"
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers]
[model_providers.primerouter]
name = "PrimeRouter"
wire_api = "responses"
env_key = "PRIMEROUTER_API_KEY"
base_url = "https://primerouter.ai/v1"export PRIMEROUTER_API_KEY="sk-你的primerouter-key"
codex# GUI App 不读 shell 配置,需注入 launchd 用户会话
launchctl setenv PRIMEROUTER_API_KEY "sk-你的primerouter-key"$env:PRIMEROUTER_API_KEY = "sk-你的primerouter-key"
codexsetx PRIMEROUTER_API_KEY "sk-你的primerouter-key"
:: 重启终端后生效⚠️
env_key不是「读不到就回落」:环境变量缺失时 Codex 会直接让请求失败并报Missing environment variable: PRIMEROUTER_API_KEY。任何没继承到 shell 配置的启动方式(GUI App、IDE 扩展、在写入变量之前就打开的终端)都会踩到。也不能和requires_openai_auth一起写——env_key先被检查、先失败。
从别的服务商迁移:codex resume 里看不到历史会话
Codex 的 resume 列表只显示 model_provider id 与当前配置一致的会话(codex resume --last 同样过滤,--all 只放开目录过滤)。所以把 model_provider 从别家的 id(如 foo-relay)改成 primerouter 之后,旧会话就从列表里消失了。
会话文件一个都没丢,仍在 ~/.codex/sessions/ 下,只是被过滤掉了。三种处理方式:
重跑一键脚本(推荐)。脚本会自动沿用这台机器原有的 provider id,并把它指向 PrimeRouter,历史会话继续可见:
bashcurl -fsSL https://primerouter.ai/install/codex.sh | bash临时查看,不改配置:
bashcodex resume -c model_provider=原来的id想要干净的 id、接受旧会话不再出现在列表里(文件依然保留):
bashPRIMEROUTER_CODEX_PROVIDER_ID=primerouter curl -fsSL https://primerouter.ai/install/codex.sh | bash
忘了原来的 id?看备份
~/.codex/config.toml.bak.*里的model_provider,或直接从会话文件里取:bashgrep -ho '"model_provider":"[^"]*"' ~/.codex/sessions/*/*/*/*.jsonl | sort | uniq -c | sort -rn
工具调用兼容性
- Codex CLI 默认走 OpenAI Responses API(
/v1/responses)做 agent loop - PrimeRouter 把 Responses 转译为兼容形态,Claude 系列工具调用全程可用
wire_api = "chat"(chat completions)已被 codex-cli 0.14x 起移除,配置里写 chat 会直接报错拒绝启动,请使用"responses"
