先區分核心、客戶端與設定

Clash 生態最容易混淆的地方,在於許多專案名稱都含有 Clash,但它們並不屬於同一層。原始 Clash、Clash.Meta 與 mihomo 主要是代理核心;Clash Verge Rev、Clash Nyanpasu、ClashX 等則是圖形化客戶端;訂閱連結、YAML 檔案與規則集則是交由核心讀取的資料。判斷專案用途時,先確認它所處的層級,比比較介面截圖更有效。

核心負責實際的網路處理

核心會監聽本機代理連接埠、建立與代理伺服器的連線,並依照規則決定流量走向。常見工作包括解析 YAML 設定、管理代理群組、比對網域與 IP 規則、執行 DNS 策略、提供 REST API,以及在支援的平台上接管 TUN 流量。以下是一段典型的核心基礎設定:

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info

external-controller: 127.0.0.1:9090
secret: "change-this-controller-secret"

dns:
  enable: true
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

這裡的 7890 是 HTTP 與 SOCKS5 共用的混合連接埠,9090 是控制介面連接埠,1053 是範例 DNS 監聽連接埠。圖形化客戶端通常會透過控制介面讀取節點清單、切換代理群組與查看連線記錄。介面上的「選擇節點」最後會轉換為對核心 API 的呼叫。

圖形化客戶端負責生命週期與系統整合

  • 下載、更新與切換訂閱設定。
  • 啟動、停止並監控核心程序。
  • 設定系統代理,或建立 TUN 虛擬網卡。
  • 提供代理群組、規則、連線、日誌與流量統計介面。
  • 儲存客戶端本身的設定,例如開機啟動、系統匣行為與核心路徑。

因此,同一份訂閱在兩個客戶端中的表現不同,不一定代表訂閱內容發生變化。差異可能來自核心版本、DNS 預設值、TUN 實作、客戶端寫入的覆寫欄位,或客戶端只顯示部分設定項目。

原始 Clash、Clash.Meta 與 mihomo 的承襲關係

原始 Clash 奠定設定與 API 結構

Dreamacro 維護的原始 Clash 以 Go 撰寫,建立了這套生態最重要的相容基礎:YAML 設定、代理群組、依序比對的規則系統、HTTP 與 SOCKS 監聽連接埠,以及外部控制 API。許多客戶端最初都是圍繞這些介面開發。原始儲存庫已於 2023 年停止維護並進入封存狀態,此後繼續依賴原始核心,將不再取得上游協定適配、平台相容性與網路堆疊修正。

歷史上的 Clash Premium 是具備額外功能的獨立發行線,曾提供規則集、腳本與更完整的 TUN 能力。它不是今天選擇新客戶端時仍應追蹤的活躍開源主線。舊教學中出現的 rule-providerstunscript 欄位,需要配合實際核心判斷,不能只憑「Clash 設定」四個字推測相容性。

Clash.Meta 擴充原有能力

Clash.Meta 由 MetaCubeX 社群維護,起點是相容 Clash 設定與控制介面,同時擴充協定、DNS、規則、監聽器與 TUN 功能。過去許多設定提供者會將相應訂閱標記為「Clash Meta」。這類訂閱可能包含原始 Clash 不認識的代理類型或欄位,因此直接匯入舊版 ClashX、舊版 Clash for Windows 或原始 Clash 核心,可能發生解析失敗,也可能靜默忽略部分選項。

mihomo 是 Clash.Meta 的後續名稱

Clash.Meta 後來更名為 mihomo。名稱變更不代表設定體系被全面推翻:常見的 proxiesproxy-groupsrulesproxy-providersrule-providers 結構仍然沿用。實際遷移重點在於客戶端是否使用活躍的 mihomo 核心、核心版本是否符合設定要求,以及客戶端是否在啟動前修改設定。

mihomo 的版本通常以 v1.x.x 格式發布。排查問題時應記錄完整版本號,而不是只寫「Meta 核心」。客戶端的「設定」→「核心」或「設定」→「版本」頁面通常可以查看這項資訊;不同專案的選單名稱略有差異。日誌開頭通常也會列出版本、Go 執行環境與目標架構,例如 linux-amd64windows-amd64darwin-arm64

桌面客戶端分支各自解決哪些問題

Clash Verge 與 Clash Verge Rev

Clash Verge 是使用 Tauri 建構的跨平台桌面客戶端,介面層與代理核心分離。原專案停止維護後,Clash Verge Rev 作為社群延續分支,持續適配 mihomo。兩者名稱相近,但維護狀態與核心更新來源不同。新安裝時應確認專案名稱是否明確標示為 Rev,並在「設定」→「核心設定」查看實際載入的 mihomo 版本。

