實操教學 精選 標籤: rule-providers Mihomo RULE-SET

Clash Meta rule-providers:自動更新間隔、path 與 RULE-SET 分流設定指南

你已換成 Clash Meta/Mihomo,想把社群維護的遠端規則集納進設定檔,卻卡在 rule-providers 欄位怎麼寫、path 要指到哪裡、interval 會不會太頻繁,以及 RULE-SET 寫了仍像沒命中。本文依 YAML 分步整理:規則集與節點訂閱的差異provider 區塊必填項本地快取路徑與更新策略,最後對齊規則鏈順序並說明載入後如何驗證。

約 20 分鐘閱讀
Clash 編輯部

一、rule-providers 在做什麼?與 proxy-providers 分別

Clash Meta 系譜(含桌面端的 Mihomo 核心與多數標榜 Meta 相容的用戶端)裡,設定檔頂層常見兩種「遠端資料來源」:proxy-providers 負責拉節點清單(訂閱內容多半是代理伺服器描述),而 rule-providers 負責拉規則資料——可能是網域名單、IP 段、或經過轉換器整理過的規則片段。兩者語意不同:換節點無法代替換規則集;若你把規則集的 raw 連結塞進節點訂閱,解析器會期待另一種格式,結果往往是列表為空或報錯,這類情境可對照本站 訂閱解析與 Provider 快取 專文。

rule-providers 的典型用途,是把社群維護、頻繁更新的網域/GEOIP 規則與你自己寫的精簡規則拆開:本地只保留策略組、少數自訂規則與對 provider 的引用;大宗匹配改由遠端規則檔提供。這樣做的好處是維護成本低,且能用 interval 控制自動重新整理頻率;代價是你必須信任規則來源並留意下載失敗時的行為(例如沿用上次快取)。

記憶口訣:proxy-providers 餵給「節點池」;rule-providers 餵給「規則引擎」。規則鏈裡出現的 RULE-SET,指向的是後者的鍵名,而不是訂閱 URL 本身。

二、撰寫 rule-providers 區塊(type、behavior、url)

在設定檔 Root 層級新增 rule-providers:(與 proxies:rules: 同層),其下每一個鍵名(例如 reject-ad:)都是你日後在 rules:RULE-SET 要指到的識別碼。每個 provider 物件至少需要讓核心知道:資料從哪來(常見為 type: http 搭配 url:)、以及規則語意對應哪種解析方式——這由 behavior 描述(例如 classicaldomainipcidr 等,實際可用取值請以你所使用核心版本文件為準,避免複製過舊論壇片段)。

下列為結構示意,網址與檔名請替換成你要使用的規則集;註解一律為英文以利版本控制工具閱讀。

rule-providers:
  community-domains:
    type: http
    behavior: classical
    url: "https://example.com/rules/classical.yaml"
    path: ./ruleset/community-domains.yaml
    interval: 86400

重點有三:第一,behavior 必須與遠端檔案的規則型別相符,錯配時可能載入成功但匹配異常或開機報警告。第二,url 必須回傳核心支援的規則集格式(多數社群規則會註明適用 Clash/Meta/Mihomo)。第三,鍵名請用ASCII、有意義且不重複的字串,避免與策略組或其他區塊同名造成閱讀混亂。

注意:合併多份設定(訂閱+本機補丁)時,若兩邊都定義了同名 rule-providers 鍵,後載入者可能覆蓋前者;建議在編輯器全域搜尋鍵名,並以「單一真相來源」整理 patch。

三、path 本地路徑與 interval 自動更新

path 指定規則集快取檔在設定檔工作目錄底下的相對位置(實際基準目錄依用戶端而異:可能是設定檔所在資料夾、應用程式支援目錄或沙盒容器內路徑)。填寫 path 的實務好處包括:你能直接在檔案管理員或終端機確認是否真的下載成功、檔案大小是否異常、必要时也可暫時用手動覆蓋做 A/B 測試。若未指定,部分環境仍會自動命名快取,但除錯時較難對應「現在生效的是哪一份」。

interval為單位,描述核心自動重新抓取該規則集的間隔。設定過短會造成對上游伺服器的頻繁請求,某些公開規則倉庫會對過度抓取限速或直接拒絕;設定過長則在你需要跟上新網域/新 CDN 時顯得遲鈍。實務上一天一次(86400)是常見起點;若規則維護者建議更新頻率,優先遵循官方說明。若你常在行動網路或計費網路下更新,也可拉長間隔並改以手動「更新規則/重新載入」為主。

你的情境 path/interval 怎麼取捨
只想穩定分流、規則變動不急 interval 偏長(例如 86400 以上);path 固定檔名以便備份
規則來源更新非常頻繁且可信 可縮短間隔,但請確認上游允許頻率;並留意用戶端是否在休眠時仍會喚醒更新
常遇到規則 raw 偶發 403/timeout 保留可用快取比盲目縮短間隔更重要;同時檢查是否需要鏡像 URL 或替換為本地鏡像檔

