跳到主要内容

首页 / 博客 / 配置基础

用 Merge 扩展订阅配置,改了也不会被更新覆盖

配置基础2026-07-091688 字约 4 分钟
用 Merge 扩展订阅配置,改了也不会被更新覆盖

想给订阅加一条自己的规则,最直觉的做法是打开配置文件改一改。然后第二天订阅自动更新,改动全没了。

正确做法是用扩展配置(Merge):把你的改动单独存一份,每次加载订阅时自动合并进去。

机制是怎么运作的

配置的合成过程下载订阅原始 config.yaml读取扩展配置你写的 merge 文件按规则合并prepend 插前面 append 加后面生成运行时配置内核实际使用的订阅更新时重复此过程你的改动永远保留
原始订阅文件始终不动,改动存在另一个文件里

在 Clash Verge 里的入口:订阅页 → 右上角「全局扩展配置」,或者某个订阅卡片的 ⋯ → 扩展配置(只对这一份订阅生效)。

三类操作

prepend-*:插到最前面

prepend-rules:
  - DOMAIN-SUFFIX,mycompany.com,DIRECT
  - DOMAIN-SUFFIX,example.com,🚀 节点选择

因为规则是从上往下匹配的,prepend 的规则优先级最高,会覆盖订阅里的任何判断。

这是修正分流错误的标准手段。

append-*:追加到最后

append-rules:
  - DOMAIN-SUFFIX,slow-site.com,DIRECT

追加到 MATCH 之后的规则永远不会命中(因为 MATCH 匹配一切)。所以 append-rules 的实际用途有限,主要用于追加 proxy-groups 或 proxies。

直接覆盖顶层字段

不带前缀的字段会直接替换订阅里的同名字段:

mixed-port: 7899
mode: rule
log-level: warning
ipv6: false
unified-delay: true
tcp-concurrent: true

可用的字段

字段说明
prepend-rules / append-rules规则
prepend-proxies / append-proxies节点
prepend-proxy-groups / append-proxy-groups策略组
rule-providers规则集(会与原有的合并)
proxy-providers节点集
dns / tun / sniffer 等顶层段整段覆盖

实用片段合集

一、修正分流错误

最常用的场景:某个网站走错了线路。

prepend-rules:
  # 强制走代理
  - DOMAIN-SUFFIX,anthropic.com,🚀 节点选择
  - DOMAIN-SUFFIX,openai.com,🚀 节点选择
  # 强制直连(避免境外 IP 触发风控)
  - DOMAIN-SUFFIX,icbc.com.cn,DIRECT
  - DOMAIN-SUFFIX,alipay.com,DIRECT
  - DOMAIN-SUFFIX,12306.cn,DIRECT
  # 内网
  - DOMAIN-SUFFIX,mycompany.com,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve

二、加一个自己的策略组

prepend-proxy-groups:
  - name: "🔧 我的分组"
    type: select
    proxies: ["DIRECT", "🚀 节点选择", "♻️ 自动选择"]

prepend-rules:
  - DOMAIN-SUFFIX,某个站点.com,🔧 我的分组

三、加自建节点

订阅之外还有自己的服务器:

prepend-proxies:
  - name: "我的小鸡"
    type: trojan
    server: my.example.com
    port: 443
    password: "pwd"
    udp: true

prepend-proxy-groups:
  - name: "🏠 自建"
    type: select
    proxies: ["我的小鸡", "DIRECT"]

注意:新加的节点不会自动进入订阅里已有的策略组。如果想让它出现在「节点选择」里,需要覆盖那个组的定义,或者用 Mihomo 的 include-all 让组自动收编。

四、全局性能优化

unified-delay: true      # 统一延迟计算,测速更可比
tcp-concurrent: true     # 多 IP 域名并发握手
find-process-mode: strict  # 启用 PROCESS-NAME 规则
global-client-fingerprint: chrome   # TLS 指纹伪装成 Chrome
profile:
  store-selected: true   # 记住你手动选的节点
  store-fake-ip: true    # 缓存 fake-ip 映射,重启后不丢

store-selected: true 很实用——不加的话每次重载配置,手动选的节点都会回到默认值。

五、广告拦截

rule-providers:
  my-reject:
    type: inline
    behavior: domain
    payload:
      - "+.doubleclick.net"
      - "+.googlesyndication.com"
      - "+.adservice.google.com"

prepend-rules:
  - RULE-SET,my-reject,REJECT

六、BT / PT 流量强制直连

很多服务商禁止 BT 流量,走代理可能导致封号:

prepend-rules:
  - PROCESS-NAME,qbittorrent.exe,DIRECT
  - PROCESS-NAME,Transmission.exe,DIRECT
  - PROCESS-NAME,aria2c.exe,DIRECT
  - DST-PORT,6881-6889,DIRECT

需要配合 find-process-mode: strict 才能让进程规则生效。

七、开启域名嗅探

有些流量到达时只有 IP 没有域名(比如某些直接连 IP 的客户端),嗅探能从 TLS 握手里还原出域名,让规则重新可用:

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"
    - "+.apple.com"

合并顺序与冲突

最终配置的生成顺序11. 订阅原始配置作为基底22. 全局扩展配置对所有订阅生效33. 单个订阅的扩展配置只对这一份生效,优先级更高44. 界面上的临时操作手动切换的节点等
后面的覆盖前面的;prepend 类字段是插入而不是覆盖

如果全局扩展和单订阅扩展都写了 prepend-rules,两边的规则都会生效,单订阅的排在更前面。

调试扩展配置

看合并后的实际配置

Clash Verge 会把最终生效的配置写到一个运行时文件里。订阅卡片 ⋯ → 打开文件 看到的是原始订阅;要看合并后的结果,去配置目录下找 clash-verge.yamlruntime.yaml(版本不同名字略有差异)。

搜索你加的那条规则,能找到就说明合并成功了。

配置加载失败怎么办

扩展配置常见错误YAML 缩进用了 Tab —— 必须用空格引用的策略组名和订阅里不一致(emoji、空格、大小写)prepend-rules 写成了 prepend_rules(下划线)规则里的策略名不存在 —— 会导致整份配置加载失败dns 段只写了一半 —— 整段覆盖会丢掉原有配置

出错时先把扩展配置内容全部清空,确认订阅本身能加载,然后一段一段加回去定位问题。

关于 Script(脚本模式)

除了 Merge,部分版本还支持用 JavaScript 动态处理配置:

function main(config) {
  // 给所有策略组加上 DIRECT 选项
  config["proxy-groups"].forEach(g => {
    if (g.type === "select" && !g.proxies.includes("DIRECT")) {
      g.proxies.push("DIRECT");
    }
  });
  // 插入一条规则
  config.rules.unshift("DOMAIN-SUFFIX,example.com,DIRECT");
  return config;
}

脚本模式能力更强,但也更容易写出问题——一个异常会导致整份配置加载失败。能用 Merge 解决的就别用 Script。

小结

  • 永远不要直接改订阅下载的文件,用扩展配置
  • prepend-rules 是修正分流的标准手段,优先级最高
  • 顶层字段是整段覆盖,写 dns 就要写完整
  • store-selected: true 建议加上,避免每次重载丢失手动选择
  • 策略组名必须和订阅完全一致,包括 emoji

相关:YAML 结构详解规则类型速查


相关文档