先把前提講清楚:清單裡可以躺著十張卡片,但同一時間只有啟用的那一張在跑。切換設定檔不是換個節點那麼輕,是整份換掉——節點、策略群組、規則、DNS 那一段,全跟著變。想通這一點,下面兩條路各自的代價就好算了。
路線 A:手動切卡片
最直接,也不用動任何 YAML。上班用 A 家那份,晚上看影片切到 B 家那份,點一下卡片就好。這條路適合兩份設定的用途本來就分很開的情況,尤其是其中一份帶著別人寫好、你不想動的規則。
- 切換會重建連線。正在下載的東西會斷,影片會頓一下,長連線的通訊軟體要重連。別在傳大檔案的時候切。
- 兩份設定的規則往往不一樣。同一個網站在 A 家走代理、在 B 家被規則放直連,你會覺得「這網站時好時壞」,其實是設定在變。
- 切回來之後,手動選擇群組裡選中的節點未必還是原來那個。策略群組的選擇通常是各份設定分開記的。
路線 B:用 proxy-providers 併成一份
換個想法:不把訂閱當設定,只當成節點的來源。proxy-providers 就是幹這個的——每家訂閱登記成一個 provider,用戶端各自去抓、各自快取,抓回來的節點匯進你自己寫的策略群組。注意這裡只引進節點,規則和策略群組還是你這份設定自己的,任何一家訂閱裡的規則都不會跟著進來。
proxy-providers:
vendor-a:
type: http
url: "https://a.example.com/link?token=AAA"
path: ./providers/vendor-a.yaml
interval: 86400
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
vendor-b:
type: http
url: "https://b.example.com/link?token=BBB"
path: ./providers/vendor-b.yaml
interval: 86400
filter: "香港|新加坡|日本"
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
proxy-groups:
- name: PROXY
type: select
use:
- vendor-a
- vendor-b
url 就是那家的訂閱連結,和你平常貼進設定檔頁面的是同一條。path 是本機快取檔案,兩家務必寫成不同的檔名,重名會互相蓋掉,徵狀是節點數忽多忽少。interval 單位是秒,86400 就是一天。health-check 是這組節點自己的延遲測試,跟全域那個測速是兩回事。策略群組裡用 use 引 provider,它和 proxies 可以同時寫,手動加的固定節點照樣能列在一起。想自動挑最快的,把 type 換成 url-test。
併進來之後名字會打架
- 好幾家都有叫「香港 01」的節點,混在一個清單裡根本分不出是誰家的。最省事的辦法是給每個 provider 加
filter,按節點名稱做正規表示式篩選,只留你真的要用的那部分——例如 B 家只取日本線路。 filter寫錯的徵狀是那家一個節點都不剩,群組裡憑空少一半。改完先看群組裡還有沒有東西,再去測延遲。- 較新的 mihomo 可以在 provider 上做名稱覆寫,替來源統一加前綴。各家用戶端內嵌的核心版本參差不齊,不確定支不支援就先用
filter把重名的挑掉,效果差不多。
合併要付的代價
- 流量和到期時間看不到了。卡片上那些數字來自訂閱回應,合併之後你這份設定本身不是訂閱,剩下的額度得去各家後台自己看。
- 有一家掛了會拖累全體。provider 抓不下來或那批節點全逾時,健康檢查每輪都要等它們逾時,url-test 群組出結果會明顯變慢。哪家長期不通就先註解掉。
- 出問題時難定位。provider 的名字取得認得出來,日誌裡才看得出是哪一家在報錯。
- 這份設定從此歸你維護。服務商後來加的新規則、新策略群組,你不會自動拿到。
讓以後的自己好過一點
名字最值錢。別留一堆都叫 Subscription 的卡片,寫成一眼認得出來的樣子,例如服務商縮寫加到期月份——卡片清單掃一遍就知道哪份快到期了。到期不用的直接刪掉,別留著:用戶端會一直按間隔去更新它,每次都失敗,日誌裡堆一層沒用的紅字,你下次排查別的問題還得從裡面翻。試用期的訂閱單獨放,用完就清。