使用 Claude Code 時出現登入失敗、請求逾時、回應停在載入狀態,未必代表帳號或終端工具本身故障。從終端機送出一次請求,通常會經過 Claude Code、作業系統環境變數、Clash Verge 本機監聽連接埠、代理節點,以及遠端 API 服務等多個環節。任何一層設定不一致,都可能只呈現為「連線失敗」或「request timeout」。
排查前先確認三件事:Clash Verge 是否正在執行、目前是否有可用節點,以及終端機是否真的使用了 Clash 的代理。瀏覽器可以連線,不代表 Claude Code 也會自動使用相同代理;瀏覽器通常讀取系統代理或自身設定,而命令列工具多半依賴 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 等環境變數。
| 現象 | 優先檢查項目 | 常見原因 |
|---|---|---|
| 登入頁或驗證請求逾時 | 終端機代理環境變數 | Shell 沒有繼承系統代理,或代理連接埠填錯 |
| 提示連線被拒絕 | Clash Verge 核心與連接埠 | 核心未啟動、使用了舊連接埠,或本機代理被防火牆阻擋 |
| 偶爾成功、偶爾失敗 | 節點延遲與連線穩定性 | 節點丟包、DNS 不穩定、TCP 或 TLS 連線反覆重建 |
| 瀏覽器正常、Claude Code 異常 | 終端機的代理格式 | 命令列程式不讀取系統代理,或只支援 HTTP CONNECT |
Claude Code 的互動請求通常比單純開啟網頁更容易暴露連線品質問題。節點延遲低不代表長時間傳輸一定穩定;有些節點在短時間測速時表現良好,但持續接收回應時會出現丟包、重置或頻繁切換。建議先選擇固定節點完成登入與基本測試,再考慮使用自動選擇或 url-test 策略組。
- 規則模式:只讓符合規則的請求經過代理,適合日常使用與排查。
- 全域模式:所有可被 Clash 接管的流量都使用選定節點,適合暫時確認是否為規則匹配問題。
- 直連模式:只適合測試本地或不需要代理的服務,不適合作為受限網路中的 Claude Code 預設模式。
- TUN 模式:可接管不讀取系統代理的程式,但需要額外系統權限、路由與 DNS 設定,不應與終端環境變數同時無條件疊加。
為終端機設定 HTTP 與 SOCKS 代理
最容易控制、也最適合初次排查的方法,是在啟動 Claude Code 的同一個 Shell 工作階段設定代理環境變數。Clash 的 mixed-port 通常同時接受 HTTP CONNECT 與 SOCKS5 請求,因此可以先使用 http://127.0.0.1:7890。若你的設定檔使用其他連接埠,請替換為實際數值。
macOS 與 Linux
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7890"
claude
部分命令列工具只讀取大寫變數,部分工具則只讀取小寫變數。若測試時發現 curl 有代理,但 Claude Code 仍未使用,可以同時設定兩組名稱:
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
NO_PROXY 用於指定不應經過代理的本機或內部網域。不要把遠端 API 網域加入其中,否則請求會繞過 Clash。一般可先保留本機位址:
export NO_PROXY="127.0.0.1,localhost,::1"
如果希望每次開啟終端機都自動套用設定,可將內容加入目前 Shell 的設定檔,例如 Zsh 常見的 ~/.zshrc,Bash 常見的 ~/.bashrc。修改後執行 source ~/.zshrc 或重新開啟終端機。共用電腦不建議把包含代理帳號或密碼的 URL 直接寫入設定檔;本機 Clash 代理通常不需要額外認證。
Windows PowerShell
$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"
$env:ALL_PROXY = "socks5://127.0.0.1:7890"
$env:NO_PROXY = "127.0.0.1,localhost"
claude
PowerShell 使用 $env: 設定的變數只會套用到目前的視窗與其啟動的子程序。若關閉視窗後重新開啟,通常需要再次設定。若你使用的是 Windows 命令提示字元,可改用以下形式:
set HTTP_PROXY=http://127.0.0.1:7890
set HTTPS_PROXY=http://127.0.0.1:7890
set ALL_PROXY=socks5://127.0.0.1:7890
claude
動手測試:從 curl 到 Claude Code
不要一開始就反覆重新登入。先使用無敏感資料的公開 HTTPS 網址測試終端機能否經過 Clash 建立 TLS 連線。以下命令會指定代理並顯示連線結果:
curl -I -x http://127.0.0.1:7890 \
--connect-timeout 10 \
--max-time 30 \
https://example.com
如果得到 HTTP 回應標頭,代表終端機至少能透過本機代理完成一次 HTTPS 請求。若出現 Failed to connect to 127.0.0.1 port 7890,應回到 Clash Verge 檢查核心是否執行,以及 mixed-port 是否真的為 7890。若本機連接成功但出現 Could not resolve host,則要檢查 mihomo 的 DNS 設定、目前節點以及系統 DNS。
接著確認環境變數是否被目前 Shell 讀取:
echo "$HTTP_PROXY"
echo "$HTTPS_PROXY"
env | grep -i proxy
Windows PowerShell 可使用:
Get-ChildItem Env:*proxy*
確認後,在同一個終端視窗啟動 Claude Code。若 Claude Code 顯示認證錯誤,但請求很快得到明確回應,表示代理路徑大致可用,應依提示檢查登入流程、帳號狀態或服務端權限。若仍然是逾時,請同時觀察 Clash Verge 的連線記錄:完全沒有新連線,通常是環境變數未被工具讀取;有連線但反覆失敗,則較可能是節點、DNS、TLS 或遠端服務路徑問題。
| 測試結果 | 下一步 |
|---|---|
| curl 直連失敗,指定 Clash 後成功 | 確認 Claude Code 使用相同環境變數 |
| curl 指定 Clash 也連接失敗 | 檢查核心、節點、連接埠與 DNS |
| curl 成功,Claude Code 沒有連線記錄 | 確認工具是否支援該代理變數,或改用 TUN 測試 |
| 有連線記錄但長回應中斷 | 更換固定節點,避免自動切換並檢查丟包 |
處理逾時、回應卡住與登入失敗
請求逾時
先將節點固定為一個測試成功的選項,暫時不要使用自動選擇。接著確認系統時間正確,因為 TLS 憑證驗證會受到時間偏差影響。若使用公司網路、校園網路或公共 Wi-Fi,也要測試不同網路;同一節點在家用寬頻成功、在公司網路逾時,可能是網路出口、DNS 或防火牆政策造成。
回應卡住或長時間沒有輸出
回應卡住不一定是完全斷線,也可能是連線在串流傳輸階段被中斷。可先關閉不必要的自動切換,換用 TCP/TLS 類型較穩定的節點進行比較。若只在特定節點發生,應保留 Clash Verge 的日誌時間與節點名稱,避免反覆刪除設定。若所有節點都出現相同問題,再檢查終端代理格式、TUN 是否與環境變數互相干擾。
登入失敗或驗證頁無法完成
登入流程可能涉及瀏覽器、回呼網址與終端工具之間的切換。先確認瀏覽器和終端機使用的是同一條網路路徑,並避免同時開啟多個舊的登入工作階段。若瀏覽器能開啟驗證頁,但回到終端機後等待逾時,應查看 Clash Verge 是否有新的回呼連線,以及本機 localhost 或 127.0.0.1 是否被加入 NO_PROXY。本機回呼通常不應再次經過遠端代理。
建立可重複使用的穩定配置
確認連線正常後,再把設定整理成可維護的工作流程。日常使用可讓 Clash Verge 保持規則模式,終端機透過環境變數使用混合代理;需要測試時,則在目前工作階段暫時切換節點或清除代理變數。不要把所有流量長期交給不熟悉的全域模式,也不要同時啟用多個代理軟體,否則容易形成代理環回。
- 記錄 Clash Verge 實際使用的
mixed-port,不要假設永遠是 7890。 - 為終端機設定 HTTP、HTTPS 與 SOCKS 代理,並保留本機位址的
NO_PROXY。 - 先使用固定節點測試,再啟用自動選擇,方便區分節點問題與工具問題。
- 更新訂閱後重新確認策略組目前選中的節點,避免訂閱更新導致節點名稱或群組結構改變。
- 修改 TUN、DNS 或規則後一次只變更一項,並重新執行
curl測試。 - 結束工作時若不再需要代理,可在目前 Shell 執行
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy。
如果仍無法判斷問題位置,可以採用「本機代理連接埠、固定節點、單一終端視窗、公開 HTTPS 測試、再啟動 Claude Code」的順序重新驗證。這種做法能把變數減到最低,也能從 Clash Verge 日誌中看出請求是否真的抵達核心。當代理層已確認正常後,才進一步處理 Claude Code 版本、登入狀態或服務端回應,排查效率通常會高很多。