#3207·mihomo

[Bug] 策略组的exclude-filter有小BUG,不影响使用,但可优化

Author: zhiwu111Created Sep 14, 2026Updated Sep 14, 2026
Labelsbug

验证步骤

  • 我已经阅读了 文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • 我仔细看过 文档 并未解决问题
  • 我已在 Issue Tracker 中寻找过我要提出的问题,并且没有找到
  • 我是中文用户,而非其他语言用户
  • 我已经使用最新的 Alpha 分支版本测试过,问题依旧存在
  • 我提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • 我提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器或者堆砌大量对于复现无用的配置等。
  • 我提供了完整的日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。
  • 我直接使用 Mihomo 命令行程序重现了错误,而不是使用其他工具或脚本。

操作系统

Windows

系统版本

win 11 25H2

Mihomo 版本

(base) PS D:\Program Files\Clash Verge> .\verge-mihomo.exe -v Mihomo Meta v1.19.30 windows amd64 with go1.26.6 Sun Aug 16 10:02:08 UTC 2026

配置文件

yaml
proxy-groups:
  - { name: 总策略, type: select, proxies: [JP, SG, US, 其它] } 
  - { name: 漏鱼, type: select, proxies: [DIRECT, 总策略] }

  - { name: JP, type: url-test, tolerance: 30, interval: 600, include-all: true, filter: "日本"}
  - { name: SG, type: url-test, tolerance: 30, interval: 600, include-all: true, filter: "新加坡"}
  - { name: US, type: url-test, tolerance: 30, interval: 600, include-all: true, filter:  "美国"}

# - { name: 其它, type: url-test, tolerance: 30, interval: 600, include-all: true, filter: "^(?!.*(?:日本|美国|新加坡)).*$" }
  - { name: 其它, type: url-test, tolerance: 30, interval: 600, include-all: true, exclude-filter: "日本|美国|新加坡"}

描述

按道理filter和exclude-filter都应该先筛选出节点,然后只对筛选出的节点测延迟。

但是exclude-filter 筛选出了节点,其测延迟的作用域却是全部节点

使用 filter: "^(?!.*(?:日本|美国|新加坡)).*$" 是先筛选出节点,然后只对筛出节点测延迟。

下图,JP、SG、US、其它 ,四组组内分别测一次。这是正确的。

Image

使用exclude-filter: "日本|美国|新加坡",筛选出不含"日本|美国|新加坡" 的节点,但还是把所有节点都测了一遍

下图中,JP、SG、US组都多出来一次测延迟,而其它只有一次。 即JP、SG、US、全部 这四组进行了测延迟。 后继手动点击其它进行测延迟,以及该组自动url-test不会有这个问题。

Image

这个小BUG虽然不影响使用,但是如果节点很多的话,那么首次启动,连续对所有节点测两次,这是没必要的。虽然可以使用filter实现,就没有这个问题,但既然有exclude-filter关键字,希望可以优化一下。

重现方式

111

日志

bash