1. 首頁
  2. 部落格
  3. Clash 設定檔是什麼?Profile 結構入門與多設定切換管理

Clash 設定檔是什麼?Profile 結構入門與多設定切換管理

從 config.yaml 的埠口、代理群組、規則三大區塊講起,解釋訂閱連結與本機設定的關係,示範在客戶端中匯入、更新、切換多份 Profile 的正確做法與常見誤區。

剛接觸 Clash 的使用者常把「設定檔」和「訂閱連結」混為一談,遇到規則不生效、節點切換後沒反應、更新完設定反而失效等問題時無從下手。實際上 Clash 系客戶端(包括使用 mihomo 核心的 Clash Verge、Clash for Windows 衍生版、ClashX 等)運行的核心就是一份 YAML 格式的設定檔,業界通常稱作 config.yaml 或者客戶端裡的 Profile。理解它的結構、來源與更新機制,是排查絕大多數使用問題的前提。

config.yaml 的三大結構區塊

一份完整的 Clash 設定檔本質上是純文字,按功能可以拆成三大部分:基礎埠口與運行參數、代理群組(proxy-groups)、規則(rules)。三者配合出站節點定義(proxies)共同決定流量最終走哪條路徑。

port: 7890
socks-port: 7891
mixed-port: 7892
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090

proxy-groups:
  - name: 自動選擇
    type: url-test
    proxies: [香港01, 日本01, 新加坡01]
    url: http://www.gstatic.com/generate_204
    interval: 300

rules:
  - DOMAIN-SUFFIX,googlevideo.com,自動選擇
  - GEOIP,CN,DIRECT
  - RULE-SET,reject,REJECT
  - MATCH,自動選擇

第一部分是埠口與運行模式:port / socks-port 分別開放 HTTP 與 SOCKS5 本機代理埠口,mixed-port 則是兩者合一的混合埠口,大多數現代客戶端預設只用這一個;allow-lan 決定是否允許區域網路內其他裝置接入這台機器的代理;mode 常見取值有 rule(按規則分流)、global(全域走同一節點)、direct(直連,不走代理)。

第二部分是代理群組,決定「選哪個節點」。select 類型是手動選擇,客戶端裡點一下就切換;url-test 會按設定的 interval 週期自動測速並選出延遲最低的節點;fallback 是主節點無法使用時按順序回退;load-balance 則把請求按雜湊或輪詢分攤到多個節點上,常用於需要穩定連線保持的場景。

第三部分是規則,決定「什麼流量走哪個群組」。規則從上到下逐條比對,命中即停止,常見規則類型有:

DOMAIN-SUFFIX · DOMAIN-KEYWORD · GEOIP · IP-CIDR · RULE-SET · MATCH
  • DOMAIN-SUFFIX:按網域名稱後綴比對,比如 googlevideo.com 命中所有子網域;
  • GEOIP:按目標 IP 所屬國家/地區比對,常用 GEOIP,CN,DIRECT 讓中國大陸流量直連;
  • RULE-SET:引用外部規則集檔案,方便維護大量網域而不用堆在主設定裡;
  • MATCH:兜底規則,必須放在最後一行,決定「以上都不命中時怎麼辦」。
規則是逐行從上往下比對的,順序寫反(比如把 MATCH 放在中間)會導致後面的規則永遠不會被執行到,這是新手最常踩的坑之一。

訂閱連結與本機設定檔的關係

訂閱連結本質上是一個可以直接被客戶端 fetch 的 URL,伺服器端回傳的內容就是上面說的那份 YAML 文字(或者是需要客戶端再轉換一次的通用訂閱格式)。客戶端拿到這段文字後,並不是每次都重新請求,而是把它儲存成本機檔案,這份本機儲存的檔案就是 Profile。換句話說,訂閱連結是「設定的來源」,Profile 是「設定在本機的落地形式」——即便斷網,客戶端依然能用上一次同步下來的 Profile 正常運作。

一份 Profile 不一定來自訂閱,也可以是完全手寫或從別處下載的本機檔案,兩者在客戶端裡的地位是一樣的,都會出現在設定清單裡供切換。差別只在於訂閱類型的 Profile 帶有一個遠端位址,客戶端可以按設定的 update-interval(通常以小時為單位)自動重新拉取最新內容並覆寫本機檔案;本機檔案類型的 Profile 則沒有這個自動更新的動作,改動只能手動重新匯入。

不少訂閱服務會在回應標頭中帶上 subscription-userinfo 欄位,包含已用流量、總流量、到期時間,客戶端解析後會顯示在 Profile 清單旁邊,這也是為什麼有些訂閱匯入後能看到流量進度條,有些卻只顯示一個純粹的檔案名稱——取決於伺服器端有沒有提供這段資訊,與客戶端本身無關。

