Claude Code 連線卡住,先分清楚是哪一段網路沒通
Claude Code 在終端機中等待回應,不一定代表模型服務本身故障。一次操作可能牽涉帳號驗證、API 請求、版本檢查,以及你自行設定的模型供應商或 API 相容端點。瀏覽器能開啟 Claude 網頁,也不表示終端機裡的程式會自動使用同一條代理路線:瀏覽器可能讀取作業系統代理設定,但 Node.js 程式、shell 工作階段和子行程,是否採用該設定,會受客戶端實作與環境變數影響。
排查時先記下問題發生在哪個動作:啟動程式、登入、送出提示,還是等待工具呼叫完成。接著在 Clash Verge 的連線紀錄中,觀察操作當下是否出現新連線、連線的主機名稱,以及命中的規則和策略組。若日誌完全沒有相關紀錄,優先檢查終端機是否使用本機代理埠,或是否由 TUN 接管;若有紀錄但連線失敗,再看規則是否送往預期節點、核心是否回報逾時,以及 DNS 解析是否正常。只憑「Claude Code 卡住」就反覆換節點,容易把環境變數錯誤誤當成節點品質問題。
以下步驟以 Clash Verge 搭配 Mihomo 核心為例。各版本的按鈕名稱或設定位置可能略有不同,請以你目前介面顯示的混合連接埠和核心狀態為準。本文不假設所有帳號、地區或自訂供應商都使用完全相同的主機清單;實際要代理哪些網域,應以連線日誌和目前服務端設定為依據。
先選代理模式:系統代理、環境變數或 TUN
系統代理適合先測試一般桌面應用程式,但它不保證每個終端工具都會跟著切換。啟用 Clash Verge 的系統代理後,可以確認桌面瀏覽器是否正常,再回到終端執行連線測試。如果瀏覽器正常、終端仍然逾時,這通常是線索:不要先判定節點無效,而要檢查 CLI 使用的代理設定。關閉系統代理也不等於清除 shell 裡先前設定的環境變數,兩者可能同時存在。
對單一終端程式而言,HTTP_PROXY 與 HTTPS_PROXY 通常是最容易驗證的方式。在 Clash Verge 的設定或覆寫頁面確認混合埠,例如常見的 7890;不要直接假設自己的埠號相同。確認核心正在監聽後,在目前 shell 工作階段設定代理,並用相同終端啟動 Claude Code。下例只是格式示範,請把連接埠換成介面實際顯示的數值。
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
若你的程式使用 SOCKS 代理,先確認它支援的代理協定與 Clash Verge 對應監聽埠,再依程式文件設定;不要把 SOCKS 埠當成 HTTP 代理埠使用。環境變數值應包含協定,例如 http://,不能只填 127.0.0.1:7890。若組織的網路政策要求使用指定代理,請先遵循該政策,不要自行改成未授權的外部代理。
如果希望未設定代理的應用程式也由 Clash 接管,可考慮啟用 TUN。TUN 與環境變數的作用方式不同:前者在網路層接管符合條件的流量,後者則由應用程式讀取代理位址。兩者同時使用時,流量可能重複經過代理或形成不易判斷的路徑;初次排障建議一次只測一種方式。若使用 TUN,請確認系統已授予必要權限、核心已成功啟動,並檢查路由或防火牆是否阻擋虛擬介面。
在 macOS、Linux 與 Windows 設定終端代理
macOS 與 Linux 常見 shell 可在目前終端設定環境變數。設定後,請在同一個視窗執行連線測試和 Claude Code;如果另開一個終端,變數不一定會繼承。確認流程正常後,才考慮將設定加入 ~/.zshrc、~/.bashrc 等 shell 啟動檔。永久寫入前,先確認你需要的是每次開啟終端都使用代理,還是只在開發工作階段使用。永久設定較方便,但也容易在 Clash Verge 已關閉時讓其他程式繼續指向失效的本機埠。
curl -v https://api.anthropic.com
這個測試的重點是觀察是否能建立連線、是否出現代理連線資訊,以及 TLS 握手有沒有停滯,不是要求 API 根網址一定回傳成功的模型回應。服務可能對根路徑回傳錯誤狀態碼;只要連線與 TLS 已完成,便不能單憑該狀態碼判定代理失敗。測試時同步查看 Clash Verge 的連線紀錄,確認請求確實到達核心,並記下命中的規則。
Windows PowerShell 可在目前視窗使用環境變數語法設定代理。完成測試後,關閉該視窗即可清除這個工作階段的值;如要長期設定,則需另外評估使用者或系統層級的環境變數,並確認不會干擾公司內網或其他開發工具。
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:http_proxy = $env:HTTP_PROXY
$env:https_proxy = $env:HTTPS_PROXY
若你在 VS Code、IDE 內建終端或遠端 SSH 工作階段中執行 Claude Code,要特別確認程式實際在哪一台主機執行。遠端主機上的 127.0.0.1 指向遠端本身,不是你桌面電腦上的 Clash Verge。此時需要在執行程式的那台主機設定可達的代理服務,或使用適合遠端環境的網路方案;不能只因本機終端測試成功,就假設遠端工作階段也能連上。
用連線紀錄核對規則、節點與環境變數
先在 Clash Verge 切換到容易觀察的代理模式,並在 Proxies 或策略組畫面選定一個已確認可用的節點。此時不要同時調整大量規則,否則連線結果改變後,很難知道是哪個變更造成。接著在終端執行一次連線測試,再啟動 Claude Code 執行原本會卡住的動作。若日誌顯示流量命中 DIRECT,就檢查規則順序與匹配條件;若命中代理策略組,則確認該組目前選中的節點確實可用。
規則不要只憑記憶猜測。Claude Code 的服務端點可能因登入方式、地區、版本或自訂供應商設定而異;若帳號使用第三方相容 API,實際主機也可能完全不同。建議在重現問題時查看連線紀錄,依照出現的網域逐項核對規則。需要新增規則時,優先使用精確網域或可信賴的後綴條件,並放在會先命中的廣泛規則之前。避免為了「讓它通」而把所有流量長期設成全域代理,這會增加不必要的路由範圍,也讓內網與本機服務更難排查。
如果日誌有連線紀錄,但切換節點後情況沒有改善,請分別檢查代理本身與服務端回應。先以同一個代理位址測試基本 HTTPS 連線,再觀察 Claude Code 是否回報驗證失敗、權限不足、速率限制或 API 端點錯誤。這些狀態不等同網路逾時:例如憑證、登入令牌或供應商設定有問題時,換節點不會修正帳號狀態。請依照錯誤類型採取相應處理,並避免在公開日誌或截圖中暴露 API 金鑰、訂閱網址或授權資訊。
DNS 也是容易忽略的一環。若 Clash Verge 使用 fake-ip、DNS 覆寫或嗅探功能,請確認相關設定與目前核心相容,並在每次只改一個選項後重新測試。若同一網域時而直連、時而代理,除了規則外,也要檢查應用程式是否快取了解析結果、是否存在自訂 DNS,或 TUN 與系統代理設定是否互相影響。排查期間可記錄時間、目標網域、命中規則、策略組與錯誤訊息,這比只留下「剛才突然好了」更有助於下次重現。
常見卡住情境與安全回復方式
設定代理後完全連不上時,先確認 Clash Verge 核心仍在執行、本機監聽埠沒有被其他程式占用,而且環境變數中的埠號與目前設定一致。若終端回報連線被拒絕,通常應先查本機監聽,而不是立即修改遠端網域規則。可暫時移除終端代理設定,再測一次,以判斷問題是本機代理入口,還是代理之後的出口路線。
瀏覽器可用、Claude Code 仍逾時時,先確認 CLI 是否真的讀取了環境變數。可檢查目前 shell 中的代理值,但不要把含帳密的代理 URL 貼到公開討論區。接著確認啟動 Claude Code 的方式:若它由 IDE、工作排程器或另一個 shell 啟動,可能沒有繼承你剛才設定的變數。重新從已設定環境的終端啟動,有助於排除這個差異。
登入頁面開得出來,但登入無法完成時,請觀察是否有本機回呼、瀏覽器跳轉或驗證主機連線遭到阻擋。終端工具啟動瀏覽器後,授權流程可能分別由瀏覽器與 CLI 完成;瀏覽器可達不表示 CLI 的換票請求也可達。使用者若同時啟用多個代理程式,還要確認登入回呼是否回到原本的本機位址,而非被另一個程式攔截。
調整環境變數後想回復原狀,可在 macOS 或 Linux 的目前 shell 執行以下指令;PowerShell 則可移除對應的程序層級變數。若曾把代理寫入 shell 啟動檔,記得一併移除該行並重新開啟終端。恢復後可再確認 Clash Verge 的系統代理開關,避免程式退出時仍留下錯誤的代理狀態。
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
相較於只會切換系統代理的簡易工具,或需要手動為每個 CLI 分別試錯的設定方式,Clash Verge 能讓你集中檢查核心狀態、代理策略與連線紀錄,再配合終端環境變數精確處理 Claude Code 的流量。若目前仍被連線逾時困住,建議先用一個可確認的代理埠和節點完成測試,再依實際日誌逐步收斂規則;需要管理設定檔與節點時,可前往下載 Clash V.CORE,將終端代理和日常代理設定整理在同一套工作流程中。