Codex/ChatGPT 反复 Reconnecting(正在重新连接) 5/5 的最简修复方法

问题现象

Codex Desktop 在新建或恢复任务后,第一次发送消息时反复显示正在重新连接:

关键是5次连接之后就自动连上了,好像也不是网络连接的问题。

text 复制代码
Reconnecting... 1/5
Reconnecting... 2/5
...
Reconnecting... 5/5

像这样,等待一段时间后又开始正常思考,任务仍能正常执行,但每次开始前都会产生明显延迟。

问题背景

OpenAI Codex 仓库的 Issue #24045 记录了相同现象。日志显示,Codex 会先尝试通过 WebSocket 连接 Responses 服务;如果 WebSocket 建连超时,就会连续重试,最后回退到 HTTP/SSE。任务能够继续执行,是因为 HTTP/SSE 通道仍然可用。
#mermaid-svg-nqKeoOSQPLoeIUuv{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-nqKeoOSQPLoeIUuv .error-icon{fill:#552222;}#mermaid-svg-nqKeoOSQPLoeIUuv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-nqKeoOSQPLoeIUuv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-nqKeoOSQPLoeIUuv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-nqKeoOSQPLoeIUuv .marker.cross{stroke:#333333;}#mermaid-svg-nqKeoOSQPLoeIUuv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-nqKeoOSQPLoeIUuv p{margin:0;}#mermaid-svg-nqKeoOSQPLoeIUuv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster-label text{fill:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster-label span{color:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster-label span p{background-color:transparent;}#mermaid-svg-nqKeoOSQPLoeIUuv .label text,#mermaid-svg-nqKeoOSQPLoeIUuv span{fill:#333;color:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv .node rect,#mermaid-svg-nqKeoOSQPLoeIUuv .node circle,#mermaid-svg-nqKeoOSQPLoeIUuv .node ellipse,#mermaid-svg-nqKeoOSQPLoeIUuv .node polygon,#mermaid-svg-nqKeoOSQPLoeIUuv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-nqKeoOSQPLoeIUuv .rough-node .label text,#mermaid-svg-nqKeoOSQPLoeIUuv .node .label text,#mermaid-svg-nqKeoOSQPLoeIUuv .image-shape .label,#mermaid-svg-nqKeoOSQPLoeIUuv .icon-shape .label{text-anchor:middle;}#mermaid-svg-nqKeoOSQPLoeIUuv .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-nqKeoOSQPLoeIUuv .rough-node .label,#mermaid-svg-nqKeoOSQPLoeIUuv .node .label,#mermaid-svg-nqKeoOSQPLoeIUuv .image-shape .label,#mermaid-svg-nqKeoOSQPLoeIUuv .icon-shape .label{text-align:center;}#mermaid-svg-nqKeoOSQPLoeIUuv .node.clickable{cursor:pointer;}#mermaid-svg-nqKeoOSQPLoeIUuv .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-nqKeoOSQPLoeIUuv .arrowheadPath{fill:#333333;}#mermaid-svg-nqKeoOSQPLoeIUuv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-nqKeoOSQPLoeIUuv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-nqKeoOSQPLoeIUuv .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nqKeoOSQPLoeIUuv .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-nqKeoOSQPLoeIUuv .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nqKeoOSQPLoeIUuv .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster text{fill:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv .cluster span{color:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-nqKeoOSQPLoeIUuv .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-nqKeoOSQPLoeIUuv rect.text{fill:none;stroke-width:0;}#mermaid-svg-nqKeoOSQPLoeIUuv .icon-shape,#mermaid-svg-nqKeoOSQPLoeIUuv .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-nqKeoOSQPLoeIUuv .icon-shape p,#mermaid-svg-nqKeoOSQPLoeIUuv .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-nqKeoOSQPLoeIUuv .icon-shape .label rect,#mermaid-svg-nqKeoOSQPLoeIUuv .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-nqKeoOSQPLoeIUuv .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-nqKeoOSQPLoeIUuv .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-nqKeoOSQPLoeIUuv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 成功
超时
Codex 发起请求
尝试建立 WebSocket 连接
连接是否成功
开始处理任务
重复连接,最多显示 5/5
回退到 HTTP/SSE
开始处理任务,但首轮延迟较长

常见链路可以概括为:

text 复制代码
WebSocket 建连超时
→ Codex 连续重试
→ 显示 Reconnecting 1/5 到 5/5
→ 自动回退到 HTTP/SSE
→ 任务恢复正常

解决路线一:交给 Codex 或其他 Agent 工具处理

