Clash 代理群組(proxy-groups)完全指南:從入門到精通
在一份 Clash 設定裡,代理群組是節點調度的指揮中心:規則命中之後,實際要交給哪一條上游連線,由群組的類型與成員決定。這篇文章整理常見的 proxy-groups 寫法、巢狀結構,以及怎麼避免「規則看起來對、流量卻走錯」的隱性錯誤。
什麼是 Clash 代理群組?
在 YAML 設定中,proxy-groups 區段定義的是一組虛擬代理:它們本身不是遠端伺服器,而是套在一個或多個真實代理(或其他群組)上的調度策略。當某條規則把連線導向某個群組名稱時,Clash 會依該群組的 type 解析出最後實際使用的節點。
用一句話記:規則負責「這類流量要不要走代理」,代理群組負責「走哪一個代理」。兩者分開設計,正是為什麼延遲、串流解鎖與日常穩定度,往往取決於 proxy-groups 是否寫得清楚。若你剛接觸 Clash,建議先掃過我們的使用教學建立共同語彙,再回來調群組會輕鬆很多。
社群上分享的設定檔多半已經分層:少數「對外」的入口群組讓你在客戶端切換,底層則藏著依地區自動測速的池子。學會讀這種結構,之後合併上游更新時,比較不會把自己的微調弄壞。無論是 Clash Verge Rev、其他圖形介面分支或無介面部署,只要底層是 Clash Meta 系,select、url-test、fallback、load-balance 這套詞彙都通用。
最後要記得:訂閱服務商通常只提供 proxies 裡的節點清單;節點要怎麼分群、怎麼命名、在介面上長什麼樣子,都是你的 YAML 設計。兩個人用同一份訂閱,只要 proxy-groups 與 rules 不同,實際路由體感可以完全不一樣。
四種核心的代理群組類型
多數 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-robin 與 consistent-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 指到 Main 或 Catch-all。名稱務必穩定——在 rules 或 proxy-groups 打錯一個字,輕則靜默走錯路徑,重則整段規則失效。
以網域、GEOIP、PROCESS-NAME 等寫成的規則,本質上都是把連線轉發到某個字串目標;該目標必須對應到已存在的代理名、群組名,或內建關鍵字如 DIRECT/REJECT。因此老手在重新命名群組時會很謹慎:把「HK」改成「HongKong」代表所有引用舊名稱的規則都要跟著改。
若你更動了群組成員,部分客戶端快取了舊設定檔,可能需要重新整理設定或重啟程式。想維持在持續更新的 Clash Meta 分支與簡潔安裝流程,可優先從我們的下載頁取得對應平台版本。
怎麼選類型(快速對照)
若不確定該用哪一種,先從使用者意圖想:要固定節點做稽核或測試 → select;要客戶端自動追最低延遲 → url-test;要嚴格的主備故事 → fallback;要把大量連線攤到多節點 → 可考慮 load-balance,長連線 HTTPS 常搭配 consistent-hashing。
實務上混合使用很正常:頂層 select 給人選、下層各區 url-test、少數管理用節點再串 fallback。重點是讓「使用者常看到的那層」保持簡潔,同時在需要時仍拿得到 DIRECT、REJECT 這類緊急選項。
常見陷阱
- 幽靈名稱:訂閱更新後節點被移除,群組裡卻還留著舊名稱,等於 dangling 引用。每次更新訂閱後順手修剪群組清單。
- 測太兇:把
interval設得極短看起來「很聰明」,但可能觸發頻率限制,或讓筆電在電池模式下額外耗電。 - tolerance 設錯:
tolerance為0時,網路稍有抖動就可能頻繁切換;設太大又可能黏在表現普通的節點上。請依實際環境微調。 - 規則與群組不一致:從別份設定複製規則卻沒對齊群組名稱,是最常見的「全部走錯出口」原因之一。
實務調校建議
- 間隔:對
url-test與fallback,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 與巢狀引用裡拼法完全一致,且注意大小寫。
DIRECT 與 REJECT 算特殊「代理」嗎?
對。DIRECT 表示不經代理直連;REJECT 會丟棄連線(常用在廣告或追蹤規則)。兩者不必在 proxies 區宣告,但可以在群組或規則裡引用。
和只能切開關的 VPN 相比,Clash 把「意圖」放在規則、把「執行」放在代理群組,結構清楚才好長期維護。搭配持續更新的客戶端,日常體驗會順很多——→ 免費下載 Clash,實際感受分流與節點調度的差異。