規則提供者與「訂閱規則集」在說什麼?

在 Clash 系家族(含以 Mihomo 為核心的現代用戶端)裡,規則提供者對應設定檔中的 rule-providers 區塊。它的用途很單純:把「很長、會變動、常由社群或服務商托管」的規則清單,從主設定檔中拆出去,改由程式在啟動或週期性排程時向遠端 URL 拉取,或讀取你放在本機的檔案。

你可以把每個提供者想成一份具名規則資料來源。真正的分流決策仍發生在 rules 區塊,只是那裡不再逐行抄寫上千條 DOMAINIP-CIDR,而改寫成類似 RULE-SET 的引用,讓核心先把遠端集合展開成可匹配的內部結構,再依序與連線特徵比對。

這種做法帶來三個直接好處:設定檔可讀性提高、更新規則不必手動複製貼上、以及可以把「機場訂閱產生的節點」與「你自己維護的分流邏輯」清楚分層。接下來我們會依序談語法、常見類型與實務排序。

為什麼進階使用者幾乎都會模組化規則?

當你只使用服務商一鍵產生的設定檔時,規則往往已內建完成,短期內不一定需要碰 rule-providers。但一旦你想自訂國內直連清單攔截廣告或追蹤網域、或把公司內部網段固定走 VPN,把所有條件全寫進同一個 rules 陣列,很快就會遇到兩個痛點:版本難以比對,以及任何小改都要在幾千行文字裡搜尋。

模組化之後,你可以把不同用途的清單拆成多個提供者,例如「廣告攔截」「串流服務網域」「中國大陸網域直連」各自獨立更新。主設定檔只保留策略骨架:哪些 RULE-SET 要先於 GEOIP 判斷、哪些要放在代理兜底之前、以及最後的 MATCH 要落到哪個策略組。

另一個務實理由是與上游社群節奏對齊。許多規則集以 Git 倉庫或 CDN 釋出,作者會頻繁修正誤判;若你使用 HTTP 類型的提供者並設定合理的 interval,用戶端便能在背景刷新,不必每天手動下載覆蓋檔案。

YAML 基本結構:從命名到載入方式

在設定檔頂層(與 proxiesproxy-groups 同層)新增 rule-providers,其下每一個鍵名即為提供者代號,之後在 rules 裡就用這個代號搭配 RULE-SET 引用。常見欄位包含:type(例如從網路取得或讀本機檔)、behavior(告訴核心如何解析清單內容)、urlpath、以及選填的 interval

下列範例展示兩種典型寫法:一個從 HTTPS 位址定期更新,一個固定讀取與設定檔相對路徑下的本機檔案。註解僅用英文,方便你複製到實際檔案時對照欄位意義。

rule-providers:
  remote-domains:
    type: http
    behavior: domain
    url: "https://example.com/rules/domains.txt"
    path: ./ruleset/remote-domains.yaml
    interval: 86400
  local-ip:
    type: file
    behavior: ipcidr
    path: ./ruleset/local-office.cidr

實務上請把 path 想成「快取與落地位置」:HTTP 類型通常會把下載結果寫入該路徑,下次啟動若未過期可直接讀取,減少對遠端伺服器的頻繁請求。若路徑目錄不存在,部分用戶端會自動建立,仍建議你先確認寫入權限與磁碟空間,尤其在路由器或嵌入式裝置上。

behavior 要選哪一種?與檔案格式如何對齊

behavior 決定核心如何解讀規則集內容,選錯會導致載入失敗或全部規則無法命中。domain 適合純網域清單(一行一個網域,或專案定義的網域類 YAML/文字格式);ipcidr 適合 IP 段;而 classical 則對應傳統 Clash 規則語法逐行列表,可混合多種前綴。

若你從社群複製範例,請務必核對來源文件標示的類型與你填的 behavior 一致。常見錯誤是把實際為 classical 格式的檔案標成 domain,核心在解析階段就會報錯或靜默略過,表現在使用者端便是「規則看起來有載入,但分流永遠不對」。

在 Mihomo 路線上,部分進階資料集還會與內建 GeoIP/Geosite 資料搭配使用;觀念上仍屬於「把大塊比對資料外包給專門維護的集合」,與手寫上百條 DOMAIN-SUFFIX 相比,維護成本更低。若你想進一步釐清 DNS、TUN 與規則先後關係,可搭配閱讀本站的使用說明與文件,避免只調規則卻忽略解析鏈路。

在 rules 區塊引用:RULE-SET 與預設動作

定義好提供者之後,要在 rules 裡使用 RULE-SET 條目把資料接回分流決策。語意上可以讀成:「若連線符合此集合中的規則,則採用後方指定的策略或出站」。策略名稱通常是你其中一個 proxy-groups 的名稱,或是 DIRECTREJECT 等內建動作。

rules:
  - RULE-SET,local-ip,DIRECT
  - RULE-SET,remote-domains,REJECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

請特別注意規則順序由上而下:越具體、越希望優先處理的條件應放在越前面。若你把涵蓋面極廣的集合放在最上層,後方細緻條件可能永遠沒機會執行。實務上常把「公司內網」「區域免流網域」等放前段,GEOIP 類寬泛判斷放中段,廣告或追蹤清單則依你是否希望早於代理決策而插入不同位置。

interval、快取與失敗重試:別讓更新拖垮連線

