跳到主要内容
AeroReviewAI API 选购 · 价格与来源核对

AI 指南

Codex CLI 自定义供应商:Responses 协议配置与验收

Codex CLI 的自定义模型供应商只支持 Responses 协议。本文给出 config.toml 最小可用写法、密钥的环境变量注入、协议不匹配的报错定位与三条验收条件。

编辑:AeroReview 编辑部 · 更新时间:

先确认协议,再动手

Codex CLI 官方配置参考写明:model_providers.<id>.wire_api 仅支持 "responses",且省略时默认就是它(2026-10-07 核对 developers.openai.com/codex/config-reference)。这意味着只提供 OpenAI Chat Completions(/v1/chat/completions)的网关或中转站,无法接入当前版本的 Codex CLI。

也不存在把 chat 协议“伪装成” Responses 的官方开关——不要用改路径、改请求头之类的假替代方案硬凑,那只会得到运行中途才暴露的隐性失败。服务商若只有 chat 协议,正确做法是给这类端点换用支持 chat 的客户端(见我们的 Cline/Cherry Studio 协议匹配指南),而不是魔改 Codex。

动手前向服务商确认两件事:是否提供 Responses 端点(路径以其文档为准),以及你要用的模型在该端点上可用。2026-10-07 核验的两家中转站里,端点类型是按“分组×模型”声明的(例如 PackyAPI 的 kimi-k3 仅开放 openai-response),不能想当然。

config.toml 最小可用配置

配置文件在 CODEX_HOME(默认 ~/.codex/config.toml)。内置供应商 ID(openai、ollama、lmstudio、amazon-bedrock)是保留名,自定义供应商必须换名。顶层用 model + model_provider 选中供应商;需要附加请求头或查询参数时,官方提供 http_headers / env_http_headers / query_params 字段(官方 Azure 示例即用 query_params 传 api-version)。

# ~/.codex/config.toml(CODEX_HOME 默认 ~/.codex)
model = "MODEL_ID"              # 服务商 Responses 端点实际提供的模型 ID
model_provider = "myrelay"      # 自定义 ID;内置保留名不可覆盖:
                                # openai / ollama / lmstudio / amazon-bedrock

[model_providers.myrelay]
name = "My Relay (Responses)"
base_url = "https://api.example.com/v1"   # 以服务商文档为准
env_key = "MYRELAY_API_KEY"               # 密钥从环境变量读,不写进本文件
wire_api = "responses"                    # 官方唯一支持值(省略时默认同值)

注入密钥并启动

env_key 的值是“环境变量的名字”,不是密钥本身。把密钥写进 config.toml 明文意味着它会被同步、备份、截图连带泄露。

# 密钥只进环境变量(shell 配置或系统密钥管理),不进配置文件明文、不进前端 JS
export MYRELAY_API_KEY="sk-..."   # 占位示例
codex                             # 启动后先发一条简单消息验证

验收条件

三条全过才算接通:(1) codex 启动后,会话内可见所选 model 与 provider;(2) 发送一条简单消息能收到完整回复;(3) 关掉终端重开再试一次仍可用——证明密钥来源稳定,不是恰好继承自当前 shell。

常见报错与排查

404 / unknown endpoint:先按服务商官方文档原样核对 base_url 拼写(是否带 /v1、有无其他前缀以官方来源为准,不要按通用惯例猜测),再确认服务商是否真的提供 Responses 端点。401 / invalid key:env_key 拼写错、变量没导出、或密钥属于别的分组。报错提到保留 ID:换掉与内置同名的供应商 ID。请求似乎发到了 chat/completions:配错了供应商,或服务商只支持 chat 协议——这属于协议不匹配,换客户端,别硬改。

排查顺序固定为:协议(有没有 Responses 端点)→ 路径(base_url 拼写)→ 密钥(env_key 与变量名)→ 模型 ID(是否属于该分组)。一次只改一个变量。

来源与核对记录

合规与风险提示

  • 本文只覆盖 Codex CLI 官方支持的 Responses 配置路径,不提供把 Chat Completions 伪装成 Responses、或绕过服务商协议/地区限制的方法。
  • 服务商的端点类型与模型可用性以其官方文档和你实际付费分组为准,配置前请核对。