在客戶端中匯入、更新與切換 Profile

不同客戶端的介面用詞略有差異,但匯入設定的方式基本分兩類:貼上訂閱連結,或者選擇本機檔案。以下是通用操作流程,具體選單位置請以各客戶端實際介面為準。

  1. 開啟客戶端的「設定」「Profiles」或「訂閱管理」頁面;
  2. 點擊新增按鈕,選擇「從 URL 匯入」,貼上訂閱連結後確認,客戶端會自動下載並解析為一份新 Profile;
  3. 如果是本機設定檔,選擇「從檔案匯入」,指向已下載好的 .yaml 檔案即可;
  4. 匯入完成後,在清單中點選該條目將其設為當前生效設定,大多數客戶端會用勾選標記或高亮邊框表示「正在使用」的那一份;
  5. 如需更新,點擊該條目旁的重新整理圖示即可重新拉取遠端內容,不必刪除重建。

關於自動更新,建議把間隔設定在 12~24 小時之間,不要設得過短。頻繁請求訂閱介面不僅沒有必要(節點清單通常不會一天變化多次),部分服務商還會對高頻請求做限速甚至暫時封鎖處理。

操作適用對象說明
從 URL 匯入訂閱連結儲存遠端位址,可後續手動或自動更新
從檔案匯入本機 .yaml無遠端位址,更新需重新手動匯入覆寫
手動更新訂閱類型 Profile立即拉取一次最新內容,不等待自動週期
切換生效所有類型只有被選中的一份 Profile 會驅動當前代理行為

值得強調的是,客戶端裡儲存多份 Profile 並不會互相干擾——同一時刻只有被選中的那一份在真正生效,其他未選中的設定只是靜態存放,不會佔用運行中的埠口或消耗額外資源。這也是為什麼「多設定管理」是剛需:出差時切一份低延遲的中轉設定,平時切回主訂閱,測試新規則時再切一份暫存草稿,互不影響。

多設定管理的常見誤區

掌握了匯入和切換,接下來這幾個誤區是實際使用中最容易踩坑的地方。

手動改動會被訂閱更新覆蓋

如果直接在訂閱類型 Profile 的本機檔案裡手寫了額外規則,下一次自動更新會用遠端回傳的新內容整份覆寫,手改的部分隨之消失。需要長期自訂規則又不想失去訂閱內容,應使用客戶端提供的「覆寫」「Override」或「補丁設定」功能——它在訂閱原始內容之上疊加一層獨立儲存的自訂規則/代理群組,更新訂閱時只替換基礎部分,疊加層不受影響。

多個訂閱的代理群組命名衝突

不同服務商的訂閱裡可能都用了「香港節點」「自動選擇」這類通用命名,如果嘗試把兩份訂閱內容手動合併到一份設定裡,規則引用的代理群組名稱容易對不上,導致規則比對後卻找不到對應群組,流量會走進兜底的 MATCH 分支而不是預期節點。跨訂閱合併設定前,建議先統一檢查代理群組命名是否唯一。

誤以為切換 Profile 等於切換節點

切換 Profile 切換的是整份設定——包括埠口、規則、代理群組定義;而日常「換個節點線路」通常只需要在當前 Profile 內的某個代理群組裡重新選擇節點,不需要切換整份設定。混淆這兩個操作會導致規則和分流邏輯跟著一起變,排查問題時定位不到真正原因。

更新間隔設定過短

前面提到過,把自動更新間隔設成幾分鐘一次看似「更即時」,實際上多數訂閱節點清單並不會短時間內頻繁變化,過高頻率的請求反而增加被限流的風險,合理區間是 12~24 小時,重要變更前手動點一次更新即可。

常見問題

Profile 和訂閱連結可以有多份嗎?會互相衝突嗎?

可以同時儲存任意數量的 Profile,它們只是清單裡的獨立條目,彼此不會衝突。衝突只發生在把多份內容手動合併進同一份設定檔時,命名或規則順序處理不當才會出問題。

為什麼更新訂閱後規則突然失效了?

大機率是訂閱伺服器端更新了規則集或代理群組結構,原有的自訂手改內容被整份覆寫。使用覆寫/補丁功能儲存自訂部分,可以避免這個問題反覆出現。

本機檔案類型的 Profile 能設定自動更新嗎?

不能。自動更新依賴一個可請求的遠端位址,純本機檔案沒有這個位址,內容變化只能透過重新手動匯入來同步。

取得 Clash 客戶端

準備好設定檔後,先取得一個支援 Profile 管理的客戶端,再依上文步驟匯入訂閱或本機設定即可開始使用。

下載客戶端