為什麼要理解 Clash YAML 設定檔?

許多使用者透過訂閱連結匯入機場設定後,就能在 Clash Verge Rev 等客戶端中一鍵上網,似乎永遠不必碰 config.yaml。然而當你需要自建節點調整策略組追加分流規則,或排查「某網站為何沒走代理」時,讀懂 YAML 設定檔就變成必備技能。

現代 Clash 客戶端多基於 Mihomo(原 Clash Meta)核心,設定檔採 YAML 格式,核心邏輯可歸納為三塊:proxies(代理節點)、proxy-groups(策略組)、以及 rule-providers + rules(規則集與規則列表)。本文從結構總覽出發,逐一拆解這三大模組的語法、常見陷阱與實戰範例,幫你建立可維護的設定思維。

前提:若你尚未完成客戶端安裝與訂閱匯入,可先閱讀本站 Clash Verge Rev 安裝設定教學;規則匹配細節可搭配 規則分流深度解析 一併學習。

設定檔整體結構一覽

一份典型的 Mihomo 設定檔除了三大核心外,還包含連接埠、DNS、外部控制器等區段。理解各區段職責,有助於定位問題:

區段 作用 是否必備
proxies 定義每一個代理節點的連線參數 使用代理時必備
proxy-groups 將節點組合成可選出口(手動/自動測速等) 強烈建議
rule-providers 宣告外部規則集來源 可選(手寫 rules 時可省略)
rules 決定流量走直連、代理或拒絕 規則模式必備
port / mixed-port 本機代理監聽埠 建議設定
dns 解析策略,影響規則命中 建議設定

資料流可簡化為:連線請求 → rules 匹配 → 指向 proxy-groups → 選出 proxies 中的具體節點 → 建立隧道。規則集負責「分流決策」,策略組負責「選哪個出口」,節點負責「怎麼連出去」。

代理節點(proxies)詳解

proxies 是一個陣列,每個元素描述一個可連線的代理節點。節點的 name 必須唯一,且會被 proxy-groupsproxies 清單引用——名稱不一致是設定載入失敗的常見原因。

常見協定與欄位

Mihomo 支援 Shadowsocks、VMess、Trojan、VLESS、Hysteria2、TUIC 等協定。以下以 Trojan 與 Shadowsocks 為例:

proxies:
  - name: 香港-01
    type: trojan
    server: hk.example.com
    port: 443
    password: your-password
    sni: hk.example.com
    skip-cert-verify: false

  - name: 美國-SS
    type: ss
    server: us.example.com
    port: 8388
    cipher: aes-256-gcm
    password: your-password
    udp: true
  • server / port:節點位址與埠,必填。
  • password / uuid:依協定而異的認證資訊。
  • snialpn:TLS 相關,影響握手與偽裝。
  • udp:是否轉發 UDP,遊戲與語音場景建議開啟。
  • skip-cert-verify:是否跳過憑證驗證,生產環境建議保持 false

訂閱與手寫節點的關係

機場訂閱拉取後,proxies 通常由服務商維護,使用者無需逐條手寫。自建節點或混合訂閱時,可在覆寫(Override)中追加 proxies 區段,或將完整 YAML 存為本機檔案匯入。修改後若客戶端報「節點不存在」,先核對策略組引用的名稱是否與 proxies[].name 完全一致(含全形/半形、空格)。

安全提醒:設定檔含密碼與節點位址,勿上傳至公開 Paste 或截圖分享。備份時建議加密存放,並定期向服務商輪換訂閱連結。

策略組(proxy-groups)詳解

proxies 是「單兵」,proxy-groups 就是「編隊」。規則列表第三欄(如 PROXYDIRECT)通常填寫策略組名稱或內建動作,而非單一節點名。這樣你可以在客戶端「代理」頁切換整組出口,無需改規則。

四種策略組類型

type 行為 典型場景
select 手動從清單選擇節點或子策略組 「節點選擇」主組、地區分組
url-test 定期測速,自動選延遲最低節點 「自動選擇」日常主力組
fallback 按順序嘗試,主節點失效時切換 高可用備援鏈路
load-balance 多節點分攤連線 大流量、多連線下載
proxy-groups:
  - name: PROXY
    type: url-test
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    proxies:
      - 香港-01
      - 美國-SS
      - 日本-01

  - name: 手動選擇
    type: select
    proxies:
      - PROXY
      - 香港-01
      - DIRECT

  - name: 故障轉移
    type: fallback
    url: https://www.gstatic.com/generate_204
    interval: 120
    proxies:
      - 香港-01
      - 美國-SS

url-testfallback 需指定 url(測速/健康檢查位址)與 interval(秒)。tolerance 僅用於 url-test:新節點延遲需比當前低超過該毫秒數才切換,避免頻繁跳線。select 類型的 proxies 可嵌套其他策略組(如 PROXY),形成「手動選自動組」的層級結構。

機場訂閱常預設「節點選擇」「自動選擇」「故障轉移」等組名。自訂規則時,rules 中的第三欄必須與訂閱內實際組名一致;不確定時可在客戶端設定預覽或匯出 YAML 查看。

規則集(rule-providers)詳解

