Claude Code 是在終端機中使用 AI 協助閱讀程式碼、修改檔案、執行指令與整理專案的開發工具。對中國大陸網路環境的使用者而言,真正容易卡住的地方通常不是命令本身,而是登入頁、驗證請求與 API 連線沒有走到正確的代理出口。本文以 Clash Verge/Clash Verge Rev 為例,從訂閱匯入、節點選擇、系統代理、終端機環境變數到分流規則,整理一套方便排錯的設定流程。Claude Code 的可用性仍取決於服務地區、帳戶資格與當地法律政策,請先確認使用方式符合相關規範。
圖形介面裡開啟系統代理,不一定代表終端機裡的 Claude Code 已經走代理。最穩妥的做法是:Clash Verge 先用規則模式,確認瀏覽器能完成登入,再為終端機設定 HTTP(S) 代理環境變數;若某些程序完全不讀取環境變數,再考慮開啟 TUN 模式。
一、Claude Code 連線時到底需要代理什麼
Claude Code 並不是只連線一個固定網域。啟動、登入、取得授權、傳送提示內容、接收串流回應,可能分別涉及帳戶頁面、API 入口、驗證服務與其他網路資源。不同版本、登入方式與服務端調整,都可能使實際連線網域有所變化,因此不建議只憑一個網域名稱判斷設定是否完整。
從 Clash 的角度看,可以把連線拆成三層:
- 瀏覽器登入層:登入頁和授權頁通常由瀏覽器開啟,首先受系統代理與瀏覽器自身代理設定影響。
- 終端機請求層:Claude Code 在命令列中發出的 HTTPS 請求,是否走代理取決於程式是否讀取系統代理,或是否讀取
HTTP_PROXY、HTTPS_PROXY等環境變數。 - 核心分流層:請求進入 Clash 後,才會依照網域規則、IP 規則與兜底規則決定走節點還是直連。
因此,「瀏覽器可以開啟網站」只能證明瀏覽器這條路通了,不能直接證明 Claude Code 使用的終端機程序也通了。排查時要分別測試瀏覽器、命令列與 Clash 的連線記錄。
| 現象 | 較可能的原因 | 優先檢查位置 |
|---|---|---|
| 登入頁完全打不開 | 系統代理未開、節點不可用或規則走了 DIRECT | Clash 模式、節點、瀏覽器代理 |
| 瀏覽器能登入,終端機失敗 | 終端機程序沒有繼承代理設定 | HTTP_PROXY、HTTPS_PROXY、NO_PROXY |
| 登入成功但 API 請求逾時 | API 網域未命中代理規則,或節點不穩定 | Connections、日誌、節點切換 |
| 部分指令正常、部分指令失敗 | 不同請求使用不同網域,或 DNS/代理模式不一致 | 規則順序、DNS、TUN |
二、Clash Verge 使用前的準備工作
以下步驟以支援 mihomo 核心的 Clash Verge Rev 為主要參考。不同版本的按鈕名稱可能略有差異,例如「設定檔」可能顯示為 Profiles,「代理」可能顯示為 Proxies,但基本概念相同。先不要急著修改大量 YAML,按照由外到內的順序確認環境,效率會更高。
- 匯入有效訂閱在「設定檔」頁匯入訂閱連結,確認設定檔能成功下載並處於選中狀態。訂閱連結包含帳戶識別資訊,不要貼到公開聊天或問題回報中。
- 確認有可用節點進入「代理」頁,查看策略組裡是否出現節點。先選一個延遲較低、近期測試成功的節點,不要一開始就依賴自動選擇組。
- 模式設為規則日常使用先選 Rule。規則模式可以讓需要代理的服務走節點,其他流量依規則直連,方便觀察是哪個請求出了問題。
- 確認混合埠口在「一般」或「設定」頁查看 Mixed Port 的實際數值。Clash Verge Rev 常見預設值可能是 7897,但不可把 7897 當成所有版本的固定值,後面的環境變數必須以介面顯示為準。
如果訂閱頁更新失敗,先檢查連結是否複製完整、系統時間是否正確,以及目前網路是否能連到訂閱服務。訂閱更新失敗與 Claude Code 登入失敗是兩件事,不要在訂閱尚未載入時反覆更換終端機參數。
先確認「代理入口」再設定終端機
假設 Clash Verge 顯示混合埠口為 7897,HTTP 與 SOCKS5 通常都可以透過同一個混合埠口提供服務;但環境變數裡的 HTTP_PROXY、HTTPS_PROXY 應優先填入 HTTP 代理格式,不能只把 SOCKS5 格式硬套到所有程式。
三、先用系統代理完成瀏覽器登入
在 Clash Verge 主畫面開啟「系統代理」,再用瀏覽器開啟 Claude Code 所需的登入或授權頁面。系統代理本質上是把作業系統的 HTTP/HTTPS 代理指向本機回環位址,例如 127.0.0.1:7897。瀏覽器若遵循系統設定,請求就會先進入 Clash 核心,再由核心決定直連或經過節點。
登入前建議做兩個驗證。第一,在瀏覽器中開啟一般的 IP 查詢頁,記錄關閉代理與開啟代理時顯示的出口是否不同;第二,在 Clash Verge 的「連線」頁觀察瀏覽器發出的請求,確認相關網域被分配到預期的代理策略組,而不是顯示為 DIRECT。不要只看系統代理開關的狀態,Connections 才能證明請求確實進入核心。
瀏覽器若安裝過代理切換擴充功能,必須檢查它是否覆蓋了系統代理。有些擴充功能設定為「直連」或指向另一個本機埠口,會讓你看到系統代理已開啟,實際請求卻沒有經過 Clash。遇到這種情況,暫時停用擴充功能,或改成使用系統代理後重新啟動瀏覽器。
登入流程可能需要重新整理、允許彈出視窗,或在瀏覽器與終端機之間完成一次授權確認。若登入頁能開啟但回到終端機後仍顯示授權失敗,先不要立即重複登入,應該轉到下一節檢查終端機代理。
四、為終端機設定 HTTP(S) 代理
許多命令列工具不會自動讀取 Windows 或 macOS 的系統代理,這是 Claude Code 常見的卡點。可以在啟動 Claude Code 前,為目前終端機工作階段設定代理環境變數。以下假設 Clash Verge 的混合埠口是 7897;如果你的介面顯示其他埠口,請替換最後的數字。
Windows PowerShell 可以使用:
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:ALL_PROXY="http://127.0.0.1:7897"
$env:NO_PROXY="localhost,127.0.0.1"
Windows 命令提示字元可以使用:
set HTTP_PROXY=http://127.0.0.1:7897
set HTTPS_PROXY=http://127.0.0.1:7897
set ALL_PROXY=http://127.0.0.1:7897
set NO_PROXY=localhost,127.0.0.1
macOS 或 Linux 的常見 Shell 可以使用:
export HTTP_PROXY=http://127.0.0.1:7897
export HTTPS_PROXY=http://127.0.0.1:7897
export ALL_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
HTTP_PROXY 和 HTTPS_PROXY 的作用不是把所有流量變成明文 HTTP,而是告訴支援這些變數的程式,使用哪個代理伺服器建立請求。NO_PROXY 用來排除本機服務,避免終端機存取 localhost、本地開發伺服器或 Clash 控制介面時繞一圈代理。
設定完成後,先用命令列測試,不要直接把錯誤歸因於 Claude Code:
curl -I https://api.anthropic.com
如果回應是 HTTP 狀態碼,或至少能看到由遠端伺服器返回的標頭,表示終端機已成功建立 HTTPS 請求;收到 401、403 等應用層回應,也代表網路路徑已經打通,這和「連線逾時」是不同問題。若 curl 顯示 connection refused,通常是埠口寫錯或 Clash 核心沒有啟動;若顯示 timeout,則要回到節點、規則和網路環境排查。
五、Clash Verge 分流規則與 DNS 設定
規則模式下,Claude Code 相關網域必須命中代理策略組。實際網域會隨登入流程和版本變化,設定時可先從 Clash Connections 或日誌中觀察失敗請求,再針對已確認的網域增加規則。不要只複製網路文章中的完整清單,因為過時或過寬的規則可能令不相關流量全部繞路。
在自己管理的覆寫設定或設定檔中,可以參考以下規則結構。最後的策略組名稱必須改成你訂閱裡實際存在的名稱,例如「節點選擇」或「PROXY」:
rules:
- DOMAIN-SUFFIX,anthropic.com,節點選擇
- DOMAIN-SUFFIX,claude.ai,節點選擇
- DOMAIN-SUFFIX,console.anthropic.com,節點選擇
- MATCH,節點選擇
這段只是示意,不代表每個版本都需要全部條目。規則是由上往下比對,較具體的網域規則應放在兜底的 MATCH 之前。若設定檔由訂閱服務管理,直接修改原始檔案可能在更新後被覆蓋,應使用 Clash Verge 的覆寫功能,或在訂閱服務提供的自訂規則入口中處理。
DNS 也會影響結果。若瀏覽器可以登入,但終端機偶爾出現 domain resolve failed,可以先看 Clash 日誌是否出現 DNS 解析錯誤,再確認是否同時啟用了多個 DNS 管理工具。不要在問題尚未定位前同時更改 DNS、TUN、規則和節點,否則很難知道是哪一項改動產生效果。一般排查順序是:先確認代理埠口,再確認規則命中,最後才調整 DNS。
TUN 透過虛擬網卡接管更多系統流量,能處理不讀取系統代理的程序,但通常需要服務權限或系統管理員授權,也可能與其他 VPN、虛擬網卡、企業安全軟體衝突。先用系統代理加環境變數完成測試,確認基本路徑正常後,再為確實需要整機接管的情況啟用 TUN。
六、穩定使用與故障排查流程
完成首次登入後,建議固定使用「規則模式+一個已測試節點」,不要每次啟動都同時更換模式、節點和設定。穩定性通常來自可重現的設定,而不是不斷切換選項。節點選擇可以先以延遲較低、封包遺失較少為條件,再觀察 Claude Code 實際回應速度;延遲數字低不等於串流速度一定快。
- 先看 Clash 日誌執行 Claude Code 或 curl 的同一時間,觀察是否出現目標網域、命中規則與出口節點。沒有任何連線記錄,表示請求沒有進入 Clash。
- 再看終端機錯誤connection refused 通常指向本機埠口,timeout 多半與節點或網路路徑有關,TLS 或 certificate 錯誤則要檢查系統時間與中間代理。
- 只更換一個變數先換節點,再重試同一個命令;若仍失敗,再切換規則或檢查環境變數。一次改三項,會失去對照基準。
- 成功後保存設定把實際使用的埠口、模式、節點策略組和終端機環境變數記下來。重新啟動電腦或開新終端機後,環境變數可能不會自動保留。
如果只想暫時取消代理,可以在目前終端機中清除變數,而不是刪除整個 Clash 設定:
# PowerShell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY
# macOS / Linux
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
若使用 TUN 後出現本地開發網站無法開啟、Docker 網路異常或其他 VPN 失效,先關閉 TUN,恢復系統代理路徑作對照。許多本地工具應加入 NO_PROXY,但具體網域和網段應依自己的開發環境設定,不要盲目把大範圍位址全部排除。
七、常見問題
瀏覽器可以登入,Claude Code 卻顯示連線失敗,怎麼辦?
先確認目前終端機是否有 HTTPS_PROXY,並把它設定為 Clash Verge 實際顯示的混合埠口。接著執行 curl -I https://api.anthropic.com,再觀察 Clash Connections 是否出現請求。瀏覽器成功不代表命令列程序會自動繼承系統代理。
應該使用 Rule、Global 還是 Direct?
日常使用建議 Rule,讓已設定的服務網域走代理、其他流量依規則處理。Global 適合暫時確認某個節點能否連線,Direct 則適合做本機網路對照。測試完成後切回 Rule,避免所有本地流量都繞道節點。
需要一開始就開 TUN 嗎?
不需要。先用系統代理和終端機環境變數完成登入與 API 測試;只有在目標程序不支援代理環境變數、也不遵循系統代理時,才考慮 TUN。啟用前要留意管理員權限、其他 VPN 與虛擬網卡衝突。
設定好的代理在重新開啟終端機後消失了,正常嗎?
正常。PowerShell 的 $env: 和 macOS/Linux 的 export 通常只作用於目前工作階段。可以先每次啟動專案時手動設定,確認穩定後再依自己的 Shell 設定檔加入持久化內容;多人共用電腦時,不要把包含帳戶資訊的敏感內容寫入公開腳本。