让 Codex CLI 跑在 token-share.app 上

Codex CLI 用的是 responses wire 格式,正好是这里 OpenAI 模型的路由形状。一个自定义 model_provider 配置就能把它指过来——但家族里有一个 id 这样接不上。

为什么这两边的 wire 格式对得上

Codex CLI 通过可配置的 wire API 与模型提供方通信,而这个目录里的 OpenAI 文本模型——gpt-5.6-sol、gpt-5.6-terra、gpt-5.6-luna、gpt-5.5、gpt-5.4、gpt-5.4-mini——记录的路由都是 /v1/responses。把 wire_api 设成 "responses",两端就对上了。

认证走 Bearer:网关对 responses 形状的请求要求 Authorization: Bearer $TOKEN_SHARE_KEY,Codex 则从你在 env_key 里指定的那个环境变量读取凭据。

CLI 本身不需要做别的改动。还是同一个二进制、同一套协议,只是换了 base URL,因此它能驱动的模型就是目录里路由在 /v1/responses 上的那几个 id。

具体配置

下面这段定义了一个叫 token_share 的 provider 并用它启动 Codex。base_url 是网关根地址加 /v1——路由部分由 Codex 自己补,所以 URL 里不要写 /responses。

requires_openai_auth=false 这一项是关键,它让 CLI 不再强制走 OpenAI 的登录流程。Codex 首次运行仍然要求 auth.json 存在,所以脚本里先写了一个占位文件:真正用于请求的凭据不在这个文件里,而在 env_key 指定的那个环境变量里。

把 --model 换成上面列的六个 id 中的任意一个即可。它们的请求结构一致,在 Codex 里切换模型就是改这一个参数。

用自定义 model_provider 把 Codex CLI 指向网关;改 --model 就能换 id。
export CODEX_HOME="${CODEX_HOME:-$HOME/.codex}"
mkdir -p "$CODEX_HOME"

# The gateway key Codex will send as a Bearer token
export TOKEN_SHARE_KEY="<your-pool-api-key>"

# First-time initialization: Codex expects this file to exist
[ -f "$CODEX_HOME/auth.json" ] || {
  printf '%s\n' '{"OPENAI_API_KEY":"sk-placeholder"}' > "$CODEX_HOME/auth.json"
  chmod 600 "$CODEX_HOME/auth.json"
}

codex \
  --config 'model_provider=token_share' \
  --config 'model_providers.token_share.name="OpenAI"' \
  --config 'model_providers.token_share.base_url="https://token-share.app/v1"' \
  --config 'model_providers.token_share.wire_api="responses"' \
  --config 'model_providers.token_share.env_key="TOKEN_SHARE_KEY"' \
  --config 'model_providers.token_share.requires_openai_auth=false' \
  --model 'gpt-5.6-terra'

哪些 id 能用,长会话又要花多少

OpenAI 家族里有一个 id 接不上这套配置:stable-gpt-6-astra 记录的路由是 /v1/messages,不是 /v1/responses,wire_api="responses" 的 provider 配置够不到它。gpt-image-2 同理——那是走 /v1/images/generations 的图像模型。

在能用的这六个里,限制编码会话长度的通常是上下文而不是价格。GPT 5.6 系列是 372,000 token 上下文、最多输出 128,000;gpt-5.5、gpt-5.4、gpt-5.4-mini 是 272,000 和 64,000。CLI 会话会不断把工具输出堆进上下文,所以窗口大的那个能撑更久才需要开新会话。

成本上这六个横跨一个数量级(均为折算后单价):gpt-5.6-sol 和 gpt-5.5 每百万 0.50 / 3.00 美元,gpt-5.4 是 0.25 / 1.50,gpt-5.6-terra 是 0.20 / 1.20,gpt-5.4-mini 是 0.075 / 0.45,gpt-5.6-luna 是 0.06 / 0.36。既然切换只改一个参数,务实的做法是拿同一个任务跑其中两个,比完产出再比 token 用量,然后再定下来。

常见问题

Codex CLI 能用 stable-gpt-6-astra 吗?
用 responses wire 的 provider 配置接不上。它记录的路由是 /v1/messages,也就是要带 x-api-key 和 anthropic-version 头的 Anthropic 形状端点,需要说那套格式的客户端,而不是 responses wire API。
为什么脚本要写一个占位的 auth.json?
Codex 首次运行时要求这个文件存在。真正发出去的凭据来自 env_key 指定的变量——上面配置里的 TOKEN_SHARE_KEY——以 Authorization: Bearer 的形式发送,auth.json 里的占位值不会被用于任何请求。
base_url 要不要带 /responses?
不要。设成 https://token-share.app/v1,路由由 Codex 自己拼。请求最终落在 https://token-share.app/v1/responses,这正是 OpenAI 文本模型响应的路径。