首页/教程/Clash vpn订阅里的规则和自己写的规则哪个优先?
CLASH GUIDE

Clash vpn订阅里的规则和自己写的规则哪个优先?

约 9 分钟阅读

Clash VPN中,规则优先级由规则在最终加载配置中的位置决定,订阅规则和自定义规则本身没有固定的优先级高低。订阅更新执行全量替换,直接修改订阅配置中的规则会被覆盖,无法永久保留。通过Clash Verge Rev的Merge功能或Parsers预处理,使用prepend-rules可将自定义规则插入到订阅规则列表最前面,获得最高优先级且不随订阅更新被覆盖;append-rules将规则插入到订阅规则列表最后面,优先级低于所有订阅规则。在「连接」面板中可查看具体请求命中的规则名称,确认自定义规则是否已优先生效。若订阅中的错误规则需要覆盖,使用prepend-rules添加相同域名的精确规则可优先匹配,覆盖订阅中的错误处理。Merge配置和Parsers预处理方式均能实现自定义规则的永久保留,推荐普通用户使用Clash Verge Rev的Merge功能,配置简单且直观。

规则优先级取决于最终配置中的位置

匹配顺序决定优先级而非规则来源

Clash VPN的规则优先级完全由规则在最终加载的配置rules字段中的排列顺序决定,与规则来源于订阅还是用户自己编写无关。Clash遵循“自上而下、逐条匹配、先命中先生效”的核心匹配原则,排在越前面的规则拥有越高的优先级,无论该规则是服务商预设的还是用户手动添加的。当某条流量匹配到列表中的第一条符合条件的规则后,该规则的动作立即生效,后续规则不再参与判断。因此订阅规则和自定义规则谁优先的问题,本质上是这两类规则在最终合并后的配置中谁的物理位置更靠前。

订阅规则作为基础配置先被加载

通过订阅链接拉取的配置文件是Clash VPN规则体系的基础配置,包含了服务商预设的节点列表、策略组和分流规则。在订阅更新时,远端服务器返回的完整配置文件覆盖本地配置,其中的rules字段按服务商设定的顺序排列。这些订阅规则构成了分流的基准框架,覆盖了常见的国内直连、国外代理和广告拦截需求。但如果用户对默认的分流逻辑不满意,直接修改订阅配置中的规则顺序不是持久有效的方案,因为下次订阅更新会恢复为服务商的原始顺序。

自定义规则的覆盖依赖于插入位置

自定义规则能否获得优先权,完全取决于它被插入到最终配置中的位置。如果自定义规则被放置在订阅规则列表的后面,订阅规则会优先匹配,自定义规则仅作为补充兜底。如果自定义规则被前置插入到订阅规则列表的最前面,它将获得最高优先级,能够覆盖订阅中对同一域名的不同处理。用户无法直接修改订阅配置的规则顺序,因为订阅更新会覆盖本地改动,必须通过Clash提供的规则叠加机制来控制自定义规则的插入位置。

直接修改订阅配置会被更新覆盖

全量替换是订阅更新的工作机制

Clash VPN执行订阅更新时,远端服务器返回的配置文件会完整替换本地的config.yaml文件,这意味着直接在订阅配置中修改的任何内容(包括添加规则、调整顺序、修改策略组)在下次更新时都会丢失。这种全量替换机制确保了服务商对节点和规则的更新能够一致地应用到所有用户,但同时也意味着用户无法通过直接修改订阅文件来永久保留自定义配置。如果用户尝试在订阅配置的rules字段中手动添加规则并保存,执行订阅更新后这些新增规则会被完全抹去,恢复到服务商预设的规则列表。

订阅更新后手动修改的规则丢失

当用户直接在Clash配置编辑器或config.yaml文件中修改订阅配置的rules字段后,执行订阅更新时所有手动添加的规则和调整的顺序都会消失。这是因为订阅更新拉取的新配置文件完整覆盖了本地文件,之前所做的所有本地修改都不再保留。用户可能会发现之前为特定网站配置的精确规则在更新后失效,该网站的流量又回到了服务商预设的分流逻辑。这种修改方式只适合临时测试或调试目的,不能作为长期保留自定义规则的手段。

