Codex反复掉线和Reconnecting...stream disconnected before completion的解决方案

报错是 stream disconnected before completion: Transport error: network error: error decoding response body。 你在终端里看到这个,Codex 就不动了。重试几次之后彻底放弃。

GitHub 上这个报错的 issue 开了几十个——#8465、#8467、#21362、#23842、#8180——每个标题都一样,每个里面都有一群人说一样的话:"me too"。 翻久了会发现,原因不止一个,解决办法也不一样。有人清了缓存就好了,有人关了 VPN 就好了,还有人什么都没做,等了一天,自己好了。

Codex反复掉线和Reconnecting...stream disconnected before completion的解决方案

把能找到的方案过一遍,按从"最可能有用"到"实在没办法了再试"排个序。

先清一遍本地状态

最多人验证有效的一步。退出登录,把本地缓存删干净,重新登录。

codex logout rm -rf ~/.codex ~/.config/openai/codex codex login

~/.codex 里面存的是认证 token 和一些会话元数据。token 过期或者文件损坏的时候,Codex 还能发起请求,但流走到一半就断了——服务端拒绝或者响应格式不对,客户端直接报 network error。删掉重来比定位具体哪个文件坏了要快。

注意:rm -rf 之前确认一下路径,别多打了一个空格。

别 resume 旧会话

如果你的 session 挂了两三天,别试着恢复它。直接开一个新的。

Codex 的 resume 机制是拉之前的上下文重新注入。时间拉得越长,上下文越大,流传输的数据量也越大。中间任何一个环节超时——可能是服务端处理太久,可能是网络抖动——就会断。新的 session 从零开始,上下文干净,出问题的概率小很多。

查 provider 配置

有人追踪到的根因是旧的 provider 配置残留在 CLI 里。你之前可能设过一个自定义的模型 endpoint 或者切换过 provider,后来改了,但配置文件里还留着旧的值。

~/.config/openai/codex/ 下面的配置文件,如果有不在用的 provider 条目,清掉。

版本问题

Codex CLI 发版不算慢,偶尔会带回归 bug。

  • 0.129.0 及以上版本在 WSL 里有已知问题,会触发掉线。
  • 如果你刚升完级就开始报错,退回去试试。
# 用 npm 装的 npm update -g @openai/codex  # 想退回某个版本 npm install -g @openai/codex@0.128.0

网络和代理

这条看起来像废话,但确实是原因之一。

开了 VPN 或者公司代理的时候,TLS 握手偶尔会出问题。Codex 用的是流式 HTTP 响应,代理层如果对长连接的处理不够稳——比如中间有超时断连、证书链验证不过——就会报 error decoding response body

关掉代理试一次。如果好了,问题就在代理那边。如果必须走代理才能访问,有两个路子可以试:

方法一:开启 TUN 模式

如果你用的代理工具支持 TUN 模式(虚拟网卡),打开它。TUN 模式走系统级网络层,代理对所有进程透明,Codex 的请求会被自动接管,不需要额外配置。在代理工具里找到 TUN 模式开关,打开就行。

方法二:给 Codex 写一个 .env 文件

Mac 上操作:打开访达,顶部菜单点"前往"→"前往文件夹",输入 ~/.codex/。在这个文件夹里建一个文本文件,写入你的代理地址:

all_proxy=http://127.0.0.1:7897

端口号看你自己的代理设置,不一定是 7897。保存后把文件重命名为 .env,然后重启 Codex。

这相当于告诉 Codex:"所有网络请求走这个代理。"TUN 模式和 .env 文件选一个就行,不需要两个都配。

Context 可能满了

这个错误有时候是假的。它显示的是 network error,实际原因是上下文窗口爆了。

项目很大、对话很长的情况下,模型端的 context 可能接近上限。服务端处理不了,响应截断,客户端收到一个不完整的流,报解码错误。表现和纯网络问题一模一样。

区分的方法是:如果每次都在对话进行到某个阶段之后才掉线,大概率是 context 的问题。开新 session 看看能不能跑过去。

可能就是服务端的问题

有些时候,上面所有步骤走完,还是断。那就是 OpenAI 那边的问题了。

Codex CLI 会自动重试 5 次。重试也失败的话,没什么好做的——等。过一会儿再跑,可能就通了。

这不是推卸责任。GitHub issue 里好几个帖子最后都是楼主回来更新一句:"好了,什么都没动,第二天自己好了。"

排查顺序

如果你赶时间,按这个顺序走:

  1. 1、codex logout,清 ~/.codex,重新 login

  2. 2、开新 session,不要 resume

  3. 3、检查 CLI 版本,升或降

  4. 4、关掉 VPN / 代理再试

  5. 5、清理 provider 配置文件里的旧条目

  6. 6、如果项目很大,考虑 context 溢出——开新 session 验证

  7. 都不行就等,过一阵再跑