教學 2026-04-22 · 約 16 分鐘閱讀

Clash Meta 用 mixin 覆寫遠端訂閱:注入自建規則不被更新覆蓋(逐步操作)

許多人手上只有機場提供的遠端訂閱連結,卻想在不直接修改訂閱 YAML 本文的前提下,額外加上去廣告國內網段直連、或自訂策略組與規則順序。最大的擔心是:每次按下「更新訂閱」,本機辛苦寫好的段落會不會被整份覆蓋?在 Clash Meta(Mihomo) 生態裡,正確做法是讓訂閱維持「上游單一真實來源」,把您的客製化放在profile/mixin 覆寫層,由核心或客戶端在載入時合併成最終生效設定。本篇用實務語彙整理合併順序、常見YAML 寫法,以及訂閱刷新後如何驗證規則仍在

為什麼「手改訂閱檔」一定會痛

遠端訂閱的本質是一份由機場維護的設定:節點清單、預設策略組、以及他們打包好的規則段落。客戶端每次更新時,通常會重新下載整份內容並取代快取檔案。若您把去廣告或 GEOIP 直連直接寫進這份被同步的檔案,下一次更新幾乎必然整段消失,頂多靠運氣多撐一兩次手動備份。工程上較健康的模型是:訂閱檔唯讀,您的差異化以覆寫層表達,讓「下載」與「客製」兩條線互不踩腳。

這與「用 Subconverter 先把訂閱轉成單一 YAML」不同:Subconverter 偏向離線或半自動產物,而 mixin/profile 覆寫偏向執行期合併。若您還在找「只有連結、沒規則」的起點,可先讀 Subconverter 轉 Clash 並匯入 Meta;本篇則假設您已能穩定載入訂閱,接下來要處理的是長期維護時的覆寫策略

觀念釐清:profile、mixin 與「合併後設定」

不同圖形介面對同一概念有不同叫法:有的叫 Profile、有的叫 Merge覆寫、有的把檔案放在獨立目錄。對 Mihomo(Clash Meta) 核心而言,重點是載入流程末端會得到一份已合併的完整設定樹,其中包含 portdnsproxiesproxy-groupsrulesrule-providers 等鍵。您可以把遠端訂閱視為基底層,把 mixin 視為覆蓋與補強層:基底負責節點與機場預設分流,覆寫層負責您個人的去廣告、直連、以及策略組命名習慣。

記一個心智模型

訂閱更新只應改變「機場想給您的節點與其預設規則」;您想永久保留的段落,應放在核心會再次合併進來的 mixin/覆寫檔,而不是訂閱快取本體。

合併順序與規則陣列

對於一般鍵值型欄位(例如開關類選項),覆寫層常採深層合併:同名鍵由後載入者取代。對於規則陣列 rules:,實際行為會依核心版本客戶端包裝方式略有差異:有的介面提供「規則前置/後置」兩欄,把您的清單拆成永遠先匹配或永遠殿後;有的則把 mixin 裡的 rules 與訂閱規則做串接。實務上請以合併後完整 YAML(若客戶端有預覽或匯出)為準,並用連線日誌確認命中順序。

分流邏輯永遠記得:規則由上而下匹配,先命中先贏。因此若您希望「去廣告/國內直連」不被訂閱裡較寬鬆的規則蓋掉,通常要把這類條目放在清單前段;若您希望保留機場對特定域名的特殊處理,再視情況調整插入點。這比盲目複製整份機場規則更容易維護。

mixin 覆寫 YAML 該怎麼寫(示意)

以下為結構示意,欄位名稱請對照您實際使用的核心版本與客戶端文件。重點是:把會長期維護的內容放在 mixin,讓訂閱檔維持乾淨。

# mixin fragment — merged on top of subscription profile at runtime
# Replace group names with your real policy group tags.

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

rules:
  - RULE-SET,reject-ads,REJECT
  - GEOSITE,cn,DIRECT
  - GEOIP,cn,DIRECT,no-resolve
  # subscription rules follow after merge — verify final order in UI

若您大量使用 rule-providers,下載路徑與更新週期往往是除錯熱點,可搭配 rule-providers 下載與 path 專文 一併校準。若 mixin 內新增的策略組名稱必須與 rules 中引用的一致,否則載入階段會直接報錯。

