使用教學 精選 Clash 入門 Clash 與 VPN 差異 代理工具新手

Clash 自訂規則集設定:GitHub 管理與自動更新實作

2026年10月18日 更新於 2026年10月18日 約 12 分鐘閱讀

為什麼要使用自訂規則集?

當分流規則逐漸增加,直接把所有規則塞進主設定檔,會讓 YAML 越來越難閱讀;每次調整也容易誤改其他服務的設定。Mihomo 的 rule-providers 可以把一組規則獨立存放,再由主設定檔引用。你可以在 GitHub 維護清單,讓客戶端按照指定間隔重新下載,減少手動複製與更新的工作。

這種做法適合整理個人常用的網域、公司內部服務,或需要分流的一組網站。不過,規則集只負責提供「要匹配哪些流量」;匹配後要走代理、直連或拒絕,仍由主設定檔中的 RULE-SET 規則決定。開始前,請確認使用的是支援 rule-providers 的 Mihomo 核心,並先備份目前使用的 YAML。不同客戶端的選單名稱可能不同,但核心設定的欄位結構相同。

適合的使用情境

把自訂規則與主設定分開管理;多人共用同一份清單;或希望規則更新時不必每次手動編輯整份設定檔。

1在 GitHub 建立規則清單

先建立一個 GitHub repository,並新增規則檔,例如 rules/my-services.yaml。如果希望 Mihomo 可以直接讀取,repository 必須是公開的,或者你要使用可由客戶端無需互動登入便能取得的網址。私有 repository 的頁面網址通常不能直接當作規則來源;把存取權杖寫進公開設定檔也會造成憑證外洩風險。

選擇規則格式

常見的 behavior 有 domain、ipcidr 和 classical。網域規則使用 domain,IP 網段使用 ipcidr;需要混合多種規則類型時,可使用 classical。以下範例採用 domain,檔案內容只放規則項目,不要把主設定檔的 rule-providers: 或 rules: 整段複製進去:

payload: - DOMAIN-SUFFIX,example.com - DOMAIN,api.example.net - DOMAIN-KEYWORD,internal-service

提交檔案後,在 GitHub 開啟該檔案,使用「Raw」取得原始內容的網址。網址應指向實際 YAML 檔案,而不是 repository 首頁、檔案預覽頁或分支清單。也可以直接使用類似 https://raw.githubusercontent.com/使用者名稱/儲存庫/main/rules/my-services.yaml 的 Raw URL。將網址貼到瀏覽器測試時,應看到純文字 YAML;若頁面顯示 404,請檢查 repository 名稱、分支、路徑與檔案大小寫。

版本管理建議

先在測試分支修改,再確認 Raw URL 可以取得正確內容後合併到正式分支。若團隊需要固定規則版本,可使用不可變更的 commit URL;若希望沿用 main 分支的最新內容,則需接受每次提交都可能改變客戶端取得的清單。

2設定 Mihomo 並引用規則集

在主設定檔的頂層加入 rule-providers 區塊。以下範例會將 GitHub 上的清單存入設定目錄下的 ruleset 資料夾,並每 24 小時檢查一次更新:

rule-providers: my-services: type: http behavior: domain url: https://raw.githubusercontent.com/使用者名稱/儲存庫/main/rules/my-services.yaml path: ./ruleset/my-services.yaml interval: 86400 rules: - RULE-SET,my-services,PROXY - GEOIP,CN,DIRECT - MATCH,PROXY

請把範例中的 repository URL 換成自己的 Raw URL,並確認 path 所在目錄可由 Mihomo 建立或寫入。type: http 表示透過 HTTP(S) 下載;behavior 必須與遠端檔案內容相符;interval 使用秒數,86400 即一天。path 是本機快取位置,不是 GitHub 網址。若使用多個規則集,請為每個 provider 設定不同名稱和快取檔案,避免路徑互相覆蓋。

注意引用順序與策略名稱

RULE-SET,my-services,PROXY 的第二個欄位要與 provider 名稱完全一致,第三個欄位則要對應你設定中存在的代理群組,例如 PROXY、手動選擇 或其他群組名稱。規則由上而下比對;如果更寬泛的規則已先匹配流量,自訂規則就不會生效。因此通常要將具體的 RULE-SET 放在 GEOIP、一般兜底規則和 MATCH 之前。也要留意,規則集中的項目只描述匹配條件,不需要在每行額外附上代理群組。

在 Clash Verge Rev 等圖形客戶端中,通常可以透過設定檔編輯器修改 YAML,儲存後重新載入設定。若你使用覆寫、合併或腳本功能,請確認產生的最終設定仍包含 provider 和引用規則;單純修改訂閱原始檔未必能保留本機變更。建議先在獨立設定檔測試,確認運作正常後再套用至日常設定。

3驗證更新並排查常見錯誤

設定完成後,先儲存並重新載入設定檔,再查看 Mihomo 或客戶端的日誌。若 provider 成功載入,通常能在規則提供者頁面看到名稱、規則數量或更新狀態。接著前往連線記錄,訪問清單中的測試網域,檢查命中的規則是否顯示 RULE-SET,以及流量是否被送往預期的策略群組。測試時請使用確實存在於清單中的網域,並避免同時套用其他會先匹配的規則。

  • 下載失敗或 404:在瀏覽器重新開啟 Raw URL,確認檔案可公開讀取、分支與檔名大小寫正確,而且內容是有效 YAML。
  • YAML 解析錯誤:檢查縮排是否使用空格、冒號後是否有空格,以及清單是否以 payload: 開始。不要用 Tab 縮排,也不要把程式碼區塊標記或 GitHub 頁面文字貼進檔案。
  • provider 已載入但沒有匹配:確認 behavior 和內容格式相符,檢查測試網域是否符合規則,並確認引用規則沒有被更上方的規則攔截。
  • 更新後仍使用舊內容:檢查 interval 是否已到期、客戶端是否成功重新下載,以及本機 path 是否可寫入。需要立即驗證時,可在客戶端手動更新 provider 或重新載入設定。
  • 策略群組不存在:將 RULE-SET 的第三個欄位改成主設定中實際存在的代理群組名稱;群組名稱也要注意大小寫與中文字元是否完全一致。

更新前先做差異檢查

遠端規則檔一旦被修改,所有使用該網址的客戶端都可能在下次更新時取得新內容。請避免把不熟悉來源的規則直接套用到主要設定;重要環境可先檢查提交紀錄、測試規則命中結果,並保留上一版 YAML 以便回復。

透過「GitHub 保存清單、Mihomo 定期下載、主設定引用策略」這三個步驟,自訂分流規則便能與核心設定分開維護。開始時建議只放少量容易驗證的網域,確認更新和命中都正常後,再逐步擴充清單;如此既方便追蹤問題,也能降低規則順序或格式錯誤對整體代理造成的影響。

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