Openai

关注公众号 jb51net

关闭
AI > Openai >

一文详解Codex提示Reconnecting waiting for network的原因与解决方法

AI砖家

本文讨论 Codex(CLI / 桌面端 / IDE 扩展)在复杂网络环境—— 企业内网、公司防火墙、安全网关、统一代理 —— 下出现Reconnecting... waiting for network提示的原因与排查方法。核心是一个典型的长连接兼容性问题,不涉及任何特定网络环境的绕过。

0. 先说结论

Reconnecting... waiting for network(有时演进为 Reconnecting 1/5 … 5/5)不是模型在 “思考”,而是 Codex 与服务端之间的传输连接没能建立或被中断,正在按指数退避策略自动重连。

在企业办公网络中,最常见的原因有两个:

理解了 Codex 的传输与重连机制,这两类问题都有标准、正当的解决方式(联系网络管理员放行、让应用读取系统代理、或改用 HTTP 流式传输)。

1. 这句话到底在说什么

完整提示通常是:

Reconnecting... waiting for network
Reconnecting... (1/5)
Reconnecting... (2/5)
Reconnecting... (3/5)
Reconnecting... (4/5)
Reconnecting... (5/5)

有时卡上几十秒后,答案又正常返回了。这个 “等一会儿能用” 的特征,容易被误判成模型响应慢。

实际上,这是 Codex 的传输层自愈(transport-level self-healing)提示:它明确告诉你 “连接中断,正在重建”,而不是程序死机。把重连进度暴露出来,本身是高可用设计的一部分,避免用户误以为卡死而手动结束进程。

2. 原理:建连、重连与降级

2.1 两种传输通道:WebSocket 与 HTTPS 流式

Codex 调用 Responses API 时,结果可通过两种通道返回:

传输方式形态特点对中间网络设备的要求
WebSocket(wss://)持久的双向长连接延迟低,适合长时间、持续交互的 Agent 工作流,默认优先使用高:网关 / 防火墙需能稳定维持长连接
HTTPS 流式普通 HTTP 请求 + 流式响应通用性最好,几乎所有网络环境都能通过低:与普通网页请求一致

关键在于:WebSocket 对防火墙、安全网关、反向代理、流量审计设备的要求更高。这些设备通常默认放行普通 HTTPS,却可能没有为 wss:// 长连接做相应配置(连接空闲超时过短、未放行升级握手、不支持连接保活等),从而出现 “网页能开、普通接口能调,唯独长连接一直重连” 的现象。

2.2 连接失败 → 指数退避重连

在 Codex 的错误分类中,ConnectionFailed、Timeout、Stream、Io 等属于可重试错误(retryable)。连接失败会被单独归为一档:

所以 1/5 → 5/5 本质是反复尝试重建长连接,每次都要先等待超时,整体时间被拉长。

2.3 重试耗尽 → 传输降级(WS → HTTPS)

当普通重试超过上限仍未成功,Codex 会触发传输降级:从 WebSocket 回退(fallback)到 HTTPS 流式传输,降级成功后继续执行。这解释了 “重连几次后又能正常回答” 的现象:

发起对话
   ↓
优先尝试建立 WebSocket
   ↓
握手失败,指数退避重试 1/5 … 5/5
   ↓
重试耗尽,回退到 HTTPS 流式传输
   ↓
回答正常返回 ✅

模型本身可能始终正常,失败的只是它优先选择的传输通道。

3. 常见原因分类

#原因典型特征
①防火墙 / 网关未放行 WebSocket普通 HTTPS 请求正常,长连接建立失败;切换网络(如手机热点)后现象变化
②应用未继承企业 / 系统代理配置浏览器正常,独立进程形式的客户端却连接超时
③认证状态失效(MFA / 登录态)请求已到达服务端,却被判为未授权而断开
④本地网络或服务端波动DNS 异常、系统时间错误、服务端临时不可用

4. 解决方案

用户级配置文件位置:

修改后需完全退出并重启客户端才会生效。

方案一:先做基础网络连通性排查

在调整配置前,先排除最基础的问题:

方案二:让应用遵守系统 / 企业代理

在使用统一代理的企业网络中,浏览器通常已通过自动配置脚本(PAC)或系统代理正常联网,但独立进程形式的客户端可能没有读取该配置,从而按直连方式失败。较新版本的 Codex 提供了开关,使其直接读取操作系统的代理设置。

在 config.toml 中加入(已有 [features] 段则只添加下面一行,段落头在整个文件中只能出现一次):

[features]
respect_system_proxy = true

说明:

方案三:网络设备不支持 WebSocket 时,改用 HTTP 流式传输

如果确认普通 HTTPS 可通、但 WebSocket 始终无法建立(常见于策略较严格的企业网络),可以定义一个不使用 WebSocket 的提供方,让客户端直接走 HTTP 流式通道,省去全部重连等待。

在 config.toml 中加入:

model_provider = "openai_http"

[model_providers.openai_http]
name = "OpenAI HTTP"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
配置项作用
model_provider = "openai_http"顶层配置,选择下面定义的提供方
name显示名称
wire_api = "responses"继续使用 Responses API
requires_openai_auth = true沿用原有认证方式
supports_websockets = false核心:声明不使用 WebSocket,改走 HTTP 流式

注意:

修改前建议备份原文件:

cp ~/.codex/config.toml ~/.codex/config.toml.bak

方案四:联系网络管理员放行长连接

在企业网络中,WebSocket 无法使用的根本解决方式是由网络 / 运维团队在防火墙、安全网关或反向代理上为相应域名放行 wss:// 连接,并调大空闲连接超时、关闭对长连接的中途拦截。这属于正常的企业网络策略调整,建议携带明确的报错信息和目标域名提工单处理。

方案五:认证状态失效时重新登录

若请求已到达服务端却被判为未授权而断开,常见于账号启用了 ** 多因素认证(MFA)** 后,本地旧的登录会话失效,而客户端未重新完成验证。

处理方式:

5. 排查路径图

6. 如何确认已修复

重启后新建对话发送一条简单消息,观察:

仍异常时按序自查:配置中是否存在重复的 model_provider 或重复的 [features] 段;supports_websockets = false 是否位于正确的表内;修改的是否为用户级配置;当前网络是否对长连接有限制。

7. 常见误区

“重连是模型在思考。” 思考阶段与网络重连是两种不同状态,后者明确属于连接层。

“浏览器正常,客户端就一定正常。” 独立进程不一定继承系统 / 浏览器代理,且 WebSocket 与普通 HTTPS 的网络设备要求不同。

“等它重连完能用就无需处理。” 每次请求都先经历多轮超时等待,明显影响效率,应从网络策略或传输方式上根治。

8. 小结

Reconnecting... waiting for network 是传输层自愈提示:连接失败 → 指数退避重连 → 重试耗尽后从 WebSocket 降级到 HTTPS;

企业网络中最常见的根因是网关未放行长连接与客户端未继承代理配置;

正当的解决路径:基础连通性排查 → respect_system_proxy 读取系统代理 → 必要时 supports_websockets = false 改用 HTTP 流式 → 联系管理员放行 wss → 认证失效则重新登录;

修改配置后务必完全重启,并连续测试 3 次确认。

到此这篇关于一文详解Codex提示Reconnecting waiting for network的原因与解决方法的文章就介绍到这了,更多相关Codex提示Reconnecting waiting for network内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!