# Codex 怎么接入中转站？config.toml 的 model_providers 配置、验证和常见报错

> 来源：DeeDee Pulse（https://pulse.deedee.tech/learn/codex-setup） · 发布 2026-10-28 · 资料核对 2026-10-28（北京时间）

一句话：Codex 中转站就是提供 OpenAI Responses 接口的中转站。在用户目录的 ~/.codex/config.toml 里加一个自定义 provider，写上站方的 base_url、存放 Key 的环境变量名，再把 wire_api 设为 "responses"，就能让 Codex 走中转。Codex 现在只支持 Responses 协议，只提供 /v1/chat/completions 的站接不上。下面的写法按 openai/codex 当前源码核对（2026-10-28），示例地址统一用 relay.example.com。

## 接入前确认三件事

第一，站方支持 Responses 接口，也就是 /v1/responses，并且支持流式返回。Codex 源码里 wire_api 只剩 responses 一个取值，旧的 chat 已经移除。

第二，问清楚站方给的模型名。Codex 默认用的模型站方不一定有，配置里要写成站方支持的名字，Pulse 的 GPT 统一实测标准用的是 gpt-6.1-sol。

第三，Key 放进环境变量，不写进配置文件。config.toml 里只写环境变量的名字（env_key），这样配置可以放心备份和分享。

## 第一步：设置 Key 的环境变量

变量名可以自己定，下面用 RELAY_API_KEY。macOS、Linux 写进 ~/.zshrc 或 ~/.bashrc：

```bash
export RELAY_API_KEY=sk-你的中转站Key
```

Windows 用 PowerShell 设置为用户环境变量，然后重开终端：

```powershell
[Environment]::SetEnvironmentVariable("RELAY_API_KEY", "sk-你的中转站Key", "User")
```

Codex 读取的是启动它的那个终端里的环境变量，设置完要在新终端里启动。

## 第二步：用 curl 先测一次 Responses 接口

确认站方的 Responses 接口能用、Key 有效，再去改 Codex 配置：

```bash
curl -sS -w '\n%{http_code}\n' https://relay.example.com/v1/responses \
  -H "Authorization: Bearer $RELAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-6.1-sol", "input": "ping", "max_output_tokens": 16}'
```

返回 200 和一段带 output 的 JSON 就说明可用。返回 404 多半是站方没有 Responses 接口或路径不对；返回 401 是 Key 不对；返回模型不存在，就换成站方支持的模型名。

## 第三步：在 ~/.codex/config.toml 里加 provider

配置文件在用户目录：macOS、Linux 是 ~/.codex/config.toml，Windows 是 %USERPROFILE%\.codex\config.toml，没有就新建。写入下面的内容：

```toml
model = "gpt-6.1-sol"
model_provider = "relay"
model_reasoning_effort = "high"

[model_providers.relay]
name = "Relay"
base_url = "https://relay.example.com/v1"
env_key = "RELAY_API_KEY"
wire_api = "responses"
```

base_url 要写到 /v1 为止，Codex 会在后面拼上 /responses，这和官方默认地址 https://api.openai.com/v1 的写法一致。provider 的名字（这里是 relay）自己定，但不能用 openai、ollama、lmstudio 这些内置名字。model_reasoning_effort 是思考档，可选 minimal、low、medium、high、xhigh 等，站方分组不支持高档位时会报错，按站方说明调低。

自定义 provider 默认不要求 OpenAI 登录：requires_openai_auth 不写就是 false，Codex 会跳过登录界面，直接从 env_key 指定的环境变量里读 Key。

## 第四步：启动并确认走的是中转

在新终端里运行 codex，发一句话。能正常回复，再到站方后台的使用记录里看到这次请求，就确认走的是中转。也可以临时把 base_url 改错，Codex 报连接错误，说明配置确实生效了。

需要在多个中转站之间切换时，可以在 config.toml 里定义多个 [model_providers.xxx]，再用 [profiles.xxx] 写各自的 model_provider 和 model，启动时用 codex --profile xxx（或 -p xxx）选择。

## 为什么写在项目里的配置不生效

Codex 也会读取项目目录里的 .codex/config.toml，但出于安全考虑，项目级配置不能决定把凭据发到哪里。源码里明确列出了项目级配置会被忽略的键，其中包括 model_provider、model_providers、openai_base_url 和 profiles，启动时会给出提示。中转站的配置必须写在用户目录的 ~/.codex/config.toml。

这条规则也是一层保护：别人的仓库里即使放了一个指向陌生地址的配置，也不能悄悄把你的 Key 发出去。

## 另一种写法：openai_base_url

config.toml 还有一个顶层键 openai_base_url，用来改内置 openai provider 的地址。它沿用内置 provider 的 OpenAI 登录流程，首次启动会出现登录界面。接中转站时，用上面的自定义 provider 更直接，Key 的来源也更清楚。

## 常见报错怎么处理

| 现象 | 原因 | 处理 |
|---|---|---|
| 报错 wire_api = "chat" is no longer supported | 旧教程写的是 chat，当前版本已移除 | 改成 wire_api = "responses"；站方没有 Responses 接口就换站 |
| 启动提示项目配置里的键被忽略 | provider 写在了项目的 .codex/config.toml | 移到用户目录 ~/.codex/config.toml |
| 提示缺少环境变量或 401 | 环境变量没设，或 Codex 不是在新终端里启动的 | 确认 echo $RELAY_API_KEY 有值，重开终端再启动 |
| 404 Not Found | base_url 少了或多了 /v1，或站方没有 /v1/responses | 用 curl 按完整地址测一次 |
| 模型不存在 | model 写的名字站方没有 | 改成站方支持的模型名 |
| 思考档参数被拒 | 分组不支持该档位 | 调低 model_reasoning_effort |
| 流式输出中途断开 | 站方或上游不稳定 | 可调 stream_max_retries、stream_idle_timeout_ms；频繁出现就换分组 |

