Claude Code連線不穩?用Clash Verge設定終端機代理
在終端機使用 Claude Code,碰上登入失敗、請求逾時或連線忽快忽慢嗎?本文整理 Clash Verge 的匯入方式、代理模式與規則設定,並說明如何檢查 DNS、節點及終端機代理環境變數。跟著步驟逐項排查,有助改善 Claude Code 的連線體驗;實際使用仍視服務地區政策、帳號資格與網路環境而定。
先分清楚終端機沒走代理,還是服務本身無法使用
Claude Code 在終端機登入失敗或請求逾時時,先確認命令列流量實際走哪條網路路徑,再檢查 Clash Verge 的規則與 DNS。Clash Verge 顯示代理已啟動,不代表所有應用程式都會自動使用代理;開啟系統代理通常只會影響遵循作業系統代理設定的應用程式,終端機中的程式則可能需要明確設定環境變數。
此外,連線成功與否還可能受到 Anthropic 服務可用性、所在地區政策、帳號資格、帳戶狀態及當下網路狀況影響。代理設定正確,不代表帳號一定能登入或服務一定可用;若錯誤訊息指向帳號驗證、存取權限或服務不可用,應依官方提供的資訊處理,不要把變更出口地區視為可保證解決問題的方法。
排查時請記下作業系統、Clash Verge 版本、目前設定檔、代理模式、實際監聽連接埠,以及 Claude Code 顯示的錯誤文字。不要公開完整終端機記錄、登入權杖、API 金鑰或訂閱網址;這些內容可能包含可直接使用的帳戶憑證。
| 現象 | 優先檢查 | 不能直接據此判斷 |
|---|---|---|
| 瀏覽器可用,Claude Code 逾時 | 終端機代理環境變數、監聽連接埠 | 不代表節點一定故障 |
ECONNREFUSED 或連線遭拒 |
Clash Verge 是否執行、連接埠是否正確 | 不一定是遠端服務拒絕 |
ENOTFOUND 或名稱解析失敗 |
DNS、網域拼寫、目前網路解析狀況 | 不一定是節點速度太慢 |
| 收到 401、403 或帳戶相關提示 | 登入狀態、帳號資格、服務回應 | 不等於代理連線必然失敗 |
| curl 成功,但 Claude Code 仍失敗 | 程式啟動環境、登入流程、實際連線記錄 | 不代表兩者使用相同的代理設定 |
檢查 Clash Verge 模式、規則與監聽連接埠
先在 Clash Verge 確認設定檔已載入,核心正在執行,並查看「設定」或「一般設定」中的 HTTP、SOCKS 或混合代理連接埠。不同版本的頁面名稱可能略有不同,請以目前畫面顯示的實際數值為準。本文以 127.0.0.1:7890 作為範例;它不是所有安裝版本的固定預設值,也不是服務端連接埠。
「系統代理」與「TUN」是兩種不同的流量接管方式。系統代理會將作業系統的代理設定指向本機代理服務,但不保證終端機程式會讀取該設定;TUN 則可在較低的網路層級接管更多流量,但會涉及路由、DNS、系統權限及其他 VPN 或網路過濾程式的相容性。排查單一命令列應用程式時,先確認本機代理連接埠可用,通常比一開始啟用 TUN 更容易定位問題。
- 規則模式:請在 Clash Verge 的「連線」或「Connections」頁面查看 Claude Code 請求命中的網域、規則與策略群組。即使終端機已連到本機代理,規則仍可能將請求送往
DIRECT,或送入尚未選取可用節點的群組。 - 全域模式:可用來短暫比較規則分流是否造成差異。測試後請恢復原本模式;全域模式會改變更多應用程式的出口,不應在未評估的情況下長期取代規則配置。
- 直連模式:表示核心可能讓請求不經遠端代理節點。若網路環境無法直連目標服務,改用直連模式通常不會修復問題。
不要只根據節點延遲測試判斷 Claude Code 是否可用。延遲測試使用的網址與實際服務網域可能不同;請以連線記錄中實際出現的網域、規則命中結果及請求是否建立為依據。若記錄中完全沒有相關連線,問題可能發生在請求尚未送到 Clash Verge 之前,例如終端機沒有讀取代理變數。
設定終端機代理環境變數並執行對照測試
以下步驟安排在排查中段:先確認 Clash Verge 的本機代理連接埠,再讓目前終端機工作階段明確使用該代理。Claude Code 是在啟動它的終端機程序環境中執行;只在 Clash Verge 開啟「系統代理」,不一定會替該程序設定 HTTP_PROXY 和 HTTPS_PROXY。
macOS 與 Linux:先只套用至目前終端機
以下指令使用 Bash、Zsh 等常見 shell 語法,連接埠請依 Clash Verge 實際設定修改。HTTP 代理網址可用於 HTTP CONNECT 型 HTTPS 連線;不要因目標網址是 HTTPS,就把代理網址也改成 https://。本機連接埠支援何種協定,仍應以用戶端設定為準。
# 將 7890 替換成 Clash Verge 正在監聽的 HTTP 或混合連接埠
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"
# 查看變數是否已設定;不要在會共用的記錄中輸出憑證或權杖
env | grep -iE '^(http|https|all|no)_proxy='
# 用明確指定的代理測試 HTTPS 連線
curl -Iv --connect-timeout 10 --max-time 20 \
--proxy "$HTTPS_PROXY" https://api.anthropic.com/
curl 收到 HTTP 回應,代表至少已完成相應的 DNS、連線與 TLS 步驟;回應狀態本身不等於 Claude Code 登入成功,也不代表帳號具備服務使用資格。即使收到 401、404 或其他非成功狀態,也要搭配 TLS 是否完成、Clash Verge 連線記錄及官方服務狀態解讀。若出現連線遭拒,先確認本機監聽位址和連接埠;若出現逾時,再檢查命中規則、節點狀態及網路可達性。
確認測試結果後,在同一個終端機工作階段啟動 Claude Code:
claude
如果不希望讓之後啟動的其他程式也繼承代理設定,可在使用完畢後清除:
unset HTTP_PROXY HTTPS_PROXY http_proxy https_proxy
Windows PowerShell:明確指定代理並啟動程式
PowerShell 可在目前視窗中暫時設定程序環境變數。請使用 curl.exe 進行測試,避免部分 PowerShell 環境將 curl 解析為其他命令。執行前先確認 Clash Verge 實際連接埠,並將範例中的 7890 替換成該數值。
$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
curl.exe -Iv --connect-timeout 10 --max-time 20 `
--proxy $env:HTTPS_PROXY https://api.anthropic.com/
claude
測試完成後,可在同一視窗刪除變數:
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:http_proxy, Env:https_proxy `
-ErrorAction SilentlyContinue
如果使用 SOCKS 連接埠,部分命令列工具可以接受 socks5h://127.0.0.1:連接埠 形式的代理網址;socks5h 通常表示由代理端處理目標主機名稱解析。工具與執行環境對 SOCKS 環境變數的支援並不完全一致,因此初次測試宜使用 Clash Verge 明確提供的 HTTP 或混合代理連接埠,避免混淆協定支援與服務連線問題。
根據連線記錄檢查分流規則與 DNS
設定環境變數後,再執行一次 Claude Code 的登入或一個不涉及敏感資料的基本請求,同時開啟 Clash Verge 的「連線」頁面觀察結果。重點不是只看有沒有流量,而是確認相關網域是否出現、命中哪條規則、進入哪個策略群組,以及最終選擇的節點或直連路徑。實際網域可能因登入流程、程式版本及服務功能不同而異,應以目前連線記錄為準,不要只新增一條猜測的網域規則。
- 沒有相關連線記錄:確認 Claude Code 是從剛才設定變數的同一個終端機啟動。若使用 IDE、桌面啟動器、不同的 shell 工作階段或遠端 SSH,該程序可能沒有繼承目前終端機的環境變數。
- 連線命中 DIRECT:檢查目前設定檔中的網域規則及其順序。規則通常依序比對,較前面的規則可能先於後面的廣泛規則生效;修改自訂規則後,重新載入設定檔並再次觀察連線結果。
- 進入策略群組但未成功:確認群組目前選取的節點仍可連線,並查看核心記錄中的失敗階段。單純切換多個節點而不保留測試結果,會讓問題難以重現。
- 出現網域解析錯誤:檢查系統 DNS、Clash Verge 的 DNS 設定,以及目前核心是否正常載入設定。使用 HTTP 代理時,目標主機名稱可能由代理端或用戶端解析,具體行為會受代理協定與工具實作影響;不要將一次本機查詢結果直接當成所有連線路徑的結論。
如果連線記錄顯示已由預期策略群組送出,curl 測試也完成 TLS,但 Claude Code 仍無法登入,接下來應檢查登入流程與帳戶狀態,而不是持續改 DNS。若錯誤只發生在特定網路,請在允許且可信任的替代網路上作對照,並保持同一版本、同一設定檔與同一登入方式。不要把包含帳戶資訊的完整錯誤記錄貼到公開討論區。
持久化設定前先檢查範圍與憑證安全
在目前終端機測試成功後,才考慮是否需要長期設定。將代理變數寫入 ~/.zshrc、~/.bashrc、shell 設定檔或 Windows 使用者環境變數,會影響後續從該環境啟動的其他程式。這可能讓不需要代理的工具也改走代理,或在 Clash Verge 尚未啟動時出現連線失敗。若只有 Claude Code 需要代理,優先採用可控的啟動腳本或專用終端機工作階段,並在 Clash Verge 啟動後再使用。
也要留意環境變數繼承與憑證保護。避免把 API 金鑰直接放入可分享的命令、程式碼儲存庫、截圖或除錯記錄;在公用或多人共用的電腦上,不應將代理憑證寫成其他使用者可讀取的明文。若使用受管理的裝置、公司網路或組織提供的帳戶,請遵循組織的代理與資安規定。
最後可依下列順序收斂問題:先確認 Clash Verge 核心與本機連接埠正常,再以環境變數明確指定代理,接著用 curl 驗證網路與 TLS,之後觀察實際連線命中的規則、策略群組及 DNS 狀況;若網路層正常但仍出現帳戶、權限或服務可用性提示,便轉向官方帳戶與服務資訊確認。這樣能分辨終端機代理設定、Clash Verge 分流和服務端限制,而不必反覆重裝客戶端或一次改動多項網路設定。