Skip to content

摘要(Snippet):在使用 Codex 客户端时,你是否遇到了“Codex 桌面端新会话 5 次 Reconnecting 怎么办”的困扰?这通常不是模型或账号问题,而是本地代理与 WebSocket 协议不兼容导致的。本文提供了一套完美的 HTTP/SSE 降级修复方案,只需修改 config.toml 文件,即可彻底解决 Codex 首次提问反复重连的烦恼。


📚 本文目录


一、结论先行(快速修复)

14

如果 Codex Desktop 第一次发送请求,或者重新开启一个新对话时,连续出现约 5 次 reconnecting,但重连后又能正常输出回答,大概率不是模型不可用,而是首次流式连接经过本地网络代理时产生了 WebSocket 抖动

终极解决方案:在 Codex 的 config.toml 配置文件中,新增一个强制走 HTTP/SSE 协议的 OpenAI Provider,并将其设为默认选项。这样可以完美避开代理链路中的 WebSocket 不稳定因素。

核心代码(加入到配置中即可):

toml
model_provider = "openai_http"

[model_providers.openai_http]
name = "OpenAI HTTP only"
wire_api = "responses"
supports_websockets = false
requires_openai_auth = true

注意:切换至 openai_http 后,右侧历史列表可能仅显示新 Provider 下的对话。这属于正常现象,并非账号或模型被替换。


二、问题现象:你遇到的是这个情况吗?

当你搜索“Codex 桌面端新会话 5 次 Reconnecting 怎么办”时,通常会伴随以下典型特征:

现象特征详细说明
首次发问疯狂重连每次打开软件第一次发消息,通常会连续提示重连约 5 次,随后才开始吐字。
新开会话极易复现即使软件没关,只要 New Chat 开启新对话,首个请求依然容易发生抖动。
后续对话完全正常一旦首条消息成功发出,后续的连续对话极为流畅(排除账号/模型被封禁的可能)。
开启代理时尤为明显直连正常,但挂载本地代理(如 127.0.0.1:10808 等)时必定复现。

三、适用与不适用场景排查

在动手修改前,请先对照以下场景,确认本方案是否适合你:

✅ 完美适用本方案:

  • Codex Desktop 账号可以正常登录。
  • 最终能获取模型回答,只是首次请求新会话请求频繁报错 reconnecting
  • 电脑开启了网络代理/科学上网工具。

❌ 不适用本方案(需另寻排查方向):

  • Codex 彻底无法登录,白屏或报网络错误。
  • 所有模型请求 100% 失败,等多久都不行。
  • 代理工具本身节点失效,无法访问 chatgpt.com
  • 被公司内网防火墙、杀毒软件全局拦截。

四、核心原因:为什么会一直 Reconnecting?

Codex 默认的 OpenAI Provider 会优先尝试使用支持 WebSocket 的传输方式。WebSocket 本身极其高效,但它对网络代理链路非常敏感

当请求经过你的本地代理时,以下环节的任何一点不稳定,都会触发自动重连:

  1. WebSocket Upgrade(协议升级):部分代理软件未能完美支持从 HTTP 升级为 WebSocket。
  2. 长连接保持:首次建立长连接时,可能被代理客户端或底层网络中间件意外掐断。
  3. TLS Tunneling:代理的 HTTPS 隧道握手过程存在延迟或抖动。
  4. 自动重试机制:Codex 一旦检测到断开,就会立即发起重试(通常重试 5 次左右才能成功降级或穿透)。

破局思路:不要试图去修改 Codex 的重试次数,而是直接让它放弃 WebSocket,改走对代理极其友好的 HTTP/SSE (Server-Sent Events) 流式响应。


五、保姆级修复步骤

第一步:彻底关闭 Codex Desktop

请务必先退出并完全关闭 Codex Desktop 程序,防止修改配置时被软件覆盖或产生文件占用冲突。

第二步:定位并备份配置文件

配置文件 config.toml 通常位于以下路径: C:\Users\你的用户名\.codex\config.toml

为安全起见,建议先在 PowerShell 中执行以下命令进行备份:

powershell
Copy-Item "$env:USERPROFILE\.codex\config.toml" "$env:USERPROFILE\.codex\config.toml.bak"

