Mihomo Party 设置规则:覆写不生效的排查与模板
简答:Mihomo Party 设置规则,先选规则模式,再在“覆写”中新建 YAML 并绑定到当前订阅;自定义规则通常用 +rules 前置插入,禁止在前置覆写里放 MATCH,最后到“连接”页面查看实际命中策略。
定义:Mihomo Party 的规则设置,是让客户端按 rules 从上到下匹配请求,再交给 DIRECT、REJECT 或实际存在的代理组;覆写则是保存这些配置修改并应用到订阅的方法。
30 秒速查:规则不生效先看这 5 项
这是第三方使用指南,客户端界面可能因版本或中文翻译不同显示为 Mihomo Party、Clash Party 或相近名称。你已经导入订阅、但自定义规则没有效果时,先按下面顺序检查,不要一开始就改 DNS、TUN 或大量 YAML。
| 顺序 | 界面路径或检查点 | 正确状态 |
|---|---|---|
| 1 | 运行模式 | 选择“规则”模式,不用全局或直连模式判断分流规则 |
| 2 | 覆写页面 | YAML 文件已经导入、编辑并保存 |
| 3 | 订阅管理 → 编辑信息 | 覆写文件已经绑定到正在使用的订阅 |
| 4 | 覆写内容 | 优先规则使用 +rules,不要在前置覆写里放 MATCH |
| 5 | 连接页面 → 点开连接 | 能看到该请求的规则、策略或链路信息 |
官方客户端文档说明,覆写用于自定义订阅配置,文件需要先在“覆写”页面导入或编辑,再到“订阅管理”中绑定到指定订阅。可参考Clash Party 官方文档的“覆写”页面。
先分清:规则模式、全局模式和直连模式
规则模式用于按照最终配置中的 rules 逐条匹配请求。你要验证“某个域名直连”或“某个网站走代理”,必须在这个模式下测试。
全局模式用于统一使用当前选择的策略,适合临时确认代理连接本身是否可用,但不能证明某一条域名规则已经命中。
直连模式用于让请求不经过代理。若你在直连模式下测试“指定网站走代理”,结果不会反映规则配置。
因此,最小验证路径是:切换到规则模式,访问一个明确的测试域名,打开“连接”页面,点开对应连接,查看规则与策略。如果页面只显示连接状态,不显示规则详情,可以同时查看当前规则列表或客户端提供的连接详情。mihomo 官方文档明确说明,规则按从上到下匹配,越靠上的规则优先级越高;MATCH不带条件,会匹配所有未被前面规则处理的请求。参考mihomo 官方 Route Rules 文档。
规则页面、订阅页面和覆写页面分别做什么
| 页面 | 主要作用 | 常见误区 |
|---|---|---|
| 规则页面 | 查看当前配置中的规则类型、匹配内容和目标策略 | 看到文件内容不等于规则已经应用到正在运行的订阅 |
| 订阅管理 | 管理订阅、更新订阅,并把覆写绑定到指定订阅 | 创建了覆写文件,却没有绑定到当前订阅 |
| 覆写页面 | 导入、编辑和保存 YAML 或 JavaScript 覆写文件 | 只保存文件,不代表所有订阅都会自动使用它 |
官方文档给出的操作顺序是:打开左侧“覆写”页面,导入链接或本地文件;编辑后保存;再打开“订阅管理”,找到目标订阅,进入“编辑信息”,在“覆写”字段中选择文件并保存。不同版本的按钮名称可能略有差异,但逻辑仍是“保存覆写文件 + 绑定订阅”。
从零创建 YAML 覆写:先用安全的最小模板
- 打开客户端左侧的“覆写”页面。
- 新建 YAML 文件,或者导入本地 YAML 文件。
- 先只保留一条明确的域名规则,保存文件。
- 进入“订阅管理”,找到正在使用的订阅,选择“编辑信息”。
- 在“覆写”字段中选择刚保存的文件并保存。
- 重新载入配置,切换到规则模式,再访问测试域名。
- 打开“连接”页面,点开对应连接,确认规则和策略是否符合预期。
覆写文件不是独立完整配置时,不要直接写顶层 proxies、proxy-groups 或完整 rules 去替换订阅内容。官方 YAML 文档说明,数组可以用 +rules 前置插入,也可以用 rules+ 追加;直接写 rules 则会覆盖原规则数组。参考Clash Party 官方文档的“YAML 覆写”页面。
+rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- DOMAIN,work.example.com,你的代理组名称
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR6,fc00::/7,DIRECT,no-resolve这个示例故意没有放 MATCH。+rules 会把内容插到原规则最前面,如果此处加入 MATCH,它会提前匹配所有请求,原订阅后面的 GEOSITE、GEOIP 和其他规则就可能全部失去作用。需要兜底时,应保留原订阅的兜底规则,或在明确重建完整规则列表时再单独安排 MATCH,不能把它放进这种前置覆写模板。
“你的代理组名称”只是占位文字,必须替换成当前最终配置里实际存在的名称。可能的名称包括订阅自定义名称、Proxy、Final 或其他带图标的名称;大小写、空格和符号都要完全一致。
rules、+rules 和 rules+ 的区别
| 写法 | 作用 | 适用情况 | 主要风险 |
|---|---|---|---|
rules | 直接替换原有规则数组 | 你准备完整重建所有规则时 | 可能删除订阅原有的 GEOSITE、GEOIP 和兜底规则 |
+rules | 插入到原规则前方 | 指定域名需要优先直连、代理或拒绝时 | 不能放 MATCH,否则会提前接管所有请求 |
rules+ | 追加到原规则后方 | 补充确定不会被前面规则提前处理的内容时 | 如果前面已经有宽泛规则或 MATCH,追加规则可能永远不会命中 |
规则类型关键字也要写对,例如 DOMAIN-SUFFIX、IP-CIDR 和 MATCH;策略组名称则必须与最终配置中的名称大小写一致。YAML 的层级依靠缩进表达,使用空格,不要使用 Tab。可参考mihomo 官方 grammar 文档。
常见场景模板:一行规则怎么写
| 场景 | 规则示例 | 注意事项 |
|---|---|---|
| 指定完整域名直连 | DOMAIN,docs.example.com,DIRECT | 只匹配这个完整域名 |
| 指定网站及子域名直连 | DOMAIN-SUFFIX,example.com,DIRECT | 会匹配该后缀及其下级域名 |
| 指定网站走代理 | DOMAIN-SUFFIX,work.example.com,你的代理组名称 | 把占位组名替换成当前订阅真实存在的策略组 |
| 局域网 IPv4 直连 | IP-CIDR,192.168.0.0/16,DIRECT,no-resolve | 适用于常见私有 IPv4 地址段之一,按实际网络补充其他段 |
| 局域网 IPv6 直连 | IP-CIDR6,fc00::/7,DIRECT,no-resolve | IPv6 本地地址使用 IP-CIDR6 写法 |
| 确认后的广告域名拒绝 | DOMAIN-SUFFIX,ads.example,REJECT | 只对明确确认不需要访问的域名使用 |
| 规则集引用 | RULE-SET,provider-name,你的代理组名称 | 必须同时存在同名的 rule-providers 定义 |
DOMAIN-KEYWORD 会按关键词匹配域名,范围通常比完整域名和后缀更宽。例如直接使用 office 或 internal 可能误匹配第三方域名,因此应使用更具体、可确认的关键词,或优先改用 DOMAIN、DOMAIN-SUFFIX。mihomo 文档列出了 DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、IP-CIDR、IP-CIDR6、RULE-SET 和 MATCH 等规则类型,具体格式可在mihomo 路由规则文档中核对。
验证规则是否真的命中:看连接页面,不只看网页结果
假如你添加了:
+rules:
- DOMAIN-SUFFIX,example.com,DIRECT- 保存覆写文件,并确认它已经绑定到当前订阅。
- 重新载入配置,切换到规则模式。
- 访问
www.example.com,让客户端产生一条新连接。 - 打开“连接”页面,点开对应连接。
- 查看规则、策略或链路字段,确认它显示了与
example.com匹配的规则,并且目标为DIRECT。
如果客户端界面没有显示完整规则信息,可先在规则页面确认自定义规则已经进入最终配置,再结合连接详情和出口变化判断。mihomo API 文档中的 /rules 可返回规则索引、规则类型、匹配内容和目标策略;部分环境还会提供命中计数等额外字段,但界面是否展示取决于客户端实现。连接信息则对应 /connections 接口。参考mihomo 官方 APIs 文档。
规则不生效的完整排查顺序
- 确认运行模式。必须处于规则模式;全局和直连模式不能用来判断单条分流规则。
- 确认覆写文件保存成功。重新打开覆写页面,检查文件内容是否还在。
- 确认已经绑定订阅。覆写文件存在,不等于正在使用的订阅已经应用它。
- 确认绑定对象正确。有多个订阅时,检查你修改的是否正是当前启用的订阅。
- 确认最终规则列表中存在该规则。如果规则页面完全看不到它,优先检查覆写语法和绑定关系。
- 确认顺序。自定义规则应放在可能提前匹配的宽泛规则前面;使用
+rules时不要加入MATCH。 - 确认策略组名称。规则第三项必须对应当前配置中的真实组名,不能直接照抄“你的代理组名称”。
- 确认 YAML 格式。检查缩进、冒号后的空格、短横线层级和不可见字符,避免使用 Tab。
- 重新建立连接。关闭旧连接后重新访问目标域名,已有连接可能仍保留旧策略。
- 查看连接页面详情。点开具体连接,核对实际命中的规则、目标策略和链路,而不是只看网页能否打开。
如果使用 RULE-SET,还要检查规则集名称、来源、文件格式和 behavior 是否匹配。mihomo 官方说明中,behavior 可使用 domain、ipcidr 或 classical,应根据规则集实际格式选择;RULE-SET 本身也要求存在对应的 rule-provider 配置。参考mihomo 官方 Rule-Providers 文档。
订阅更新后规则又失效怎么办
不要只修改订阅生成的最终配置文件。订阅更新会重新生成配置,直接粘贴进去的内容可能被替换。更稳妥的做法是把自定义规则保存成独立的 YAML 覆写文件,再在订阅管理中绑定它。
更新订阅后按以下顺序检查:先确认覆写文件仍在“覆写”列表中;再确认当前订阅仍绑定该文件;然后打开最终代理组列表,核对策略组名称是否发生变化;最后重新载入配置并在连接页面验证。
如果订阅更换了代理组名称,原来的规则可能仍然存在,但目标策略已经无法对应。此时只修改规则第三项,替换为当前配置中实际存在的组名。若所有规则都消失,则优先检查覆写绑定和 YAML 解析;若只有某个域名不生效,则优先检查规则顺序、域名写法和是否被更宽泛的规则提前匹配。
结论:先用一条规则跑通,再增加规则集
第一次设置 Mihomo Party 规则时,建议只测试一条明确的 DOMAIN 或 DOMAIN-SUFFIX 规则:规则模式 → 保存覆写 → 绑定订阅 → 使用 +rules 前置插入 → 连接页面查看命中。确认这条链路正常后,再增加局域网、拒绝规则或 RULE-SET。
最需要避免的错误是把 MATCH 放进前置覆写、把顶层 rules 当成追加语法、直接照抄不存在的策略组名称,以及只看网页是否打开而不看连接详情。按最小变量逐项验证,通常比一次修改整份订阅更容易定位问题。
常见问题
Mihomo Party 设置规则时,为什么写了代理组名称却不生效?
先检查规则第三项是否与当前订阅中的策略组完全一致,包括大小写、空格和符号。示例里的“你的代理组名称”只是占位文字,不能直接使用。
为什么不能把 MATCH 放进 +rules?
+rules 会把内容插到原规则最前面,而 MATCH 不带条件,会匹配所有请求。放在这里会提前接管流量,使原订阅后面的 GEOSITE、GEOIP 和其他规则无法继续参与匹配。
rules、+rules 和 rules+ 到底怎么选?
rules 会替换原规则数组,+rules 会插入原规则前方,rules+ 会追加到原规则后方。自定义优先规则通常使用 +rules;只有准备完整重建规则时才考虑 rules。
订阅更新后,自定义规则为什么又失效了?
检查覆写文件是否仍在列表中、是否绑定到正在使用的订阅,以及订阅更新后策略组名称是否变化。自定义内容应保存为独立覆写文件,不要只修改一次性生成的最终配置。
验证规则命中应该看日志还是连接页面?
优先打开“连接”页面,点开具体连接查看规则、策略或链路信息。日志可以辅助排查,但不能只凭日志或网页能否打开来判断某条分流规则是否命中。
局域网规则只写 IP-CIDR 是否够用?
如果设备和局域网服务使用 IPv6,还应按实际地址段增加 IP-CIDR6 规则。IPv4 和 IPv6 是不同地址族,不能只用 IPv4 规则覆盖两者。
参考资料
- Clash Party 官方文档:覆写(clashparty.org)
- Clash Party 官方文档:YAML 覆写(clashparty.org)
- mihomo 官方文档:Route Rules
- mihomo 官方文档:grammar
- mihomo 官方文档:Rule-Providers
- mihomo 官方文档:APIs