故障排除 閱讀時間約 10 分鐘

Clash 用戶端一開就閃退?啟動崩潰原因與排除方法

依序檢查設定檔語法、核心檔案、權限與執行階段,找出 Clash 啟動後立即關閉的原因,並提供對應的修復步驟。

先別刪除設定,也別一再重新安裝。Clash 開啟後立即關閉,首先要分辨是介面程序崩潰,還是代理核心啟動失敗。前者常與執行環境、介面快取和安裝檔有關;後者應優先檢查 YAML、監聽連接埠、核心檔案與權限。網頁無法開啟只是結果,不能因此判定用戶端已經閃退。

一、確認關閉的是視窗、介面程序還是核心

不少用戶端按下關閉按鈕後只是縮到系統匣,視窗消失不代表程序已結束。Windows 先展開工作列右側的隱藏圖示,再按 Ctrl + Shift + Esc 開啟工作管理員;macOS 查看選單列圖示與「活動監視器」;Android 則檢查通知列是否仍有 VPN 常駐通知。

觀察到的現象優先判斷下一步
視窗消失,但系統匣圖示和程序仍在可能只是仍在背景執行,或視窗狀態異常先從系統匣重新開啟視窗
介面能開啟,但顯示核心啟動失敗設定、連接埠或核心問題查看核心記錄中的第一則錯誤
介面與程序都立即消失應用程式崩潰或執行環境異常查看系統的應用程式錯誤記錄
只有啟用 TUN 後才關閉或報錯服務權限、驅動程式或虛擬網卡問題關閉 TUN 進行對照測試

Windows 可按 Win + R,輸入 eventvwr.msc,前往「Windows 記錄」→「應用程式」,查看故障發生時間的應用程式錯誤。也可執行 perfmon /rel 開啟可靠性監視器。記下故障應用程式、故障模組與例外狀況代碼;這些記錄可協助判斷方向,不代表看到某個系統 DLL 就應該將它刪除或替換。

二、先保留記錄,再用最小設定隔離 YAML 錯誤

如何找到記錄與設定檔

介面還能開啟時,優先查看「記錄」頁面,並在「設定」中尋找「開啟設定目錄」、「開啟記錄目錄」等選項。不同用戶端的名稱與路徑不盡相同,不能把某個產品的目錄套用到所有 Clash 用戶端。介面無法開啟時,請依安裝方式及用戶端文件尋找使用者資料目錄;免安裝版可能將資料放在程式目錄,安裝版通常則使用使用者資料位置。

搜尋 yaml、unmarshal、parse、permission denied、address already in use 等錯誤。先查看啟動階段第一則有效錯誤,後續出現的「無法連線至核心」通常只是連帶結果。

檢查設定不等於測試連線

如果使用 mihomo 核心,可在核心所在目錄執行下方的 PowerShell 指令。前提是該目錄確實有 mihomo.exe 和待檢查的 config.yaml;用戶端打包的核心檔案名稱可能不同,請使用實際檔名。

.\mihomo.exe -v
.\mihomo.exe -t -f .\config.yaml

-v 用來確認實際核心版本,-t 用來檢查設定。檢查通過不代表節點可連線,也不代表正常啟動時連接埠一定可用。包含外部規則集、訂閱提供者或 Geo 資料的完整設定,還可能依賴資料目錄與資源檔案;脫離用戶端單獨檢查時,請留意這些路徑差異。

常見語法問題包括使用 Tab 縮排、冒號後缺少空格、清單層級錯誤,以及把訂閱回傳的登入頁面或錯誤頁面誤當成 YAML。錯誤訊息中的行號可供參考,實際問題也可能出在前一行。含有 # 等特殊字元的密碼與網址參數,建議加上引號,避免被解讀為註解或其他 YAML 語法。

使用獨立診斷檔,不覆寫訂閱設定

將下方內容另存為 diagnostic.yaml,再執行設定檢查。這份檔案不含代理節點,只用來判斷基本解析與啟動環境是否正常,不能取代日常使用的訂閱設定。

