在 Clash(mihomo)规则旁用注释记下“为何 no-resolve”,是为了把官方附加参数的适用范围写在配置里,避免日后把该参数理解成全局关闭解析或“本条永不匹配 IP”。注释本身不参与匹配;规则仍按从上到下的顺序生效。注释内容必须能对照「附加参数 / no-resolve」原文核验,而不是写效果保证。
适用条件
适用于 rules 中关于目标 IP 的条目,以及引用它们的 RULE-SET、SUB-RULE、逻辑规则 payload。文档示例为 IP-CIDR,127.0.0.0/8,DIRECT,no-resolve。需要记录的类型包括 IP-CIDR、IP-CIDR6(别名,效果相同)、IP-SUFFIX、IP-ASN、GEOIP。DOMAIN、GEOSITE、DST-PORT、MATCH 等不是目标 IP 规则,本页未给它们 no-resolve 语义,不必在这些行写“跳过 DNS”的原因,以免误导。配置为 YAML 列表时,用 # 写在规则行上方或行尾,与规则文本分开,避免破坏「类型,载荷,出站,附加参数」的逗号结构。
注释里应写明的三层原因
每一条带 no-resolve 的注释建议覆盖文档中的三层意思,缺一层就容易在改顺序后失效:
- 对象:写明“本条是目标 IP 规则,附加参数仅支持此类”。避免后人把它复制到
DOMAIN-SUFFIX或PROCESS-NAME上。 - 动作:写明“域名开始匹配本条时,默认会为检查目标 IP 是否匹配而触发 DNS 解析;此处选择跳过这次解析”。不要写成“禁止 DNS 模块”或“忽略载荷”。
- 例外:必须抄清官方限制——如在更早的匹配中触发了 DNS 解析,则依旧会匹配到添加了
no-resolve的目标 IP 类规则。注释里应指出:上方哪一条未带该参数的GEOIP/IP-CIDR等可能先解析;若存在,本条仍可能按已有目标 IP 命中,写“不解析”不等于“不匹配”。
若同一行还有 src,另起一句写“目标 IP 匹配已转为来源 IP 匹配”,不要把来源条件写成跳过解析的理由。逻辑规则要在注释中标出括号内哪一个 payload 才是目标 IP 类型,防止只在 AND/OR/NOT 外层写一句含糊的“不解析”。
随规则顺序维护注释
优先级是列表顶部高于底部。只要在带 no-resolve 的规则上方插入或删除目标 IP 规则,第三条例外就可能过时。维护时同步改注释中的“更早触发点”:新插入的未跳过解析的 IP-ASN/GEOIP 会成为新的解析触发者;若把所有上方目标 IP 规则都加上 no-resolve,则本条在域名场景下更可能因缺少目标 IP 而继续向下,直到其他类型或 MATCH。RULE-SET 的注释应写清“集合内目标 IP 条目是否跳过解析”,仅在引用行写集合名不足以说明附加参数。子规则同样要在 SUB-RULE 入口或子规则文件里留下对应原因,避免只在主列表注释。
注释与行为不一致时下一步
判断依据是注释命题能否在官方原文中找到对应句。若注释写“本条不会命中任何 IP”,与“更早已解析则依旧匹配”冲突,应改正注释或调整上方规则,而不是再加一条含义相反的说明。若注释写在非目标 IP 规则上,下一步是删除误导句,把 no-resolve 只留在支持该参数的行。逻辑规则括号错误导致实际匹配的 payload 与注释对象不是同一条时,先按文档把括号和 payload 改清楚,再重写原因。注释更新后仍以规则文本为准:类型、载荷、出站、附加参数四段必须可独立阅读。