手動維護數千條 DOMAIN-SUFFIX 不切實際。rule-providers 讓你引用外部規則檔(HTTP 遠端或本機),並在 rules 中以 RULE-SET 引用。社群常用的 Loyalsoldier/clash-rules 將網域分為國內、被牆、廣告攔截等類別,與 Mihomo 相容良好。

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

  gfw:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400

  cn:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cn.txt"
    path: ./ruleset/cn.yaml
    interval: 86400
  • type: http:從 URL 下載;離線環境可改 file 指向本機副本。
  • behaviordomainipcidrclassical 等,決定規則集內容格式。
  • path:客戶端快取路徑,首次需聯網下載。
  • interval:自動更新週期(秒),86400 即每日更新。

規則集名稱(如 gfwcn)自定義,只要在 rulesRULE-SET 中一致引用即可。優質機場訂閱往往已內建等效規則集,使用者匯入即用;精簡訂閱或自建環境才需手動宣告 rule-providers

規則列表(rules)與匹配邏輯

rules 是有序列表,從上到下匹配,首條命中即停止。因此局域網、廣告攔截等優先規則應靠前;GEOIP,CN,DIRECTMATCH,PROXY 等兜底規則應靠後。

rules:
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - RULE-SET,reject,REJECT
  - RULE-SET,gfw,PROXY
  - RULE-SET,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

第三欄可以是內建動作 DIRECT(直連)、REJECT(拒絕),或策略組名稱如 PROXY。TUN 模式下訪問 NAS、印表機時,務必保留私有網段 IP-CIDR 直連規則,且位於 MATCH 之前。

常用單條規則類型包括 DOMAIN(精確域名)、DOMAIN-SUFFIX(子網域)、DOMAIN-KEYWORD(關鍵字,易誤傷需慎用)、IP-CIDRGEOIPRULE-SETMATCH(必須最後一條)。進階覆寫可用 prepend-rules 在列表最前插入自訂規則,無需改動訂閱本體。

完整設定範例(精簡版)

以下將三大核心串聯為可運行的精簡範例(連接埠與 DNS 已省略部分進階欄位,實際使用請依環境補全):

mixed-port: 7890
mode: rule

proxies:
  - name: 香港-01
    type: trojan
    server: hk.example.com
    port: 443
    password: secret

proxy-groups:
  - name: PROXY
    type: url-test
    url: https://www.gstatic.com/generate_204
    interval: 300
    proxies:
      - 香港-01

rule-providers:
  gfw:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
    path: ./ruleset/gfw.yaml
    interval: 86400

rules:
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - RULE-SET,gfw,PROXY
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

載入後在客戶端選擇「規則」出站模式,於「代理」頁確認 PROXY 組已選中節點。若設定無法載入,先用 YAML 校驗工具檢查縮排(YAML 對空格敏感)與引號是否成對。

最佳實踐與常見陷阱

  1. 名稱一致proxy-groups.proxies 中的字串必須對應已存在的節點 name 或子策略組。
  2. 規則順序:具體規則在前,寬泛兜底在後;勿將 MATCH,DIRECT 作為預設(未匹配境外站會直連失敗)。
  3. 優先用覆寫:機場訂閱不建議直接改遠端 YAML,用 Merge/Override 追加 prepend-rules 或局部 proxy-groups,更新訂閱時不會丟失。
  4. DNS 與規則聯動GEOIP 依賴解析出的 IP;DNS 污染可能導致誤判,必要時為特定網域指定 nameserver-policy
  5. 備份與版本:重大修改前匯出設定副本;Mihomo 新欄位請對照 官方 Wiki,避免舊語法失效。

更多圖文說明可參考本站 設定指導頁 中的策略組與規則範例;若只需「匯入即用」,使用教學 中的客戶端流程同樣適用。

常見問題

設定檔一定要手寫 YAML 嗎?

不一定。訂閱匯入後客戶端會自動管理 YAML。只有自建、深度自訂或排查問題時,才需要直接閱讀或編輯設定檔,或透過覆寫片段修改。

proxies 與 proxy-groups 有什麼差別?

proxies 定義單節點連線參數;proxy-groups 將多節點組合成邏輯出口。規則通常指向策略組,由策略組再決定實際節點。

rule-providers 更新失敗怎麼辦?

檢查規則集 URL 是否可達,必要時更換 CDN 鏡像、改為本機 file 類型,或在訂閱轉換時將規則 baked 進設定。客戶端日誌中常有下載錯誤提示。

修改 YAML 後代理全部失效?

多為語法錯誤或節點名稱不匹配。先停用覆寫排查,用「設定預覽」定位報錯行;恢復上一份備份後逐段追加修改。

相較功能封閉的商業「加速器」,只能切換少數預設線路、分流邏輯完全不透明;或已停更的舊版 Clash 客戶端,無法支援 Hysteria2、TUIC 等新協定——Clash + Mihomo + 可讀 YAML 的優勢在於:每一條節點、策略組與規則都可追溯、可覆寫、可遷移,訂閱換了服務商也不必從零學起。若你希望減少手寫 YAML 的時間,又保留進階調校空間,本站整合的 Clash 客戶端在訂閱匯入、分流模板與覆寫入口上已做優化,適合想「看懂設定、按需微調」的使用者。

立即免費下載 Clash,輕鬆掌握 YAML 設定精髓 →