不修改订阅文件本身的必要性

为了实现自定义规则的持久保存,用户不应直接在订阅配置文件中添加或修改规则,而应使用Clash提供的规则叠加机制。直接修改订阅文件的操作方式从根本上与订阅的全量替换机制不兼容,无论修改多少次,每次订阅更新都会将配置重置为服务商的最新版本。正确的做法是将自定义规则存放在独立的配置层中,通过Merge功能或Parsers预处理在订阅配置加载时动态合并,既不修改订阅文件本身,又能确保自定义规则在每次更新后自动生效。

通过Merge功能前置自定义规则

prepend-rules将规则插入列表最前面

在Clash Verge Rev的Merge功能(全局扩展配置)中,使用prepend-rules字段可将自定义规则插入到订阅规则列表的最前面,获得最高优先级。配置示例为prepend-rules: - "DOMAIN-SUFFIX,special-site.com,PROXY" - "PROCESS-NAME,Steam.exe,游戏节点组",这些规则会被强制放置在订阅rules字段的顶部,优先于任何订阅规则匹配。prepend-rules适用于需要覆盖订阅中错误规则或确保特定域名优先匹配的场景。由于Merge配置存储在独立文件中,不随订阅更新而被覆盖,自定义规则可永久保留在订阅规则之前。

append-rules作为补充规则使用

prepend-rules相对,append-rules将自定义规则插入到订阅规则列表的最后面(在MATCH之前),作为订阅规则的补充。配置示例为append-rules: - "DOMAIN-SUFFIX,some-ad-site.com,REJECT",这些规则仅在订阅规则未匹配时生效,优先级低于所有订阅规则。append-rules适合添加兜底性质的通用规则,如额外的广告拦截或特定域名直连,不希望干扰订阅中已有的分流逻辑。需要特别注意,append-rules添加的规则位于订阅MATCH规则之前,因此不会覆盖订阅MATCH的兜底作用。

Merge配置的自定义规则永久保留

Merge配置存储在Clash Verge Rev的独立配置文件中,与订阅配置文件分开管理,因此不会因订阅更新而被覆盖。每次加载配置时,Clash会先拉取订阅配置,再将Merge配置中的prepend-rulesappend-rules规则合并到rules字段的相应位置。这种叠加机制确保了自定义规则在每次订阅更新后都能自动恢复,用户无需每次更新后重新添加规则。Merge配置可以随时编辑和调整,新增的自定义规则在保存并重新加载配置后立即生效。

通过Parsers预处理实现相同效果

Parsers在订阅更新时自动修改配置

Clash的Parsers预处理机制可在订阅更新时对拉取的配置文件执行自动化修改,将自定义规则插入到订阅规则列表中指定位置。Parsers配置在Clash配置文件中(通常在config.yaml的顶层字段),格式为parsers: - url: 订阅链接 yaml: prepend-rules: - "DOMAIN-SUFFIX,special-site.com,PROXY"。当执行订阅更新时,Clash会先拉取订阅配置,再根据Parsers规则对配置进行修改,将prepend-rules中的规则插入到订阅rules字段最前面,然后将修改后的配置加载到内核中。Parsers方式与Merge功能效果相同,但配置方式更底层。

为不同订阅配置独立的Parsers规则

当用户同时使用多个订阅链接时,可为每个订阅配置独立的Parsers规则,实现差异化的自定义策略。在Parsers配置中,通过url字段指定对应的订阅链接,只有匹配该链接的订阅更新时才会应用对应的预处理规则。例如订阅A需要特定域名走代理,订阅B需要内网直连,可分别为两个订阅配置不同的prepend-rules。这种方式适合管理多个服务商的订阅,每个订阅独立维护自定义规则而不互相干扰,且所有自定义规则均在订阅更新时自动应用。

Parsers与Merge功能的选择建议