Clash Verge Rev 適合需要在 Windows、macOS 與 Linux 上維持近似操作方式的使用者。常見流程是「訂閱」→「新增」加入訂閱網址,更新後在「代理」頁面選擇策略群組,再到「設定」開啟系統代理或 TUN 模式。系統代理主要接管遵循作業系統代理設定的程式;TUN 模式則透過虛擬網卡處理更多類型的流量,通常還需要管理員權限,以及正確的路由與 DNS 設定。

Clash Nyanpasu

Clash Nyanpasu 同樣屬於跨平台圖形化客戶端,專案重點放在設定管理、核心管理與桌面互動。它不是 mihomo 的替代品,而是負責下載或呼叫核心、產生執行設定並顯示核心狀態。使用時應分別確認「客戶端版本」與「核心版本」,因為只更新介面程式不代表代理核心也已更新。

Nyanpasu 適合需要管理多份設定、覆寫與代理群組的使用者。訂閱更新後若行為發生變化,應依序檢查「設定」中的目前啟用項目、覆寫內容、核心選擇與執行日誌。若一份設定能在命令列 mihomo 中啟動,卻在 Nyanpasu 中失敗,應重點檢查客戶端合併後的最終設定,而不是只檢查原始訂閱檔案。

ClashX、ClashX Pro 與 ClashX.Meta

ClashX 是較早出現的 macOS 選單列客戶端,操作入口集中在狀態列圖示中。其經典版本圍繞原始 Clash 核心設計,適合用來理解許多舊版 macOS 教學中的選單結構,例如「設為系統代理」、「出站模式」與代理群組選擇。由於原始核心已封存,經典 ClashX 不適合用於依賴新協定、新規則集能力或新版 macOS 網路變化的設定。

ClashX Pro 屬於歷史上的增強發行線,不能只根據名稱中的 Pro 推斷它使用 mihomo。ClashX.Meta 則是因應 Meta 核心相容需求而出現的分支。三者的圖示與選單可能相似,但核心來源並不相同。匯入設定前,應開啟「說明」→「關於」或查看啟動日誌,確認核心名稱與版本。只比較應用程式檔名,無法判斷是否支援某種代理類型。

Clash for Windows

Clash for Windows 曾是使用範圍廣泛的桌面客戶端,但它不是開源專案,且已於 2023 年停止維護。許多舊教學仍以其「Profiles」「Proxies」「General」與「Connections」頁面作為範例。閱讀這些教學時,可以理解其中的設定概念,但不應將頁面路徑直接套用到 Verge Rev 或 Nyanpasu。

從 Clash for Windows 遷移時,優先遷移訂閱網址或原始 YAML,不要複製整個程式目錄。舊目錄中可能還包含客戶端產生的合併設定、快取規則集與本機覆寫。新客戶端重新匯入訂閱後,再逐項重建連接埠、區域網路存取、TUN 與 DNS 設定,會更容易定位差異。

行動裝置、路由器與網頁面板的定位

行動裝置客戶端是獨立實作

Android 與 iOS 上的應用程式即使支援 Clash 格式,也不一定直接執行與桌面端相同的核心二進位檔。行動作業系統對背景程序、VPN 介面、DNS 與電量管理有獨立限制。Android 客戶端通常透過系統 VPN API 建立 TUN;iOS 客戶端則依賴 Network Extension。桌面端的「系統代理」開關,在手機上沒有完全對應的運作方式。

Clash Meta for Android 曾是常見的 Meta 系行動客戶端,但判斷是否繼續使用時,應查看儲存庫封存狀態與近期發布記錄。FlClash 等專案也可以使用 mihomo 能力,但其介面設定、設定儲存與系統整合都是客戶端自行實作。跨裝置共用設定時,建議共用訂閱主體,將平台相關的 TUN、DNS 監聽位址與區域網路參數保留在各裝置本機。

OpenClash 是 OpenWrt 外掛層

OpenClash 執行於 OpenWrt 環境,負責核心部署、設定轉換、規則更新、防火牆與 DNS 整合。它不是桌面客戶端,也不是獨立的代理協定。路由器上的流量接管涉及 nftables 或 iptables、策略路由、DNS 劫持與區域網路位址範圍,複雜度高於桌面的系統代理開關。

