Clash Verge Rev Merge 混合配置实战:多订阅管理与规则分离的优雅方案

立即下载Clash Verge Rev 评测站 全平台支持 · 官方最新版

如果你同时使用多个订阅源,或者希望自己维护一份精心打磨的分流规则,那么 Merge(混合配置)会彻底改变你的使用方式。这是 Clash Verge Rev 相对同类客户端最具差异化的能力之一。

这篇教程会把 Merge 的工作原理讲透,并给出三种可以直接照抄的完整配置。

一、Merge 到底解决什么问题

没有 Merge 时的日常

假设你有这样的配置需求:

按传统做法,你需要:

1. 分别下载 A、B 两个订阅的 YAML
2. 手工拼接两者的 proxies 段落
3. 删除重复的代理组定义
4. 把自己的规则追加到 rules 末尾
5. 保存为单一配置文件并导入

然后每次 A 或 B 更新,以上五步重来一遍。

如果有自动化脚本,情况会好一点——但脚本本身要维护,遇到上游结构变动还得改。

Merge 的做法

Merge 把这件事变成了一次配置,长期自动:

订阅 A ──┐
订阅 B ──┼──→ [Merge 引擎] ──→ 运行时合成的最终配置
本地规则 ─┘

每个来源保持独立。A 更新了?不影响 B,也不影响你的规则文件。你改了规则?不需要重新拼接任何东西。

效率对比

维度 手工合并 Merge
初始配置 复杂(需拼接) 简单(添加来源)
订阅更新后 需重新合并 自动生效
规则修改 需重新合并 改自己的文件即可
出错排查 难定位(结果文件混杂) 易定位(来源清晰)
多订阅数量增长的成本 线性上升 几乎不变

这张表里最关键的一行是「订阅更新后」——手工合并的维护成本会随着时间不断累积,而 Merge 是一次性投入。

二、工作原理

合并的时机

Merge 发生在配置加载时,而不是修改磁盘文件。这意味着:

合并的顺序规则

后加入的源会覆盖先加入的同名内容。 这是最核心的规律。

举个具体例子:

源 1(订阅 A):   port: 7890
源 2(本地规则): port: 7891
                    ↓
合并结果:          port: 7891   ← 后者胜出

因此,你在做配置时必须清楚自己想让谁说了算。通常我们希望:

订阅(提供节点,可能带默认规则)
  ↓ 被覆盖
本地文件(提供我们想要的设置与规则)

所以本地文件应该排在 Merge 链的最后。

字段合并的差异

不同类型的字段,合并行为不完全一样:

字段类型 合并方式 说明
标量值(port、mode 等) 覆盖 后者直接替换前者
proxies 数组 合并去重 同名节点通常保留一个
proxy-groups 按名称覆盖 同名组整体替换
rules 数组 追加 顺序会影响匹配结果

尤其注意 rules 是追加而非覆盖 —— 这意味着你要小心规则顺序:上游规则会排在前面,你的规则排在后面,而规则是命中即停的。

为什么我的本地规则似乎不生效?

这是 Merge 最常见的困惑,原因几乎总是规则顺序。

Clash 的规则是从上往下匹配、命中即停的。Merge 会把所有来源的 rules 按顺序拼起来,如果你的规则排在后面,而前面已经有了能命中的宽泛规则,你的规则永远不会执行。

两种解决方式:

  1. 使用 Merge 的规则替换能力 — 部分客户端版本支持明确指定规则段的处理方式
  2. 避免宽泛的上游规则 — 在订阅侧就配置精简规则,把完整规则交给本地文件维护

排查方法:打开日志看目标请求实际命中了哪条规则,一眼就能看出是不是被上游规则提前截住了。

三、场景一:多订阅合并

适用情况

你有两个及以上订阅源,希望节点汇总使用。

配置步骤

  1. 打开「配置」页
  2. 找到 Merge 区域,启用
  3. 依次添加订阅 A、订阅 B(都以 URL 形式)
  4. 保存并重新加载配置

注意事项

验证是否生效

加载完成后:

  1. 进入「代理」页,检查节点总数是否约等于两源之和
  2. 若数量异常少,说明存在大面积重名或被代理组过滤

四、场景二:规则与节点分离(最推荐)

这是我认为最值得推荐的用法,也是最能体现 Merge 价值的地方。

核心思路

┌─────────────────┐
│  订阅(纯节点)    │  ← 只关心节点的增减,不关心规则
└────────┬────────┘
         │ Merge
┌────────┴────────┐
│  本地规则文件     │  ← 你精心维护的规则、DNS、端口等设置
└─────────────────┘

好处:订阅更新时,你的规则完全不受影响。哪怕换了一个新的订阅源,也只需要换 URL,规则文件一行不用改。

本地规则文件示例

创建一个 my-rules.yaml,内容大致如下:

# ===== 基础设置 =====
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info

# ===== DNS 配置 =====
dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query

