代理集合里的节点名称一旦变化,原先写在 filter、exclude-filter 中的关键词或正则可能不再命中。维护筛选条件,就是在名称变化后重新对齐“当前实际名称”和“规则所匹配的字符串”,而不是只改集合自己的 name。提供器名称必须唯一,与节点显示名不是同一件事。
适用条件
适用于 http 集合按 interval(单位秒)更新后远程节点改名、本地 file 被替换、或你启用了会改写名称的 override 的情况。inline 的 payload 由本机维护,名称变化来自你自己的编辑。解析失败时若改走 payload 备用,备用条目的 name 也可能与远程不一致。exclude-type 按配置中的 type 排除且不支持正则,节点只改名、不改 type 时,这一项通常仍有效;需要随改名一起复查的主要是 filter 与 exclude-filter。
命名会在哪些位置变化
第一处是集合内容本身:下载或本地 YAML 里每条代理的 name。第二处是固定覆写:additional-prefix、additional-suffix 会在名称两端加上固定文本,原正则若按“整名等于某字串”来写,加前缀后会失配。第三处是 override.proxy-name:按正则把 pattern 换成 target,文档示例将 IPLC-(.*?)倍 变为 iplc x $1,依赖“倍”或 IPLC- 的旧规则会失效。第四处是 override-expr,可对 .name 赋值或做 upcase/trim 等处理,且晚于固定字段覆写。文档未写明筛选相对覆写的先后,因此维护时必须用“文件中的新名”和“覆写后的新名”两套字符串去试现有正则。
维护筛选条件的做法
更新发生后,重新打开 HomeDir 内集合文件(或 payload),列出变化后的 name。把现有 filter、exclude-filter 逐段拿来对照:关键词是否仍出现;正则是否依赖已删除的编号、倍率词;是否因缺少 (?i) 而无法匹配新的大小写。多个正则用反引号区分,可以在过渡期同时保留旧片段和新片段,确认新名稳定后再删除旧片段。若希望筛选少随远程文案波动,可把稳定的替换放进 proxy-name 或 override-expr,让规则去匹配规范化之后仍保留的那部分字符;这不能代替复查,因为先后顺序未在文档中规定。exclude-type 仅在 type 一并改变时才需要改 | 列表,不要用它去“补”名称匹配失败。
判断依据:用若干条改名后的真实 name(含覆写结果)走一遍保留/排除逻辑,应保留者仍能被 filter 命中且不被 exclude-filter 误伤,应排除者仍能被排除。
失败时的下一步
若更新后大量节点消失,先确认不是 http 解析失败落入了另一套 payload 名称,再改筛选而不是反复缩短 interval。path 越出 HomeDir 或缺少 SAFE_PATHS 会导致你看到的仍是旧文件,筛选会对着过期名称维护。核对无误后仍不匹配,就按新清单重写关键词或正则,避免把已失效的地区字、倍率字留在规则里。