為什麼要理解 Clash YAML 設定檔?
許多使用者透過訂閱連結匯入機場設定後,就能在 Clash Verge Rev 等客戶端中一鍵上網,似乎永遠不必碰 config.yaml。然而當你需要自建節點、調整策略組、追加分流規則,或排查「某網站為何沒走代理」時,讀懂 YAML 設定檔就變成必備技能。
現代 Clash 客戶端多基於 Mihomo(原 Clash Meta)核心,設定檔採 YAML 格式,核心邏輯可歸納為三塊:proxies(代理節點)、proxy-groups(策略組)、以及 rule-providers + rules(規則集與規則列表)。本文從結構總覽出發,逐一拆解這三大模組的語法、常見陷阱與實戰範例,幫你建立可維護的設定思維。
設定檔整體結構一覽
一份典型的 Mihomo 設定檔除了三大核心外,還包含連接埠、DNS、外部控制器等區段。理解各區段職責,有助於定位問題:
| 區段 | 作用 | 是否必備 |
|---|---|---|
proxies |
定義每一個代理節點的連線參數 | 使用代理時必備 |
proxy-groups |
將節點組合成可選出口(手動/自動測速等) | 強烈建議 |
rule-providers |
宣告外部規則集來源 | 可選(手寫 rules 時可省略) |
rules |
決定流量走直連、代理或拒絕 | 規則模式必備 |
port / mixed-port |
本機代理監聽埠 | 建議設定 |
dns |
解析策略,影響規則命中 | 建議設定 |
資料流可簡化為:連線請求 → rules 匹配 → 指向 proxy-groups → 選出 proxies 中的具體節點 → 建立隧道。規則集負責「分流決策」,策略組負責「選哪個出口」,節點負責「怎麼連出去」。
代理節點(proxies)詳解
proxies 是一個陣列,每個元素描述一個可連線的代理節點。節點的 name 必須唯一,且會被 proxy-groups 的 proxies 清單引用——名稱不一致是設定載入失敗的常見原因。
常見協定與欄位
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:依協定而異的認證資訊。sni、alpn:TLS 相關,影響握手與偽裝。udp:是否轉發 UDP,遊戲與語音場景建議開啟。skip-cert-verify:是否跳過憑證驗證,生產環境建議保持false。
訂閱與手寫節點的關係
機場訂閱拉取後,proxies 通常由服務商維護,使用者無需逐條手寫。自建節點或混合訂閱時,可在覆寫(Override)中追加 proxies 區段,或將完整 YAML 存為本機檔案匯入。修改後若客戶端報「節點不存在」,先核對策略組引用的名稱是否與 proxies[].name 完全一致(含全形/半形、空格)。
策略組(proxy-groups)詳解
若 proxies 是「單兵」,proxy-groups 就是「編隊」。規則列表第三欄(如 PROXY、DIRECT)通常填寫策略組名稱或內建動作,而非單一節點名。這樣你可以在客戶端「代理」頁切換整組出口,無需改規則。
四種策略組類型
| 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-test 與 fallback 需指定 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指向本機副本。behavior:domain、ipcidr、classical等,決定規則集內容格式。path:客戶端快取路徑,首次需聯網下載。interval:自動更新週期(秒),86400即每日更新。
規則集名稱(如 gfw、cn)自定義,只要在 rules 的 RULE-SET 中一致引用即可。優質機場訂閱往往已內建等效規則集,使用者匯入即用;精簡訂閱或自建環境才需手動宣告 rule-providers。
規則列表(rules)與匹配邏輯
rules 是有序列表,從上到下匹配,首條命中即停止。因此局域網、廣告攔截等優先規則應靠前;GEOIP,CN,DIRECT 與 MATCH,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-CIDR、GEOIP、RULE-SET、MATCH(必須最後一條)。進階覆寫可用 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 對空格敏感)與引號是否成對。
最佳實踐與常見陷阱
- 名稱一致:
proxy-groups.proxies中的字串必須對應已存在的節點name或子策略組。 - 規則順序:具體規則在前,寬泛兜底在後;勿將
MATCH,DIRECT作為預設(未匹配境外站會直連失敗)。 - 優先用覆寫:機場訂閱不建議直接改遠端 YAML,用 Merge/Override 追加
prepend-rules或局部proxy-groups,更新訂閱時不會丟失。 - DNS 與規則聯動:
GEOIP依賴解析出的 IP;DNS 污染可能導致誤判,必要時為特定網域指定nameserver-policy。 - 備份與版本:重大修改前匯出設定副本;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 客戶端在訂閱匯入、分流模板與覆寫入口上已做優化,適合想「看懂設定、按需微調」的使用者。