疑難排解 預計閱讀 12 分鐘

Clash Verge 閃退排解

整理設定檔損毀、連接埠占用、核心權限及執行階段缺失等原因,帶你找到日誌、判斷崩潰環節並恢復正常啟動。

先分辨視窗消失還是核心結束

Clash Verge 一開就閃退時,先保留日誌,再依故障環節逐步排查;別一開始就刪除設定資料夾。桌面介面、背景服務和 mihomo 核心並非同一個程序。介面退出可能與 WebView2 或應用程式狀態檔有關;介面正常但代理無法使用,則應優先檢查核心設定、監聽連接埠和 TUN 權限。節點延遲測試失敗,也不能直接證明客戶端啟動時發生崩潰。

本文涵蓋舊版 Clash Verge 及後續 Clash Verge Rev 的排查方向,但兩者的資料夾和選單不一定相同。請記下目前使用的專案名稱、完整版本、安裝套件架構及系統版本;Windows 可按 Win + R,輸入 winver 查看系統版本。切換客戶端前先備份,避免直接把舊版狀態檔覆蓋到新版資料夾。

現象優先檢查不能直接推斷
視窗消失,但系統匣圖示仍在關閉視窗的行為、系統匣選單、單一執行個體程序不一定是程式崩潰
介面和應用程式程序都已結束應用程式日誌、系統崩潰記錄、介面執行階段不能只歸因於節點失效
介面正常,核心不斷重新啟動設定解析、連接埠衝突、核心執行權限不必先重新安裝介面執行階段
只有啟用 TUN 後才失敗服務狀態、虛擬網卡、路由及權限日誌不代表所有代理功能都故障

先在 Windows「工作管理員」→「詳細資料」確認應用程式程序是否已結束,再查看系統匣。如果只是視窗隱藏,試著從系統匣重新開啟;如果背景程序卡住,先正常退出,必要時再結束明確屬於該客戶端的程序。不要一次終止所有名稱含有代理或服務字樣的程序。

找到啟動日誌與崩潰時間點

介面還能開啟:從應用程式內的入口查起

在 Clash Verge Rev 的「設定」頁面尋找「應用程式目錄」或開啟資料夾的入口,再查看日誌相關資料夾;不同版本的入口名稱可能不同。Windows 安裝版的資料通常位於使用者的 %APPDATA% 下,免安裝版則可能將資料放在程式附近。不要只憑網路上的某個路徑,就認定目前安裝版本沒有日誌。

應用程式無法開啟時,可先用以下 PowerShell 指令列出名稱包含 Verge 的候選使用者資料夾。此步驟只會讀取資料夾清單,不會刪除或修改檔案。找到資料夾後,依修改時間尋找最新的日誌檔;如果有應用程式日誌、服務日誌和核心日誌,請分別保存。

# Windows PowerShell:尋找候選使用者資料夾
Get-ChildItem -LiteralPath $env:APPDATA -Directory -Force |
  Where-Object { $_.Name -match 'verge' } |
  Select-Object Name, FullName, LastWriteTime

介面完全無法開啟:查看系統記錄

  1. 記下當地時間,只重現一次閃退,避免連續啟動導致舊日誌被覆寫。
  2. 按 Win + R 輸入 eventvwr.msc,前往「Windows 記錄」→「應用程式」,查看同一分鐘內的錯誤記錄。
  3. 記下故障應用程式、故障模組、例外狀況代碼和路徑。常見的事件 ID 1000、1001 可作為線索,但並非每次崩潰都會產生這兩個事件。
  4. 也可以執行 perfmon /rel 開啟可靠性監視器,查看相應日期的應用程式失敗詳細資訊。

核心日誌中的 fatal、error、panic 是排查起點,不是完整結論。請連同前後約 20 行一起查看:最後一行「程序結束」往往只是結果,真正原因可能是前面的設定解析失敗或連接埠繫結失敗。GUI 程式沒有在終端機輸出文字,也不能證明它沒有發生例外狀況。

設定檔損毀:先驗證,再隔離

如果日誌出現 yaml: line 18、unmarshal、parse config 或找不到策略名稱,應先沿著設定檔的處理流程排查。YAML 對縮排和資料類型很敏感;使用 Tab 縮排、把清單寫成字串,或引用已刪除的策略群組,都可能導致核心無法啟動。不過,介面狀態檔解析失敗和代理設定解析失敗是兩種不同問題,不應混在一起處理。

