这份文档主要是写给 AI 看的。你不用自己动手改配置 —— 把里面那段话复制给 Codex 或 Claude Code,它会替你查、替你改、替你验证。当然,想自己动手的话,下面也有手动版。
界面上反复出现这样的提示,然后卡住不出结果:
数字会从 1/5 一路涨到 5/5。有时候等一等自己好了,有时候直接失败。这不是你电脑的问题,也不是你哪里配错了 —— 是 Codex 新版本的默认行为在国内网络下水土不服,遇到的人相当多。
打开 Codex 或 Claude Code,整段粘贴进去发送即可。它包含完整的排查与修复步骤,AI 会自己执行。
Codex 0.136 之后换了通信方式:默认用 WebSocket 而不是过去的 HTTP/SSE。WebSocket 是一种「一直挂着不断开」的连接,速度更快,但也更脆弱 —— 在国内经代理上网时,这种长连接很容易被中途掐断。
Codex 遇到掐断不会立刻放弃,而是先重试 5 次(这就是 N/5 里那个 5 的来历),5 次都不行才退回稳妥的 HTTP/SSE。所以你看到的「正在重新连接 2/5」,翻译成人话就是:
所以修复方式不是让 WebSocket 变稳定(国内的网络环境我们改不了),而是直接告诉 Codex 别用 WebSocket 了,一开始就走 HTTP/SSE。配置里那句 supports_websockets = false 就是干这个的。
其余几个参数是顺带加固:stream_idle_timeout_ms = 600000 把流的空闲超时从默认 5 分钟放宽到 10 分钟(长思考任务容易踩到),stream_max_retries 和 request_max_retries 让偶发抖动更扛得住。
三步,五分钟。
cp ~/.codex/config.toml ~/.codex/config.toml.bak-$(date +%F-%H%M)~/.codex/config.toml,在最顶上加这一行(一定要在所有 [方括号] 段落的前面):
model_provider = "chatgpt-http"[model_providers.chatgpt-http]
name = "ChatGPT HTTP"
base_url = "https://chatgpt.com/backend-api/codex"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
stream_max_retries = 10
stream_idle_timeout_ms = 600000
request_max_retries = 6存盘,彻底退出 Codex 再重开就生效了。
model_provider = "chatgpt-http" 必须放在文件最顶部。TOML 规定:不带方括号的普通设置,必须写在所有 [段落] 之前,放到中间会直接报语法错。base_url 只能是 https://chatgpt.com/backend-api/codex。流传较广的一个版本写的是 api.openai.com/v1,用了会变成按 API Key 计费,不再走 ChatGPT 订阅额度。
彻底退出 Codex 后重开,随便让它做个稍微费点脑子的活(比如「读一下这个项目结构并总结」)。观察:
也可以跑一条命令确认配置真的被读进去了:
python3 -c "import tomllib,pathlib;d=tomllib.loads(pathlib.Path.home().joinpath('.codex/config.toml').read_text());print('TOML OK');print('model_provider =',d.get('model_provider'));print(d['model_providers']['chatgpt-http'])"| 你看到的报错 | 说明与处理 |
|---|---|
| access token could not be refreshed / refresh token was already used | 另一个独立问题:登录凭证过期了。跟 WebSocket 无关。执行 codex login 重新登录。常见于桌面版和命令行版同时在用、互相抢着刷新凭证的情况。 |
| 登录时被要求填手机号(add-phone) | 出口 IP 触发了风控。先在浏览器里登录 chatgpt.com 确认是登录态,再跑 codex login,通常会直接放行。还不行就换一个代理节点再试 —— 机房 IP 比家宽 IP 更容易被要求验证。另外 OpenAI 至今不接受 +86 中国大陆号码,别在下拉框里找中国。 |
| TOML 解析失败 / 启动就报配置错 | 八成是 model_provider 那行没放在文件最顶部。挪到所有 [方括号] 段落之前即可。实在改乱了就用备份还原(见下)。 |
| 改完没有任何变化 | 确认是否彻底退出了 Codex。桌面版关窗口不算,要 ⌘Q 完全退出。另外确认 codex --version 不低于 0.136.0。 |
| 提示要按 API 计费 / 额度不对 | 检查 base_url 是不是被写成了 api.openai.com/v1。必须是 https://chatgpt.com/backend-api/codex。 |
改坏了不用慌,备份就在旁边(把日期换成你实际的文件名):
ls ~/.codex/config.toml.bak-*
cp ~/.codex/config.toml.bak-2026-08-05-1749 ~/.codex/config.toml或者更简单:把加进去的那一行 model_provider = "chatgpt-http" 和末尾整个 [model_providers.chatgpt-http] 段落删掉,就回到原样了。