15

16

第三步:编辑 config.toml

使用记事本或 VS Code 打开该文件。

1. 修改默认 Provider 在文件顶部找到 model_provider,将其修改为:

toml
model_provider = "openai_http"

17

(注意:如果已存在该字段,直接修改值即可,切勿重复添加两行)

2. 追加 HTTP Provider 定义

滑动到文件最末尾,粘贴以下代码:

toml
[model_providers.openai_http]
name = "OpenAI HTTP only"
wire_api = "responses"
supports_websockets = false
requires_openai_auth = true

18

第四步:保存并重启

保存文件后,重新启动 Codex Desktop。新建一个会话并发送消息,见证奇迹的时刻。


六、完整 config.toml 配置示例

如果你的配置文件较为空白,或者不知道插在哪里,可以参考下方这份结构完整、开箱即用的示例。(原有沙盒、插件等配置请保持不变)

toml
# 设置全局默认 Provider 为我们新建的 HTTP 模式
model_provider = "openai_http"
model = "gpt-5.5"
model_reasoning_effort = "high"

[windows]
sandbox = "elevated"

# =========== 下方为新增的 HTTP 专属 Provider ===========
[model_providers.openai_http]
name = "OpenAI HTTP only"
wire_api = "responses"
supports_websockets = false
requires_openai_auth = true

七、核心配置项原理解析

明白原理,遇到变种问题也能轻松应对:

配置参数核心作用解析
model_provider = "openai_http"将默认大模型提供商指向我们自定义的模块。
[model_providers.openai_http]声明一个新的 Provider,好处是不破坏原生 openai 配置,方便随时回退。
wire_api = "responses"保持使用原生的高级 Responses API 接口。
supports_websockets = false核心魔法:直接屏蔽 WebSocket 握手,强制降级走稳定的 HTTP/SSE。
requires_openai_auth = true继承 Codex/OpenAI 的网页登录态(SSO),无需你额外去搞 API Key。

八、配置验证方法

如果不确定自己改得对不对,可以通过命令行工具快速除错:

打开终端,输入以下命令:

bash
codex debug models

19

如果系统返回了正常的模型列表而没有抛出语法报错,说明你的 config.toml 修改完全正确。

20

最终测试:回到软件,New Chat 发送一句 "Hello",如果瞬间响应且不再出现烦人的 reconnecting,说明本地代理握手问题已被成功规避!


九、常见问题解答(FAQ)

Q1:Codex 桌面端新会话第一次提问一直 reconnecting,最核心的原因是什么? A:若后续对话正常,最常见的原因是本地网络代理软件对 WebSocket 的协议升级(Upgrade)或长连接保持不够稳定。

Q2:关闭 WebSocket 改走 HTTP/SSE,会影响代码生成质量或模型智商吗? A:绝对不会。 这仅仅是客户端与服务器之间“传输数据的高速公路”换了一条,卡车里装的货物(AI 模型的能力和上下文)没有任何改变。

Q3:这个方法需要去 OpenAI 后台绑定信用卡生成 API Key 吗? A:不需要。 配置中的 requires_openai_auth = true 意味着它会继续沿用你客户端的自带登录授权状态。

Q4:为什么不建议直接在原有的默认 openai provider 里改? A:新建一个 openai_http 的好处是无损修改。未来的 Codex 客户端更新可能覆盖默认配置,独立出来的配置更易维护,出错了直接删掉即可恢复如初。

Q5:改完配置后 Codex 直接打不开/闪退了怎么办? A:这说明 config.toml 的标点符号写错了(比如漏了引号或括号)。请直接删除新增的代码,或者用第二步备份的 .bak 文件覆盖回去即可恢复。

Q6:我照做了,但还是经常 Reconnecting 怎么办? A:如果 HTTP 模式下依然断连,请重点排查:

  1. 你的代理节点本身是否高延迟或频繁丢包。
  2. 尝试更换代理客户端的内核(例如从 Xray 切换为 Sing-box 等)。
  3. 检查系统全局代理设置是否与软件实际请求路径冲突。
  4. 确保 Codex 客户端已经升级至最新可用版本。
联系
我呀