Clash 代理群組(proxy-groups)完全指南:從入門到精通

在一份 Clash 設定裡,代理群組是節點調度的指揮中心:規則命中之後,實際要交給哪一條上游連線,由群組的類型與成員決定。這篇文章整理常見的 proxy-groups 寫法、巢狀結構,以及怎麼避免「規則看起來對、流量卻走錯」的隱性錯誤。

什麼是 Clash 代理群組?

在 YAML 設定中,proxy-groups 區段定義的是一組虛擬代理:它們本身不是遠端伺服器,而是套在一個或多個真實代理(或其他群組)上的調度策略。當某條規則把連線導向某個群組名稱時,Clash 會依該群組的 type 解析出最後實際使用的節點。

用一句話記:規則負責「這類流量要不要走代理」,代理群組負責「走哪一個代理」。兩者分開設計,正是為什麼延遲、串流解鎖與日常穩定度,往往取決於 proxy-groups 是否寫得清楚。若你剛接觸 Clash,建議先掃過我們的使用教學建立共同語彙,再回來調群組會輕鬆很多。

社群上分享的設定檔多半已經分層:少數「對外」的入口群組讓你在客戶端切換,底層則藏著依地區自動測速的池子。學會讀這種結構,之後合併上游更新時,比較不會把自己的微調弄壞。無論是 Clash Verge Rev、其他圖形介面分支或無介面部署,只要底層是 Clash Meta 系,selecturl-testfallbackload-balance 這套詞彙都通用。

最後要記得:訂閱服務商通常只提供 proxies 裡的節點清單;節點要怎麼分群、怎麼命名、在介面上長什麼樣子,都是你的 YAML 設計。兩個人用同一份訂閱,只要 proxy-groupsrules 不同,實際路由體感可以完全不一樣。

四種核心的代理群組類型

多數 Clash/Clash Meta 設定會圍繞四種類型打轉,各自對應:手動控制、依延遲挑節點、依順序故障轉移,或把連線分散到多節點。

從網路複製片段前,請確認 type 字串與你使用的核心能力一致。Clash Meta 會擴充更多行為,但日常設定仍多半靠這四種「基本功」。若設定檔引用到你的版本不支援的類型,解析可能報錯或直接略過該群組——每次改完都建議重新載入並看一眼日誌。

select:手動選擇

select 最單純:使用者在客戶端介面裡點選成員,Clash 不會自動幫你測速或輪替。適合你想鎖定某個地區或某個節點的情境,例如金融 App 想固定出口、或除錯 DNS 時先釘單一節點。

因為只有你操作才會換節點,select 也很適合當入門預設。候選清單別拉太長,選單才讀得懂;之後若需要,再把較大的 url-test 池掛在某個選項後面當巢狀。很多範本會在最上層放一個名叫「Proxy」或「Global」的 select,讓一般使用者不必碰到底層名稱。

proxy-groups:
  - name: "Manual"
    type: select
    proxies:
      - HK-01
      - JP-01
      - US-01
      - DIRECT
💡 小提示proxies 裡一併放入 DIRECT,就能一鍵切回直連,很適合判斷問題是不是代理造成的。

url-test:挑延遲最低

url-test 會定期透過各候選節點去請求探測網址(常見為輕量的 204 端點),並維持在延遲表現最佳的那個成員上。適合重視反應速度的情境:遊戲、視訊會議或互動式 SSH。tolerance 則用來避免兩個節點只差幾毫秒時一直來回切換。

要注意的是:對探測主機的延遲,不等於對你實際造訪的每個服務都一樣準,但在需要自動化時仍很實用。若某個串流平台對出口很挑剔,可以另外做一個專用的 select 覆寫自動結果,而不必整份規則重寫。

proxy-groups:
  - name: "Auto fastest"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300        # re-test every 300 seconds
    tolerance: 50        # do not switch if within 50 ms
    proxies:
      - HK-01
      - HK-02
      - JP-01

fallback:依序故障轉移