报错原文与字段名来自 openai/codex 源码（2026-10-28），提示文字可能随版本略有不同。

## 接好之后先自测

Codex 用的 GPT 推理模型有一个常见问题：推理被截断。看返回 usage 里的 reasoning_tokens，同一道难题反复只有 516、1034 这类固定值，就是截断特征，判读方法见[《怎么判断掺水、降智、假模型》](https://pulse.deedee.tech/learn/fake-model)。也可以用 Pulse 的[在线检测](https://pulse.deedee.tech/probe)按统一标准跑一遍。

另外，Codex 每次请求会自带约 4k token 的默认指令，这部分会按输入计费。Pulse 的实测会识别它，只扣完整性分，不算掺水；如果多出来的输入远超这个量，才需要怀疑站方额外注入了提示词。

安全上，Codex 会读取代码、执行命令，这些内容都会经过中转站。不要在 Codex 能访问的目录里放私钥和生产配置，给中转单独设额度。

## 我们的数据

Codex 对应 Pulse 的 GPT 分组。下面是 GPT 分组的整体情况：分组数、倍率分布、统一标准实测结论和截断特征命中次数，随每轮采集自动更新。具体站点在[站点排名](https://pulse.deedee.tech/sites)里按 GPT 筛选。

<!--PULSE_DATA:BEGIN-->
> 数据截至 2026-11-01 00:16（北京时间），随 Pulse 每轮采集自动更新。

Codex 走 OpenAI Responses 协议，对应 Pulse 的 GPT 分组。下面是 GPT 分组的整体情况，随采集自动更新。

| 项目 | 数值 |
|---|---|
| GPT 分组数（有站方可用率 / 全部） | 2,222 / 5,124 |
| 分组倍率 P10 / 中位数 / P90 | 0.08 / 0.3 / 1 |
| 统一实测标准 | gpt-6.1-sol · 思考档 xhigh |
| 当前分组实测结论 | 通过 309、待复核 48、未通过 66、降智 33、疑似假模型 1、不符合标准 14、其他 1 |
| 分组名可识别的渠道 | Pro 号池 412、Plus 号池 202、Azure 163、官方 API 115、Team/企业 108、Free 号池 7 |
| 近 30 天 GPT 自动实测（次） | 682：通过 320、待复核 49、未通过 179、不符合标准 124、其他 10 |
| reasoning_tokens 命中截断特征（次） | 63 |
| 每次请求固定多出约 4k 输入（Codex 默认指令，次） | 195 |

倍率为站方显示的分组倍率，不含充值汇率；结论按分组计，一个站可能有多个分组。

| 近 7 天可用率 | ≥99% | 95%–99% | 80%–95% | <80% |
|---|---|---|---|---|
| GPT 分组占比 | 21.6% | 31.3% | 25.3% | 21.8% |

样本 767 个有 7 天读数的 GPT 分组；7 天与 30 天都达标的 256 个。

<!--PULSE_DATA:END-->

## 常见问题

### Codex 中转站是什么？

就是提供 OpenAI Responses 接口（/v1/responses）的 AI 中转站。在 config.toml 里把 provider 的 base_url 指向它，Codex 的请求就会走中转。

### wire_api 写 chat 还是 responses？

只能写 responses。当前版本的 Codex 已经移除了 chat，写 chat 会直接报错。

### 为什么配置写在项目里不生效？

项目级 .codex/config.toml 不能设置 model_provider、model_providers、openai_base_url 等决定请求去向的键，必须写在用户目录 ~/.codex/config.toml。

### Key 能直接写进 config.toml 吗？

不建议。用 env_key 指定环境变量名，Key 放在环境变量里，配置文件就不含密钥。

### 国内怎么用 Codex？

可以接提供 Responses 接口的中转站；中转站替你持有上游账号，断供与条款风险由站方承担、会影响你的余额，先小额试用并检测。

## 资料来源

- [openai/codex 源码：ModelProviderInfo 与 wire_api](https://github.com/openai/codex/blob/main/codex-rs/model-provider-info/src/lib.rs)
- [openai/codex 源码：项目级配置忽略的键](https://github.com/openai/codex/blob/main/codex-rs/config/src/loader/mod.rs)
- [openai/codex 源码：config.toml 字段](https://github.com/openai/codex/blob/main/codex-rs/config/src/config_toml.rs)
- [Codex 高级配置（官方文档）](https://developers.openai.com/codex/config-advanced)
- [Pulse 在线检测](https://pulse.deedee.tech/probe)

## 相关答案

- [Claude Code 怎么接入中转站？ANTHROPIC_BASE_URL 配置、验证和常见报错](https://pulse.deedee.tech/learn/claude-code-setup)
- [AI 中转站是什么？和官方 API、镜像站、拼车、公益站有什么区别](https://pulse.deedee.tech/learn/what-is-relay)
- [怎么判断中转站掺水、降智、假模型？先看这些证据](https://pulse.deedee.tech/learn/fake-model)
- [中转站后台的 Kiro、CC Max、官方、AWS、号池都是什么？成本、风险和实测差别](https://pulse.deedee.tech/learn/channel-groups)
- [中转站倍率怎么算、实付多少钱？把充值汇率一起算进去](https://pulse.deedee.tech/learn/rate)

---

DeeDee Pulse 由 DeeDee 运营；DeeDeeAI 为自营，不参与排名。引用请注明「DeeDee Pulse（pulse.deedee.tech）」与数据时间。
