Loyalsoldier Clash 规则集配置教程:从 rule-provider 声明到规则命中(2026)
Loyalsoldier 规则集把域名和 IP 按直连、代理、广告拦截分好类,你只需在 Clash/Mihomo 配置里声明 rule-provider 并引用,不用自己写几千条规则。本文给出 2026 年验证过的完整 YAML 配置示例、六组规则集选择决策,以及下载失败和 rule-provider not found 两类错误的排查路径。
Loyalsoldier 规则集把域名和 IP 按类别分好——直连、代理、广告拦截、Apple 服务、Google 服务等。你只需要在 Clash/Mihomo 的 YAML 配置里声明 rule-providers 然后引用,不用自己维护几千条域名规则。规则集每 12 小时自动构建,客户端按你设定的 interval 定时拉取,始终保持规则更新。
但这不意味着你把 YAML 贴进去就完事了。behavior 选错、provider 名称写错一个字母、rules 顺序排反,规则集都不会按你预期工作。本文从 YAML 配置字段讲起,再到选哪组规则集、更新机制、两种最常见的报错排查,每一步都给出可对照检查的配置代码和排查命令。
手动维护几千条规则和引一个 rule-provider 有什么区别
直接写规则的方式是这样:在 Clash YAML 的 rules 段一条条列出域名。
rules:
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-SUFFIX,youtube.com,Proxy
- DOMAIN-SUFFIX,twitter.com,Proxy
- DOMAIN-SUFFIX,baidu.com,DIRECT
- DOMAIN-SUFFIX,taobao.com,DIRECT
# ... 后面还有上千条
问题很明显:每次有新域名要加、旧域名失效要删,都得手动改 YAML。一个不注意就把直连域名塞进了代理组,或者漏掉了广告域名。
rule-provider 换了一种方式。规则内容不在你的 YAML 里维护,而是从一个远程 URL 下载。Loyalsoldier 仓库的 GitHub Actions 每 12 小时自动从 V2Fly domain-list-community 拉取原始域名分类数据,重新构建规则文件。你的 YAML 只需要声明从哪里下载、下载后叫什么名字、多久更新一次,然后在 rules 段用 RULE-SET 引用这个名字。
rule-providers:
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
interval: 86400
rules:
- RULE-SET,proxy,Proxy
这五行配置等于你自己手写 proxy.txt 里的五千多条 DOMAIN-SUFFIX 规则。规则内容由 Loyalsoldier 维护,你只需要知道引用哪个名字。
六组规则集分别管什么流量
Loyalsoldier/clash-rules 仓库里有十几组规则文件,日常配置不需要全引。下面按使用场景把核心规则集分成六组,先看表格再决定引哪几组。
| 规则集 | 文件 | behavior | 覆盖内容 | 没有它会怎样 |
|---|---|---|---|---|
| 代理规则 | proxy.txt | domain | Google、YouTube、Twitter、GitHub、Telegram(域名部分)等海外平台域名 | 走代理的域名需要自己一条条写,漏掉的会直连失败 |
| 直连规则 | direct.txt | domain | 百度、淘宝、B站、微信、高德等国内服务域名 | 国内网站误走代理,慢且浪费流量 |
| 广告拦截 | reject.txt | domain | 广告投放域名、跟踪器、已知恶意域名 | 客户端层面不过滤广告,依赖浏览器插件 |
| Apple 服务 | apple.txt + icloud.txt | domain | App Store、iCloud、Apple Music、iMessage 等服务域名 | Apple 服务可能因走代理而触发风控验证 |
| Google 服务 | google.txt | domain | Google 搜索、Gmail、Google Drive、YouTube 等 Google 全系服务域名 | Google 流量混在 proxy 里也可以工作,但单独分组可以配合策略组做更精细的路由 |
| IP 段规则 | cncidr.txt + telegramcidr.txt | ipcidr | 中国大陆 IP 段、Telegram 服务器 IP 段 | 国内 IP 走代理浪费线路资源;Telegram IP 可能因 DNS 解析不准确而误判 |
日常使用最多见的组合是:proxy + direct + reject + cncidr。Apple 用户加 apple 和 icloud。Google 规则集不是必须的(proxy.txt 已经包含了 Google 域名),但如果你有一个专门处理 Google 流量的策略组(比如只想让 Google 走某一个特定节点),单独引 google.txt 会更方便。
注意 apple.txt 和 icloud.txt 是互补关系。apple.txt 包含 App Store、Apple Music 等服务域名,icloud.txt 只覆盖 iCloud 同步相关的子域名。如果你不用 iCloud 同步功能(比如只在 iPhone 上用 App Store),不引 icloud.txt 也没问题。
YAML 配置怎么写——完整的 rule-providers 段
下面是一份可直接参考的配置。每行的用途在注释里做了说明。
rule-providers:
# 广告拦截 —— 建议放 rules 段最前面,尽早拦截
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
# 局域网 / 私有 IP —— 直连
private:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
path: ./ruleset/private.yaml
interval: 86400
# Apple 服务 —— 走 Apple 策略组(通常是直连或低延迟节点)
apple:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
path: ./ruleset/apple.yaml
interval: 86400
# iCloud 专用 —— 直连,避免同步被代理中断
icloud:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
path: ./ruleset/icloud.yaml
interval: 86400
# Google 服务 —— 走 Google 策略组
google:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
path: ./ruleset/google.yaml
interval: 86400
# 海外域名 —— 走代理
proxy:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
path: ./ruleset/proxy.yaml
interval: 86400
# 国内域名 —— 直连
direct:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
# Telegram IP 段 —— 走 Telegram 策略组,no-resolve
telegramcidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
path: ./ruleset/telegramcidr.yaml
interval: 86400
# 中国大陆 IP 段 —— 直连
cncidr:
type: http
behavior: ipcidr
url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
path: ./ruleset/cncidr.yaml
interval: 86400
rules:
# 自定义单条规则放最前面 —— 下面的例子让海外 B 站和 Steam 社区走代理
- DOMAIN-SUFFIX,bilibili.tv,Proxy
- DOMAIN-SUFFIX,steamcommunity.com,Proxy
# 然后引用规则集 —— 按拦截 > 直连 > 服务分组 > 代理的顺序
- RULE-SET,reject,REJECT
- RULE-SET,private,DIRECT
- RULE-SET,icloud,DIRECT
- RULE-SET,apple,Apple
- RULE-SET,google,Google
- RULE-SET,proxy,Proxy
- RULE-SET,direct,DIRECT
- RULE-SET,telegramcidr,Telegram,no-resolve
- RULE-SET,cncidr,DIRECT,no-resolve
# 最后兜底
- GEOIP,CN,DIRECT
- MATCH,Proxy
几个容易写错的地方:
- type 始终用
http。即使文件托管在 GitHub Release(不是纯 HTTP 服务),Clash/Mihomo 的 rule-provider 也只用 http 类型下载文本文件,不涉及 Clash 代理协议本身。 path用相对路径时注意工作目录。Clash Verge Rev 和 Mihomo Party 的工作目录通常是~/.config/clash-verge-rev/或~/.config/mihomo/,所以path: ./ruleset/proxy.yaml最终写到这些目录下的 ruleset 子目录。如果不写 path,规则集会缓存到默认位置。- IP 相关规则(cncidr、telegramcidr)的 rules 行要加
no-resolve。因为 IP-CIDR 匹配不需要先做 DNS 解析,加上no-resolve可以避免纯 IP 规则触发不必要的 DNS 请求。
interval 设多久合适,更新失败会不会影响正常使用
Loyalsoldier 仓库每 12 小时通过 GitHub Actions 重新构建规则集。客户端按 interval(单位秒)拉取远程文件。
interval: 86400(每 24 小时一次)对大多数用户是合适的。一天拉一次,隔一次构建周期,拿到的规则最多比最新版晚 12 小时——域名分类数据不会在几小时内剧烈变化。
几个不建议的做法:
- 不建议把 interval 设成 300 或 600 秒。除了浪费 CDN 请求外,部分 CDN(尤其是 jsDelivr 的免费层)对高频请求有限流策略,返回 429 后客户端会把规则集标记为下载失败。此时 Clash 会继续使用本地缓存的旧版本——不会因为一次更新失败就让规则集不可用。
- 不建议设成 0 或完全不更新。规则集会一直停留在首次下载的版本,后续新增或修正的域名不会自动同步。时间长了可能出现本该直连的域名走代理、或新出现的广告域名未被拦截的情况。
更新失败时 Clash/Mihomo 的处理策略是:沿用本地缓存的最后一份有效版本。所以你不会因为 CDN 暂时不可用而导致所有规则失效。如果客户端重启后连缓存也没有(首次下载就失败),那一组 RULE-SET 规则会静默跳过,流量继续往下匹配到 MATCH 兜底规则。
“rule-provider not found” 是哪里写错了
这个报错在 Clash/Mihomo 日志里很常见,原因几乎总是名称不一致。下面按概率从高到低排。
第一:rules 段里的 RULE-SET 名称和 rule-providers 段里声明的名称不完全一致。
rule-providers:
Proxy: # 声明时叫 Proxy(大写 P)
...
rules:
- RULE-SET,proxy,Proxy # 引用时写成了 proxy(小写 p)—— 报错
Clash YAML 的 rule-provider 名称区分大小写。声明时叫 proxy,引用时也得是 proxy。建议所有 provider 名称统一用小写,避免混用大小写出错。
第二:rule-providers 段根本没有声明这个名称。
如果你只声明了 proxy、direct、reject 三个 provider,但 rules 里引用了 RULE-SET,apple,Apple,Clash 找不到 apple 这个 provider 就会报 not found。要么补上 apple 的 provider 声明,要么删掉对应的 RULE-SET 行。
第三:YAML 缩进错误导致 rule-providers 段没有被正确解析。
rule-providers:
proxy: # 错误:proxy 应该缩进两个空格
type: http
s 下的子项必须缩进(通常 2 个空格),不缩进的话 YAML 解析器不认为 proxy 是 rule-providers 的子键,日志里看不到报错但 provider 就是不存在。用 VS Code 或支持 YAML 语法高亮的编辑器检查缩进比肉眼找更快。
规则集文件下载失败怎么排查
如果日志里出现 rule provider download failed、timeout 或 404,按以下顺序排查。
浏览器先打开 URL 试试。 把 rule-provider 的 url 值完整复制到浏览器地址栏,看能不能返回文本内容。如果浏览器也打不开,问题在 URL 本身或 CDN;如果浏览器能打开但客户端不能,问题在客户端的 DNS 或代理设置。
换 CDN 地址。 Loyalsoldier 规则集从 GitHub Release 分支提供,原始 URL 是 GitHub Raw:
https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt
GitHub Raw 在国内某些网络下可能被 DNS 干扰或连接超时。三条备用 CDN:
| CDN | URL 模板 | 国内可用性 |
|---|---|---|
| jsDelivr | https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt | 有国内节点,稳定性中等 |
| Fastly (jsdelivr) | https://fastly.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt | 比 jsDelivr 主域名在国内稍快 |
| ghproxy.net | https://ghproxy.net/https://raw.githubusercontent.com/Loyalsoldier/clash-rules/release/proxy.txt | 反代,需要 GitHub Raw 源可达 |
不要同时混用多个 CDN 来源。选一个能稳定下载的,所有 rule-provider 的 url 统一用同一个 CDN。
检查客户端的 DNS 设置。 如果客户端自身的 DNS 没走代理,解析 cdn.jsdelivr.net 或 raw.githubusercontent.com 可能被干扰。在 Clash/Mihomo 配置里确认 DNS 段至少有一条走系统或公共 DNS 的规则,例如:
dns:
enable: true
nameserver:
- 223.5.5.5 # 阿里 DNS
- 119.29.29.29 # 腾讯 DNS
如果客户端 DNS 配置了 fake-ip 模式但 fallback 也没配好,规则文件下载可能在域名解析这一步就失败了。可以临时切到 redir-host 模式测试下载是否恢复正常。
如果换了 CDN、排查了 DNS 还是频繁超时,根源通常不在规则集本身,而是当前代理出站的稳定性不够。规则集下载走的是 HTTP 请求,和你日常访问海外网站走的是同一条通道。一条兼容 Clash / Singbox / V2Ray 的订阅可以同时承载规则更新和日常代理流量,不需要把规则下载和日常使用分开处理。
相关阅读
来源与时间
本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。