mixed-port: 17890
allow-lan: false
mode: direct
log-level: debug
ipv6: false
tun:
  enable: false
dns:
  enable: false
rules:
  - MATCH,DIRECT
.\mihomo.exe -t -f .\diagnostic.yaml
.\mihomo.exe -f .\diagnostic.yaml

執行第二個指令前,先結束用戶端及其背景核心,避免多個執行個體互相干擾。指令會在前景執行,按 Ctrl + C 即可停止。若最小設定能啟動、原設定卻失敗,就逐段還原 DNS、代理提供者、規則集與 TUN;每加入一段都重新檢查。不要同時更換訂閱、核心和 DNS,否則很難判斷哪項變更真正有效。

三、核心檔案遺失、架構選錯與安全性封鎖

Clash 用戶端是圖形介面;Clash、Clash Meta(mihomo)則是核心體系中的不同實作或演進分支。介面能顯示,不代表配套核心一定存在;新訂閱交由舊核心處理,也可能因不支援相關欄位或通訊協定而無法載入。不要隨意替換執行檔來「升級」所有用戶端。

  1. 檢查安裝檔是否已完整解壓縮。不要直接從壓縮檔預覽視窗執行程式,也不要只複製主程式而漏掉資源目錄。重新安裝前先備份使用者資料,並依照該用戶端的發布說明操作。
  2. 確認系統架構。Windows 可前往「設定」→「系統」→「系統資訊」查看系統類型;macOS 可在「關於這台 Mac」查看晶片資訊;Linux 可執行 uname -m。x64、ARM64、x86 等安裝檔不能任意互換。
  3. 查看封鎖記錄。Windows 前往「Windows 安全性」→「病毒與威脅防護」→「保護歷程記錄」,確認核心檔案是否遭隔離。請先確認發布來源與特定檔案,不要直接關閉所有防護功能。
  4. 使用用戶端支援的核心更新方式。保留用戶端與核心的版本記錄;如果更換核心後才開始故障,優先還原這次變更,不要繼續混用不同檔案。

macOS 顯示「無法開啟」或「無法驗證開發者」,不等於程序崩潰。確認來源可信且符合系統允許的條件後,可查看「系統設定」→「隱私權與安全性」中的相關提示;由組織管理的裝置則應遵守管理政策。Linux 若出現 Permission denied,還需分辨是執行權限不足、目錄無法存取,還是所在分割區受到 noexec 限制,不要只是一再執行安裝程式。

四、權限不足與 TUN 服務異常

一般 HTTP/SOCKS 代理使用高位連接埠監聽,通常不需要讓整個介面持續以管理員權限執行。TUN 涉及虛擬網卡、路由與 DNS 接管,桌面用戶端可能需要服務模式或提權輔助程式。若只有啟用 TUN 時出錯,先關閉 TUN,保留一般代理進行測試,將問題範圍縮小到服務或網路接管環節。

  • Windows:在用戶端設定中查看「服務模式」或 TUN 相關狀態;若顯示服務未安裝或無法使用,請依照該用戶端說明修復服務。以管理員身分啟動一次可供診斷,但不能取代正常的服務安裝流程。
  • macOS:確認用戶端要求的輔助程式已獲授權。升級應用程式後若出現權限提示,請重新確認授權狀態,不要手動刪除系統網路元件。
  • Linux:TUN 通常需要存取 /dev/net/tun,並具備相應的網路管理權限。容器環境還取決於裝置對應與能力設定,一般桌面安裝方式不一定適用。
  • Android:拒絕系統 VPN 授權會導致無法建立連線,但不一定是應用程式閃退。先中斷其他 VPN 應用程式,再重新連線並確認授權;工作設定檔與裝置管理政策也可能限制 VPN。

五、7890 連接埠衝突不代表設定語法錯誤

記錄出現 bind 或 address already in use 時,設定可能已成功解析,只是在監聽連接埠時失敗。Windows 可使用下方指令查詢 7890 的 TCP 監聽程序;若沒有監聽記錄,第一個指令可能會顯示找不到物件。

Get-NetTCPConnection -LocalPort 7890 -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess

netstat -ano | findstr :7890

第二個指令的輸出可能包含遠端連接埠或其他狀態,請一併確認本機位址欄與監聽狀態。依照結果中的 PID,在工作管理員「詳細資料」中確認程序名稱。macOS 可執行 lsof -nP -iTCP:7890 -sTCP:LISTEN,Linux 可執行 ss -ltnp 'sport = :7890';部分程序資訊需要額外權限才能查看。

如果是舊用戶端留下的執行個體,先透過正常的結束方式停止;如果連接埠被其他必要程式占用,可將 mixed-port 改為確認未被占用的 7891,並同步調整系統代理與瀏覽器手動代理連接埠。也要檢查獨立設定的 port、socks-port 和 external-controller:這些項目也可能發生衝突,不能只查看 7890。

部分介面會在啟動時重新產生執行設定。若修改磁碟上的檔案後,重新啟動又恢復原值,請透過用戶端的連接埠設定或覆寫功能調整,不要一再修改暫時產生的檔案。

六、執行階段與介面快取:繼續檢查設定以外的原因

依錯誤訊息補裝相依元件,不要下載零散 DLL

Windows 若顯示缺少 VCRUNTIME140.dll、MSVCP140.dll 等檔案,請優先依用戶端說明修復 Microsoft Visual C++ 2015–2022 Redistributable,並選擇符合程式架構的版本。64 位元系統也可能執行 32 位元程式,所需執行階段取決於程式本身,不只看系統位元數。

部分以 WebView2 為基礎的用戶端依賴 Microsoft Edge WebView2 Runtime;但 Electron 或 Flutter 用戶端並非因此都需要它。只有記錄或專案明確指出這項相依元件時,才安裝或修復;不要把「安裝所有執行階段」當成通用解法。Linux 若出現 GLIBC 版本錯誤,通常需要改用支援目前發行版的建置版本,不能靠複製其他系統的 libc 檔案解決。

以可還原的方式測試使用者資料是否損壞

若核心可以獨立正常執行,但介面仍在啟動時崩潰,可先完全結束程序,備份並重新命名該用戶端的使用者資料目錄,再啟動一次,讓應用程式建立新的資料。不要直接刪除整個目錄;訂閱、規則覆寫、介面狀態和憑證可能分別儲存在不同檔案中。

如果新目錄能正常啟動,先還原訂閱,再還原覆寫規則,最後才考慮還原介面狀態與快取。一次把所有舊檔案複製回去,往往也會把問題一併帶回來。若記錄指向 GPU 程序,可依用戶端文件測試停用硬體加速;不要把某個介面的啟動參數套用到所有 Clash 用戶端。

七、恢復後逐項驗收,求助時應附上哪些資訊

能開啟視窗只是第一步。建議依序完成下列檢查,每一步成功後再恢復下一項功能:

  1. 確認介面持續執行,記錄不再反覆出現核心重新啟動或設定解析失敗。
  2. 確認實際使用的設定正確,且訂閱更新後仍能載入;檢查覆寫設定是否又加入錯誤欄位。
  3. 在規則模式下測試瀏覽器連線,並在連線記錄中確認實際套用的規則與出口。
  4. 需要使用 TUN 時再啟用,接著測試 DNS 解析、休眠喚醒與網路切換。
  5. 關閉用戶端後確認系統代理已還原;若用戶端異常結束後網頁仍無法開啟,先檢查系統是否仍保留指向本機舊連接埠的手動代理設定。

若仍無法解決,請提供用戶端名稱與完整版本、核心版本、系統版本、CPU 架構、首次發生問題時執行的操作,以及啟動時間附近的錯誤記錄。補充「最小設定能否執行」、「關閉 TUN 後是否正常」、「新的使用者資料目錄是否正常」這三項結果,通常比只提供一張「連線失敗」截圖更有幫助。

想確認設定欄位,可參閱YAML 手冊;常見網路問題可查看疑難排解。整個排查過程的關鍵是先找出故障層級,再調整對應設定,而不是用重新安裝掩蓋尚未釐清的原因。

下載最新版 Clash