GEOIP 或國別分流搭配時,請記得規則資料與 GEOIP 資料庫版本是兩條線:前者多在 rule-providers 或內建資料更新流程裡處理;後者涉及 geodata-mode、資料檔路徑與是否使用路由規則中的 GEOIP 類型。若你正在調境內網站走直連這類策略,可延伸閱讀 GEOIP 與直連規則 一文,避免只更新規則集卻忽略資料庫落後。

四、在 rules 以 RULE-SET 引用並對齊順序

載入 rule-providers 後,規則並不會自動生效——你必須在 rules: 陣列中加入對應條目。Meta 系譜使用 RULE-SET 關鍵字時,第一個參數通常是 provider 的鍵名,第二個參數是匹配後要採用的策略(例如某個 proxy-groups 名稱、DIRECTREJECT 等)。規則鏈由上而下評估,先命中先結束;若你把大包規則集放在太下方,可能被前面的 GEOIPMATCH 或較寬鬆規則提早截斷。

rules:
  - RULE-SET,community-domains,YourProxyGroup
  - GEOIP,CN,DIRECT
  - MATCH,YourProxyGroup

上述片段僅示意思考順序:社群規則集優先於國別預設直連,最後才落入全域匹配。實務上你可能會在規則集之前插入區域網、本機或特定進程相關條目;請依自身網路拓扑調整。也要確認 YourProxyGroup 確實存在於 proxy-groups:,且組內有可用的 proxies,否則會出現策略指向空組或連線失敗——這與「規則集是否載入」是不同層次的問題。

順序心法:把「範圍小且確定要特例處理」的規則放前面;把「大包第三方規則集」放在中段;把「國別預設/兜底 MATCH」放後段。每次調整後用實際 Apps 驗證,而不是只看 YAML 感覺對。

五、載入後驗證與常見錯誤

  1. 套用並重新載入:在桌面或行動端用戶端執行「套用」「重啟核心」或等同操作;若使用外部控制器觸發 reload,請確認回應為成功而非部分套用。
  2. 檢查本地 path:觀察 path 對應檔案是否生成、時間戳是否更新;若檔案為空或大小異常,先對 url 做瀏覽器或 curl 測試是否在該網路可得。
  3. 閱讀日誌:搜尋規則 provider 鍵名或下載錯誤關鍵字(timeout、TLS、certificate 等);TLS 與時間錯誤常見於企業網路中介憑證環境。
  4. 規則命中對照:使用客戶端提供的連線紀錄/規則命中面板(若有),對同一目標網域或 IP 觀察是否符合預期策略;若始終走到兜底,回到上一節檢查順序與鍵名。
  5. 漸進式修改:一次只改一個 provider 或一條規則位置,保留上一份可用設定備份,避免多變因數疊加後難以回溯。

若你同時在調整 DNSfake-ipTUN 模式,請記住:規則命中與解析鏈路透上是不同子系統;規則集寫對了,仍可能因 DNS 回傳或模式設定看起來「像沒分流」。需要時可並行閱讀 DNS nameserver 與 fallback 設定文,把兩邊變因拆開驗證。

六、常見問題

rule-providers 的 path 一定要填嗎?

強烈建議填寫。path 讓快取檔位置可預期,有利除錯、備份與比對版本;也方便你在離線或上游故障時暫時放入已知良好的規則檔。

interval 設多少比較合適?

常見從數小時到一天不等;重點是平衡規則新鮮度對上游禮貌。若你不確定,採規則來源文件的建議值,或先用較長間隔配合手動更新。

RULE-SET 寫了卻像沒生效?

依序檢查:鍵名是否一致、behavior 是否與檔案格式相符、規則順序是否被更早的規則截斷、策略標籤是否存在且有可用節點。必要時暫時把可疑規則前移做對照實驗。

可以用本地檔案而不走 http 嗎?

部分版本支援以檔案型 provider 或等價欄位載入本地規則(依核心文件為準)。若環境允許,將規則檔納入你可控的目錄並由設定引用,可減少對第三方 raw 連線的依賴。

七、小結與延伸閱讀

Clash Meta/Mihomorule-providers 把「規則資料」從主設定檔中拆出來,靠 urlinterval 維持更新,並用 path 讓快取可見、可備份;真正讓分流發生的是 rules: 裡的 RULE-SET 與整條規則鏈的順序與策略標籤。把這幾件事分開理解後,多數「規則載入了但體驗不變」的案例都能收斂到:鍵名錯置、behavior 錯配、順序被截斷,或策略組本身無可用出口。

相較僅依賴單機手刻規則或零散複製片段的做法,成熟的規則集生態能顯著降低維護成本;但若工具本身對Meta 語法provider 快取圖形化除錯支援不足,使用者仍會在 YAML 與日誌之間來回耗時。這也是許多人最終仍偏好跨平台一致、規則與訂閱模型清楚的 Clash 系用戶端的原因——同一套概念從桌面延伸到行動裝置,減少每次換機都要重新摸索供應商自訂格式的摩擦。

立即免費下載 Clash,開啟流暢上網新體驗