适用条件:何谓临时规则
mihomo 手册把流量走向写在 rules 序列中,并写明:规则将按照从上到下的顺序匹配,列表顶部的规则优先级高于其底下的规则。手册没有名为临时规则的类型,也没有过期时刻字段。因此,定期删除不再需要的临时规则,指的是维护者按自己的业务周期,从该序列里去掉已经完成使命的条目,而不是内核自动失效。
可以按下面几条判断是否适用。该行只服务于已结束的短期对象,例如某次活动域名、临时网段、一次性进程放行。删除之后,其下方仍应有更宽的规则能够接住同类请求,直到无需条件的 MATCH。GEOIP 一类长期国别策略以及列表末尾的 MATCH 不属于临时规则,不应当作过期项删除。若请求为 udp,而代理节点没有 udp 支持,手册写明会继续向下匹配;判断某条临时规则是否还在起作用时,要先排除这种继续匹配,再决定删不删。
删除步骤与判断依据
打开 rules 列表,用手册中的类型逐行核对:DOMAIN 匹配完整域名;DOMAIN-SUFFIX 匹配后缀,官方例子指出 google.com 可匹配 www.google.com、mail.google.com 和 google.com,但不匹配 content-google.com;DOMAIN-KEYWORD 做关键字匹配;DOMAIN-WILDCARD 仅支持星号与问号,且与配置其他地方的 Clash 格式通配符不同;DOMAIN-REGEX 为正则。此外还有 GEOSITE、IP-CIDR 与别名 IP-CIDR6、IP-SUFFIX、IP-ASN、GEOIP、来源地址与入站、端口、进程路径与进程名、UID、NETWORK、DSCP、RULE-SET、逻辑规则 AND 与 OR 与 NOT、SUB-RULE,以及最后的 MATCH。
把确认不再需要的整行删掉,包括类型、载荷和出站名。逻辑规则与子规则必须连括号一起处理,手册特别提醒要注意括号的使用。RULE-SET 引用的是规则集合名:若临时条件写在集合内部,只删除 rules 中的引用行,并不等于集合内容消失,需要按条件实际所在位置处理。
删除后重新读顺序。临时条目常被放在列表上部以取得高优先级,去掉之后,长期规则的相对位置仍须符合从上到下。确认 MATCH 仍在末尾,因为它匹配所有请求且无需条件。涉及目标 IP 的规则可能在域名匹配时触发 DNS 解析,手册允许用 no-resolve 跳过;若更早的匹配已经触发解析,则带 no-resolve 的目标 IP 规则仍可能被命中。删临时 IP 规则时,要用这一点判断看起来像还被 IP 规则接住,究竟是残留条目还是解析副作用。
判断依据是文本是否仍能对照手册示例那种写法解释每一行,以及任意一条样本请求能否从顶向下说出停在哪一行。不要用无法在列表中指认的印象作为依据。
失败时的下一步
流量走向与预期不符时,先查是否误删了覆盖面更宽的后缀、地理站点或地理 IP 规则,它们比单条完整域名更容易造成临时规则还在的错觉。接着查规则集合与子规则是否仍引入旧条件。再核对 UDP 继续向下匹配,以及 DNS 解析与 no-resolve 的关系。若列表语法残缺,例如载荷不完整、括号不成对、MATCH 不在最后,应先恢复为手册所描述的序列形态,再决定是否补回被误删的必要行。不要用继续追加临时行的方式掩盖顺序错误。