Codex 为什么总是先重连 5 次才开始回答?一次讲清并给出可回滚修复方案

在这里插入图片描述

最近不少同学在用 Codex 时会遇到一个很影响体验的问题:

  • 发起新对话或执行 /new 后,界面先出现多次 Reconnecting...
  • 往往要等到第 5 次之后,才开始正常回答
  • 有时还会看到“从 WebSocket 回退到 HTTPS”的提示

这个问题最烦人的地方不在于“完全不能用”,而在于:

它会稳定浪费你每次开工前的几十秒。

如果你一天开很多轮任务,这个时间损耗会非常明显。

这篇文章不讲空话,直接给你一套可复现、可验证、可回滚的处理方案,并把副作用讲清楚。

一、问题现象到底是什么

典型现象是:

  1. 你发起请求后,长时间没有正式输出
  2. 中间不断显示 Reconnecting... 1/52/5、…、5/5
  3. 之后才进入正常回复,或者提示回退到 HTTPS 传输

在社区 issue 里,这类现象不是个例。
例如:openai/codex#14297(后被标记为重复并合并到 #14209),以及与 WebSocket 超时/回退相关的 #13710

二、为什么会这样:先走 WebSocket,失败后再回退

从公开 issue 中的日志和复现现象看,比较一致的链路是:

  1. 客户端优先尝试 WebSocket 通道
  2. 当前网络环境对 WebSocket 不稳定(握手、策略、链路质量、代理等原因)
  3. 客户端执行多次重连重试
  4. 重试耗尽后,才切到可用的 HTTPS 通道

所以你体感到的是:

“每次都要先卡一段重连时间,再开始干活。”

注意:这里的“5 次重连”与“等待时间”是基于问题复现与日志表现的工程结论,不是官方协议文档里承诺的固定值。

三、最直接的处理思路:显式使用 HTTPS provider,禁用 WebSocket

如果你的网络环境里 WebSocket 经常不稳定,最稳妥的思路是:

不要等它反复失败,直接让它走 HTTPS。

对应做法是在 config.toml 里增加一个自定义 provider,并明确:

  • wire_api = "responses"
  • supports_websockets = false

配置示例(可直接用):

# 顶部增加或修改
model_provider = "openai_https"

# 文件末尾增加
[model_providers.openai_https]
name = "OpenAI"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false

四、一步一步改,避免踩坑

1) 先备份再改

改配置前建议先备份 config.toml

这样即使有语法或行为异常,也能秒回滚。

2) 引号一定用英文半角

最常见错误之一是把 " 写成中文引号 “”
TOML 对引号非常敏感,写错会导致配置解析失败。

3) provider 名称要一致

上面示例里,model_provider = "openai_https" 必须和 [model_providers.openai_https] 完全一致。

4) 改完重启 Codex

热更新不一定生效。
改完建议完整重启客户端/插件再验证。

五、怎么验证修复是否生效

建议按下面流程检查:

  1. 重启 Codex
  2. 新开对话或执行 /new
  3. 观察是否还出现 Reconnecting... 1/55/5 的链路
  4. 连续执行 3~5 次,确认不是偶然

如果重连显著减少或消失,说明这次配置对你的网络环境是有效的。

六、你最关心的副作用:历史记录“看不见”了怎么办

很多人改完后会发现:原来的历史记录好像没了。

通常不是被删除,而是因为:

  • 历史会和 provider 关联
  • 你切换到了新 provider(openai_https
  • 当前视图只显示该 provider 下的会话

也就是“分组隔离”,不是“数据丢失”。

七、回滚方案(30 秒恢复)

如果你不想继续用这个方案,按下面做:

  1. 删除(或注释)[model_providers.openai_https] 这一段
  2. model_provider 改回原来的 provider
  3. 重启 Codex

回滚后通常就会回到你之前的历史会话视图。

八、给团队落地时的实用建议

如果你在团队里统一使用 Codex,我建议把下面三点写进团队 README:

  1. 双配置思路:默认配置 + openai_https 故障切换配置
  2. 统一回滚步骤:每个人都知道 30 秒如何撤回
  3. 故障判定标准:出现连续 3 次以上 Reconnecting 再切换,不要一上来就改

这样可以减少“有人改了、有人没改、大家现象不一致”的排障成本。

九、写在最后

这个问题本质上不是“你不会用”,而是“默认传输策略和你的网络环境不匹配”。

一旦确认你所在环境里 WebSocket 不稳定,显式走 HTTPS 往往是最省时间的工程解法。

把本文的方案记成一句话:

默认链路总在重连,就别等它失败后再回退,直接配置到可用链路。


参考链接

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