手写几百条规则不现实。规则集(Rule Providers)允许把规则外置成独立文件,由社区维护、定时自动更新,配置里只需一行 RULE-SET 引用。这是 Premium 内核的功能,Clash for Windows 内置支持。
基本结构
rule-providers:
cn-domains:
type: http
behavior: domain
url: "https://example.com/rules/cn-domains.yaml"
path: ./ruleset/cn-domains.yaml
interval: 86400
rules:
- RULE-SET,cn-domains,DIRECT
- GEOIP,CN,DIRECT
- MATCH,节点选择
type: http表示从 URL 下载并按interval(秒)自动更新;type: file则引用本地文件。path是本地缓存路径,注意不同 provider 的 path 不能相同,否则互相覆盖。
behavior 三种类型
| behavior | 内容格式 | 等价规则 |
|---|---|---|
domain | 纯域名列表(+.google.com) | DOMAIN / DOMAIN-SUFFIX |
ipcidr | 纯网段列表(8.8.8.0/24) | IP-CIDR |
classical | 完整规则行(类型,内容) | 各种类型混合 |
behavior 必须与文件实际内容匹配,否则整个规则集静默失效——这是规则集“不生效”的头号原因。
社区维护的规则集
中文社区广泛使用的有 Loyalsoldier/clash-rules(域名/IP 分类齐全、每日更新)等。选择规则集时关注:更新频率、分类粒度、是否区分 domain/ipcidr 格式。把常用分类(cn、proxy、reject、private、telegram 等)组合起来,就是一套成熟的分流方案,完整示例见国内直连、国外代理方案。
更新与调试
- Settings → Profiles 附近可以查看 provider 状态;日志中
provider ... initial failed表示下载失败。 - 规则集 URL 本身可能需要代理才能访问,首次初始化失败时,先用可用节点开启代理再重载配置。
提示:RULE-SET 与普通规则可以自由混排,顺序依然是自上而下。把你的个人自定义规则放在 RULE-SET 之前,可以精准覆盖集合中的个别条目。