在 OpenAI Codex 中使用 OminiGate

在 config.toml 里添加一个自定义 model_provider,Codex CLI 的每次请求都会走 OminiGate —— OpenAI、Anthropic、Gemini 模型一网打尽。

Codex

概览

OpenAI Codex CLI 从 ~/.codex/config.toml 读取 provider 定义。每个 provider 都包含 name、base_url、鉴权环境变量名和 wire 协议。也就是说 Codex 可以调用任何兼容 OpenAI 的网关 —— 包括 OminiGate —— 无需打 patch 或 fork。

针对 OminiGate,选择 wire_api = "chat"(OpenAI chat-completions 协议)。Codex 会把请求发送到 base URL 上的 /v1/chat/completions,并自动附加 OMINIGATE_API_KEY 作为鉴权头。

  • 一份配置文件,零代码改动。
  • 一行参数即可在 OminiGate 与 OpenAI 之间切换。
  • 兼容所有 OminiGate 在 chat-completions 端点上暴露的模型。

前置条件

需要安装 Codex CLI 并准备一把 OminiGate API Key。

1. 安装 Codex CLI

Codex 以 npm 包形式发布(@openai/codex),需要 Node 18+。macOS 和 Linux 原生支持;Windows 走 WSL2。

npm i -g @openai/codex

2. 获取 OminiGate API Key

到 Dashboard 创建一把 Key。该 Key 会以 OMINIGATE_API_KEY 环境变量形式引用,不写入 config.toml。

打开 API Keys

配置 Codex CLI

Codex 启动时从 ~/.codex/config.toml 读取配置。我们把 OminiGate 注册为自定义 provider,再用 profile 包一层 —— profile 的好处是:OminiGate 和 Codex 内建的 OpenAI 能力可以共存,不会互相覆盖。

先清除已有的 OpenAI 环境变量

Shell 里残留的 OPENAI_API_KEY 或 OPENAI_BASE_URL 会和 Codex profile 冲突,尤其是在 OminiGate 和原生 OpenAI 之间切换时。开始之前先 unset。

shell
unset OPENAI_API_KEY
unset OPENAI_BASE_URL

1. 注册 provider 并定义 profile

把下面这一段追加到 ~/.codex/config.toml(文件不存在时自动创建)。[profiles.ominigate] 让原有的 Codex 工作流不受影响 —— 只有显式激活这个 profile 才会走 OminiGate。

~/.codex/config.toml
# ~/.codex/config.toml

[model_providers.ominigate]
name = "OminiGate"
base_url = "https://api.ominigate.ai/v1"
env_key = "OMINIGATE_API_KEY"
wire_api = "chat"
requires_openai_auth = false
request_max_retries = 4
stream_max_retries = 10
stream_idle_timeout_ms = 300000

[profiles.ominigate]
model = "openai/gpt-5.4-pro"
model_provider = "ominigate"

各字段的作用:wire_api="chat" 让 Codex 使用 OpenAI chat-completions(不是 Responses API);requires_openai_auth=false 关闭默认的 OpenAI OAuth 流程,第三方 provider 用不到;request_max_retries / stream_max_retries / stream_idle_timeout_ms 是 Codex 推荐的生产级重试与长流超时参数,不清楚就照抄。

2. 导出 API Key

Codex 从 env_key 指定的环境变量读取 Key。把 export 加到 shell profile 里,新开终端时也能保持生效。

export OMINIGATE_API_KEY="sk-omg-your-api-key"

请注意:OpenAI 已宣布 wire_api = "chat" 将在 2026 年从 Codex CLI 中移除。OminiGate 目前只暴露 /v1/chat/completions 端点,我们正在评估新增 Responses API 端点以便 Codex 在弃用后继续可用,进展请关注 changelog。在此之前 "chat" 仍能工作,但启动时可能会看到弃用警告。

运行 Codex

激活刚才定义的 profile。Codex 会加载 OminiGate model_provider 和默认模型 slug,然后开始会话:

shell
# Use the profile you defined in config.toml
codex --profile ominigate "Refactor the main.rs to use async/await"

单次调用覆盖默认模型:

shell
codex --profile ominigate --model anthropic/claude-opus-4.6 "Explain this repo"

不加 --profile 直接运行 codex 依然走 Codex 内建的 OpenAI 配置 —— OminiGate profile 只在你显式指定时启用。

推荐模型

Codex 采用 OpenAI chat-completions 协议,OminiGate 上所有支持该协议的模型都能直接用。下面这四个是不错的起点。

openai/gpt-5.4-pro

OpenAI 的旗舰推理模型。适合复杂重构与多文件编辑。

openai/gpt-5.3-codex

OpenAI 专门针对 Codex 调优的变体,擅长代码生成、多文件编辑与工具调用循环 —— 运行 Codex CLI 时的首选默认。

anthropic/claude-opus-4.6

Anthropic 顶级档位,同样暴露在 chat-completions 端点上。长上下文代码审查表现强。

google/gemini-3.1-pro-preview

Google 旗舰 Preview 模型,超大上下文窗口,支持多模态输入。

完整模型列表: /models.

常见问题

Codex 仍在调用 api.openai.com,而不是 OminiGate。

请检查 config.toml 顶层是否设置了 model_provider = "ominigate",而不是放在某个 [profiles.*] 块里。运行 codex --verbose [prompt] 可以看到 Codex 最终解析到的 provider。

每个请求都返回 404 Not Found。

最常见的原因是 wire_api = "responses"。OminiGate 暴露的是 /v1/chat/completions,而不是 OpenAI Responses API。改成 wire_api = "chat" 并重启即可。

Codex 报错提示 OMINIGATE_API_KEY 不存在。

Codex 从启动它的 shell 读取环境变量。如果是在新终端里设置的,需要在同一个 shell 中重新启动 Codex —— 或者把 export 写进 ~/.zshrc / ~/.bashrc。

下一步

查看完整 API 参考,或浏览更多可在 Codex 中调用的模型。