开发与 AI · Clash 技术博客

Codex 反复 Reconnecting 怎么修?Clash 代理排查

Codex App 或 CLI 反复 Reconnecting 时,先排除服务故障,再用 Clash 连接记录检查系统代理、WebSocket 与 HTTP 代理路径,并按可回退步骤修复。

  • Codex
  • Clash Verge Rev
  • Reconnecting
  • WebSocket
  • 代理排查
本文目录

短提示也重连,先把问题限定在连接链路

这篇文章处理 Codex App 或 CLI 发出简单提示后,界面依次显示 Reconnecting 1/5 到 5/5,最后出现 stream disconnected before completion 的情况。OpenAI 官方 issue #23061 记录了同样的错误路径,说明它不一定来自提示词、仓库大小或上下文长度。

Codex 的普通 HTTPS 请求成功,也不代表流式回复一定稳定。OpenAI 网络文档说明 Codex 还会通过 wss://chatgpt.com/ 建立安全 WebSocket;应用接入代理、Clash 规则、节点出口和长连接策略中的任一环节都可能中断回复。

先按对照结果分组

现象更可能的断点继续检查
OpenAI 状态页同时报告故障服务端事件等待恢复后复测
App 失败,CLI 在同一网络可用两种界面的代理接入不同比较版本与启动方式
短回复成功,长回复中途重连WebSocket 或代理长连接被提前关闭检查 443、TLS 和超时
App 与 CLI 都不出现在 Clash 连接页请求没有进入当前代理入口核对系统代理、TUN 或端口
Codex 流式回复的代理路径
  1. Codex App 或 CLI发起登录、HTTPS 与流式请求
  2. 系统代理、环境变量或 TUN决定请求是否进入 Clash
  3. Clash 规则与节点为 chatgpt.com 选择实际出口
  4. OpenAI WebSocket在 443 端口维持模型流式连接

短请求成功而回复中途反复重连,常见断点不在提示词本身,而在应用接入代理、规则出站或 WebSocket 长连接之间。

用状态页和另一条网络排除共同故障

先查看 status.openai.com 是否存在正在处理的 ChatGPT 或 Codex 事件。若状态页有明确故障,保留错误时间并等待恢复;此时切换大量节点或重写规则只会破坏原来的对照条件。

状态页正常时,固定同一个短提示和账号,分别在当前 Clash 节点、另一个已知可用节点、手机热点或不经过企业网关的网络上测试。只要换网络立即恢复,就应继续检查本地代理或公司网络,而不是删除 Codex 会话。

建立三组可复现对照

  1. 记录准确错误

    保存 Reconnecting 次数、失败 URL、发生时间、Codex App 与 CLI 版本,不公开会话内容或令牌。

  2. 固定最小请求

    在新任务发送同一句短提示,避免长上下文、工具调用和仓库扫描干扰网络判断。

  3. 只换一次出口

    先换一个确认可用的 Clash 节点,再换手机热点;每次都观察是否出现同一错误。

  4. 恢复原节点

    对照完成后回到原策略组,避免后续结果来自尚未记录的新出口。

在 Clash 连接页确认 Codex 真的进入代理

打开 Clash Verge Rev 的连接页并清空旧筛选,再从 Codex 发出一次新提示。重点查找 chatgpt.com 及相关 OpenAI 域名,并记录命中的规则、策略组和实际节点;只看到浏览器流量不能证明 Codex App 或 CLI 使用了同一路径。

日常仍应使用 Rule 模式。为了判断是否是漏规则,可以短时间切到 Global 并固定同一节点复测;若 Global 恢复而 Rule 失败,说明请求已进入 Clash,问题在规则或策略选择,不必继续修改 Codex。测试后立即切回原模式。

Codex 请求出现并走预期节点

代理入口已接通,继续检查 WebSocket、TLS 检查和长连接超时。

请求出现但命中 DIRECT

短时用 Global 对照,再从连接记录补充可解释的规则。

完全没有 Codex 新连接

系统代理可能未被该进程读取,或 CLI 没有继承当前终端的代理变量。

所有域名都持续 timeout

先换节点或网络,不要把整组上游故障当成 Codex 专属问题。

分别测试 App 与 CLI,不把两者当成同一进程

