从零开始:使用 RULE‑SET 构建自动更新的分流体系

手动维护规则列表既费时又容易遗漏——今天某 AI 服务新增了一个域名,明天某个 CDN 切换了 IP 段,后天你发现代理规则已经“过时”了。Clash Verge Rev 的 RULE‑SET 功能正是为此而生:它允许你从远程订阅社区维护的规则集,自动保持规则更新,或使用本地文件统一管理大量条目。本文将带你从零开始,掌握 RULE‑SET 的全部用法,让你的分流体系一劳永逸。

🤔 传统规则写法有什么问题?

在 Clash 配置中,最常见的规则格式是直接在 rules 列表里逐条书写:

# 传统方式:手动维护每一条规则 rules: - DOMAIN-SUFFIX,openai.com,🚀 代理 - DOMAIN-SUFFIX,claude.ai,🚀 代理 - DOMAIN-SUFFIX,gemini.google.com,🚀 代理 - DOMAIN-SUFFIX,perplexity.ai,🚀 代理 ...

这种写法有几个痛点:

RULE‑SET 正是为了解决这些问题而设计的。它将规则独立出来,存放于单独的 YAML 文件中,支持从远程 URL 拉取、本地文件引用或内联定义,并支持定时自动更新。

📌 RULE‑SET 的三种获取方式

在 Mihomo 内核(Clash Verge Rev 内核)中,RULE‑SET 通过 rule-providers 字段定义。目前支持三种来源:

类型配置示例适用场景
http从远程 URL 下载规则集使用社区维护的公共规则集
file引用本地文件路径团队内部共享的私有规则集
inline直接在配置中定义规则少量规则、无需外部文件

通常我们优先使用 http 类型,借助社区力量实现“一次配置,永久自动更新”。

🌐 远程订阅:接入社区规则集

Clash Verge Rev 项目维护了一套面向 AI 服务、流媒体、广告拦截等场景的规则集。你只需在配置文件中添加 rule-providers 声明,并在 rules 中引用即可。

步骤一:声明规则提供者

# ========== rule-providers 配置 ========== rule-providers: ai-services: type: http behavior: classical # 经典 DOMAIN 规则集 url: "https://raw.githubusercontent.com/clash-verge2026/rule-sets/main/ai-services.yaml" path: ./ruleset/ai-services.yaml interval: 86400 # 每天更新一次 (秒) streaming: type: http behavior: classical url: "https://raw.githubusercontent.com/clash-verge2026/rule-sets/main/streaming.yaml" path: ./ruleset/streaming.yaml interval: 86400

步骤二:在规则中引用

# ========== rules 配置 ========== rules: - RULE-SET,ai-services,🚀 AI-Proxy - RULE-SET,streaming,🎬 流媒体 - GEOIP,CN,DIRECT - MATCH,🚀 默认代理
💡 重要提示:RULE‑SET 规则的优先级取决于你在 rules 中的书写顺序。建议将 AI、流媒体等特定规则放在 GEOIPMATCH 之前,确保它们优先匹配。

首次启动或重启时,Mihomo 内核会根据 url 下载规则集文件到 path 指定的位置,并按照 interval 定期检查更新。下载失败时,会自动使用上次缓存的文件,不会影响代理功能。

📁 本地规则集:私有化定制

如果你不希望依赖外部 URL,或者需要维护公司内部的私有规则,可以使用 file 类型。

# 本地规则集 rule-providers: company-internal: type: file behavior: classical path: /etc/clash/rules/company.yaml # 绝对路径或相对路径

本地规则集文件的内容格式与 rules 片段相同,例如:

# company.yaml payload: - DOMAIN-SUFFIX,internal.corp.com,DIRECT - DOMAIN-SUFFIX,vpn.corp.com,🚀 公司代理 - IP-CIDR,10.0.0.0/8,DIRECT

这种方式适合统一管理多台设备的规则,只需将 path 指向同一份共享文件(如 NAS 或版本控制仓库)。

⚙️ behavior 参数:经典 vs IPCIDR vs DOMAIN

behavior 决定了规则集的匹配模式和预期内容格式。选择正确的 behavior 可避免内核解析错误,并优化匹配效率。

behavior描述支持的规则类型
classical经典格式,每行一条完整的规则DOMAIN-SUFFIX, DOMAIN, DOMAIN-KEYWORD, GEOIP, IP-CIDR 等
ipcidr纯 IP-CIDR 格式,每行一个 IP 段IP-CIDR
domain纯域名格式,每行一个域名DOMAIN-SUFFIX(默认)或 DOMAIN

大多数社区规则集使用 classical,因为它最灵活,可以混合多种规则类型。如果你的规则集只包含域名,使用 domain 能获得更快的加载速度。

🧩 高级组合策略:多规则集叠加与覆盖

你可以同时定义多个 RULE‑SET,它们会按照 rules 中的顺序依次匹配。例如,使用社区 AI 规则集,同时用本地规则集覆盖某些特殊需求:

rule-providers: ai-community: type: http ... ai-custom: type: file path: ./custom/ai-override.yaml rules: - RULE-SET,ai-custom,🚀 AI-Custom # 本地覆盖优先 - RULE-SET,ai-community,🚀 AI-Proxy ...

这样,本地规则集中的条目会优先匹配,未命中的流量再交由社区规则集处理,实现灵活的个性化定制。

⚠️ 注意:避免在多个 RULE‑SET 中重复匹配相同域名,这会导致额外的性能开销。如果需要覆盖,可将自定义规则放在前面。

⚡ 性能优化与缓存机制

大量规则集可能影响内核的启动速度。Mihomo 内核采用增量解析与压缩存储,即使总规则数达到上万条,启动时间通常也仅增加 200~500 毫秒。此外:

🔧 验证与故障排查

1. 确认规则集加载成功

打开 Clash Verge Rev 的“日志”面板,搜索 RULE-SET,你应该能看到类似以下的日志:

[INFO] RULE-SET[ai-services] loaded (120 domains)

2. 检查规则是否生效

在“连接”面板中,访问一个已知的 AI 网站(如 chatgpt.com),观察匹配到的规则。如果显示 MATCHGEOIP,说明 RULE‑SET 未生效。请检查:

3. 手动更新规则集

如果不想等待 interval 触发,可以在客户端设置中点击“刷新规则集”,或手动删除 path 下的缓存文件后重启客户端。

🏁 总结

RULE‑SET 让 Clash Verge Rev 的规则管理从“石器时代”迈入“自动化时代”。通过远程订阅社区维护的规则集,你的分流配置将始终紧跟变化,无需手动干预;通过本地文件引用,你又能保留高度的定制空间。本文介绍的配置方法可以直接应用到你的 config.yaml 中,立即体验规则自动更新的便利。

如果你有好的规则集想分享给社区,欢迎在 GitHub 仓库提交 PR,或通过讨论区与我们交流。让规则维护这件事,彻底成为过去式。