比较手动启动与自动启动(开机或登录后由系统拉起)时,要比的是环境,而不是窗口看起来是否相似。Clash Verge Rev 仓库和发布说明没有把两种启动写成同一套条件,而是记录了网络是否就绪、是否有 VPN 接管、服务模式还是 Sidecar、权限与数据目录、残留进程等会改变内核能否启动的因素。比较应固定同一安装包、同一用户数据,只改变何时、以何种会话把客户端拉起来。
适用条件
适用于已安装的 Clash Verge Rev 电脑端,需要解释「稍后自己打开可用,重启后由系统拉起却不可用」这类差异。项目基于 Tauri,内置 mihomo,支持系统代理与 TUN。开发环境的 pnpm dev 会保留服务安装状态,未安装则 Sidecar 启动,与安装版自动拉起不是同一环境,不要纳入日常对比。Windows 发布说明不再支持 Win7;macOS 需 11+。
对照哪些环境因素
第一,网络与并行 VPN。手动启动多发生在已经能上网之后;自动启动常发生在地址尚未获取完成时。macOS 发布说明单独写了:VPN 接管网络或开机网络未就绪时,服务模式内核无法启动、TUN 不可用、系统代理状态读取报错。判断依据:若仅自动启动失败、等网络正常后手动启动成功,差异在网络时序,不在订阅内容本身。
第二,服务模式对照 Sidecar。手动启动时你可能已经完成服务安装;自动启动则沿用上次的服务或 Sidecar 状态。仓库把「使用已有服务」和「强制无特权 Sidecar」分成不同流程。发布说明中:Windows 未安装服务、普通权限运行会导致内核无法启动;服务因路径或目录权限、系统盘权限误判、隔离权限误判而无法使用服务模式和 TUN;macOS 残留服务进程会导致内核无法启动且「继续使用 Sidecar」失败;用户目录在外置磁盘时服务可拒绝启动内核。判断依据:两次启动是否同为服务模式或同为 Sidecar,权限是否同一用户。
第三,数据目录与首次提权。发布说明修复过首次以管理员身份启动后,因数据目录所有权不符,系统服务拒绝启动内核。手动用管理员打开一次、之后自动以普通用户拉起,环境已经变了。重装服务后内核缺失、无法继续 Sidecar,也会让同一次安装在两种启动方式下表现不同。判断依据:数据目录所有者、服务是否完整、内核文件是否还在。
第四,内核停止后的残留系统状态。macOS 上内核意外停止后,系统代理仍可能指向失效端口。自动启动若碰上内核没起来,系统代理残留会让「客户端在、网不通」与手动启动成功时的环境不同。Windows 服务已停止时,启动曾要等约两分钟才显示窗口,比较时要以内核与端口为准,不以窗口出现早晚为准。
第五,重启后配置是否被改写。发布说明修复过订阅包含自定义 DNS 时,确认开启的 DNS 覆写在重启应用后被自动关闭。这会让自动启动会话的 DNS 行为与你手动打开并确认过的会话不同。不同来源订阅或规则集共用缓存路径时,服务模式甚至无法启动内核。判断依据:两次会话的 DNS 覆写是否仍开启、规则集能否加载、文件错误日志中的路径是否一致。
失败时如何用对比结果
先做一次网络已就绪、无其他 VPN 的手动启动,记录:内核是否运行、当前是服务还是 Sidecar、TUN 是否需要且是否可用、系统代理端口是否指向当前内核。再在开机自动拉起后记录同一组状态,并阅读服务保存到文件的运行日志,核对内核被停止的原因。
若仅自动启动失败,优先查网络未就绪与 VPN 接管,而不是先改订阅。若两种启动都失败,按发布说明处理服务安装、权限、残留进程、目录所有权或重装服务。macOS 误提示「需要更新系统服务」时,应结合是否偶发内核启动失败来看,不能单独当成两种启动方式的本质区别。比较目的是找出环境差在哪一项;在差项消除之前,不能把手动启动成功解释成自动启动也应当成功。
资料:https://github.com/clash-verge-rev/clash-verge-rev/releases https://github.com/clash-verge-rev/clash-verge-rev