1. 先区分窗口退出、内核退出与连接失败

Clash 启动后窗口消失,不一定是同一种故障。桌面客户端通常包含图形界面、代理内核,以及可选的服务或 TUN 组件。图形界面退出时,内核可能仍在后台;内核启动失败时,设置窗口也可能继续显示。先确定退出的是哪一层,再决定修改配置还是修复安装文件。

可见现象优先检查下一步
窗口关闭,托盘图标仍在关闭窗口是否设为最小化到托盘从托盘重新打开,确认进程仍在
窗口和主进程同时消失界面日志、系统崩溃报告保存报错时间与异常模块
界面正常,内核反复重启配置解析、监听端口、内核文件读取内核退出前第一条错误
进程正常,网站打不开系统代理、DNS、策略组选择按连接故障处理,不直接重装

Windows 可按 Ctrl + Shift + Esc 打开任务管理器,在“详细信息”中检查客户端和内核进程。macOS 可在“活动监视器”中查看对应进程。进程名称随客户端打包方式变化,不要仅凭是否出现 clash.exe 判断结果。

2. 找到日志目录,保留退出前的错误上下文

界面还能打开时

优先查看客户端的“日志”页面,以及设置中名称包含“配置目录”“数据目录”或“日志目录”的入口。不同客户端的菜单并不统一,安装目录也不等于数据目录。打开目录后,按修改时间排序,选择与本次启动时间对应的文件;同时保留界面日志与内核日志。

日志级别可临时从 info 调整为 debug,重现一次后立即恢复。调试日志可能包含访问域名、节点名称与本地路径,提交反馈前需要脱敏。内核尚未启动时,提高内核日志级别也不会生成界面崩溃报告。

窗口完全打不开时

重点复制首次错误前后约 20 行,而不是只截取最后一句“启动失败”。例如 yaml: line 18 指向配置解析,address already in use 指向监听冲突,permission denied 指向权限或执行限制。最后出现的重试信息往往只是前面错误的结果。

3. YAML 语法错误:校验实际加载的配置

订阅刚更新、粘贴过规则或切换过 Profile 后出现闪退,应先检查实际交给内核的配置。客户端可能将订阅、本地覆写与运行参数合并后生成另一份文件;只检查下载到的订阅原文,可能遗漏合并阶段引入的问题。

先核对四类常见错误

  1. 缩进:YAML 缩进使用空格,不使用 Tab。同一级字段应对齐,列表项前的短横线后保留空格。
  2. 标点:键名后的冒号使用半角字符。节点名称或密码包含特殊字符时,应按 YAML 规则加引号。
  3. 引用:规则引用的策略组、策略组引用的节点或其他组,名称必须与定义一致。中文括号、尾部空格也可能造成不同名称。
  4. 内核兼容:Clash 与 Clash Meta(现名 mihomo)支持的字段和协议范围不同。配置语法正确,并不代表当前内核支持全部配置项。

如果客户端使用 mihomo,可用同一份内核程序执行配置测试。下面是 Windows PowerShell 示例:先进入包含该内核的目录,将待检查文件复制为当前目录中的 config-check.yaml。命令中的程序名应与实际文件名一致。

New-Item -ItemType Directory -Force .\check-data | Out-Null
.\mihomo.exe -t -d ".\check-data" -f ".\config-check.yaml"
$LASTEXITCODE

-t 用于测试配置,-f 指定配置文件,-d 指定测试数据目录。测试阶段也可能需要 GeoIP、GeoSite 或规则提供者等资源;若错误指向资源缺失,应单独处理,不要当作 YAML 缩进错误。退出码为 0 说明本次测试通过,但不能证明端口一定可用、节点一定可连接或 TUN 一定能启动。

4. 端口占用:确认监听进程再修改端口

常见配置会使用 7890 作为 HTTP 或混合代理端口,7891 作为 SOCKS 端口,9090 作为控制接口端口,但这些数值并非固定标准。以当前配置的 port、socks-port、mixed-port 和 external-controller 为准;DNS 监听端口也可能发生冲突。

Windows:查监听端口与 PID

Get-NetTCPConnection -State Listen -LocalPort 7890,7891,9090 -ErrorAction SilentlyContinue |
  Select-Object LocalAddress, LocalPort, OwningProcess