Parsers和Merge功能都能实现自定义规则的持久保存,但适用场景和配置方式有所不同。Parsers在订阅更新时对配置文件进行预处理,将自定义规则直接写入拉取后的配置中,适用于需要深度修改订阅配置的场景,配置复杂度较高。Merge功能在客户端加载配置时进行规则叠加,不修改订阅文件本身,操作简便且界面直观。对于大多数普通用户,推荐使用Clash Verge Rev的Merge功能,无需编写复杂的Parsers配置,通过图形界面即可完成规则的叠加和顺序控制。

规则覆盖与冲突的实际表现

订阅规则与自定义规则的冲突处理

当自定义规则与订阅规则对同一域名规定了不同的动作时,规则在最终配置中的位置决定了实际生效的动作。如果自定义规则通过prepend-rules前置插入,它会优先匹配,覆盖订阅中的冲突规则。例如订阅中配置DOMAIN-SUFFIX,example.com,DIRECT,而用户希望该域名走代理,通过prepend-rules添加DOMAIN-SUFFIX,example.com,PROXY后,该规则位于订阅规则之前,流量会走代理而非直连。如果自定义规则通过append-rules后置添加,订阅规则会优先匹配,自定义规则仅在订阅规则未命中时生效,无法覆盖订阅中的冲突规则。

在连接面板中查看命中的规则

Clash Verge Rev的「连接」面板可实时显示每条活跃连接所匹配的规则名称和动作类型,是验证自定义规则是否优先于订阅规则的最直接工具。当访问特定网站时,在「连接」面板中找到对应的连接,点击查看其命中的具体规则。如果显示为自定义规则名称(或prepend-rules中的规则),说明自定义规则已成功前置并优先生效。如果显示为订阅中的某条规则,说明自定义规则未正确前置,可能被放在了订阅规则之后或被订阅规则覆盖。通过「连接」面板的反馈,可快速调整Merge或Parsers配置,确保自定义规则获得预期优先级。

规则顺序调整对优先级的影响

在Merge配置中添加或删除prepend-rules中的规则时,prepend-rules内部的顺序同样遵循“从上到下、先命中先生效”的原则,靠前的规则优先匹配。用户可在prepend-rules列表中调整自定义规则的排列顺序,实现不同自定义规则之间的优先级控制。prepend-rules中的所有规则都位于订阅规则之前,因此任何自定义规则都优先于任何订阅规则。如需让某条自定义规则优先于其他自定义规则,只需在prepend-rules列表中将该规则放在更靠前的位置即可。

常见问题FAQ

订阅规则和自定义规则哪个优先?

取决于规则在最终合并后的配置中的物理位置。通过prepend-rules前置插入的自定义规则优先于所有订阅规则,通过append-rules后置添加的自定义规则次于所有订阅规则。直接修改订阅配置添加的规则在订阅更新后会被覆盖。使用Merge功能或Parsers的prepend-rules是让自定义规则获得最高优先级的推荐方式。

直接在订阅配置中修改规则顺序有效吗?

临时有效,但订阅更新后会被覆盖。直接修改订阅配置文件中的规则顺序会在本地生效,直到执行下一次订阅更新。更新时远端配置会完整替换本地配置,手动调整的顺序会恢复为服务商的原始顺序。若需长期保留自定义规则顺序,必须使用Merge或Parsers的prepend-rules将自定义规则前置插入。

如何让自定义规则永久优先于订阅规则?

使用Clash Verge Rev的Merge功能,在“全局扩展配置”的YAML编辑框中添加prepend-rules字段,将自定义规则写入该字段。prepend-rules会将规则插入到订阅rules字段的最前面,获得最高优先级且不随订阅更新被覆盖。也可使用Parsers的prepend-rules实现相同效果。

prepend-rules和append-rules哪个更适合覆盖订阅中的错误规则?

prepend-rules更适合。因为prepend-rules将自定义规则插入到订阅规则列表最前面,优先级高于所有订阅规则,可以覆盖订阅中对同一域名的错误处理。append-rules将规则插入到订阅规则列表最后面,仅在订阅规则未命中时生效,无法覆盖订阅中的已有规则。若需要修正订阅中的错误规则,应使用prepend-rules

使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。