interval 以秒為單位,控制遠端規則集重新拉取的間隔。設太短會增加出口頻寬與上游壓力,尤其在行動網路或多人共用路由器時更明顯;設太長則可能長時間使用過期清單,遇到網站改版或 IP 變更時誤判率上升。

建議做法是先採用上游文件推薦值或社群慣用的每日級間隔(例如 86400 秒),觀察幾天後再依實際需求微調。若你懷疑快取損毀或內容異常,可在圖形介面中執行「清除快取」或手動刪除對應 path 檔案後重啟,讓核心重新下載完整資料。

當遠端暫時無法連線時,多數用戶端會回退到上一份成功快取;若連快取都不存在,該 RULE-SET 可能無法生效,此時日誌通常會出現載入失敗訊息。排查時請先確認 URL 是否可在瀏覽器或 curl 下存取,再檢查是否被公司防火牆或 DNS 攔截。

與本機規則並存:覆寫、補洞與除錯順序

進階場景裡,幾乎一定會同時存在「遠端訂閱規則集」與「你自己寫的少數幾條規則」。原則是:本機精確規則優先於大型集合。例如你想讓某個測試網域暫時直連,只要在 rules 陣列前段加入對應 DOMAIN 條目即可,無需修改遠端檔案。

若你使用圖形介面的「覆寫」或「Merger」功能,實際合併結果仍會反映在送交核心的最終 YAML 上。建議在介面中開啟「預覽完整設定」或匯出檔案,確認 RULE-SET 與手寫規則的相對位置沒有被模板自動重排。某些一鍵訂閱會在每次更新時把自訂段落沖掉,這時應改用官方支援的 override 檔或分離式片段,而不是直接改訂閱產生的主檔。

若你同時使用 proxy-providersrule-providers,請留意兩者的命名空間彼此獨立;RULE-SET 只能引用規則提供者代號,不能誤用成節點訂閱名稱。

圖形介面下的實務流程建議

多數使用者不會手刻整份 YAML,而是透過 Clash Verge 系、FlClash 等用戶端編輯片段。可行流程是:先在官方或可信來源複製規則集 URL,於進階設定中新增對應 rule-providers 區塊,再在「規則」頁面調整 RULE-SET 列與順序。完成後務必重載設定並開啟日誌視窗觀察是否有解析錯誤。

若你需要在多台裝置沿用同一套邏輯,可將自訂片段托管在私有 Git 儲存庫或加密筆記中,只把 HTTP 連結填入各裝置;切記不要使用來路不明的短網址服務,以免規則集被中途替換。安裝與版本選擇可參考本站的用戶端下載頁,先確保核心與 GUI 版本支援你所使用的欄位語法。

常見問題與排查方向

問題一:啟動或重載時提示規則集解析失敗

優先檢查 behavior 與檔案格式是否一致,其次確認下載內容是否為完整檔案(部分 CDN 會回傳 HTML 錯誤頁)。若使用本機 file 類型,確認 path 相對於執行目錄是否正確,Windows 路徑分隔符建議使用正斜線以避免轉義問題。

問題二:RULE-SET 已載入但分流不如預期

回到「順序」與「策略名稱」兩點:前者是否被更寬鬆的規則提前命中,後者是否拼字與 proxy-groups 完全一致(大小寫敏感)。另外,DNS 解析結果若與規則比對所使用的網域不一致,也可能出現「以為會走代理卻直連」的錯覺,需一併檢查 fake-ip 與 DNS 設定。

問題三:路由器或小型裝置磁碟頻繁寫滿

規則集快取會占用空間,若你掛載多個大型集合,請評估是否可改為較精簡的來源,或拉長 interval。亦可在低峰時段手動更新,避免與訂閱節點更新同一時間觸發大量 I/O。

效能觀念:不是規則越多越好

每多一個集合,啟動階段就要多花時間建構比對結構;規則總量過大時,低階裝置的 CPU 占用會明顯上升。進階使用者的目標應是剛好覆蓋所需場景的最小集合,而不是堆疊所有公開清單。定期檢視哪些 RULE-SET 長期沒有命中,可以考慮移除或合併。

同時請尊重規則集作者的使用條款與抓取頻率建議;過度頻繁的自動更新不只浪費頻寬,也可能觸發對方的速率限制,導致你的用戶端拿到空回應或過期快取。

關於開源專案與下載來源

Clash 生態的核心與各圖形介面多為開源專案,GitHub 上的儲存庫適合查證授權條款、閱讀變更日誌或提交 issue。一般使用者若目標是穩定取得已打包的用戶端與一致的操作說明,建議以本站整理的入口為主;將「安裝包取得」與「原始碼查閱」分開理解,較不容易混淆發布頁上眾多檔名與分支。

總結:用規則提供者把「資料」與「策略」分開

高效管理訂閱規則集的本質,是把會變動的大量資料交給 rule-providers 與背景更新,把穩定的分流意圖留在 rulesproxy-groups 的骨架裡。當你能熟練設定 behavior、正確引用 RULE-SET,並依環境調整 interval 與順序,長期維護成本會顯著低於在單一檔案內無限堆疊複製貼上。

相較於四處拼湊過時片段,選擇核心版本清楚、介面能安全合併自訂片段的用戶端,通常能減少語法不相容與規則被覆寫的挫折;視覺化檢視日誌與一鍵重載,也有助你在調整 RULE-SET 後快速驗證命中結果。若你希望在一套穩定流程內完成安裝、更新與規則調校,不妨從本站取得適用你平台的版本,再依本文步驟逐步模組化你的分流設定。

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