# ===== 规则部分 =====
rules:
  # 本地与内网一律直连,必须放在最前
  - DOMAIN-SUFFIX,localhost,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT

  # 国内常见服务直连
  - GEOIP,CN,DIRECT
  - DOMAIN-SUFFIX,cn,DIRECT

  # 兜底走代理
  - MATCH,PROXY

配置顺序

在 Merge 链中:

第 1 层:订阅 URL(提供 proxies 与 proxy-groups)
第 2 层:my-rules.yaml(提供 DNS、端口、rules)

切记本地文件放最后,否则它的设置会被订阅覆盖。

为什么这个方案好用

场景 传统做法 Merge 方案
订阅更新 重新拼接 无需操作
调整一条规则 找到大文件里对应位置修改 改自己的小文件
换订阅源 重新拼一次 换 URL 即可
备份 备份整个大文件 备份一个小规则文件

长期使用的维护成本差距非常大。

五、场景三:多层覆盖做精细控制

进阶用法是建立三层结构:

第 1 层:订阅 URL          → 节点来源
第 2 层:base.yaml        → 通用设置(DNS、端口、plus-box 等)
第 3 层:device.yaml      → 本机专属(端口微调、网卡名、路径)

为什么需要第 3 层? 当你多台设备共享配置时,有些字段必须因机而异:

把这些放进 device.yaml,前两层就可以放心共享。

device.yaml 示例

# 本机专属覆盖
port: 7892              # 这台机器的端口被占用了
mixed-port: 7893
external-controller: 127.0.0.1:9097

文件很短,但解决了共享配置的最后一公里问题。

六、常见故障排查

Merge 后配置加载失败

最可能的原因是某个源的 YAML 语法有误,或者结构不兼容。

排查方法:

  1. 逐个移除 Merge 源,定位到具体哪个源有问题
  2. 把该源的 YAML 内容复制到语法检查工具验证
  3. 检查是否有重复且冲突的顶层字段

处理顺序上,建议先只保留一个源确认可用,再逐步添加。

节点数量比预期少很多

可能原因:

  1. 重名节点被去重 — 两个源节点名相同
  2. 上游 filter 过滤 — 某些源自带节点过滤规则
  3. 代理组未包含 — 节点存在但未加入任何代理组,界面上看不到
  4. 合并时机问题 — 需要手动重新加载一次配置

建议先打开日志确认实际加载的节点数,再对照源文件的节点数。

修改了本地文件但没生效

Merge 的结果在配置加载时生成。修改文件后必须:

  1. 在软件中执行一次「重新加载配置」
  2. 或重启应用

仅保存文件不会自动热更新。这一点容易被忽略,尤其是习惯用外部编辑器改文件的用户。

另外要确认:修改的文件确实在 Merge 链中,且路径没有变更。

规则顺序导致预期外行为

参见前面「Merge 的工作原理」中关于 rules 追加的说明。

核心处理方式:

  • 尽量让上游订阅的规则保持精简,避免其包含宽泛的兜底规则
  • 如果上游规则无法控制,考虑在本地文件中重构整个 rules 段落
  • 永远用日志验证实际命中的规则

判断某个请求为什么走了非预期的出站,看日志是最快的方法。没有任何猜测能替代日志里的那条 match(...) 记录。

七、与其他方案的取舍

Merge vs 单文件

单文件 Merge
上手 简单 需要理解
长期使用 维护痛苦 省心
文件管理 一个大文件 多个小文件

如果你只有一个订阅且从不自定义规则,单文件足够。但只要符合以下任一条件,就值得上 Merge:

Merge vs 外部生成工具

市面上有第三方工具能把多个订阅合成一个链接。它们和 Merge 的区别是:

外部工具 Merge
运行位置 远端服务器 本地客户端
隐私 订阅内容需交给第三方 全程本地处理
规则修改 需重新生成链接 本地即时修改

从隐私角度考虑,Merge 更优 —— 你的订阅链接和配置内容不需要经过第三方服务器。这一点对于在意数据流向的用户来说很重要。

八、实践建议清单

配置 Merge 时建议遵循:

小结

Merge 的学习成本大概在半小时左右,但它能省下的长期维护时间是这个数字的好几倍。

建议的进阶路径:

  1. 先掌握场景二(规则与节点分离)—— 收益最高,配置最简单
  2. 熟悉后再加入多个订阅源
  3. 多设备用户再引入第三层的设备专属文件

不必一开始就把三层结构搭齐。从最实用的那层开始,遇到问题再往上加,这样每一步都能实际感受到收益。

如果配置过程中遇到了具体问题,《Clash Verge Rev 故障排查手册》按症状分类整理了解决方案;想了解规则本身怎么写,《规则分流配置详解》里有完整的语法说明。

这篇教程有帮助吗?立即下载Clash Verge Rev 评测站试试吧!

全平台支持 · 安全无毒 · 官方最新版