fallback 會依清單順序檢查,黏在第一個通過健康檢查的代理上;失敗才往下一個移。這不是「誰延遲低誰贏」,而是「優先用我指定的主力,掛了再換備援」。若你在意的是可預期的優先順序而非絕對 ping 值,這種類型很合適。

維運上常見寫法是:機房節點放最前、較便宜的備援在後。建議在自己的筆記裡註明設計意圖,日後若隨便調整順序,語意就變了,檔案表面卻仍「看起來沒問題」。

proxy-groups:
  - name: "Failover"
    type: fallback
    url: "http://www.gstatic.com/generate_204"
    interval: 180
    proxies:
      - Primary-HK
      - Backup-JP
      - Emergency-SG
⚠️ 注意 fallback 看重清單順序url-test 看重延遲高低。除錯時別把兩者搞混,否則會納悶「為什麼 Clash 選了這個節點」。

load-balance:分散連線

load-balance 會把流量攤到多個節點;常見策略有 round-robinconsistent-hashing。對 HTTPS 來說,consistent-hashing 常較討喜:同一個遠端主機名稱傾向固定走同一條出口,較不會因為 IP 一直換而導致登入狀態異常。

當你有多條健康路徑通往同一區域、又不想單機被打爆時,適合用負載平衡。若服務硬性要求固定單一 IP(部分銀行與企業入口),請改走 select 或只放單一成員的群組。

proxy-groups:
  - name: "Load balance"
    type: load-balance
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    strategy: consistent-hashing
    proxies:
      - HK-01
      - HK-02
      - HK-03

巢狀代理群組,做出有彈性的政策

proxies 陣列裡除了真實節點名稱,也可以放另一個群組的名稱。巢狀讓你能把結構拆成:底層按地區做 url-test、上層用手動的「用途」選擇器,最外層再讓 rules 只指到一個穩定的群組名稱,規則表就不會膨脹到難以維護。

環狀參照不合法:若群組 A 引用 B、B 又引用 A,Clash 無法得到確定的路徑。不確定時可以在紙上畫有向圖——葉節點是真實代理,內部節點是群組,邊依 proxies 列出。無環圖行為可預期;有環可能報錯或依版本出現未定義行為。

proxy-groups:
  # Tier 1: regional pools (url-test per region)
  - name: "HK pool"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    proxies: [HK-01, HK-02, HK-03]

  - name: "JP pool"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    proxies: [JP-01, JP-02]

  # Tier 2: manual pick among regions
  - name: "Pick region"
    type: select
    proxies:
      - HK pool
      - JP pool
      - DIRECT

  - name: "Streaming"
    type: select
    proxies:
      - US-01
      - JP pool

端到端 YAML 範例

下面是一個涵蓋多數日常情境的分層範例:頂層選擇器、自動最快池、串流專用選項、各地區 url-test,以及可直連的兜底。請把名稱改成與你 proxies 區段一致的節點代稱。

proxy-groups:
  - name: "Main"
    type: select
    proxies: [Auto, HK, JP, US, DIRECT]

  - name: "Auto"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    tolerance: 50
    proxies: [HK-01, HK-02, JP-01, SG-01]

  - name: "Streaming"
    type: select
    proxies: [US, JP, HK]

  - name: "HK"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    proxies: [HK-01, HK-02]

  - name: "JP"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    proxies: [JP-01, JP-02]

  - name: "US"
    type: url-test
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    proxies: [US-01, US-02]

  - name: "Catch-all"
    type: select
    proxies: [Main, DIRECT]

代理群組與規則如何對接

rules 區段裡,策略目標會寫成群組名稱。例如:國內網域走 DIRECT、串流名單走 Streaming,最後用 MATCH 指到 MainCatch-all。名稱務必穩定——在 rulesproxy-groups 打錯一個字,輕則靜默走錯路徑,重則整段規則失效。

以網域、GEOIP、PROCESS-NAME 等寫成的規則,本質上都是把連線轉發到某個字串目標;該目標必須對應到已存在的代理名、群組名,或內建關鍵字如 DIRECTREJECT。因此老手在重新命名群組時會很謹慎:把「HK」改成「HongKong」代表所有引用舊名稱的規則都要跟著改。

