每天自动同步并转换的代理分流规则仓库。本地规则与上游规则不再分目录,所有可用产物都直接放在 rules/ 下对应的六个客户端目录中。
| 客户端 | 规则目录 | 格式 |
|---|---|---|
| Surge | rules/surge |
Rule Set .list |
| Loon | rules/loon |
Rule Set .list |
| Shadowrocket | rules/shadowrocket |
Rule Set .list |
| Mihomo / Clash.Meta | rules/mihomo |
classical rule-provider .yaml |
| Quantumult X | rules/quantumult-x |
远程过滤规则 .list |
| sing-box | rules/sing-box |
source rule-set .json / .srs |
rules/
├── surge/
├── loon/
├── shadowrocket/
├── mihomo/
├── quantumult-x/
└── sing-box/
六个客户端目录内都不再创建子目录:
- 本仓库原有规则使用原名称,例如
ApplePush.list、jys-jyx.list。 - 上游域名规则使用
site-前缀,例如site-google.list。 - 上游 IP 规则使用
ip-前缀,例如ip-google.list。
前缀只用于区分规则类型和避免同名覆盖,不代表产物被分成不同来源目录。可直接使用 Raw 地址订阅,例如:
https://raw.githubusercontent.com/MiCat-S/Rule/main/rules/surge/site-google.list
GitHub Actions 每天 03:17 UTC(北京时间 11:17)运行,也支持在 Actions 页面手动触发。工作流会:
- 推进 Yuu518/sing-box-rules 的
rule_setsubmodule 指针; - 转换
source中的本地 Surge 风格规则; - 使用修改后的 MiCat-S/rules-generate 转换全部上游 JSON/SRS;
- 运行测试和新鲜度检查,仅在内容变化时提交
rules/、metadata/和 submodule 指针。
构建输入和报告放在 rules/ 外,避免污染客户端目录:
| 内容 | 位置 |
|---|---|
| 本地源规则 | source |
| 上游 submodule | vendor/Yuu518/sing-box-rules |
| 转换和同步报告 | metadata |
| 脚本 | scripts |
| 上游来源及许可说明 | ATTRIBUTION.md |
包含上游规则的完整克隆方式:
git clone --recurse-submodules https://github.com/MiCat-S/Rule.git上游转换器来自作者允许修改的 Yuu518/rules-generate,本仓库使用的修改版发布在 MiCat-S/rules-generate,并保留原 AGPL-3.0 许可证和修改说明。
- Surge、Loon 和 Shadowrocket 产物不写入策略,由客户端引用配置决定。
- Mihomo 文件使用
behavior: classical和format: yaml。 - Quantumult X 使用
proxy作为占位策略,建议通过filter_remote的force-policy覆盖。 - sing-box 同时保留上游
.json和.srs。本地源规则里的IP-ASN无法写入 sing-box source rule-set,具体条目记录在metadata/local-unsupported.json。 - 上游当前有 2 个只有
.srs、没有 JSON 源的规则集,因此无法转换成另外五种文本格式,记录在metadata/upstream-conversion.json。
源文件中夹带的策略名(例如 DIRECT)会被去除,以免覆盖引用方选择的策略。extended-matching 只在 Surge 中保留;其他客户端没有完全等价的逐条选项。
source/no-convert/ 专门存放需要原样保留的客户端规则。转换脚本跳过整个目录及其子目录,不会转换、复制或修改其中的文件;正常源规则仍放在 source/ 的其他位置。
Claude 的 DEST-PORT 和 PROCESS-NAME 已单独放在 source/no-convert/claude.list。域名、IP 和 ASN 条目仍在 source/claude.conf,照常生成六种客户端格式。原生规则使用 Surge 语法,进程规则适用于 Surge Mac;其他客户端需要自行确认语法支持。
使用 Surge 时,除常规 Claude 规则集外,再单独引用这份原生规则,并指定同一策略,例如:
RULE-SET,https://raw.githubusercontent.com/MiCat-S/Rule/main/rules/surge/claude.list,Claude
RULE-SET,https://raw.githubusercontent.com/MiCat-S/Rule/main/source/no-convert/claude.list,Claude其中 Claude 替换为你的策略名。以后新增需要保持原样的规则文件,直接放入 source/no-convert/ 即可。
git submodule update --init --recursive
python3 scripts/convert_rules.py
python3 scripts/sync_upstream.py --check
python3 -m unittest discover -s tests -v
python3 scripts/convert_rules.py --check上游转换由 Action 临时检出 MiCat-S/rules-generate 后执行,固定到已验证的 commit,避免上游工具变化导致未经检查的输出。
上游规则来自 Yuu518/sing-box-rules 及其列出的数据源,本仓库不宣称这些规则原创,也不对它们重新授权。该上游仓库本身没有统一许可证,且来源链包含不同许可或未明确授权的数据;使用或再分发前请自行确认相应条款。同步仅拉取 rule_set 分支产物,不执行上游脚本、工作流或私有 R2。完整来源链见 ATTRIBUTION.md。