想给订阅加一条自己的规则,最直觉的做法是打开配置文件改一改。然后第二天订阅自动更新,改动全没了。
正确做法是用扩展配置(Merge):把你的改动单独存一份,每次加载订阅时自动合并进去。
机制是怎么运作的
在 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"合并顺序与冲突
如果全局扩展和单订阅扩展都写了 prepend-rules,两边的规则都会生效,单订阅的排在更前面。
调试扩展配置
看合并后的实际配置
Clash Verge 会把最终生效的配置写到一个运行时文件里。订阅卡片 ⋯ → 打开文件 看到的是原始订阅;要看合并后的结果,去配置目录下找 clash-verge.yaml 或 runtime.yaml(版本不同名字略有差异)。
搜索你加的那条规则,能找到就说明合并成功了。
配置加载失败怎么办
出错时先把扩展配置内容全部清空,确认订阅本身能加载,然后一段一段加回去定位问题。
关于 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
相关文档
把一份 Clash / Mihomo 配置从头到尾拆开讲:端口、模式、DNS、proxies、proxy-groups、rules、rule-providers 的作用与写法,附一份可直接使用的最小配置。
每种策略组的实际行为、适用场景和关键参数,附带一套可直接抄的分组结构,以及 Mihomo 特有的 include-all 与 filter 用法。
url-test 的测速原理、unified-delay 的作用、为什么显示的延迟和 ping 值对不上,以及三个关键参数的取值建议与副作用。