若你更動了群組成員,部分客戶端快取了舊設定檔,可能需要重新整理設定或重啟程式。想維持在持續更新的 Clash Meta 分支與簡潔安裝流程,可優先從我們的下載頁取得對應平台版本。

怎麼選類型(快速對照)

若不確定該用哪一種,先從使用者意圖想:要固定節點做稽核或測試 → select;要客戶端自動追最低延遲 → url-test;要嚴格的主備故事 → fallback;要把大量連線攤到多節點 → 可考慮 load-balance,長連線 HTTPS 常搭配 consistent-hashing

實務上混合使用很正常:頂層 select 給人選、下層各區 url-test、少數管理用節點再串 fallback。重點是讓「使用者常看到的那層」保持簡潔,同時在需要時仍拿得到 DIRECTREJECT 這類緊急選項。

常見陷阱

  • 幽靈名稱:訂閱更新後節點被移除,群組裡卻還留著舊名稱,等於 dangling 引用。每次更新訂閱後順手修剪群組清單。
  • 測太兇:interval 設得極短看起來「很聰明」,但可能觸發頻率限制,或讓筆電在電池模式下額外耗電。
  • tolerance 設錯:tolerance0 時,網路稍有抖動就可能頻繁切換;設太大又可能黏在表現普通的節點上。請依實際環境微調。
  • 規則與群組不一致:從別份設定複製規則卻沒對齊群組名稱,是最常見的「全部走錯出口」原因之一。

實務調校建議

  • 間隔:url-testfallback,180~300 秒是常見甜點區間;太短耗電與頻寬,太長則可能卡在差節點太久。
  • 探測網址:請使用你的服務商允許、且在你網路環境穩定可連的端點;公開的 204 網址很常見,也有人改放在自己的網域以便一致。
  • 命名:UTF-8(含中文或 emoji)在 YAML 合法,但所有引用必須完全一致且區分大小寫。手改設定時,純 ASCII 名稱通常較少打錯。
  • 深度:巢狀很有力,但層級太多會讓新手迷路。建議把頂層群組當成你對這份設定的「公開介面」並寫在備註裡。
  • 日誌:行為怪異時,開啟客戶端連線日誌,確認是哪個群組名稱處理了該連線,再往回追巢狀直到真實節點。

改動後務必驗證

任何結構性修改後,請重新載入設定並實測幾類網站:應直連的在地新聞、一般搜尋,以及你最在意的服務(串流、雲端後台、遊戲啟動器等)。若只有某一類異常,就隔離匹配到它的規則,確認目標群組仍存在且名稱無誤。

大量變更時,建議把 YAML 納入版本控制;需要回滾時,文字 diff 比重新下載整包訂閱更可控。也別忘了偶爾瀏覽Clash 部落格,掌握可能影響解析行為的生態更新。

常見問題

url-test 多久跑一次?可以設快一點嗎?

interval 單位為秒,300 是常見預設。你可以改小(例如 60),但探測太頻繁會增加流量,在吃到飽以外的網路環境也可能造成困擾。多數人會落在 180~300 秒之間。

代理群組名稱可以用非 ASCII 或 emoji 嗎?

可以,YAML 支援 UTF-8,用中文或 emoji 當視覺提示也沒問題。請確保 rules 與巢狀引用裡拼法完全一致,且注意大小寫。

DIRECTREJECT 算特殊「代理」嗎?

對。DIRECT 表示不經代理直連;REJECT 會丟棄連線(常用在廣告或追蹤規則)。兩者不必在 proxies 區宣告,但可以在群組或規則裡引用。

和只能切開關的 VPN 相比,Clash 把「意圖」放在規則、把「執行」放在代理群組,結構清楚才好長期維護。搭配持續更新的客戶端,日常體驗會順很多——→ 免費下載 Clash,實際感受分流與節點調度的差異