Clash 覆写/Merge:订阅更新也不丢自定义

最让人崩溃的情况:辛辛苦苦改好的规则,订阅一更新全没了。原因是你直接改了订阅原文,而更新会把整份配置重新下载覆盖。覆写(Override / Merge)就是来解决这件事的——你的改动单独存一份,每次加载订阅时自动合并进去,订阅怎么更新都动不到它。

为什么不能直接改订阅

订阅是个会"自我刷新"的文件。你手动加的两条规则,在下一次更新订阅时会被远端的新版本整个覆盖掉。所以正确姿势从来不是去改它,而是在它"之外"叠加自己的东西。

覆写的工作原理

下载订阅 每次更新都重来 合并你的覆写 自动叠加 最终生效配置 含你的改动 override.yaml(你维护) 订阅更新 N 次,这份始终不动

时序示意图覆写在"下载订阅"和"生效"之间插入,自动合并你的私货。

YAML 合并覆写

大多数支持覆写的客户端(Clash Verge Rev 的「全局扩展配置 / Merge」、Mihomo Party 的「覆写」)都支持写一段 YAML,按字段合并到订阅上。比如统一改 DNS、强制开 TUN、追加几条规则:

# 这是一份覆写片段,不是完整配置
mode: rule
tun:
  enable: true
  stack: mixed
dns:
  enable: true
  enhanced-mode: fake-ip

# 在订阅 rules 最前面插入你的规则(不同客户端语法略有差异)
prepend-rules:
  - DOMAIN-SUFFIX,my-company.com,DIRECT
  - DOMAIN-KEYWORD,analytics,REJECT

合并的核心规则:同名字段你写的覆盖订阅的;列表类(如 rules)通常支持"前插/后追加"。具体字段名各客户端有差异,照它文档来。规则怎么写见 自定义分流规则

脚本覆写(进阶)

需要更灵活的逻辑——比如批量重命名节点、按关键字重组策略组——可以用脚本覆写(JavaScript)。客户端把解析后的配置对象传给你的脚本,你改完返回。这是进阶玩法,能省掉大量重复手工,但写错会让整份配置加载失败,改完务必看日志确认。

实战建议

  • 覆写只放"你的东西":私人直连规则、广告拦截、DNS、TUN 这类跨机场通用的设置,放覆写里一劳永逸。
  • 节点交给订阅或代理集,覆写不要写死节点,否则换机场又得改。
  • 改完看日志:覆写语法错误会导致加载失败,参考 看懂日志与连接定位是哪一行。
这才是正确工作流:订阅/代理集管节点 → 规则集管规则库 → 覆写管你的个性化设置。三者各司其职,更新永远不打架。

用支持覆写的客户端

Clash Verge Rev、Mihomo Party 都支持覆写,到下载中心获取。

前往 Clash 下载中心
⚠️ 免责声明:本文为开源软件使用教程,本站不提供任何节点、VPN 或机场服务。请遵守所在地区法律法规,合理合法使用网络工具。