使用目前安裝版本附帶的核心進行測試

mihomo 提供設定檔測試參數 -t,可在不啟動一般代理監聽的情況下檢查設定。以下範例假設終端機目前位於包含 mihomo.exe 的資料夾,待測檔案已複製並命名為 config-test.yaml。實際套件中的核心檔案可能使用其他名稱,請使用目前客戶端附帶的檔案,不要臨時更換核心後就下結論。

# Windows PowerShell:測試獨立複製的設定檔
.\mihomo.exe -t -f .\config-test.yaml
$LASTEXITCODE

測試失敗時,記下完整輸出和結束代碼。含有規則集、地理資料或相對檔案路徑的設定,也會依賴工作目錄及外部資源;「找不到資源」和「YAML 語法錯誤」必須分開處理。測試通過只代表在這次測試條件下設定檢查成功,不表示服務權限、TUN 或網路連線都正常。

  1. 完整備份:退出應用程式,確認相關程序已停止,將使用者資料夾複製到其他位置。訂閱、覆寫腳本、規則和介面設定都可能存放在其中。
  2. 還原最近一次變更:如果問題是在編輯規則或腳本後出現,優先還原這項變更;不要同時更新訂閱、更換核心和修改連接埠。
  3. 找出實際生效的設定:客戶端可能會先合併訂閱、覆寫和腳本,再交由核心處理。原始訂閱能通過解析,不代表合併後的設定也有效。
  4. 隔離應用程式狀態:只有日誌指出特定介面狀態檔有問題時,才在備份後將該檔案改名進行測試。不要猜測檔名後就批次刪除檔案。

若必須建立全新的資料目錄進行驗證,請先停止客戶端及相關服務、保存原有資料夾,再依該版本支援的方式建立獨立環境。新環境能啟動,只能說明舊環境中的設定或狀態值得繼續排查,不代表應永久丟棄所有訂閱。還原時分批匯入,若問題再次出現,就能縮小到特定設定或覆寫項目。

連接埠占用:確認監聽程序

address already in use 或 bind 錯誤通常表示監聽位址發生衝突。常見的範例連接埠包括 7890、7897,以及控制介面使用的 9090,但這些並非所有版本的固定值。請以目前生效設定中的 mixed-port、port、socks-port、external-controller 為準。

# Windows PowerShell:依實際錯誤的連接埠調整清單
$ports = 7890, 7897, 9090
Get-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |
  Where-Object { $_.LocalPort -in $ports } |
  Select-Object LocalAddress, LocalPort, OwningProcess

# 範例:將 1234 替換為上一步查到的實際程序 ID
Get-Process -Id 1234

上面的 1234 只是示範用的程序 ID,不要直接用它來結束程序。先確認程序名稱、程式路徑,以及該程序是否屬於另一個正在執行的代理客戶端。若有舊核心殘留,優先從原客戶端退出;確實需要結束程序時,只處理已確認的那個執行個體。

  • 同時執行兩個客戶端:分別設定不同的代理監聽連接埠和控制連接埠;只修改代理連接埠,控制介面仍可能發生衝突。
  • 修改代理連接埠後:也要檢查系統代理和手動設定代理的程式,否則程式可能仍連線到舊連接埠。
  • 錯誤訊息為「拒絕存取」:不一定是一般程序占用,也可能與連接埠保留或安全性原則有關,不能直接視為同一種錯誤。

如果連接埠已空閒但仍無法繫結,可用 netsh interface ipv4 show excludedportrange protocol=tcp 查看 IPv4 TCP 排除範圍;IPv6 環境也應檢查相應設定。不要為了啟動代理就任意刪除系統保留範圍,通常先選擇確認可用的連接埠進行測試會更妥當。

核心權限與 TUN:分層排除

遇到 permission denied、access is denied、無法建立 TUN 裝置或服務連線失敗時,應先判斷問題出在「啟動核心」還是「建立虛擬網卡」。系統代理主要影響遵循系統代理設定的應用程式;TUN 則透過虛擬網路介面接管流量,涉及服務、權限和路由,排查步驟也更多。