例如桌面端常見的 mixed-port: 7890 只為本機應用程式提供代理入口;路由器的透明接管則還要處理來自 LAN 裝置的轉送流量。開啟 allow-lan: true 只代表允許其他裝置連線至代理監聽連接埠,並不會自動完成閘道轉送、DNS 接管或防火牆放行。

Yacd、MetaCubeXD 屬於 Dashboard

Yacd、MetaCubeXD 等專案是外部控制面板。它們連線至核心的 REST API 與 WebSocket,顯示代理群組、活動連線、規則命中與流量資料。面板本身不處理代理流量,也不會取代 mihomo。若核心控制位址為 127.0.0.1:9090,只有本機能直接存取;需要從區域網路管理時,應謹慎調整監聽位址,並設定強度足夠的 secret 與防火牆規則。

訂閱、設定與規則集如何在專案間流動

訂閱連結回傳的內容通常是一份 YAML 設定,也可能是經過編碼的節點清單。客戶端負責下載內容,必要時執行轉換或覆寫,再將最終設定交給核心。所謂「支援 Clash 訂閱」,至少包含三個層面:能辨識檔案格式、能辨識其中的代理協定,以及能正確執行其中的 DNS 與規則欄位。

完整設定與 Provider 設定

完整設定會把節點、代理群組與規則寫在同一個檔案中;Provider 方案則將節點或規則拆分為遠端資源,由核心定期更新。以下結構會每隔 3600 秒重新整理一次節點提供者,並透過健康檢查存取指定 URL:

proxy-providers:
  airport:
    type: http
    url: "https://example.invalid/subscription.yaml"
    path: ./providers/airport.yaml
    interval: 3600
    health-check:
      enable: true
      interval: 600
      url: "https://www.gstatic.com/generate_204"

proxy-groups:
  - name: PROXY
    type: select
    use:
      - airport

rules:
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

interval: 3600 控制訂閱更新週期,health-check.interval: 600 控制健康檢查週期,兩者不是同一項設定。測試 URL 回傳的速度只反映對該目標發出請求所需的時間,不等同於下載頻寬。規則會依序比對,MATCH 應放在最後作為兜底。

客戶端覆寫會改變最終結果

  • 連接埠覆寫:客戶端可能會將訂閱中的 mixed-port 改為本機指定的連接埠。
  • DNS 覆寫:啟用 TUN 時,客戶端可能插入 dns-hijack、Fake IP 或 nameserver 設定。
  • 規則覆寫:腳本或合併設定可能在原有規則前加入直連、攔截或程序規則。
  • 代理群組覆寫:客戶端可能保留本機選擇,訂閱更新後仍指向原本的節點名稱。

排查相容性問題時,最有價值的是客戶端實際傳給核心的最終 YAML。若客戶端提供「設定」→「查看執行設定」或「設定」→「開啟設定目錄」,應匯出該檔案並與訂閱原文比較。日誌中記錄的設定路徑也能協助定位產生的檔案。

TUN、系統代理與核心差異

系統代理只涵蓋主動讀取代理設定的程式

開啟系統代理後,客戶端通常會將作業系統的 HTTP 與 HTTPS 代理指向 127.0.0.1:7890。瀏覽器與多數桌面應用程式會讀取這項設定,但遊戲、部分命令列程式、虛擬機器與自行實作網路堆疊的軟體可能繞過它。此時核心正常執行、瀏覽器可以連線,並不能證明所有程序都已進入代理。

TUN 透過虛擬網卡接管 IP 流量

mihomo 的 TUN 模式會建立虛擬網路介面,並配合路由與 DNS 設定接收流量。範例設定通常如下:

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

stack: mixed 表示使用核心支援的混合網路堆疊策略,auto-route 要求自動寫入路由,auto-detect-interface 用於辨識預設出口。不同作業系統對管理員權限、網卡驅動程式與防火牆的要求不同。在 Windows 上切換 TUN 後完全斷網,請先檢查客戶端是否以所需權限執行,再檢查其他 VPN、Hyper-V、WSL 或安全軟體建立的路由。

客戶端之間的 TUN 體驗差異,往往來自啟動順序、路由清理、DNS 注入與休眠恢復處理,而不只是 mihomo 本身。比較兩個客戶端時,應使用同一份設定、相同核心版本與相同網路環境。一次測試可記錄啟動耗時、首次 DNS 回應、預設路由變化與休眠恢復後的連線狀態,而不是只比較介面顯示的記憶體數字。

應如何判斷維護狀態

