TL;DR:先别急着重装。把订阅 URL 复制到浏览器或
curl -L看返回内容;如果返回的不是 Mihomo/Clash YAML,Clash Verge Rev 更新必然失败。返回正常再处理本地缓存、provider 引用和系统代理。
这个问题的典型表现是:第一次添加 profile 能看到节点,过一段时间点「Update」提示 failed、parse error、network error,或者更新完成但节点变空。原因通常不在 Verge 的下载按钮,而在「更新时拿到的内容」和「本地解析环境」。
先做 5 分钟判断
| 检查项 | 正常结果 | 异常信号 |
|---|---|---|
| URL 可达性 | 返回 YAML 文本 | 302 到登录页、403、空白 |
| 文件头部 | 有 proxies: 或 proxy-providers: | HTML、JSON 错误消息 |
| 配置组 | proxy-groups 引用存在的节点或 provider | 组名拼错、provider 为空 |
| 本地状态 | 关闭系统代理后仍能拉取 | 只在开代理时能拉,或反过来 |
| 缓存 | 清缓存后重新生成 | 旧 profile 一直覆盖新内容 |
macOS / Linux 可以直接跑:
curl -L -A "clash-verge" "你的订阅URL" -o /tmp/profile.yaml
Windows 用 PowerShell:
Invoke-WebRequest -MaximumRedirection 5 -Headers @{"User-Agent"="clash-verge"} -Uri "你的订阅URL" -OutFile "$env:TEMP\profile.yaml"
打开文件,第一屏如果是网页、错误码、续费提示、JSON 包装层,就不是客户端能处理的 profile。
provider 混写最容易漏
很多订阅会同时出现 proxies 和 proxy-providers。Mihomo 允许这样写,但要求引用关系完整:
proxy-providers:
sub-a:
type: http
url: https://example.com/sub.yaml
path: ./providers/sub-a.yaml
proxy-groups:
- name: Proxy
type: select
use:
- sub-a
如果 use 里写成 sub_a,或者 provider 文件下载失败,Verge 更新时会显示 profile 解析失败。首次导入时能用,是因为旧缓存里已经有展开后的节点;更新时重新解析 provider,问题才暴露。
清缓存但别先删配置
先在 Profiles 里复制当前 profile,或导出一份本地 YAML。然后关闭 Clash Verge Rev,到配置目录找 profiles / providers 缓存:
- Windows:
%APPDATA%\io.github.clash-verge-rev.clash-verge-rev\ - macOS:
~/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev/ - Linux:
~/.config/clash-verge/
删除对应 profile 的缓存副本,不要删整个应用目录。重启后再点更新。若此时正常,问题就是旧缓存或 provider 本地文件损坏。
系统代理干扰订阅更新
更新请求本身也要走网络。当前 profile 已半失效时,Verge 可能通过坏链路拉取新 profile,形成死循环。排查时按这个顺序:
- 关闭系统代理和 TUN。
- 用浏览器直连打开订阅 URL。
- 再回 Verge 点更新。
- 仍失败时换一个 User-Agent,如
clash、ClashMeta、clash-verge。
如果你的服务商提供多格式链接,Clash Verge Rev 优先选 Mihomo/Clash YAML,不要拿 sing-box JSON 或 V2Ray base64 直接导入。
需要重新准备订阅时,可以用兼容 Clash / Singbox / V2Ray 的订阅,重点是确认导出格式里明确包含 Clash/Mihomo profile。
最后再考虑重装
只有在同一个 URL 用 curl 能拉到正确 YAML、其他 Clash 客户端也能更新、但 Verge 独自失败时,才考虑升级或重装 Clash Verge Rev。多数场景下,问题会在 URL 返回内容、provider 引用、缓存或系统代理这四处被定位出来。