Clash 中文网搜索

Clash Verge Rev 扩展覆写配置(Merge)教程:合并规则、执行顺序与示例

Clash 中文网编辑部 · 更新于 2026/10/22 · 对照版本 Clash Verge Rev v2.5.8

扩展覆写配置(Merge)是一段 YAML,Clash Verge Rev 会把它“合并”进订阅配置。 它单独保存,更新订阅后依然有效。打开方式有两种:

  • 右键订阅卡片 →「扩展覆写配置」:只对该订阅生效;
  • 订阅页顶部的「全局扩展覆写配置」:对所有订阅生效。

Merge 适合“覆盖某些设置项”,例如开启域名嗅探、修改 DNS、换 GeoData 下载地址。如果你想“追加”规则或节点,请使用 编辑规则 / 节点 / 代理组 或 扩展脚本。

合并规则(必须理解)

Merge 不是简单的“追加”,而是按以下规则合并。理解这四条,就能准确预测结果:

1. 对象(键值对)深度合并

你写的键会覆盖原配置中的同名键,没写的键保持不变,并且会递归到下一层。

订阅原有:

tun:
  stack: system
  mtu: 1500

Merge 写:

tun:
  stack: mixed

结果:

tun:
  stack: mixed   # 被覆盖
  mtu: 1500      # 保留

2. 列表整体替换

数组(列表)不会合并,而是整个替换。

订阅原有 50 条规则,Merge 写:

rules:
  - MATCH,DIRECT

结果:订阅的 50 条规则全部消失,只剩这一条。所以不要在 Merge 中写 rules、proxies、proxy-groups,除非你确实想完全替换它们。

3. dns 只合并第一层

dns 是例外:它只按第一层字段替换,不会递归。例如你写了 dns.nameserver,就会整体替换 nameserver 列表;写了 dns.nameserver-policy,就会整体替换整个策略表,而不是往里面加一条。

4. hosts 整体替换

hosts 也是例外:写了就整体替换订阅中的 hosts。

旧写法已失效

很多旧教程里的写法:

prepend-rules:
  - DOMAIN-SUFFIX,example.com,DIRECT

在新版 Clash Verge Rev 中已经不起作用——Merge 只会把 prepend-rules 当作一个普通字段写进配置,内核不认识它。请改用「编辑规则」。

被应用设置接管的字段

以下字段始终以「设置」页为准,写在 Merge 中会被丢弃,软件会提示“扩展配置或脚本写入了由应用设置接管的字段,这些值已被丢弃”:

字段 在哪里设置
mode 代理页模式切换
mixed-port、port、socks-port、redir-port、tproxy-port Clash 设置 → 端口设置
allow-lan Clash 设置 → 局域网连接
log-level Clash 设置 → 日志等级
ipv6 Clash 设置 → IPv6
external-controller、secret Clash 设置 → 外部控制
unified-delay Clash 设置 → 统一延迟

TUN 的开关(tun.enable)同样由「虚拟网卡模式」开关控制,但 TUN 的其他参数可以写在 Merge 中。

执行顺序

Clash Verge Rev 处理一份订阅的完整流程:

订阅原文
  → 应用设置
  → 全局扩展配置(全局 Merge)
  → 全局扩展脚本(全局 Script)
  → 订阅扩展配置(订阅 Merge)
  → 订阅扩展脚本(订阅 Script)
  → 应用设置回写
  → 交给内核

规律:全局先、订阅后;配置先、脚本后。越靠后的步骤可以修改前面步骤的结果。编辑器顶部也会显示这个顺序,并说明当前编辑的是哪一步。

想看最终交给内核的配置,点击订阅页的「查看运行时订阅」。

编辑器使用

  • 编辑器支持 YAML 语法高亮和错误提示;
  • 右键或快捷键可以「格式化文档」;
  • 保存时如果 YAML 有语法错误会提示失败,请检查缩进(必须用空格,不能用 Tab);
  • 保存后,若该订阅正在使用,会自动重新加载;没有生效时点击「重新激活订阅」。

常用示例

开启域名嗅探

嗅探可以从 TLS、HTTP、QUIC 流量中识别真实域名,提高 TUN 模式下域名规则的准确性:

sniffer:
  enable: true
  force-dns-mapping: true
  parse-pure-ip: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
      override-destination: true
    TLS:
      ports: [443, 8443]
    QUIC:
      ports: [443, 8443]
  skip-domain:
    - "+.push.apple.com"

覆盖 DNS 服务器

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query

因为 dns 按第一层替换,这里只会替换 enable、enhanced-mode、nameserver 三项,订阅中的 fake-ip-filter 等其他字段保留。也可以使用图形界面的 DNS 覆写。

修改 GeoData 下载地址

GitHub 访问困难时,换成 CDN 地址:

geox-url:
  geoip: https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat
  geosite: https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat
  mmdb: https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/country.mmdb
geo-auto-update: true
geo-update-interval: 24

设置 TUN 细节参数

tun:
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  route-exclude-address:
    - 192.168.0.0/16
    - 10.0.0.0/8

(tun.enable 仍由开关决定。这些参数也可以在 TUN 设置窗口 中修改。)

开启 TCP 并发与进程匹配

tcp-concurrent: true
find-process-mode: strict

添加规则集合(配合编辑规则使用)

Merge 中可以新增一个规则集合(因为 rule-providers 是对象,会深度合并,不会删掉订阅原有的规则集):

rule-providers:
  my-direct:
    type: http
    behavior: domain
    format: text
    url: https://example.com/my-direct.txt
    path: ./ruleset/my-direct.txt
    interval: 86400

然后在「编辑规则」中添加前置规则 RULE-SET,my-direct,DIRECT。规则集写法见 代理集合与规则集合。

新增一个代理集合

同理,proxy-providers 也可以新增,把第二个机场的节点引入当前配置:

proxy-providers:
  second-airport:
    type: http
    url: "https://example.com/another-sub"
    path: ./providers/second.yaml
    interval: 86400
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 300

再用「编辑代理组」新建一个 use: [second-airport] 的代理组即可使用。

Merge、编辑规则、Script 怎么选

需求 推荐工具
覆盖某个设置项(嗅探、DNS、GeoData、TUN 参数) Merge
新增规则集合、代理集合 Merge
添加几条自定义规则 编辑规则
添加自建节点、删除信息节点 编辑节点
新建代理组 编辑代理组
批量处理、条件判断、对所有订阅追加规则 Script

相关教程

常见问题

在 Merge 里写 prepend-rules 为什么不生效?

新版 Clash Verge Rev 的 Merge 只做“合并”,不再识别 prepend-rules、append-rules 这类旧字段。添加规则请用「编辑规则」,或用扩展脚本。

在 Merge 里改端口为什么无效?

mixed-port、allow-lan、mode、log-level、ipv6、external-controller、secret、unified-delay 等字段由应用设置接管,写在 Merge 里会被丢弃,请到「设置」页修改。

全局扩展配置和订阅扩展配置有什么区别?

全局的对所有订阅生效,订阅的只对当前订阅生效;执行顺序上全局先、订阅后,所以订阅扩展配置可以覆盖全局的结果。

写了 rules 之后订阅的规则全没了?

因为列表是整体替换的。在 Merge 中写 rules 会用你的列表完全替换订阅的规则。追加规则请用「编辑规则」或扩展脚本。

怎么确认 Merge 生效了?

点击订阅页的「查看运行时订阅」,查看最终配置中对应字段是否已经改变。

还没安装 Clash Verge Rev?

最新版 v2.5.8,直链 GitHub 官方安装包。

前往下载