Codex 每次都要 Reconnecting 5 次?三个方案彻底解决
前言
有个问题挺烦的——每次打开 Codex,让它回答之前,都会先来一套:
1 | Reconnecting… 1/5 |
好家伙,不是一次两次,是每次都这样。而且最恶心的是,它最后又不是不能用——它会卡那么一会儿,然后突然正常开始回答。这就很迷惑。
一、根本原因:WebSocket 没走通
原因并不复杂。Codex 默认会优先使用 WebSocket(WSS 协议) 去和服务器建立实时连接。但很多代理环境下,WSS 不一定能正常走代理。
于是就会出现一个典型现象:
1 | Codex 尝试 WebSocket 连接 → 失败 |
不是模型慢、不是账号问题、不是 Codex 崩了——大概率就是 WebSocket 没走通。
二、方案一:直接禁用 WebSocket(最快最直接)
如果你不想折腾代理配置,最简单的办法就是让 Codex 别再优先走 WebSocket,直接强制它只用 HTTPS。
找到配置文件
| 系统 | 路径 |
|---|---|
| macOS / Linux | ~/.codex/config.toml |
| Windows | C:\Users\你的用户名\.codex\config.toml |
修改配置
在配置文件顶部添加或修改:
1 | model_provider = "openai_http" |
在文件末尾添加:
1 | [model_providers.openai_http] |
保存后重启 Codex
这波操作的意思很简单:告诉 Codex 别连 WebSocket 了,直接走 HTTP。这样就不会再出现前面 5 次 Reconnecting 的罚站流程。
副作用: Codex 的历史会话可能会按 provider 分组。切到 openai_http 之后,原来 provider 下面的部分历史会话可能暂时看不到。不是没了,只是分组变了——如果想回去,把配置还原即可。
三、方案二:配置 .env 让 WebSocket 也走代理(推荐)
如果你希望 Codex 保持默认能力,不想禁用 WebSocket,这个方案更推荐。
创建 .env 文件
路径如下:
| 系统 | 路径 |
|---|---|
| macOS / Linux | ~/.codex/.env |
| Windows | C:\Users\你的用户名\.codex\.env |
注意: 文件名就是
.env,不是.env.txt。Windows 用户尤其注意别让系统隐藏了后缀名。
文件内容
1 | HTTP_PROXY="http://127.0.0.1:你的代理端口" |
端口号换成你代理软件实际使用的端口:
| 代理软件 | 常见端口 |
|---|---|
| Clash | 7890 |
| v2rayN | 10808 |
具体以你自己的代理软件里显示的端口为准。
这个方案的核心思路是不禁用 WebSocket,而是让 WebSocket 握手也能正确走代理,这样 Codex 就不用先失败 5 次再 fallback 到 HTTP 了。
四、方案三:TUN 兜底方案
还有一种办法——直接在代理软件里开启 TUN 模式。
TUN 的逻辑更粗暴:它不是只代理某个软件,也不是只代理终端环境变量,而是从虚拟网卡层面接管系统流量。
所以理论上,Codex 的 WebSocket、HTTPS、各种请求都更容易被接住。
但我不建议一上来就开 TUN
原因很简单:TUN 影响范围太大。它可能会影响:
- 其他软件联网
- 内网访问
- 公司本地开发服务
- 某些 App 的网络行为
建议顺序
TUN 更适合当兜底方案——前面两个方案都不行,再考虑它。
五、我的建议
| 方案 | 推荐度 | 场景 |
|---|---|---|
| 方案一:禁用 WebSocket | ⭐⭐⭐ | 想马上解决,不想理解网络细节 |
| 方案二:配置 .env | ⭐⭐⭐⭐⭐ | 想保留默认能力,更规范的长期方案 |
| 方案三:TUN 模式 | ⭐⭐ | 兜底,前面都不行再试 |
如果你已经在用 Clash、Surge、Shadowrocket、v2rayN 这类工具,并且熟悉 TUN 的话,方案三也可以用——但不要上来就开。
因为它不是只影响 Codex,而是可能影响整个系统网络。别 Codex 是好了,其他软件又开始抽风了。
本文内容整理自微信公众号文章,整理日期:2026-05-24。