專案名稱延續不代表維護活動也延續。選擇客戶端時,應同時檢查程式碼儲存庫、發布頁面與依賴的核心,而不是只看下載頁面上的版本字串。原始 Clash、Clash for Windows、經典 ClashX 與各類社群分支的狀態並不相同。

四項可驗證的訊號

  1. 近期發布:查看正式版本發布時間、變更記錄,以及各平台安裝包是否同步產生。
  2. 核心來源:確認使用的是原始 Clash、mihomo,還是客戶端自帶的其他相容核心。
  3. 問題處理:檢查與目前 Windows、macOS、Linux 版本相關的問題是否有人分類與修復。
  4. 升級路徑:確認客戶端升級是否涵蓋核心升級,以及失敗後能否手動回復。

版本號不能跨專案直接比較。Clash Verge Rev 2.x、Nyanpasu 2.x 與 mihomo v1.x.x 分別屬於不同軟體,數字大小沒有承襲關係。回報故障時,應同時寫明客戶端完整版本、mihomo 完整版本、作業系統版本、CPU 架構、目前模式與關鍵日誌。例如「Windows 11 24H2、x64、客戶端 2.x、mihomo v1.x.x、TUN mixed 堆疊」比「最新版不能用」更容易定位問題。

不要依靠應用程式名稱推斷架構

macOS 安裝包可能同時提供 x64arm64,Apple 晶片裝置應優先選擇 arm64 建置版本。Windows 裝置常見 x64,部分新裝置使用 arm64。Linux 還需要區分 AppImage、deb、rpm 以及系統函式庫要求。架構不相容時,即使應用程式能透過轉譯啟動,TUN 輔助程式或核心二進位檔仍可能失敗。

依使用情境選擇專案

Windows、macOS、Linux 統一操作

需要三類桌面作業系統維持近似的設定管理方式,可優先考察 Clash Verge Rev 或 Clash Nyanpasu。選擇時應重點比較目前系統上的 TUN 支援、設定覆寫能力、核心更新機制與日誌入口。只使用瀏覽器代理的情境,系統代理的穩定性比複雜的 TUN 選項更重要。

macOS 選單列的輕量操作

偏好選單列互動時,可以考察仍在維護且明確使用 mihomo 的 macOS 客戶端。若繼續使用經典 ClashX,應明確了解其核心能力界線,並避免匯入包含 mihomo 專屬欄位的設定。升級 macOS 大版本前,先確認客戶端對新系統網路權限與背景啟動機制的適配狀況。

路由器統一接管家中裝置

電視、遊戲機與物聯網裝置無法單獨安裝客戶端時,OpenWrt 搭配 OpenClash 是常見方案。部署前應確認路由器 CPU 架構、可用記憶體、快閃記憶體空間與防火牆體系。規則集較大、連線數較高或啟用複雜 DNS 時,資源需求會明顯高於簡單的本機連接埠代理。

只需要核心與遠端面板

伺服器或精簡 Linux 環境可以直接執行 mihomo,透過 systemd 管理程序,再使用 MetaCubeXD 等 Dashboard 連線至控制連接埠。此方案需要自行處理設定目錄、檔案權限、日誌輪替與升級。控制介面不應直接暴露在不受信任的網路上,遠端存取可透過防火牆、反向代理驗證或安全通道加以限制。

遷移舊客戶端的操作順序

  1. 記錄目前參數:保存訂閱網址、目前代理群組選擇、本機覆寫、監聽連接埠與區域網路設定。
  2. 匯出原始設定:優先保存訂閱 YAML,不要把快取、日誌與客戶端資料庫當作可攜式設定。
  3. 安裝新客戶端:確認系統架構,再在「設定」→「核心」檢查 mihomo 版本。
  4. 先測試系統代理:使用預設 7890 或客戶端顯示的實際連接埠,確認基本規則與 DNS 正常。
  5. 再啟用 TUN:記錄啟用前後的路由與 DNS 變化,發生斷網時即可快速回復。
  6. 重建覆寫:逐項加入規則、DNS 與區域網路設定,每次修改後重新載入並查看日誌。

如果舊設定包含腳本模式、Premium 專屬欄位或過時的代理類型,應先查明相應功能在 mihomo 中的替代寫法。不要一次複製舊客戶端的全部合併設定,因為其中可能包含絕對路徑、舊連接埠、舊網卡名稱與平台專屬欄位。

遷移完成後,可進行三組檢查:瀏覽器透過系統代理存取、命令列明確指定 http://127.0.0.1:7890 存取,以及啟用 TUN 後測試不讀取系統代理的程式。三組結果能區分訂閱問題、系統代理問題與 TUN 路由問題。