结合 UberLLM 的 Codex CLI:在任何模型上运行 OpenAI 的编码 agent
导出 UBERLLM_API_KEY,然后在 ~/.codex/config.toml 中添加一个 [model_providers.uberllm] 表,其中 base_url 为 https://api.uberllm.dev/v1,,env_key 为 UBERLLM_API_KEY,wire_api 为 "responses",并将 model_provider 设置为 "uberllm" 以及模型 ID。UberLLM 为 Codex 调用 Responses API 提供服务,因此 shell 命令、文件编辑和多步任务适用于每个聊天模型。
步骤
- 在您的密钥页面上创建一个密钥并充值。
- 如果您还没有安装 Codex,请安装它:
npm install -g @openai/codex。 - 将密钥放入您的 shell 配置文件中 (
~/.zshrc或~/.bashrc) 并打开一个新的终端:
export UBERLLM_API_KEY="ull_..."
- 打开
~/.codex/config.toml(如果不存在则创建) 并添加:
model = "moonshotai/kimi-k3"
model_provider = "uberllm"
web_search = "disabled"
[model_providers.uberllm]
name = "UberLLM"
base_url = "https://api.uberllm.dev/v1"
env_key = "UBERLLM_API_KEY"
wire_api = "responses"
- 在项目文件夹中运行
codex并给它一个任务。
保持 base_url 以 /v1 结尾:Codex 会向其添加 /responses。env_key 是变量名,而不是密钥本身。
切换模型
传入 -m 用于单次会话,例如 codex -m deepseek/deepseek-v4.1-flash 用于小幅修改,或在文件中更改 model。任何来自 uberllm.dev/models 的聊天模型 ID 都可用。
对于 scripts 和 CI,codex exec 会在没有交互界面的情况下运行一个任务:
codex exec --skip-git-repo-check "add a docstring to every function in utils.py"
值得添加的设置
model_context_window: Codex 不知道 OpenAI 列表之外模型的上下文大小,并假定为 272,000 个 token。对于较小的模型,请从 uberllm.dev/models 上的页面设置该数字(例如model_context_window = 131072),这样 Codex 就能在对话空间耗尽之前压缩对话。model_reasoning_effort:"low"、"medium"或"high"会传递给会思考的模型 (DeepSeek, Kimi Thinking, GLM, GPT-5)。留空以使用模型的默认设置。web_search = "disabled": Codex 的网络搜索运行在 OpenAI 自己的服务器上,因此无法通过其他提供商运行。关闭此功能后,模型就不会被提供一个它无法使用的工具。
哪些功能可用
从 API 端来看,每个 Codex 工具都是一个普通的函数调用,因此您添加到 Codex 的命令运行、文件编辑、计划和 MCP 服务器都可以在任何支持工具调用的模型上运行。Codex 在每次交互时 (store = false) 都会发送整个对话,因此在两次调用之间,UberLLM 不会保留任何内容。每次调用都会显示在 仪表盘 → 活动 中,在应用名称 codex 下,并显示其费用。
故障排除
wire_api = "chat"不再受支持:Codex 0.95 及更高版本仅支持 Responses API。设置wire_api = "responses"。- 401 或 "Missing environment variable: UBERLLM_API_KEY":该变量未在 Codex 运行的终端中导出。编辑您的配置文件后,打开一个新的终端,或先运行
export UBERLLM_API_KEY=...。 - 404 在每次交互时:
base_url缺少/v1。它必须是https://api.uberllm.dev/v1。 - "Model metadata for … not found. Defaulting to fallback metadata":Codex 会为 OpenAI 自身列表之外的每个模型打印此信息。这是无害的;如上所述设置
model_context_window。 - 模型回答了但从不运行命令:从第一个表格中选择一个模型。小型模型会偏离 Codex 的工具格式。
- 402 积分不足:在积分页面]添加积分。对于硬性上限,请在密钥上设置消费限额。