Claude Code 在終端機連線不穩,問題可能出在哪裡
Claude Code 透過終端機與 Anthropic 服務互動,程式啟動後除了送出模型請求,也可能需要完成登入、讀取帳戶資訊,以及維持串流回應。當你遇到指令停在等待畫面、回應中途斷線,或同一個工作階段有時成功、有時逾時,問題不一定是模型服務故障;終端機程序是否使用代理、Clash Verge 的規則是否將請求送往預期節點,也都值得檢查。
特別要留意,瀏覽器能開啟網站,不代表 Claude Code 一定走同一條網路路徑。瀏覽器可能使用自己的代理擴充功能,而終端機中的 Claude Code 通常依賴程序環境變數或系統網路設定。若只有瀏覽器流量經過 Clash,終端機請求仍可能直連;反過來說,若環境變數指向錯誤的本機連接埠,即使 Clash Verge 已啟動,Claude Code 也可能連不上。
本文以先確認 Clash Verge 代理狀態,再設定終端機環境變數,最後檢查分流與連線紀錄為主線。不同版本的 Clash Verge、作業系統和 Shell 介面可能略有差異,選單名稱請以你實際看到的版本為準;排錯時應先一次只改一項,避免同時切換節點、模式與代理變數,讓原因更難判斷。
先確認 Clash Verge 已載入設定並能正常代理
在終端機輸入任何代理設定前,先確認 Clash Verge 本身可以工作。開啟應用程式後,檢查設定檔或訂閱是否已載入,核心是否正在執行,並確認目前有可選用的代理節點。若設定檔更新失敗、代理群組空白,或節點測試持續失敗,先處理這些問題;否則即使環境變數填寫正確,終端機也只會把請求送到沒有正常服務的本機入口。
接著查看 Clash Verge 的混合連接埠(mixed-port)。它是本機 HTTP 與 SOCKS 代理共用的入口,但連接埠號會依設定檔和應用程式設定而異,不能只照抄其他教學中的數字。到 Clash Verge 的設定或核心設定頁面確認實際值;如果你打算使用 HTTP 代理環境變數,還要確認該入口接受 HTTP 代理請求。若你使用自訂的 HTTP 與 SOCKS 連接埠,應依各自用途填寫,不要把一個連接埠當成兩種協定都必然可用。
| 檢查項目 | 確認方式 | 不符合時的處理方向 |
|---|---|---|
| 設定檔與訂閱 | 確認已載入的設定檔不是空白,且節點與策略群組可見 | 檢查訂閱是否過期、更新是否成功,以及目前啟用的是不是剛編輯的設定 |
| 核心狀態 | 確認 Clash Verge 顯示核心正在運作 | 檢查核心錯誤訊息,並確認沒有其他代理程式占用相同連接埠 |
| 本機代理連接埠 | 在設定中查看 mixed-port 或 HTTP 代理的實際數字 | 以目前生效的設定為準,更新終端機變數,不要假設固定使用某個埠號 |
| 代理策略 | 確認測試用的策略群組已選取可用節點 | 先完成節點連線測試,再檢查 Claude Code 相關目的地的規則命中結果 |
建議先用 Clash Verge 的連線紀錄確認應用程式是否能建立一般代理連線,再開始設定 Claude Code。這一步可把問題拆成兩部分:若 Clash 自身無法連線,先排查設定檔或節點;若 Clash 一般連線正常,Claude Code 卻失敗,再集中檢查終端機環境與目的地分流。
為終端機設定代理環境變數
許多命令列工具會讀取 HTTP_PROXY、HTTPS_PROXY 或小寫形式的環境變數,將 HTTP/HTTPS 請求交給指定的本機代理。實際支援情況仍取決於工具版本與其網路函式庫,因此設定後要以 Claude Code 的實際連線結果驗證。使用環境變數的好處是範圍明確:你可以只在目前終端機工作階段測試,不必一開始就讓所有應用程式都改走代理。
在 macOS 或 Linux 的 Bash、Zsh 終端機中,將下例的 7890 改成 Clash Verge 顯示的 HTTP 或 mixed-port 實際連接埠:
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"
以 http:// 作為代理位址開頭,表示連到本機 HTTP 代理入口;這不代表 Claude Code 對外的 HTTPS 流量會變成未加密,HTTPS 連線仍會透過代理建立。若你的 Clash Verge 設定提供的是 SOCKS 入口,就不要直接把 SOCKS 連接埠當成 HTTP 代理使用;請確認 Claude Code 所用工具是否支援該代理格式,或改用可供 HTTP 用戶端使用的本機入口。
Windows PowerShell 可在目前視窗中設定環境變數。完成後,從同一個 PowerShell 視窗啟動 Claude Code,避免只在一個視窗設定、卻從另一個視窗執行:
$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
如果這種暫時設定有效,再考慮將變數加入你常用的 Shell 啟動檔,例如 Zsh 的設定檔,或整理成專案專用的啟動命令。不要不加判斷地把代理變數寫進所有專案、CI 環境或系統層級設定:換到未執行 Clash Verge 的網路環境時,舊變數仍可能指向不存在的本機入口,造成新的連線故障。
確認 Claude Code 啟動前,先檢查變數內容是否正確。macOS/Linux 可用 env | grep -i proxy 查看相關值;PowerShell 可用 Get-ChildItem Env:*proxy*。若要停止目前工作階段的代理設定,macOS/Linux 可執行 unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy;PowerShell 則可用 Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:http_proxy, Env:https_proxy。這些操作只影響目前終端機工作階段,不會替你改動 Clash Verge 的核心設定。
檢查規則分流、連線紀錄與終端機環境
代理變數的作用是讓請求抵達 Clash Verge;規則分流則決定請求進入 Clash 後要走哪個策略。兩者是不同環節。若連線紀錄完全看不到 Claude Code 發出的請求,先檢查環境變數是否在啟動 Claude Code 的同一個終端機中生效、本機連接埠是否正確,以及程式是否支援該代理方式。若紀錄中看得到目的地,但策略顯示 DIRECT(直連),則應檢查規則順序與策略群組,而不是立刻把問題歸咎於終端機。
排查時可從連線紀錄中觀察實際出現的主機名稱和策略結果,再依你使用的設定檔調整分流。Anthropic 服務可能涉及不同用途的主機與請求路徑,實際連線目標也可能隨產品版本和功能變動,因此不宜只憑一份固定網域清單推斷所有流量。以當下失敗時紀錄中的目的地為線索,確認它是否套用預期的代理策略;如果設定檔是遠端訂閱,也要留意訂閱更新是否覆蓋了本機修改。
| 觀察到的狀況 | 優先檢查 | 建議驗證 |
|---|---|---|
| 連線紀錄沒有相關請求 | 終端機是否繼承代理變數、連接埠是否正確 | 從設定變數的同一個終端機重新啟動 Claude Code,並確認 Clash 核心仍在執行 |
| 請求出現在紀錄中,但策略是 DIRECT | 規則順序、規則模式與設定檔是否為目前生效版本 | 對照目的地主機名稱,確認規則是否命中預期策略群組 |
| 請求走代理,但仍然逾時 | 節點穩定性、長連線品質,以及是否同時啟用其他 VPN | 更換一個可用節點做短時間對照,並留意錯誤是否從逾時變成其他類型 |
| 瀏覽器正常,終端機失敗 | 瀏覽器代理與終端機代理是否分開設定 | 檢查 Shell 變數、IDE 內嵌終端的繼承環境,以及啟動 Claude Code 的方式 |
| 部分請求成功、部分請求失敗 | 不同目的地是否命中不同分流規則,或環境中是否有例外設定 | 記下失敗時間與目的地,逐筆比對連線紀錄及規則命中結果 |
如果你是在 VS Code 等 IDE 的內嵌終端機使用 Claude Code,還要考慮 IDE 的啟動方式。若 IDE 在你設定環境變數之前已經開啟,它的子終端機可能仍沿用舊環境;可先完全關閉 IDE,再從已設定代理的終端機重新啟動,或在 IDE 的終端機中重新設定變數後再啟動工具。透過 SSH 連到遠端主機時,本機 Clash Verge 的 127.0.0.1 指的是遠端主機本身,不會自動指向你桌面電腦的代理;此時應改用遠端主機實際可連線的代理入口,並確認防火牆與網路政策允許該連線。
全域 TUN 模式可以涵蓋部分不理會系統代理或環境變數的流量,但它會改變更多系統網路路徑,也可能與公司 VPN、虛擬機或其他網路工具衝突。建議先透過終端機環境變數與連線紀錄完成定位;只有在確認程式沒有使用代理、且你了解相關路由影響時,才把 TUN 當作交叉驗證方式。切換模式後應重新測試並記錄結果,測完若不需要就恢復原本設定。
依錯誤訊號逐步排除,避免改一堆設定
不同錯誤訊息代表的問題層次可能不同。連線逾時較常需要比對節點狀態、代理路徑與長連線;若出現明確的登入或權限錯誤,則不應只靠更換代理節點處理。代理只能協助請求依預期網路路徑送出,無法修正錯誤的帳戶狀態、失效的登入資訊或服務端拒絕。排錯時請保留原始錯誤訊息,並將網路問題與帳戶問題分開處理。
比較可靠的測試順序是:先確認 Clash Verge 核心正常且節點可用;再確認終端機變數指向正確的本機代理連接埠;接著啟動 Claude Code,於連線紀錄中查找請求;最後檢查對應策略與錯誤類型。每次只改一項,例如先修正代理連接埠、重新測試,再調整規則。這種方式能保留清楚的前後對照,也方便你在團隊中重現問題,而不是一次改動多個設定後仍不知道哪一項真正有效。
- 逾時或重試不斷:確認目前節點可用、終端機請求有進入 Clash,並檢查目的地是否被錯誤送往直連策略。
- 連線拒絕:核對本機代理連接埠是否正確、Clash 核心是否正在監聽,以及是否有其他程式造成連接埠衝突。
- 只有 IDE 終端失敗:比較一般終端機與 IDE 內嵌終端的環境變數;必要時重新啟動 IDE,讓它取得更新後的環境。
- 換網路後才失敗:檢查是否將本機代理變數固定寫入啟動檔,並確認新環境中 Clash Verge 已啟動且連接埠一致。
- 出現登入或帳戶錯誤:依 Claude Code 的登入流程確認帳戶狀態與授權,不要把帳戶問題一概當成代理故障。
也請保護好訂閱連結、帳戶憑證與終端機紀錄。設定檔或請求記錄可能包含節點資訊、私有主機名稱或其他敏感資料,分享錯誤畫面前先遮蔽這些內容。公司或學校網路若有指定的代理及安全政策,應先遵循管理規範;不要為了測試而公開本機代理連接埠,或在不可信網路中開放無驗證的代理服務。
有些只提供瀏覽器擴充功能的代理工具,對終端機程序的支援有限;而只在 Shell 裡設定環境變數,若缺少可觀察的分流紀錄,也不容易判斷請求實際走向。Clash Verge 將本機代理入口、策略選擇與連線紀錄整合在同一個工作流程中,能讓你分別檢查「請求是否進入代理」和「規則把它送去哪裡」,更適合逐步定位 Claude Code 的終端機連線問題。若你想依自己的作業系統開始設定,可先查看可用版本與安裝資訊。