TL;DR:更新 Clash Verge Rev 或 profile 前,先导出当前可用配置,检查 YAML 顶层字段、provider、DNS、规则引用和覆写脚本。更新后再找原因,通常会被缓存干扰。

Clash Verge Rev 的 profile 经常不是一份简单 YAML。它可能由远程订阅、本地覆写、proxy-provider、rule-provider、DNS 模块和脚本合成。更新失败、节点变空、规则不生效,大多不是按钮坏了,而是某一层依赖已经不健康。

更新前 10 分钟清单

检查项怎么看不健康信号
本地备份导出当前 profile只能依赖远程 URL,没有本地副本
顶层字段proxiesproxy-groupsrules字段缺失、缩进错、数组变字符串
provider手动访问 URL返回 HTML、空文件、401、403
DNS看监听和上游端口冲突、上游不可达、fake-ip 范围异常
规则引用名称逐字匹配rule-providers 名称和 rules 中引用不一致
覆写脚本暂时关闭再测试关闭后正常,开启后解析失败

先做这张表,能避免很多「更新后突然坏了」的误判。

备份不是复制订阅链接

订阅链接只能重新拉取远程内容,不能保证拿回更新前的配置。真正有用的备份至少包含:

  • 当前合成后的 profile YAML。
  • 本地覆写文件。
  • Verge 版本和 Mihomo 内核版本。
  • 订阅 URL 的域名和备注,但不要把完整 token 贴到公开地方。

文件名建议写成 profile-2026-04-28-before-core-update.yaml。以后对比差异时,一眼知道它的用途。

schema 检查从顶层开始

Mihomo 配置最常见的结构问题是缩进和字段类型。比如 proxy-groups 应该是数组,组内 proxiesuse 也应该是数组;写成字符串时,有些编辑器不提示,内核解析才报错。

proxy-groups:
  - name: Auto
    type: url-test
    use:
      - provider-a
    url: https://www.gstatic.com/generate_204
    interval: 300

如果 use 引用 provider-a,上面必须存在同名 proxy-providers.provider-a。大小写、横线、下划线都要逐字一致。

provider 先手动拉一次

很多 profile 表面上导入成功,是因为节点来自旧缓存。真正更新时,provider URL 返回了错误页,Verge 才显示节点为空。用浏览器或 curl 拉一次:

curl -L -A "clash-verge" "https://example.com/provider.yaml" -o provider.yaml

打开文件看第一屏。如果是 HTML、登录页、JSON 错误或空文件,这不是 Verge 能解析的 provider。使用兼容 Clash / Singbox / V2Ray 的订阅时,也要确认导出的格式和当前客户端选择一致。

DNS 更新前不要顺手重构

DNS 模块是更新事故高发区。建议只检查,不要在同一次更新里大改。重点看:

  • enable 是否符合预期。
  • listen 端口是否和其它服务冲突。
  • nameserver 是否可达。
  • fake-ip-filter 是否覆盖了局域网、登录页、游戏平台等特殊域名。
  • 规则里是否依赖还没下载成功的 rule-provider。

如果你准备升级内核,先保持 DNS 不变。升级完成确认可用,再单独调整 DNS。

覆写脚本要有关闭开关

Clash Verge Rev 的覆写很方便,也容易把远程 profile 改坏。健康检查时至少做一次「关闭覆写后更新」。如果关闭后正常,开启后失败,问题就不在订阅,而在覆写逻辑。

常见问题包括:

  • 给不存在的组追加节点。
  • 删除了 provider,但 rules 仍引用它。
  • 把 DNS 字段从对象改成数组。
  • 按旧内核字段写法覆盖了新字段。

覆写脚本建议保留注释,说明它修改了哪些字段。半年后回头看,比猜变量名可靠。

更新顺序

推荐顺序是:

  1. 导出当前可用 profile。
  2. 手动拉取订阅和 provider。
  3. 关闭覆写,更新一次 profile。
  4. 开启覆写,再更新一次。
  5. 升级内核。
  6. 重启 Verge,观察日志。

不要把 profile 更新、覆写重构、内核升级、系统代理改动放在同一天同一轮。出问题时无法定位。

相关阅读

FAQ

为什么 health check 通过,更新后还是失败? 可能是远程内容在你检查后变化,或运行时网络和手动 curl 的网络路径不同。保留检查时间和日志,继续对比。

要不要删除所有缓存? 先不要。缓存是恢复线索。确认已导出备份后,再清理对应 profile 的缓存。

旧 Clash 字段还能用吗? 看 Mihomo 当前文档和内核版本。有些旧字段仍兼容,有些只是不报错但不生效。升级前先查字段。