用戶端觀察 · Clash 技術部落格

Mihomo、Clash Meta 和原版 Clash 有什麼區別?設定相容與遷移指南

Mihomo 是仍在維護的核心,Clash Meta 是它過去使用過的名稱,原版 Clash 則已經停在另一條版本線上。先把名字分清,再判斷舊設定能不能遷移。

  • Mihomo
  • Clash Meta
  • 設定相容
  • 核心
本文目錄

Mihomo、Clash Meta、原版 Clash,先分清它們是不是同一層東西

Original Clash 通常指 Dreamacro 發起的早期 Clash 核心;Clash Meta 是在其設定思路上繼續擴展的分支;Mihomo 則是 Clash Meta 後來採用的專案名稱。

Clash Meta 與 Mihomo 指向同一專案的不同階段,不是兩套需要二選一的新核心。很多舊教學寫「Meta」,目前專案和日誌裡則更多出現「Mihomo」。

更容易混淆的是用戶端名稱。Clash Verge Rev、FlClash 和 Clash Party 是圖形用戶端,它們負責訂閱、系統代理和介面,裡面實際執行的核心才可能是 Mihomo。檔案名帶 Clash,不足以證明它使用的是原版 Clash。

名稱對應的層級

名稱通常指什麼現在看它有什麼用
Original Clash最初的 Clash 核心與基礎設定模型理解歷史設定和舊用戶端行為
Clash Meta在原有模型上擴展的後續核心名稱閱讀舊文件、舊日誌和舊訂閱說明
MihomoClash Meta 目前使用的專案名稱新部署、目前欄位和維護中的核心
Clash 圖形用戶端管理核心的桌面或移動應用看介面、平台支援和實際內建核心版本

不要憑圖示判斷,去「關於」和啟動日誌裡看版本

同一份訂閱在兩台電腦上表現不同,常見原因不是訂閱隨機變化,而是用戶端內建了不同核心或版本。先開啟用戶端的「設定 → 關於」「核心」或「執行日誌」,記錄完整名稱和版本;命令列部署則直接查看二進位的版本輸出。

命令列環境的確認方式
mihomo -v

# 如果机器上运行的是旧名称的二进制,也应先看它自己的版本
clash -v

記錄時不要只寫「最新版」

  • 用戶端名稱與版本
  • 核心顯示為 Mihomo、Clash Meta 還是 Clash
  • 核心具體版本號
  • 作業系統和 CPU 架構
  • 發生錯誤時實際載入的設定檔

設定格式相似,也不能直接在不同核心間來回使用

Mihomo 延續了 proxies、proxy-groups 和 rules 等核心結構,所以基礎設定看起來很熟悉。但它後來增加或擴展了協議、DNS、TUN、規則集、嗅探和執行階段欄位。

舊核心遇到自己不認識的內容,可能報 unknown field、unsupported proxy type,也可能直接忽略某些欄位,留下更難發現的行為差異。

反方向也不是百分之百無痛。舊設定如果引用已經變化的行為、指令碼能力或用戶端產生欄位,在 Mihomo 中可能需要重新驗證。真正的相容標準不是「YAML 能開啟」,而是設定檢查透過、策略群組引用完整、規則命中與 DNS 結果都符合預期。

同一份訂閱最容易出現差異的地方

部分原版 Clash 環境Mihomo 環境遷移時怎麼做
節點協議與傳輸取決於舊核心及其版本,只認識當時支援的欄位持續增加和維護更多協議與傳輸選項出現 unsupported proxy type 時核對核心,不刪除節點欄位硬湊
DNS不同開源/Premium 版本的能力與欄位並不完全一樣目前文件包含完整的 DNS、Fake-IP 和 nameserver 選項先沿用最小 DNS,再逐項遷移 Fake-IP 過濾和上游
TUN是否可用取決於舊版分支、版本和用戶端整合目前 Mihomo 與主流用戶端普遍提供 TUN先用系統代理驗證,再單獨開啟 TUN 和服務權限
規則與 Provider舊核心只接受它認識的規則類型和結構支援目前文件中的規則、規則集及擴展欄位檢查 rule-provider behavior、策略群組名稱和最終合併結果
用戶端附加欄位可能由舊 GUI 的 Mixin、Parsers 或指令碼產生由新用戶端的 Merge、Script 或覆寫產生只遷移目的,不整段複製用戶端私有設定

unknown field

常見原因:目前核心不認識該欄位,或欄位被放錯層級

處理方法:以實際核心版本的官方文件核對,不靠刪除冒號試錯。

unsupported proxy type

常見原因:協議或傳輸能力超出目前核心支援

處理方法:升級到服務方要求的維護中核心,或改用相容節點。

proxy/group not found

常見原因:策略群組、規則或覆寫引用的名稱不存在

處理方法:檢查最終合併設定,而不只看原始訂閱。

能載入但規則表現不同

常見原因:DNS、規則順序或用戶端覆寫改變了執行結果

處理方法:用連線記錄對照同一網域的命中規則和出口。

新裝環境優先選維護中的 Mihomo,舊核心只留給明確的遺留需求

如果現在重新安裝桌面用戶端、路由器外掛程式或伺服器服務,優先選擇明確使用 Mihomo、仍有官方發布和問題跟蹤的專案。這樣做主要是為了目前系統相容、安全修復和文件一致,而不是因為名稱更新就自動更快。

保留 Original Clash 的合理情境通常很窄:某套離線環境已經凍結,設定只使用它已知的能力,而且升級風險高於收益。即便如此,也應記錄二進位來源、版本和還原方法,不應繼續把舊核心暴露為公用網路控制服務。

普通桌面使用者
選內建 Mihomo 的持續維護用戶端,從一份乾淨訂閱開始。
OpenWrt 使用者
同時確認外掛程式版本、Mihomo 核心架構和可用儲存,不只升級 LuCI 頁面。
伺服器端或容器部署
鎖定明確版本,先在測試目錄執行設定檢查,再替換執行實例。
遺留原版環境
保持隔離與可回滾,不將新協議訂閱直接推給舊核心。

遷移時先復現舊行為,再逐項啟用新能力

一份設定的安全遷移順序

  1. 保留舊設定

    備份舊設定、核心版本和一組可重複存取的測試位址。

  2. 移除用戶端私有項

    不要把舊 GUI 的視窗、快取或服務設定當成 Mihomo 設定複製。

  3. 先跑設定檢查

    處理第一條 unknown field、類型或引用錯誤,避免一次刪掉整段。

  4. 固定相同節點

    對照常用網站、內部網域和一個不讀取系統代理的應用。

  5. 再開 DNS 與 TUN 擴展

    一次只改變一層,觀察連線記錄、規則命中和退出後的網路恢復。

遷移完成的判斷不是用戶端顯示「已連線」,而是舊環境中的關鍵流量在新核心裡命中預期規則,區域網路與內部網域仍能直連,系統代理或 TUN 關閉後網路能恢復。達成這些結果以後,再刪除舊二進位和舊服務。

參考資料