Claude Code · 開發者

Claude Code 頻繁斷連、SSE 中斷?終端網路環境排查指南

Claude Code 輸出到一半突然停掉、打字速度忽快忽慢、頻繁提示 connection error?你遇到的不是 AI 不穩定,而是終端網路環境沒有針對長連接做適配。

關鍵詞:Claude Code 斷連、SSE 中斷、Claude CLI 網路、Anthropic API 排查

先講結論:Claude Code(CLI 程式設計工具)走的是 api.anthropic.com 的 SSE(Server-Sent Events)長連接串流輸出,和 claude.ai 網頁端的 HTTP 短連接完全不一個量級的網路要求。網頁端能打開不代表 CLI 環境穩定。導致斷連的根因大多在 IP 類型 + DNS + 中轉鏈路 + MTU 這四層。下面從最常見到最隱蔽,一層一層排查。

第一層:確認網路環境基準(10 秒自查)

Claude Code 的 CLI 本質是一個 HTTP 用戶端,它通過你在終端或系統代理設定裡配的 HTTP(S)_PROXY 存取外部 API。第一步是確認出口 IP 的「身份」是否乾淨:

如果基礎網路不通或不乾淨,後面的排查可以跳過——直接換個乾淨的美國住宅 IP 是最快見效的辦法。

第二層:DNS 配置 —— 最容易忽略的瓶頸

很多 CLI 用戶的終端繼承了系統 DNS 設定,而系統 DNS 往往走的是本地運營商。這導致 api.anthropic.com 被解析到離你很遠、甚至和出口 IP 地理矛盾的節點。對 Claude Code 的 SSE 流來說,DNS 解析慢 = 首包延遲高,而「IP 在美國、DNS 在國內」的地理矛盾也是 Anthropic 風控訊號。

排查:

修復:在代理用戶端的 DNS 設定中切換為遠端解析(Remote DNS)。如果你用的是系統代理 + HTTP_PROXY 環境變數,在 ~/.zshrc 或 ~/.bashrc 裡補充 export no_proxy=localhost,127.0.0.1 避免 DNS 查詢回退本地。

第三層:中轉鏈路 —— 跳數多、抖動大

從中國大陸到 api.anthropic.com 不可能直連(GFW 會 reset)。所有請求都必須經過中轉。而中轉的品質差異極大:有些便宜機房中轉的中間跳數超過 15 跳、丟包率 5% 以上,對普通網頁瀏覽可能沒感覺,但對 SSE 長連接的破壞是致命的——每一次丟包都可能導致流中斷或重新 connect。

怎麼排查鏈路品質:

如果鏈路品質差到丟包明顯、延遲高且波動大,你需要在「鏈路更穩的中轉」和「換一個更近的出口」之間選擇。一般情況下,經香港中轉的美國住宅 IP 對大陸用戶的鏈路最均衡(HK 段短 + 美國段直連 Anthropic)。

第四層:MTU 與本地網路棧

MTU(最大傳輸單元)是特別隱蔽的一個坑。如果你的本地網路 MTU 偏大(比如 1500),但中轉加密隧道有額外報頭佔用,產生的包超過鏈路最大尺寸,就會被中間路由器靜默丟棄——你的 SSH/CLI 不報錯,但 Claude Code 的輸出就是會突然停住。

排查:

第五層:代理用戶端的連接保持

Claude Code 的 SSE 長連接在「思考」和「生成」兩階段都可能持續幾十秒甚至幾分鐘。如果你的代理用戶端或系統防火牆把長連接判定為「空閒連接」並自動切斷,就會出現「明明 API 沒問題但 Claude Code 說 connection closed」的情況。

排查:

動手順序:一個拿到就做、越做越排查的路

  1. 先去 AI IP 檢測頁 看 IP 類型和 DNS
  2. curl -v https://api.anthropic.com/v1/messages 做 TLS 基準
  3. 接上代理後重複 TLS 檢測,對比延遲和成功率
  4. 改 DNS 為遠端解析
  5. 測 MTR / ping 丟包,判斷鏈路是否需要更換
  6. 調 MTU 到 1300-1400
  7. 確保代理用戶端 keepalive ≥ 300s

如果前三點做完已有明顯改善,後面可以先不做。反之,越往下走越接近真因。

大多數 Claude Code 的「不穩定」,本質是機房 IP + 本地 DNS + 劣質中轉鏈路三者疊加。解決這三個,剩下的調 MTU / keepalive 屬於錦上添花。第一步——確認出口 IP 是乾淨的住宅 IP——是所有優化的前提。