先以非 TUN 模式建立基準

  1. 如果介面仍可操作,先關閉 TUN,保留規則模式,並使用系統代理測試同一個網站。
  2. 非 TUN 模式可用、TUN 卻失敗時,應優先查看服務狀態、虛擬網卡和路由日誌,不必立刻更換節點。
  3. 在目前版本的設定頁檢查服務模式;需要安裝或修復服務時,只針對這項操作授權,並查看操作後的日誌。
  4. 按 Win + R 輸入 services.msc,確認相應服務的執行狀態和執行檔路徑,避免服務仍指向舊的安裝資料夾。

以系統管理員身分執行可用於一次受控的權限比對,但不應成為掩蓋問題的長期做法。若只有提高權限後才能存取某個使用者資料檔,應檢查檔案擁有者、資料夾存取權限及安裝位置;任意放寬整個磁碟的權限會增加風險。

Windows 也可前往「Windows 安全性」→「病毒與威脅防護」→「保護歷程記錄」,確認核心檔案或元件是否遭到封鎖。先核對檔案來源和事件詳細資訊再處理,不要將關閉所有防護當成排查步驟。macOS 請搭配「主控台」和「系統設定」→「隱私權與安全性」中的提示判斷;Linux 則應依啟動方式查看終端機或服務日誌,不要直接套用 Windows 的服務修復方法。

執行階段與安裝套件:依故障模組修復

Windows 上以 Tauri 為基礎的 Clash Verge 系列介面通常需要 WebView2。介面執行階段缺失或損毀可能導致視窗無法建立,但不能只憑「視窗一閃就消失」便認定是 WebView2 問題。應綜合查看系統事件中的故障模組、安裝程式錯誤和客戶端日誌。

具體線索優先處理方式需要留意的判斷界線
明確提示缺少 WebView2檢查系統已安裝的應用程式,使用 Microsoft 官方安裝程式修復或安裝相應的執行階段核心連接埠錯誤通常無法靠這個方法解決
提示缺少 VCRUNTIME140.dll 等執行階段檔案依應用程式需求修復 Microsoft Visual C++ Redistributable不要從零散的下載網站單獨複製 DLL
出現 0xc000007b確認安裝套件架構及相依元件載入記錄這是與無效映像格式相關的線索,不能據此判定唯一原因
出現 0xc0000005記下故障模組,檢查近期是否更新、變更驅動程式或安全軟體存取違規不等於記憶體故障

可在 Windows「設定」→「系統」→「系統資訊」查看系統類型;x64 和 ARM64 套件應依作業系統及專案支援情況選擇。macOS 則需區分 Apple 晶片與 Intel 機型。架構選錯、元件混用或舊檔案未正確替換,都比「訂閱壞了」更可能造成這類載入錯誤。

需要重新安裝時,先備份使用者資料並記下目前版本,再關閉客戶端和相關程序,使用同一專案的完整安裝套件。重新安裝通常不會自動清除使用者設定,因此安裝後仍然閃退,不能排除設定問題。也不要把原版 Clash Verge、Clash Verge Rev 和其他客戶端的程式檔案混放在同一個資料夾。

恢復後的驗證與問題回報

程式成功顯示視窗只是第一步。建議依照以下順序逐步恢復,每次只變更一個條件;只要某一步再次觸發錯誤,就保留該時間點的日誌,並還原到上一個正常狀態。

  1. 驗證介面:確認能進入設定頁,關閉後再啟動一次,確定不只是單次啟動成功。
  2. 驗證核心:確認日誌中沒有持續出現解析或監聽錯誤,核心程序也沒有反覆結束。
  3. 驗證本機代理:確認實際監聽的連接埠,再使用遵循系統代理設定的應用程式測試連線。
  4. 還原設定:先匯入已知可用的設定,再逐項還原覆寫、自訂規則和訂閱更新。
  5. 最後啟用 TUN:檢查 DNS、路由和連線是否正常,不要把系統代理可用直接當成 TUN 也正常。

排查流程可整理為:確認程序是否真的結束,依時間找到日誌,再針對設定、連接埠、權限或執行階段進行處理。需要核對設定欄位時,可參閱協定手冊;恢復後若遇到系統代理或訂閱問題,可接著查看常見問題。更換客戶端前先比較核心與平台支援情況,不必把所有啟動故障都變成遷移問題。

下載Clash依平台選擇客戶端