同名鍵會互相覆蓋

若 mixin 與訂閱都定義了同一個 proxy-groups 條目名稱,最終保留哪一方,取決於合併策略。建議不要在 mixin 裡重複定義機場已管理的同名策略組,改以新名稱擴充,或在規則層引用既有名稱,以降低衝突。

圖形客戶端要對到哪個選單

純命令列部署可參考 Linux 無頭環境的 Meta 與 systemd 一文 的「設定檔分層」思維。桌面端常見流程是:

  • 在訂閱分頁只負責 URL 與更新週期,不在此處長期手改正文。
  • 在「覆寫/Merge/mixin」類分頁建立片段,內容為合法 YAML 片段,儲存後由程式在啟動或重載時合併。
  • 若介面提供「訂閱編輯器」與「覆寫檔」兩個入口,請習慣把穩定需求放在後者。

Windows 與 macOS 首次安裝與權限路徑可對照 Clash for Windows 教學Clash Verge Rev macOS;本篇不重複按鈕截圖級教學,但合併觀念可跨客戶端沿用

常見客製場景怎麼落在覆寫層

需求 建議放進 mixin 的內容 注意
去廣告/追蹤封鎖 rule-providers 指向公開規則集,再在 rules 前置 RULE-SET 過激清單可能誤傷影音或登入流程,需逐步放寬
國內網站直連 GEOSITE,cnGEOIP,cn 置於個人化區塊前段 與 DNS 假 IP 模式連動,異常時先查 DNS 專文
自訂策略組 在 mixin 新增 proxy-groups,並讓規則引用新名稱 節點引用須與訂閱產生的 proxies 名稱一致
微調 DNS/嗅探 在 mixin 覆寫 dnssniffer 子鍵 大改前先備份,避免與機場預設互相打架

訂閱更新後的驗證步驟(建議養成習慣)

每次更新訂閱後跑這四步

  1. 在客戶端檢視「合併後/生效中」YAML,確認您的 mixin 段落仍存在。
  2. 搜尋 rules: 區塊,確認自訂規則列仍在預期相對位置(通常靠前)。
  3. 開啟連線或日誌面板,造訪一個應被 REJECTDIRECT 的測試目標,確認命中策略符合預期。
  4. 若使用 url-testfallback 等進階策略組,可再對照 url-test 與 fallback 專文 檢查健康檢查 URL 是否仍合理。

若合併後載入失敗,多半是 YAML 語法、重複鍵、或規則引用到不存在的策略組名稱。此時應先還原最近一次可用的 mixin,再分段加回差異,避免一次塞入過多未驗證片段。

常見問題

mixin 會不會把訂閱節點弄丟?

正常情況下不會:訂閱仍負責提供 proxies 本體,mixin 只補額外欄位或規則。若您誤在覆寫層寫了與訂閱衝突的同名結構,才可能出現「覆蓋」而非「追加」的意外。這也是為什麼建議新增名稱勝過硬改機場同名條目。

為什麼我的去廣告規則不生效?

優先檢查規則順序:較寬鬆的 MATCH 或機場內建域名規則若排在前面,會先攔走流量。其次檢查 rule-providers 是否成功下載(快取路徑、權限、更新失敗)。

我可以在訂閱編輯器裡改嗎?

短期測試可以,長期維護不建議。任何寫進「會被 URL 更新覆蓋的檔案」的內容,遲早會與 mixin 方案重複且互相矛盾。把客製化收斂到單一覆寫來源,日後除錯較省時間。

結語

Clash Meta 的強項在於設定可讀、可層疊:當您把「機場維護的訂閱」與「自己維護的 mixin」拆清楚,就不必在每次更新後重寫去廣告或直連段落。先把合併後 YAML看清楚,再用日誌驗證命中,就能把「怕沖掉」的焦慮轉成可重複的流程。

立即免費下載 Clash,開啟更可控的分流體驗

訂閱歸訂閱,覆寫歸覆寫

用 mixin/profile 合併保留自訂規則,訂閱更新不再沖掉您的去廣告與直連段落。

下載 Clash