Clash 文档中心中文使用手册

Clash 怎样验证规则集合被当前规则列表引用

Clash 怎样验证规则集合被当前规则列表引用。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

适用条件:验证的是列表里有没有引用

验证规则集合是否被当前规则列表引用,适用条件是:rule-providers 已有配置,你需要确认 rules 正在用 RULE-SET 指向它。官方示例为 - RULE-SET,providername,proxy,并写明「引用规则集合,需配置 rule-providers」。只有 rule-providers、没有 RULE-SET 行,集合不会进入当前匹配列表。只有 RULE-SET 行但名字对不上,引用的也不是你以为的那一份。

规则按从上到下的顺序匹配,列表顶部优先级更高。验证引用时,既要看到这一行存在,也要看到它仍在可执行区间:位于 MATCH 之前。MATCH 匹配所有请求、无需条件,写在其后的引用等于未被当前列表有效使用。本次验证只回答「当前 rules 有没有指向该集合」,不回答集合内部某一条是否命中某个请求。

在 rules 列表里逐项确认引用

打开当前配置的 rules 数组,按从上到下扫描类型为 RULE-SET 的行。对每一行记录三件事:第二段集合名、第三段策略、该行相对 MATCH 的位置。然后把第二段与 rule-providers 中的名字对照,完全一致才算引用成立。示例中的 providername 只是占位,实际名字以你的配置为准,不能靠字形相近判断。

排除不是引用规则集合的行:GEOSITE 匹配 Geosite 内的域名;SUB-RULE 匹配至子规则;AND / OR / NOT 是逻辑规则,payload 里即使出现其它规则类型,也不等于独立的 RULE-SET 引用。DOMAIN、IP-CIDR、PROCESS-NAME 等单条规则更不会引用 rule-providers。验证时只把 RULE-SET 当作引用成立的标志。逻辑规则需要注意括号,不要把写在 AND / OR 内部的片段算成列表级引用。

若同一集合名出现两次 RULE-SET,两条都会按列表顺序参与匹配,但策略第三段可以不同。验证「被引用」只需确认至少一行名字匹配且在 MATCH 之前;验证「被当前列表按你预期的那一条引用」则必须指出是哪一行、什么策略。不要用代理集合或代理组的名字列表代替这次核对,那些名字不属于 rules 对 rule-providers 的引用。

判断依据与失败时下一步

判断依据:当前 rules 中存在 RULE-SET,该集合名,策略;该集合名能在 rule-providers 中找到;该行在 MATCH 之前。三条同时满足,才认为规则集合被当前规则列表引用。

失败时下一步:若 rules 中没有任何 RULE-SET,在 MATCH 之前补一行,第二段填入 rule-providers 已有名字,第三段填入命中后要走的策略。若有 RULE-SET 但第二段是另一个名字,改成目标集合名,或承认当前列表引用的是另一份集合。若 RULE-SET 写在 MATCH 之后,整行上移到 MATCH 之前。若只在逻辑规则的 payload 里看到类似名字,按官方形式写成独立的 RULE-SET 行。验证通过后若请求仍未按预期分流,再去查更早规则是否截走,而不要否定「引用已经存在」这一结论。

https://wiki.metacubex.one/config/rules/

返回文章索引使用教程