Clash Verge 如何手动调整规则分组优先级?

功能定位:为什么优先级决定「谁先匹配」
在 Clash Verge 中,规则分组(Rule Provider 与 Script)按自上而下顺序执行,第一条命中的规则立即终止后续判断。手动调整优先级,本质是把「更常触发、更耗时的规则」后移,把「高频且明确」的规则提前,从而降低单次 DNS 与策略查询耗时。经验性观察:把 10 条广告规则提前到顶部,平均首页加载可缩短约 1 次冗余 RTT。
变更脉络:v2.2.5 之后 GUI 能拖拽,YAML 仍兜底
截至当前最新版(2026-03-27 发布的 v2.2.5),Windows 与 macOS 已支持「规则分组」卡片拖拽;Linux 仍仅开放 YAML 编辑。若你曾用 2025 年的「右键 Move Up/Down」老配置,升级后会自动转成新数组顺序,无需手动迁移,但建议执行一次「配置回写」以防旧字段残留。
前置检查:确认当前命中顺序
动手前,先验证现有顺序。打开主界面 → 右侧「日志」→ 等级调到 Debug,复现一次目标网页或应用,观察首行 Match 字段。若发现「本应走 DIRECT 的内网 IP 被代理规则拦截」,即需调整;反之命中预期策略,则无需折腾。
平台差异:最短可达路径
Windows / macOS GUI
- 主界面左侧点击「规则」→ 右上角「分组」标签。
- 鼠标悬停在目标分组卡片,按住左侧「⋮⋮」图标拖拽至新位置。
- 松开即写入内存配置,点击顶部「应用」按钮才会落盘。
Linux 或无图形环境
- 打开配置目录(默认
~/.config/clash-verge/profiles/,具体路径因安装方式而异)。 - 找到当前激活的 YAML,定位到
rules:数组。 - 按需求上下移动整行,保存后点击托盘图标「重载配置」。
YAML 编辑示例:把「公司内网」提到最前
- RULE-SET,ads,REJECT
- RULE-SET,apple,DIRECT
- RULE-SET,company,DIRECT # 需要提前
- MATCH,PROXY
# 调整后
- RULE-SET,company,DIRECT
- RULE-SET,ads,REJECT
- RULE-SET,apple,DIRECT
- MATCH,PROXY
保存后返回主界面,右上角出现「待应用」提示,点「应用」→ 日志里再次测试内网域名,确认已命中 company 分组即可。
例外与副作用:提前≠万能
过度提前「GEOIP,CN」可能把境外 CDN 强制直连,反而拖慢速度;经验性观察:晚高峰部分「香港节点」被 GEOIP 划为 CN,下载速度下降约 30 %。解决方法是把「IP-CIDR,1.1.1.1/32」等常用境外解析提前。若规则分组依赖「Script」,顺序调整会改变脚本入参,需同步检查 main() 里的 ctx.rule 索引号。
验证与回退:三步闭环
- 调序前,在「配置」页点击「生成快照」保存当前状态。
- 调序后,用「延迟测速」→「深度测速」对比同一节点,记录抖动与丢包。
- 若发现异常,点击「快照管理」→ 选中旧配置 →「还原」→「重载」,30 秒内即可回退。
性能取舍:多少条规则就该分组?
工作假设:单分组 300 条以内可保持内存占用 < 8 MB;超过 800 条时,首次加载耗时呈线性增加。建议把「高频」与「低频」拆成两个 Provider,前者置顶,后者置底,中间用「SCRIPT,no-cache」做跳板,兼顾可读性与性能。
与第三方订阅转换协同
若你使用自建 sub-web-docker 镜像做订阅转换,可在「远程配置」里增加 ?insert=true 参数,把本地「置顶规则」片段插入到转换后数组最前方,避免每次更新都被覆盖。具体步骤:把置顶规则保存为 local-head.yaml,在「订阅设置」→「合并本地片段」处勾选该文件即可。
故障排查:调序后突然「全局断网」
| 现象 | 最可能原因 | 验证办法 | 处置 |
|---|---|---|---|
| DNS 解析超时 | 把「GEOIP,CN」提前后,DNS 服务器被强制指向国内,但本地 DNS 被污染 | 日志里看 dns 模块是否返回 0.0.0.0 | 在置顶处加 IP-CIDR,8.8.8.8/32,DIRECT 或改用 fake-ip-filter |
| TUN 模式网页 10 s 才开 | 规则里第一条是「MATCH,PROXY」导致所有 LAN IP 也进虚拟网卡 | 关闭 TUN 后正常即可复现 | 把「IP-CIDR,192.168.0.0/16,DIRECT」提到最前 |
适用/不适用场景清单
- 适用:规则总量 > 100 条、含多个 Rule Provider、需要区分「公司/学校/家」多网络环境。
- 不适用:仅 5 条规则、全部走代理;或机场订阅已做服务器端分流,本地仅需 MATCH。
最佳实践 5 条
- 「IP 类」永远置于「DOMAIN 类」之前,减少 DNS 查询次数。
- 「REJECT」规则放在「DIRECT」之前,先拦截再放行,避免无效握手。
- 使用「Script」做动态分流时,给脚本分组单独卡片,位置放在 GEOIP 之后,方便索引对齐。
- 每次调序后,跑一轮「深度测速」采样 5 min,丢包 > 1 % 就回退。
- 把「最终兜底 MATCH」颜色标记为红色,视觉提醒勿误拖到顶部。
FAQ:手动调整优先级常见疑问
拖拽后忘记点「应用」会丢失吗?
会。内存配置只在本次运行有效,重启客户端后恢复上次落盘版本。务必点「应用」或按 Ctrl+S。
YAML 里注释会被保留吗?
Clash Verge 使用 YAML 1.2 解析器,回写时会丢弃注释。如需备注,请在外部维护 rules-notes.md。
为什么拖拽按钮是灰色?
该分组为「远程订阅」且开启「只读」模式。先复制为本地副本,再调整顺序即可。
收尾:下一步行动
手动调整规则分组优先级不是「一次性美化」,而是随网络环境变化的持续运维。建议你今晚就打开「日志」→ 找一条高频命中规则 → 把它提前到顶部 → 跑「深度测速」对比。只要验证无丢包,你就获得了零成本的首页加速;若出现异常,30 秒内用快照回退即可。把这套「测-调-验-退」闭环跑通,你的 Clash Verge 才能真正越用越快。

