作者手記:某天下午,我的 ChatGPT 桌面 App 突然壞了。畫面卡在「正在重新連線 5/5 → Reconnecting… waiting for network」無限循環,訊息發出去永遠回不來。這篇文章記錄了我從「以為是網路問題」到挖出真兇的完整過程。如果你也遇到一樣的症狀,可以直接跳到最後的檢查清單。
症狀
- ChatGPT Mac 桌面 App 一直顯示「Reconnecting… waiting for network」
- 輸入任何訊息都卡在「正在思考」,永遠沒有回覆
- 重開 App、重開機都沒用
- 但是:同一個帳號用瀏覽器開
chatgpt.com完全正常
看到第四點就該警覺——這通常不是網路問題,是 App 本身的問題。
第一層:遠端連線的無限重試迴圈
重開 App 沒用之後,我開始看 App 的 log。ChatGPT 桌面版(Codex 架構的新版)會把 log 寫在:
~/Library/Logs/com.openai.codex/YYYY/MM/DD/*.log
一翻 log,畫面立刻不同了。裡面不是網路錯誤,而是:
[AppServerConnection] app_server_connection.reconnect_started
hostId=remote-ssh-codex-managed:macmini reconnectAttempt=61
errorMessage="[email protected]: Permission denied (publickey,password,keyboard-interactive)"
真相一:App 一直在嘗試 SSH 連到我的 Mac mini(當遠端主機用),而 SSH 認證失敗。App 每 20 秒重試一次,永遠失敗,永遠重試。介面上那些「Reconnecting」訊息,其實是遠端主機連不上的無限重試,跟網路一點關係都沒有。
修法:
- App 內「設定 → 連線 → SSH」把 macmini 的開關關掉,切回本機
- 修復遠端本身:在
~/.ssh/config補上 Mac mini 的 Host 區塊,並把公鑰裝過去
# ~/.ssh/config 補上這段
Host macmini aioss-mac-mini 100.x.y.z
HostName 100.x.y.z
User <username>
IdentityFile ~/.ssh/id_ed25519_codex_macmini
IdentitiesOnly yes
# 再把公鑰裝到 Mac mini(會問一次密碼)
ssh-copy-id -i ~/.ssh/id_ed25519_codex_macmini.pub [email protected]
關掉遠端開關、App 重啟後,log 裡的重試迴圈停了。但畫面還在 Reconnecting。
第二層:網路是清白的
接下來我把「網路壞了」這個假設徹底查了一遍,結論全部正常:
| 檢查 | 結果 |
|---|---|
| curl chatgpt.com / openai.com | ✅ 可達(403 是 Cloudflare 擋 curl,不是斷線) |
| api.openai.com | ✅ 可達 |
| 系統 Proxy | ✅ 無 |
| macOS 防火牆 | ✅ 關閉 |
| DNS(Tailscale MagicDNS) | ✅ 解析正常 |
| OpenAI 狀態頁 | ✅ All Systems Operational |
| App 的 TCP 連線 | ✅ 對 chatgpt.com 有多條 ESTABLISHED |
網路層是清白的。但 App 的模型請求一直「Timed out waiting for structured result」——請求送出去,回應永遠不來。
這階段的錯誤動作(我也踩了):重開 App、重置 App 資料(備份 ~/Library/Application Support/Codex 後刪掉重來)、登出重登。都沒用。因為根因不在 App 資料夾裡。
第三層:真兇——被綁架的路由
最後一個線索來自 App 內建 CLI 的健康檢查:
"/Applications/ChatGPT.app/Contents/Resources/codex" doctor
輸出:
✗ reachability one or more required provider endpoints are unreachable over HTTP
openai API inference URL = http://127.0.0.1:17841/v1/... connect failed (required)
⚠ websocket Responses WebSocket failed
endpoint = ws://127.0.0.1:17841/v1/...
App 的模型請求全部被導向 127.0.0.1:17841——一個本機埠,而且上面沒有任何程式在聽。
沿著這個位址找,在 ~/.codex/config.toml 裡看到:
# Managed by codex-chatgpt-web: Responses use the local bridge; Voice stays on ChatGPT.
openai_base_url = "http://127.0.0.1:17841/v1"
真相三:我之前裝過一個叫「Codex Web GPT」的第三方工具,它會在 Codex 的設定檔裡把模型路由改成「本機橋接服務」。
ChatGPT 桌面 App 跟 Codex CLI 共用同一個設定檔(~/.codex/config.toml),所以 App 的每一次模型請求都往 17841 送。橋接程式沒開 → Connection refused → App 顯示「Reconnecting」。
這完美解釋了所有現象:
- 為什麼瀏覽器版正常?(瀏覽器不走這個設定檔)
- 為什麼重置 App 資料沒用?(設定在
~/.codex,不在 App 資料夾) - 為什麼重登也沒用?(登入沒問題,路線錯了)
修法:註解掉那兩行(先備份),重啟 App:
# openai_base_url = "http://127.0.0.1:17841/v1"
重啟後再跑一次 codex doctor:
✓ websocket connected (HTTP 101 Switching Protocols)
✓ reachability active provider endpoints are reachable over HTTP
reachability mode ChatGPT auth
App 恢復正常。
心法:這類問題的偵錯順序
以後遇到「某某 App 一直 Reconnecting/連不上」,照這個順序查,可以少走很多彎路:
- 先二分法:同一個服務,瀏覽器版正常嗎?
- 正常 → 問題在 App,不在網路,別浪費時間查網路
-
不正常 → 才開始查網路(DNS → IPv4/IPv6 → proxy → 防火牆)
-
看 log,不要猜:
- ChatGPT 桌面版:
~/Library/Logs/com.openai.codex/YYYY/MM/DD/*.log -
App 內建 CLI 健康檢查:
codex doctor(很多 App 有類似doctor/diagnose指令) -
注意共用設定檔:ChatGPT App 與 Codex CLI 共用
~/.codex/config.toml。任何第三方 wrapper(Codex Web GPT、Codex++、CC Switch 等)都可能改寫openai_base_url,而且它們互相搶路由。這類工具「一次只能有一個」在管路由。 -
改任何設定前先備份。所有操作都要可逆。
-
「Reconnecting, waiting for network」是結果,不是原因。它只代表「App 連不上它想連的東西」,那個東西可能是遠端主機、本機橋接服務,或真的網路——得靠 log 才知道是哪個。
附錄:本次用到的關鍵指令
# App log 位置
ls -t ~/Library/Logs/com.openai.codex/$(date +%Y/%m/%d)/*.log | head -1
# 看重試迴圈
grep -E "reconnect_started|transport_connect_failed" <log檔案> | tail
# App 內建引擎健檢
"/Applications/ChatGPT.app/Contents/Resources/codex" doctor
# 看某個埠有沒有人在聽
lsof -nP -iTCP:17841
# 看模型路由被改成什麼
grep -n "openai_base_url" ~/.codex/config.toml
# App 強制重啟
pkill -9 -f "/Applications/ChatGPT.app" && open -a ChatGPT
環境備註:本文環境為 macOS 27、ChatGPT 桌面版 26.901.51231(Codex 架構)、Tailscale 網路。版本不同時 log 路徑與選單名稱可能略有差異,但診斷思路不變。
遇到 Mac 上的 AI 工具連線或環境配置卡關?
不管是 ChatGPT 電腦版、Codex、本機模型還是遠端主機串接,如果你的工作流也遇到詭異故障,歡迎預約諮詢或交流排錯心法。