Codex 官方故障排查说明提醒,桌面 App 和 CLI 可能包含不同版本。先记录两边版本,再在同一网络和节点下发送同一句短提示;App 成功而 CLI 失败,或反过来,都说明账号与 OpenAI 服务不是唯一变量。

查看当前 CLI 版本;macOS 可同时查看 App 内置版本
codex --version
/Applications/Codex.app/Contents/Resources/codex --version

版本和结果如何解释

对照判断下一步
App 与 CLI 版本不同先更新较旧的一侧再复测保持节点与提示不变
CLI 可用,App 持续重连App 可能没有沿用终端环境变量用 TUN 或系统代理做独立对照
App 可用,CLI 持续重连当前 shell 代理变量或启动环境异常检查变量和实际 HTTP 端口
两边都在同一阶段失败更像共同节点、规则或 WebSocket 问题继续检查网络控制

允许 Codex 的 WebSocket 在 443 端口持续连接

OpenAI 官方网络建议要求代理、防火墙或安全网关允许 chatgpt.com 在 TCP 443 上完成标准的 Upgrade: websocket 握手。若网页和登录可用,但回复总在生成途中断开,应让网络管理员检查 WebSocket 空闲超时、最大消息大小以及是否提前关闭长连接。

企业网络若启用了 TLS 检查,还要确认它没有替换错误证书、改写握手或只允许普通 HTTPS。最有价值的对照是在手机热点上使用同一账号和同一 Codex 版本;热点稳定而公司网络失败,才把问题交给网络策略处理。

交给管理员的最小检查项

  • 允许 chatgpt.com 的 TCP 443 与 WebSocket Upgrade
  • 长连接不会被过短的 idle timeout 提前关闭
  • TLS 检查信任链对 HTTPS、登录与安全 WebSocket 一致
  • 官方列出的 ChatGPT、OpenAI 与静态资源域名没有被改写
  • 手机热点对照已排除账号、提示词和本机版本问题

只在当前终端测试 Clash 的 HTTP 代理入口

OpenAI Codex issue #20844 是仍未关闭的用户报告:同一代理栈使用 SOCKS5 时出现 stream disconnected,改成显式 HTTP_PROXY 与 HTTPS_PROXY 后恢复。它不是官方承诺的通用修复,但可以用来判断 SOCKS 路径和 HTTP 路径是否表现不同。

先在 Clash Verge Rev 设置中确认 HTTP 或 Mixed 端口。下面的 7897 只是示例,必须换成本机实际端口;变量只写入当前终端,不要先放进 shell 配置或系统环境。

macOS 或 Linux:把 7897 换成当前 HTTP 或 Mixed 端口
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
unset ALL_PROXY all_proxy
codex
Windows PowerShell:把 7897 换成当前 HTTP 或 Mixed 端口
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
Remove-Item Env:ALL_PROXY -ErrorAction SilentlyContinue
codex

CLI 立即稳定,连接页显示 chatgpt.com

保留该终端作为临时工作路径,并继续检查 App 是否需要 TUN 接管。

HTTP 可用、SOCKS5 仍断流

优先使用已验证的 HTTP 或 Mixed 入口,关注对应官方 issue 的后续修复。

两种代理都失败,但手机热点正常

检查 Clash 节点、规则与 WebSocket 转发,不要把变量永久写入系统。

新进程仍不出现在连接页

端口可能写错或命令没有在同一终端启动,关闭进程后核对设置再试。

撤销临时变量,再完成四项流式验证

测试无效或准备切回系统代理时,先退出本次启动的 Codex,再关闭当前终端即可撤销临时变量。若变量已写入 shell 配置或 Windows 用户环境,应删除本次新增项并打开新终端;不要同时保留旧 SOCKS、HTTP 与 TUN 三条未知路径。

若 App 只有在 TUN 下稳定,先把它作为可回退的临时接入方式,并保留关闭 TUN 后系统代理可恢复的基线。后续更新 Codex 或 Clash Verge Rev 后,用同一验证清单重新测试,再决定是否继续保留 TUN。

最终验证清单

  • App 与 CLI 各发送一次短提示,都不再进入 Reconnecting 计数
  • 连续生成一段较长回复,未出现 stream disconnected before completion
  • Clash 连接页显示 chatgpt.com 命中预期规则与固定节点
  • 退出 Codex 并关闭临时代理后,系统网络能恢复原状态

参考资料

核对日期:2026.08.04