
订阅更新机制与自定义规则覆盖的原理
全量替换是订阅更新的核心逻辑
Clash VPN的订阅更新执行的是完整的配置文件替换操作,远端服务器返回的配置文件会直接覆盖本地config.yaml文件中的所有内容。当用户执行订阅更新时,客户端从订阅链接拉取服务商预设的完整配置,包括proxies(节点列表)、proxy-groups(策略组)和rules(分流规则)等全部字段,这些内容会完全替换本地原有的对应字段。如果在订阅配置中直接添加或修改了任何规则,在订阅更新后这些修改都会被服务商的最新配置覆盖而丢失。
直接在订阅配置中修改是临时性的
直接在Clash配置编辑器中修改订阅的规则属于本地临时修改,其生效周期仅限于当前配置文件被覆盖之前。由于订阅更新时会完整替换配置文件,所有在订阅配置中手动添加的规则在更新后都会被抹去,恢复到服务商预设的规则列表。这种修改方式适用于临时测试或调试目的,但无法作为长期保留自定义规则的手段。若用户需要持久保存自定义规则,必须使用Clash提供的规则叠加机制而非直接修改订阅配置。
服务商预设规则与自定义需求的冲突
服务商的预设规则通常面向所有用户,采用通用的分流策略,可能无法满足每个用户的个性化需求。例如部分用户希望特定域名强制走代理而服务商预设为直连,或希望某些国内网站直连而服务商预设为走代理。当预设规则与用户需求不符时,若直接在订阅配置中修改,每次订阅更新后自定义配置就会丢失,需要重新添加。这种重复劳动不仅耗时,还容易因遗漏导致特定网站分流异常。
Clash Verge Rev的Merge功能保存规则
Merge功能的叠加原理与操作方法
Clash Verge Rev的Merge功能(全局扩展配置)允许用户将自定义规则叠加到订阅配置之上,而无需直接修改订阅文件。在Clash Verge Rev的「配置」页面中找到“全局扩展配置”或“Merge”选项,在YAML编辑框中添加prepend-rules字段,将自定义规则写入该字段。保存后每次加载配置时,这些规则会自动插入到订阅规则列表的最前面,获得最高优先级。Merge规则存储在客户端的独立配置文件中,不随订阅更新而被覆盖,从而实现自定义规则的持久保存。
prepend-rules与append-rules的区别与选择
在Merge配置中,prepend-rules和append-rules分别用于将自定义规则插入到订阅规则列表的最前面和最后面。prepend-rules适合需要优先匹配的场景(如特定域名强制走代理),确保自定义规则在任何订阅规则之前生效。append-rules适合作为兜底的通用规则(如MATCH规则),放在订阅规则之后作为补充匹配。通常建议使用prepend-rules将自定义精确规则插入到订阅规则之前,让它们获得最高优先级,避免被订阅中的宽泛规则覆盖。
在Merge中配置多条自定义规则的写法
在Merge的YAML编辑框中可同时配置多个自定义规则,每行一条,按照预期匹配顺序排列。配置示例为prepend-rules: - "DOMAIN-SUFFIX,example.com,PROXY" - "IP-CIDR,192.168.0.0/16,DIRECT" - "DOMAIN-KEYWORD,ads,REJECT"。规则按顺序逐条匹配,越靠前的规则优先级越高。建议将最重要的精确规则放在最前面,将通用规则放在后面。配置完成后保存并在「配置」页面重新加载当前配置,即可使Merge规则生效。
parsers预处理机制的使用方法
parsers的基本概念与配置格式
parsers是Clash内核提供的配置预处理机制,在每次订阅更新时对拉取的配置文件执行自动化修改。parsers配置在Clash的配置文件中(通常在config.yaml的顶层字段),格式为parsers: - url: 订阅链接 yaml: prepend-rules: - "DOMAIN-SUFFIX,example.com,PROXY"。当执行订阅更新时,Clash会先拉取订阅配置,再根据parsers规则对配置进行修改,将自定义规则插入到订阅规则列表指定位置,然后加载修改后的配置。
为不同订阅配置独立的parsers规则
当用户同时使用多个订阅链接时,可为每个订阅配置独立的parsers规则,实现差异化的自定义策略。在parsers配置中,通过url字段指定对应的订阅链接,只有匹配该链接的订阅更新时才会应用对应的预处理规则。例如订阅A需要特定域名走代理,订阅B需要内网直连,可分别为两个订阅配置不同的prepend-rules。这种方式适合管理多个服务商的订阅,每个订阅独立维护自定义规则而不互相干扰。
parsers与Merge功能的对比选择
parsers和Merge功能都能实现自定义规则的持久保存,但适用场景和配置方式有所不同。parsers在订阅更新时对配置文件进行预处理,将自定义规则直接写入拉取后的配置中,适用于需要深度修改订阅配置的场景。Merge功能则在客户端加载配置时进行规则叠加,不修改订阅文件本身,操作更简便。对于大多数普通用户,推荐使用Clash Verge Rev的Merge功能,界面直观且无需编写parsers的复杂配置。
覆写功能在规则持久化中的应用
覆盖订阅规则中的错误条目
当订阅配置中存在错误的规则(如将某个境外域名误设为DIRECT)且无法通过调整顺序解决时,可在Merge或parsers中使用精确规则覆盖该错误条目。通过prepend-rules将DOMAIN-SUFFIX,错误域名.com,PROXY插入到订阅规则列表最前面,让精确规则优先于订阅中的错误直连规则匹配。这种方式无需修改订阅配置本身,通过更高优先级的自定义规则覆盖了订阅中的错误设置,同时保留了订阅的自动更新能力。
叠加规则与订阅规则的优先级控制
prepend-rules插入的规则位于订阅规则列表的最前面,因此拥有最高优先级。当自定义规则与订阅规则冲突时,自定义规则优先匹配生效。这意味着用户可以通过prepend-rules完全覆盖订阅中对特定域名的规则设定,实现个性化的分流策略。若希望自定义规则作为订阅规则的补充而非覆盖,可使用append-rules将规则插入到订阅规则列表最后面,仅在订阅规则未匹配时生效。
覆写功能的版本兼容性说明
prepend-rules和append-rules功能在Mihomo内核和Clash Verge Rev中均有支持,但不同客户端版本的配置界面可能存在差异。Clash Verge Rev从v1.3.0版本开始完整支持Merge功能,若使用较旧版本,部分客户端可能不支持图形化的Merge配置,需通过parsers方式实现。建议将Clash Verge Rev更新至最新版本以获得最完整的Merge功能支持。
自定义规则的备份与迁移
导出Merge配置便于多设备同步
在Clash Verge Rev中配置的Merge规则可导出为单独的文件,便于在多台设备间同步使用。在Merge编辑框中复制自定义规则的YAML内容,保存为文本文件(如custom-rules.yaml),在其他设备的Clash Verge Rev中粘贴相同内容即可复用。这种方式可避免在多设备上重复配置相同的自定义规则,确保不同设备上的分流策略保持一致。
将自定义规则整合到本地配置中
对于完全不使用订阅配置的用户,可直接在本地配置文件的rules字段中添加所有规则,这些规则不会因订阅更新而被覆盖。将订阅配置保存为本地文件后,在rules字段中按照预期顺序排列所有规则,后续使用此本地配置而非在线订阅链接。此方式适合那些不需要频繁更新订阅节点、主要使用自建节点的用户,自定义规则完全由用户控制,不受任何外部更新影响。
规则变更的版本记录与回滚
在频繁调整自定义规则的过程中,建议对配置文件进行版本记录,便于在规则错误时快速回滚。可将每次规则调整后的配置文件备份至云存储或本地存档,标注修改日期和内容。若使用Git等版本控制工具管理配置文件,每次修改规则时提交版本注释,当出现问题时可通过git diff查看具体改动,或通过git checkout快速回退到之前稳定的版本。
常见问题FAQ
直接在订阅配置中手动添加规则,更新订阅后还在吗?
不在。订阅更新执行的是完整的配置文件替换,手动添加的所有规则在更新后都会被服务商的最新配置覆盖而丢失。若需要长期保留自定义规则,必须使用Clash Verge Rev的Merge功能或parsers的prepend-rules方式将规则叠加到订阅配置之上,而非直接修改订阅配置。
Clash Verge Rev的Merge功能和parsers有什么区别?
Merge功能在客户端加载配置时进行规则叠加,操作简便且界面直观。parsers在订阅更新时对配置文件进行预处理,将自定义规则写入拉取后的配置中。两者均可实现自定义规则的持久保存,普通用户推荐使用Merge功能,高级用户可选用parsers实现更精细的预处理控制。
prepend-rules和append-rules应该怎么选?
prepend-rules将自定义规则插入到订阅规则列表最前面,获得最高优先级,适合覆盖订阅中的错误规则或确保特定域名优先匹配。append-rules将规则插入到列表最后面(在MATCH之前),适合作为订阅规则的补充兜底。通常推荐使用prepend-rules,确保自定义规则在任何订阅规则之前优先匹配。
使用Merge功能后规则还是被订阅覆盖了,怎么办?
检查Merge配置中的prepend-rules字段是否正确书写(注意YAML格式,冒号后需有空格),以及该字段是否在Merge的YAML编辑框中正确保存。确认后重新加载配置,在Clash Verge Rev的「连接」面板中访问目标网站,查看该请求命中的规则是否为自定义规则名称。若仍被覆盖,检查是否有多个Merge配置冲突,或尝试使用parsers方式替代。