告别重连:完美解决 Codex 每次打开都要 Reconnecting 5 次的问题 - 小李的博客

告别重连:完美解决 Codex 每次打开都要 Reconnecting 5 次的问题

前言
不知道大家有没有遇到过这种情况:无论是 Codex CLI 还是 Codex App,每次刚打开,或者刚提问,都会先来一串 Reconnecting...

几乎每次都要等待 5 次重试连接之后,才能给出响应。明明只是想让它快速处理一点代码问题,时间却全浪费在重复的重连上。最让人头疼的是,它往往不是完全连不上,而是前面 5 次都失败,等到最后一次才成功。那种“明明能连,偏要反复试”的感觉,真的很消耗耐心。

报错特征:
Reconnecting ...


🔍 问题原因:为什么总是 tls handshake eof?

这个问题的本质在于:WebSocket(WSS)协议在当前的局域网或科学环境下,无法进行正常的全双工通信。 Codex 默认会优先尝试建立 WebSocket 流式连接,当科学环境对 WSS 支持不佳或握手失败时,它就会反复尝试重连,直到达到上限后才降级回 HTTP 模式,这就是导致那“漫长的 5 次重连”的罪魁祸首。


🛠️ 解决方案 (实测有效)

目前经过多台设备测试,总共有以下 3 种行之有效的解决方案,大家可以根据自己的代理软件和使用习惯选择最合适的一种。

方案一:修改 config.toml,禁用 WebSocket(⭐ 强烈推荐)

通过修改 Codex 的核心配置文件,在对应的 Provider 配置里明确禁用 WebSocket,并强制指定 wire_api 走纯 HTTP 模式,从根源上斩断它的 WSS 执念。

1. 找到配置文件位置

一般位于你的用户目录下。如果你习惯在 Linux 下折腾,路径通常在 ~/.codex/ 中。如果不确定,可以前往对应路径查看:

  • Windows: C:\Users\你的用户名\.codex\config.toml
  • Linux / macOS: ~/.codex/config.toml

2. 修改配置代码

如果使用官方地址,建议直接自定义一个 Provider(实测比直接修改默认配置成功率更高)。以下是我自定义 openai_http 的示例配置:

model = "gpt-5.4-mini"
model_reasoning_effort = "high"
disable_response_storage = true
model_provider = "openai_http" # 让主配置直接指向这个 provider

[model_providers.openai_http]
name = "OpenAI HTTP Only"
requires_openai_auth = true
wire_api = "responses"        # 【关键配置】强制使用响应式 API,弃用易出错的流式连接
supports_websockets = false   # 【关键配置】明确声明不支持 WebSocket,阻止优先尝试

(注:如果你原来已经有其他 provider 配置,不想新建的话,可以直接在原有配置下增加 wire_api = "responses"supports_websockets = false 这两行字段进行测试。)


方案二:开启代理工具的 TUN 模式(适用于 Clash Verge 等)

如果你的DL软件是 Clash Verge,或者其他支持 TUN 的客户端,可以直接在设置中开启 TUN 模式

  • 原理: TUN 模式从系统底层直接接管虚拟网卡流量,让网络请求不再依赖“应用自身是否乖乖走系统DL”,而是把更多流量(包括复杂的 WSS 流量)统一有效纳管。这对于经常在终端里跑命令行工具(比如此前配置DL跑 Claude Code)的开发者来说,是全局最省心的方案。

方案三:为 Codex 增加 .env 代理环境变量

~/.codex 目录下新建或修改 .env 文件,将本地代理地址明确写死,让 Codex 不再到处“迷路”。

1. 手动配置示例

假设你的本地端口是 7890.env 文件内容如下:

HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890
ALL_PROXY=http://127.0.0.1:7890
NO_PROXY=localhost,127.0.0.1,::1

2. 懒人福音:让 AI 帮你写

如果你不想自己找端口,可以直接把以下提示词发给 Codex,让它“自己修自己”:
帮我修复 Codex APP 一直 Reconnecting 的问题。请定位我本机正在使用的代理端口和代理协议,然后创建或更新 ~/.codex/.env,写入以下代理配置。不要写死端口,请替换成实际端口;如果文件已经存在,保留其他配置。
HTTP_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
HTTPS_PROXY="http://127.0.0.1:<HTTP 或 mixed 端口>"
NO_PROXY=localhost,127.0.0.1,::1
写入后检查配置是否正确,并告诉我需要如何重启 Codex。

⚠️ 避坑指南:为什么改了还是没用?

必须彻底杀掉旧进程重启!

配置文件或环境变量修改完成后,如果后台的旧进程没有彻底退出,新的配置极大概率不会立即生效。请确保完全关闭 Codex 进程(可通过任务管理器或 kill 命令强制结束)后再重新打开,享受秒出结果的顺畅体验吧。

评论区
头像