省流,将本文链接直接发送给 Codex 或任意能够读写本机文件、执行命令的 AI Agent,再附上这句提示词:

text 复制代码
请阅读本文,先以只读方式判断我的 Codex 重连问题是否与文中描述一致。若一致,请按文中解决路线二的步骤:备份配置、完成修复并验证结果;若不一致或证据不足,则不要修改任何文件并告诉我原因。

由于配置文件位于用户目录,Agent 可能会请求写入权限。批准后,它可以完成备份、修改和检查。Codex Desktop 可能需要重启才能生效。

解决路线二:手动强制使用 HTTP

1. 备份配置文件

Codex 的用户配置文件位于:

text 复制代码
%USERPROFILE%\.codex\config.toml

USERPROFILE 代表 Windows 提供的环境变量,表示当前登录用户的主目录,通常是 C:\Users\用户名

如果实在找不到这个位置,Codex 设置页中"配置 → 打开 config.toml"打开的就是这个文件。

不熟悉命令行的话,手动复制一份加个.bak的后缀,方便未来如果有需要还能找到恢复。

下面的备份命令不会修改该文件,而是在同一目录中复制出一个名为 config.toml.bak 的备份文件。

在 PowerShell 中,可以直接使用完整路径执行备份:

powershell 复制代码
Copy-Item "C:\Users\你的用户名\.codex\config.toml" "C:\Users\你的用户名\.codex\config.toml.bak"

如果使用 Git Bash:

bash 复制代码
cp "/c/Users/你的用户名/.codex/config.toml" "/c/Users/你的用户名/.codex/config.toml.bak"

执行前,需要把命令中的 你的用户名 替换为实际的 Windows 用户名。

2. 修改默认 provider

打开 config.toml,找到:

toml 复制代码
model_provider = "openai"

改为:

toml 复制代码
model_provider = "openai_http"

3. 添加 HTTP provider

在顶层配置项之后、第一个 TOML 表格段之前加入:

toml 复制代码
[model_providers.openai_http]
name = "OpenAI HTTP only"
base_url = "https://chatgpt.com/backend-api/codex"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false

如果文件中已有 [projects.*][plugins.*] 等配置,建议把上面的内容放在这些段落之前。

这项配置会关闭当前 provider 的 WebSocket,直接使用 HTTP/SSE。其他模型、项目和插件配置不需要修改。

4. 重启并验证

完全退出 Codex Desktop,包括后台进程,然后重新打开并创建一个新任务。

可以在 PowerShell 中运行:

powershell 复制代码
codex doctor --summary --ascii

正常结果应包含:

text 复制代码
[ok] config       loaded
[ok] websocket    Responses WebSocket is not enabled for the active provider
[ok] reachability active provider endpoints are reachable over HTTP

如果终端中的 codex 不是桌面版自带的同一版本,以新任务是否还出现 Reconnecting 1/5...5/5 作为最终验证结果。

恢复原配置

如果需要恢复 WebSocket,将:

toml 复制代码
model_provider = "openai_http"

改回:

toml 复制代码
model_provider = "openai"

然后删除 [model_providers.openai_http] 整段配置并重启 Codex。也可以直接用备份文件覆盖当前的 config.toml

相关推荐
xian_wwq1 小时前
【学习笔记】-深度认知系列-第8讲主流AI模型横向评测——GPT、Claude、Gemini、盘古、文心、通义
人工智能·笔记·学习
小柯南敲键盘1 小时前
跨境电商批量图片翻译与视频字幕翻译,就用跨马AI工具
大数据·人工智能·python·音视频
嘿嘿-661 小时前
Cherry Studio 接入ChatGpt:GPT-5.6 Sol 文本测试与 GPT-Image-2 出图教程
人工智能·gpt·ai·chatgpt·node.js·ai编程
hiahiahia1231 小时前
HTTP Streaming:为什么 AI 回答经常要边生成边返回?
人工智能·网络协议·http
GlobalInfo1 小时前
正文回答“是什么”,附录回答“为什么是这样”
大数据·人工智能
万岳科技系统开发1 小时前
AI直播数字人如何赋能企业营销?直播、AI与私域运营深度融合
人工智能
隔窗听雨眠1 小时前
海量知识库高效检索与智能调度:客服场景下的RAG架构设计与工程实践
人工智能
仙魁XAN1 小时前
【Codex + Deepseek】第 7 篇:如何把一个模糊想法变成可执行开发需求
人工智能·codex·deepseek·vibe coding
数字孪生视频孪生1 小时前
空间智能技术|跨镜轨迹全域可溯,无感定位无扰赋能落地
大数据·运维·人工智能·重构·架构