首页/博客/Rule Provider 使用指南
进阶

Rule Provider 使用指南:用规则集简化你的配置文件

发布于 2026-05-08 · 阅读约 9 分钟 · 适用于 Clash / mihomo 内核用户

如果你想让"所有国内网站"或者"所有常见广告域名"都统一走某条规则,手动写几十条 DOMAIN-SUFFIX 显然不现实,而且社区里已经有人维护好了这类规则集并持续更新。Rule Provider 就是让你的配置文件"引用"这些远程规则集的机制,本地只需要写一行引用,规则内容由远程文件自动更新。

01基本写法

Rule Provider 分两步:先在 rule-providers 里声明规则集来源,再在 rules 里用 RULE-SET 引用它。

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://example.com/rules/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

02behavior 字段的三种类型

behavior 决定了这个规则集里的内容该怎么被解析,写错会导致规则集完全不生效,是最容易出错的一个字段。

behavior规则集内容格式典型用途
domain纯域名列表,每行一个域名或域名后缀广告域名黑名单、特定网站分流列表
ipcidr纯 IP 段列表,每行一个 CIDR国内 IP 段、特定云服务商 IP 段
classical完整的规则语句(不含最终策略),如 DOMAIN-SUFFIX,x.com规则类型混合、更灵活的自定义规则集

type 字段:http 还是 file

type: http 表示从远程 URL 定期拉取更新,是最常见的用法;type: file 则表示直接使用本地已有的规则集文件,适合你自己维护、不需要联网更新的场景。

03常见的规则集来源

社区里比较知名的规则集项目包括基于域名分类整理的 GeoSite 系列、以及各类"ACL4SSR"风格的规则合集,它们通常会同时提供 domainclassical 两种格式的文件,具体链接可以在对应项目的官方仓库中找到,使用时注意核对 behavior 是否与你选用的文件格式一致。

提示:RULE-SET 引用同样遵循"从上到下顺序匹配"的原则,把范围更精确的规则集放在前面、笼统的兜底规则放在最后,逻辑和普通规则完全一致。

04为什么规则集不生效

  • behavior 和文件格式不匹配:比如远程文件其实是纯域名列表,却写成了 behavior: classical,内核解析会直接报错或忽略该规则集。
  • path 指向的本地缓存过期:如果修改了 url 但本地已经缓存过一份旧文件,有些客户端不会自动覆盖,需要手动删除 path 对应的本地文件后重新拉取。
  • interval 设置过长:更新间隔(单位:秒)设置得太长会导致规则集长期停留在旧版本,日常使用建议设置为 43200~86400(12~24 小时)。

05Rule Provider 和普通规则可以混用吗

可以,而且这是最常见的用法。rules 列表里 RULE-SET 引用和普通规则(如 DOMAIN-SUFFIXGEOIP)完全可以混合书写,内核依然按照"从上到下逐条匹配,命中即停止"的顺序处理,不会因为规则来源不同而区别对待。实际配置中,通常会把几个常用的规则集(比如广告拦截、国内网站直连)放在前面,中间穿插一些你自己手写的特殊域名规则,最后用一条兜底规则收尾,两种写法搭配使用反而是更省心的做法。

06自己维护规则集文件是否有必要

对绝大多数普通用户来说,没有必要。社区维护的规则集已经覆盖了广告拦截、国内外网站分类等主流需求,且有持续更新维护,直接引用即可。只有当你有非常特殊的分流需求(比如公司内部域名、自己长期维护的特定网站列表)且这些内容不适合公开分享时,才值得考虑用 type: file 搭配本地文件自己维护一份规则集,平时正常使用手写几条规则或者用 rules 里的普通规则完全够用。