一、為什麼「瀏覽器可以、CLI 卻全數逾時」在 Claude Code 場景特別常見
命令列 AI 工具的典型啟動路徑,通常不是單一長連線,而是多個彼此獨立的 HTTPS 工作階段:安裝階段要向 npm registry 拉 tarball;更新或相依可能再碰 github.com、objects.githubusercontent.com 這類物件儲存;真正工作時,還要把請求送到 Anthropic 提供的 API 主機(常見為 api.anthropic.com,實際專案中請以連線日誌與官方文件為準)。這些網域在你的訂閱規則裡,很容易被切成「有的走代理、有的直連」——半通狀態下,錯誤訊息卻常被簡化成同一個詞:timeout。
另一個拖垮體感的因素,是 npm 逾時 與 API 逾時同時發生時,使用者會以為「整個 Claude Code 壞掉」,其實只是兩條出口節點品質不一致,或其中一條被 DNS/fake-ip 誤導到錯誤的解析結果。處理方式應是分段驗證:先確認本機混合埠與 shell 代理無誤,再對照 Clash 連線日誌,看每一跳目標主機究竟命中哪一條規則。
若你遇到的是「偶發成功、多數失敗」,請優先懷疑策略群組選到高延遲或頻繁斷線的節點,而不是急著重裝 Node。把 API 與大型檔案下載放在較穩定的同一分組,通常比來回切換「全域/規則」更能穩定體感。
二、先把流量地圖畫出來:npm、GitHub、Anthropic 各走哪裡
在動規則之前,建議先用紙筆或備忘列出你機器上實際會碰到的主機類型。下列清單是實務上最常需要一併收斂的条目(名稱會隨官方調整,以你本機 curl -v 與 Clash 日誌為準):
- 套件註冊與 tarball:
registry.npmjs.org、部分情況下還有 npm 相關 CDN 子網域。 - GitHub Web 與 API:
github.com、api.github.com;下載 Release 時常見objects.githubusercontent.com。 - Anthropic/Claude API:
api.anthropic.com與同公司相關網域(若日誌出現額外的 analytics 或設定主機,亦應一併納入規則或排除清單)。
當你使用 GitHub CLI(gh)或從原始碼編譯依賴時,實際連線可能從上述主機延伸到 S3、Fastly 或其他第三方 CDN。解法不是人肉猜網域,而是保持日誌開啟,針對「失敗當下」出現的 SNI 與 Host 去補規則;這與《Cursor MCP 與 GitHub 路由》的排查哲學相同:先看真實連線,再談口語化的「GitHub 打不開」。
三、終端機一定要先認本機混合埠(與 Claude Code 無關的通用前置)
Claude Code CLI 仰賴 Node 生態系工具鏈,因此幾乎一定會碰到「shell 預設直連」這個老問題。若只在圖形介面開啟系統代理,而沒有在終端機設定 HTTPS_PROXY/ALL_PROXY,則 npm 可能永遠在你的出口網路下半套握手,直到觸發逾時。
請依你的作業系統打开對應的終端機教學:在 macOS 上可沿用前引的終端機環境變數稿;在 Windows 上若是 PowerShell 或 WSL,請注意 127.0.0.1 所指的是哪一層環境——WSL 與 Windows 宿主對迴環位址並非永遠相同,錯置時會出現「同一指令在 CMD 可行、在 WSL 全滅」的現象,這類案例的共通點仍是把代理 URL 指到真正聽著 Clash 的那張網路介面。
替 npm 另外下 npm config set https-proxy 往往能把問題縮小:有些團隊腳本只讀 npm 自身設定,忽略 shell 匯出的變數。若你同時使用 pnpm 或 yarn,也要檢查它們各自的 proxy 欄位是否空白。
四、Clash 規則怎麼寫:讓「開發者三件套」落在同一策略群組之前
在 Mihomo 系家族的規則檔裡,規則順序決定命運:MATCH 之前的每一筆都比後面的細節更優先。實務上我們會希望「已知的長尾依賴」——npm、GitHub、Anthropic API——在早段就被送到你可控的 PROXY 群組,而不是落入某條過於寬鬆的地理分流或 DIRECT。
下面是一段示意用的骨架(請將 PROXY 換成你設定檔裡實際的策略名稱,勿原封不動複製到生產環境):
rules:
- DOMAIN-SUFFIX,npmjs.org,PROXY
- DOMAIN-SUFFIX,npm.community,PROXY
- DOMAIN-KEYWORD,github,PROXY
- DOMAIN-SUFFIX,anthropic.com,PROXY
# Add host-level lines only after you confirm them in logs
為什麼這裡用 DOMAIN-KEYWORD,github 這樣較寬的寫法?因為 GitHub 相關資產常常落在不同子網域之間跳轉;若只寫單一主機,很容易漏掉「Release 二進位實際從物件儲存下載」那一跳。你也可以改為多条 DOMAIN-SUFFIX,換來更精準、但維護成本更高;取捨取決於你是否願意每次卡住就翻日誌補一票。
Anthropic 方面,建議至少涵蓋公司主網域後綴,再依日誌補上零散的 API 或輔助主機。與瀏覽器場景相比,CLI 往往沒有自動重試那麼寬容,對於偶發 TLS 重協商或路徑切換更敏感;因此「API 專用節點組」若與下載大檔案的節點組分開,記得兩邊都要夠穩,否則仍會看到請求在工具內被標記為逾時。
五、DNS、fake-ip 與「握手卡住」:CLI 比瀏覽器更吃虧的地方
不少使用者在瀏覽器裡感覺「勉強可用」,是因為瀏覽器對連線失敗有較多重試與快取;反觀 Node 與自訂 HTTP 客戶端,常在第一次解析或第一次握手失敗就直接把錯誤往上拋。此時若你的 Clash 啟用了 fake-ip,而某些 API 主機沒有被列入適當的繞過或 filter 列表,便會出現解析看起來成功、實際對端卻對不上的矛盾現象。
處理這類問題沒有單一咒語;實務流程仍然是:先關閉過度樂觀的猜測,改以連線日誌為主。你可以暫時把相關網域改走更保守的解析策略、或在測試時切換到 redir-host 思維對照(依你所用的核心與版本支援為準)。若完全不熟 DNS 段設定,請先閱讀《Clash 常見報錯與排除》建立基線,再回來調整,以免同時改規則又改 DNS,最後無法還原哪一步生效。
六、用 curl 分段驗證:比一次重裝更能定位 npm 或 API
當你設定好 shell 代理後,建議依序執行下列檢查(將代理埠換成你的 mixed-port):
curl -vI https://registry.npmjs.org
curl -vI https://github.com
curl -vI https://api.anthropic.com
若前兩者之一失敗而第三者成功,幾乎可以直接判斷是規則或節點對特定網域不友善,而不是 Claude Code 自己的 bug;若三者皆失敗,但帶上 --proxy http://127.0.0.1:PORT 仍不行,則回到「Clash 本機埠是否啟動、策略是否為 DIRECT」這一層。
在 npm 一側,也可用 npm ping 或嘗試安裝極小套件做 A/B 測試;重點是不要把多個變因一次改完。若你剛調過訂閱中的廣告攔截或地域規則,記得確認沒有把 anthropic.com 類的網域誤判進攔截清單。
七、Anthropic API 與金鑰:代理之外仍需保留的認知
即使 Clash 規則完美,若 API Key、專案權限或組織層級限制有問題,工具仍會回報失敗。這部分與網路分流無關,但在時間鏈上卻常與逾時疊加:使用者以為「又是代理」,其實後端返回的是清晰錯誤但被上層包成 timeout。建議在懷疑網路之前,先用最小可復現的 HTTP 客戶端(例如 curl 帶上簡短 headers)測一次,確認狀態碼與錯誤正文;若 curl 立刻得到 401 或 403,就沒有必要先把規則檔弄到複雜無比。
另外,若所處環境對 AI API 有合規或帳務策略,請在調整代理前確認你可否使用該服務;本文僅討論連線與路由技術層面,不提供規避政策或帳號限制的建議。
八、與其他命令列 AI/Codex 類工具的比較視角
實務上,不少讀者也會並行使用其他命令列或 IDE 外掛提供的 AI 功能,例如 OpenAI Codex 類客戶端;主機清單不同,但分段驗證的方法是同一套。若你同時在玩這條線,可對照《OpenAI Codex 與 Clash 分流》把 console 與 API 網域區隔開來,避免互相覆蓋規則。重點永遠是:每個產品都有自己的「依賴星座」,把所有東西丟進同一條過寬的 KEYWORD 規則,短期省事、長期則難以除錯。
九、常見問題(精簡版)
為什麼我換了節點還是卡在 npm? 因為 npm 常常走與 API 不同的路徑;節點速度快不代表對 npm registry 友善。請直接看 npm 錯誤碼與 curl 結果,而不是只 ping 延遲。
明明規則寫了 PROXY,日誌卻顯示 DIRECT? 多半是更早的規則或 PROCESS/DOMAIN 類型優先級攔下了;或是 GUI 客戶端載入的並不是你以為的那份檔案。請核對目前正在運行的設定檔名稱與最後寫入時間。
要不要開 TUN? TUN 能解決「程式不讀環境變數」的痛點,但在某些環境會與本機防火牆、公司安全軟體衝突;若你已能用混合埠解決問題,不必為了 Claude Code 強行全局 TUN。
十、小結
Claude Code CLI 類工具把 npm、GitHub 與 Anthropic API 捆在同一條使用者體驗鏈上,任何一段半通都會被感知成「CLI 總逾時」。把問題拆開後,會發現核心解法是:先用終端機對齊本機 Clash 混合埠,再依連線日誌為 開發者代理 路徑補上可靠規則與 DNS 行為,最後才動到套用層設定。
相較於只靠瀏覽器外掛、或依賴封閉的「一鍵加速」式工具,在開源 Mihomo 核心上自行維護分流,需要多花幾分鐘寫規則,但日誌可驗證、行為可回放,對長期寫程式的人通常更安心;反過來說,這類黑盒工具往往無法告訴你為什麼某次 npm 逾時 剛好發生在下載哪個 tarball——最後還是要回來直面網路細節。若你還沒有適合當主力的圖形客戶端,建議先從本站提供的版本入手,把 mixed-port、策略與訂閱管理跑穩,再把本文的網域清單當作可增補的備忘即可。相較之下,一次性腳本難以涵蓋 GitHub Release 與 API 並發場景,長期維護成本高且不易除錯;透過 Clash 在單一介面裡統一查看連線與規則命中,往往能更快定位瓶頸。立即免費下載 Clash,開啟流暢上網新體驗