Get-Process -Id 1234

第二条命令里的 1234 是示例 PID,执行前应替换为上一条输出的 OwningProcess。没有结果只说明所查 TCP 端口当时未处于监听状态,不能排除 UDP 端口冲突。

macOS:检查指定 TCP 监听

lsof -nP -iTCP:7890 -sTCP:LISTEN
lsof -nP -iTCP:9090 -sTCP:LISTEN
  1. 若占用者是另一个客户端实例,先通过其托盘菜单正常退出,并检查是否有重复的开机启动项。
  2. 若占用者属于其他应用,可将本地测试配置的 mixed-port 临时改为 17890,重新启动验证。
  3. 端口改动后,同步检查系统代理和浏览器独立代理设置。仅修改内核端口,旧的系统代理地址仍可能指向 127.0.0.1:7890。

不要直接结束未知系统进程,也不要为了消除报错将控制接口改为公开监听地址。只供本机使用的控制接口应绑定回环地址,例如 127.0.0.1:9090。

5. 内核文件缺失、架构不符与 TUN 权限

日志出现“文件不存在”“无法执行”或“拒绝访问”时,应核对日志列出的完整内核路径。程序更新中断、安全软件隔离、只复制主程序而遗漏配套文件,都可能让界面存在而内核无法启动。

TUN 通常需要额外的系统权限或服务支持,具体取决于平台和客户端实现。先关闭自动启用 TUN,以普通代理模式确认内核可持续运行,再通过客户端提供的服务安装或授权入口恢复 TUN。普通代理可用只证明基础路径恢复,不代表 TUN 的 DNS 与路由配置已经正确。

6. 配置回滚:用独立副本隔离残留数据

重新安装后仍然闪退,常见原因是新程序继续读取旧数据目录。回滚的目标不是立即删除全部数据,而是建立一个可撤销的对照环境,判断故障是否跟随原配置出现。

可逐条执行的回滚顺序

  1. 退出相关进程:正常关闭客户端,确认没有残留内核持续写入数据。存在后台服务时,使用客户端提供的服务管理入口处理。
  2. 备份整个数据目录:保留 Profile、订阅信息、本地覆写、规则文件和界面设置。可将备份命名为 clash-backup-2026-08-06。备份中可能含订阅凭据,应存放在私有位置。
  3. 隔离旧目录:在确认实际数据路径后,将其改名保存。部分客户端支持便携或独立数据目录模式,应按该客户端说明建立测试环境,不要套用其他客户端的启动参数。
  4. 建立最小配置:关闭自动导入旧订阅、自动覆写与 TUN,先只验证配置解析和本机监听。
  5. 逐项恢复:按订阅、策略组、规则、本地覆写、TUN 的顺序恢复。每次只恢复一项,重启一次并记录结果。

下面的配置用于支持这些字段的 Clash 或 mihomo 内核测试。它使用 17890 混合端口,所有流量直接连接,不包含代理节点。应保存为单独的本地文件,不覆盖原订阅;若该端口也被占用,应先按前面的步骤换用空闲端口。

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

proxies: []
proxy-groups: []

rules:
  - MATCH,DIRECT

这份配置只能验证基础启动,不能用于验证代理节点是否有效。若它可以持续运行,而恢复原配置后立即报错,范围通常已缩小到原配置、覆写或依赖资源。若它也无法启动,则应继续检查安装文件、图形界面运行环境和系统崩溃记录。

7. 恢复验收与反馈材料

一次启动成功还不足以结束排查。建议连续重启客户端 3 次,确认日志不再出现相同错误;再执行一次订阅更新,确认本地修复不会被远程配置覆盖。最后按实际使用需求恢复系统代理与 TUN,分别测试,避免同时开启后无法判断故障来源。

仍需反馈时,提供客户端完整版本号、内核版本、操作系统版本及架构、故障发生时间、首次错误前后日志,以及最小配置是否能启动。订阅 URL、节点密码、控制接口密钥和个人目录名应脱敏;保留字段层级、错误行号和异常类型,才能继续定位。

排查顺序可保持为:确认退出层级、读取第一条错误、测试实际配置、核对端口、检查内核、隔离旧数据。需要重新安装时,先在下载页核对平台支持;字段和规则关系可查阅进阶配置,基础设置可参考使用指南。