科学之家

开发工具 · 新手图文教程

GitHub分流规则

分别验证网页、代码与下载资源,找到开发访问的实际出口。

域名集合Mihomo / sing-box资料核对

图文介绍与操作示意

分别验证网页、代码与下载资源,找到开发访问的实际出口。 配图取自 Clash Verge Rev 官方自定义规则文档,用于说明规则编辑入口。本页配置讲解由本站整理。

根据 Clash Verge Rev 官方自定义规则文档(新窗口) 整理

规则编辑流程:打开订阅、找到当前配置、编辑规则、保存检查。非软件截图。
Clash Verge Rev · 科学之家原创规则编辑流程示意官方操作说明(新窗口) · 核对 2026-09-30

操作流程示意由科学之家绘制,非软件界面截图;其余配图来源见各图说明。菜单随软件版本变化。

01 · 先看懂这条规则

GitHub 的网页、原始文件、图片与发布附件可能使用不同域名。这份规则便于把已收录的相关域名集中交给一个策略。它适合开发资源访问分流,但客户端之外的命令行工具不一定自动使用系统代理,因此浏览器测试与 Git 命令测试应分开进行。

用一个实际场景理解

例如,仓库网页能打开,下载 Releases 附件或读取原始文件却很慢。先在连接记录里找出资源域名和当前出口,再判断是清单覆盖、规则顺序还是线路的问题。如果执行 Git 命令时记录里完全没有连接,应先检查工具是否使用了代理。

GitHub规则匹配图:请求进入客户端,命中集合后使用按网络情况选择已有策略组,未命中则继续检查后续规则。
图 1 · 分流过程示意。这里只解释匹配关系,不是客户端实时连接截图。

先认识四个词

域名
网站的文字地址,例如 github.com。网址中的协议和页面路径不属于域名。
规则集
一份需要匹配的地址名单;本页提供的 MRS / SRS 是供对应内核读取的二进制文件。
策略 / 出站
命中后怎样处理连接:直接连接、交给已有代理组,或者拒绝连接。
命中
当前连接满足了某条规则。查看连接记录,才能知道实际采用了哪条规则。

02 · 它包含哪些内容?

适用范围

  • github.com、githubusercontent.com、githubassets.com 等已收录域名后缀。
  • 有助于管理仓库页面、部分原始文件、图片、静态资源与下载资源请求。
  • 适合将开发资源集中到一个可调整的策略,而不影响其他网站。

需要另外判断的情况

  • 不是 Git 配置工具,不会自动为终端、IDE、容器或包管理器设置代理。
  • 第三方镜像、外部依赖和其他包仓库不一定属于 GitHub 集合。
  • SSH 连接能否被接管与浏览器访问不同,不能仅用网页结果推断。

从上游清单中取出的真实条目

在 核对的文本清单中,共有 64 条非注释条目。以下只展示部分示例,数量和内容会随上游更新变化,也不代表你此刻客户端已加载的数量。

条目示例 · 不作为独立订阅导入
+.github.com
+.githubassets.com
+.githubusercontent.com

+.example.com 这种写法表示域名后缀匹配,涵盖根域名与子域名;没有此前缀的条目按其实际语法解释。这些是域名匹配条件,后面没有写 DIRECT 或代理组,所以仍需为集合指定动作。

阅读完整上游文本清单

03 · 开始前,准备好这三件事

  1. 先备份当前配置。导出或复制当前正在使用的配置,并记录修改前的策略。已经有自定义规则时,保留它们;不要把本页片段当成完整订阅覆盖进去。
  2. 确认软件的内核。在“关于”或版本信息中找到内核名称。Mihomo 用 MRS;sing-box 用 SRS。只修改文件后缀不能转换格式。
  3. 确认已有连接能工作。本教程只添加分流。如果本来就无法连接,先完成客户端与节点设置。需要代理时,记下现有代理组的准确名称,包含空格和符号。
本规则的使用方向:按网络情况选择已有策略组

下面出现的“你的代理组名”和 your-proxy-tag 都是待替换文字。请换成当前配置里实际存在的名称;未替换时不要直接启用。

如果使用带订阅的客户端,优先采用它提供的规则编辑或扩展功能。直接修改下载下来的订阅原文,可能在下次更新时被覆盖。

04 · Mihomo:按图添加规则

下面以 Clash Verge Rev 为例。其他 Mihomo 客户端的菜单可能不同,但都需要两部分:先定义规则集,再添加引用它的路由规则。

1

确认规则模式,找到当前订阅

让客户端使用规则模式,打开订阅或配置列表,确认正在启用哪一份。先备份这份配置与已有扩展。全局代理或全局直连模式可能让你看不到预期的规则结果。

2

添加规则集定义

打开用于当前订阅的“扩展配置”编辑器,把下方 rule-providers 片段合并进去。如果原来已有这个顶层字段,把 science-github 这一项加在它下面,不要再写第二个同名顶层字段,也不要删掉原有集合。

YAML · 规则集定义
rule-providers:
  science-github:
    type: http
    behavior: domain
    format: mrs
    path: ./rules/science-github.mrs
    url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs"
    interval: 86400

type: http:通过链接获取远程规则。

behavior: domain:本页是域名集合;不要改成 ipcidr。

format: mrs:对应下面的 MRS 文件。

path:客户端保存规则的相对路径,不同集合应避免使用相同文件名。

interval: 86400:设置约一天检查一次更新;实际更新成功与否要看客户端记录。

保存后让当前配置重新生效。若提示 YAML 错误,先检查缩进是否使用空格、冒号后的空格是否保留,以及是否重复了同名字段。

3

在订阅中打开“编辑规则”

回到当前订阅卡片,右键打开菜单并选择“编辑规则”。下图为本站绘制的操作流程示意,用于帮助你找到入口;实际菜单可能随版本变化。

Clash Verge Rev 规则编辑流程示意:找到当前订阅,在右键菜单中选择编辑规则。
图 2 · 科学之家原创操作流程示意,非软件截图。 参考来源
4

填入本规则,选择实际策略

规则类型选择 RULE-SET,规则内容填写 science-github,代理策略选择 你的代理组名。此处应从你自己的策略中选择,不能把这几个占位字当作真实组名。

规则类型RULE-SET
规则内容science-github
代理策略你的代理组名
插入位置添加前置规则,再检查现有例外和规则的先后次序
Clash Verge Rev 官方规则编辑表单:规则类型、规则内容、代理策略、前置规则和保存按钮。
图 3 · 官方截图展示的是另一条 DOMAIN-SUFFIX 示例;本教程应填写上方表格中的 RULE-SET 和集合名称,不要照抄截图里的 .cn。 参考来源

如果你正在维护原生 YAML,等价规则如下。只把这一条加入已有 rules 列表,并放在需要优先于它的例外之后、兜底 MATCH 之前。

YAML · 合并到已有规则列表
rules:
  - RULE-SET,science-github,你的代理组名

不要在“扩展配置”里直接用这段短 rules 列表覆盖整个原列表。Clash Verge Rev 的配置合并不等于在旧规则前追加;使用“编辑规则”可以保留订阅原有规则。

5

保存、重载,再检查顺序

保存规则并让配置重新生效。如果出现“规则集不存在”,核对两处集合名称;出现“代理不存在”,核对策略组名。先解决加载错误,再继续验证网络连接。

规则顺序图:必要例外、具体服务、较大的分类、最终兜底;连接从前向后检查。
图 4 · 顺序示意。已有的局域网、DNS 处理等配置应保留;按实际需求排列,本图不是可以整段替换的配置。
  • 浏览器先测仓库页面,再测试自己需要的原始文件或附件链接,观察实际资源域名。
  • 命令行无连接记录时先检查该工具的代理方式,不要盲目给规则添加越来越宽的后缀。
  • 比较直连与已有代理组时只修改本集合策略,确认效果后保留更适合当前网络的选择。

05 · sing-box:分清规则集和出站

如果你用的是 Mihomo,可以直接跳到下一节验证。sing-box 的字段与 YAML 不同,以下使用 JSON;这里只展示需要合并的片段,不是可以独立启动的完整配置。

  1. 确认客户端支持编辑原生 sing-box 配置,并备份当前文件。不会开放原生配置的封装客户端,应使用该软件自己的规则功能。
  2. 把下方集合对象追加到原有 route.rule_set 数组,把路由对象加进 route.rules 中适合的位置。保留其他路由、DNS 处理、入站、出站与默认出口。
  3. 把 your-proxy-tag 替换为 outbounds 中已存在的出站标签。它不是服务器地址或订阅 URL。
  4. 选择符合内核版本的下载配置后,保存并使用客户端配置检查功能,再重载连接。
JSON · 路由片段,使用 action 语法(sing-box 1.11+)
{
    "route": {
        "rule_set": [
            {
                "type": "remote",
                "tag": "science-github",
                "format": "binary",
                "url": "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/github.srs",
                "update_interval": "1d"
            }
        ],
        "rules": [
            {
                "rule_set": [
                    "science-github"
                ],
                "action": "route",
                "outbound": "your-proxy-tag"
            }
        ]
    }
}
按 sing-box 版本处理远程下载

1.11–1.13:上面未指定下载出口,使用这一时期内核的默认行为;若需要明确经由已有出口下载,可在该 rule-set 对象里增加 download_detour,其值必须是已定义的出站标签。

支持 http_client 的 1.14 及后续版本:在同一个远程 rule-set 对象里明确添加 HTTP 客户端配置。例如通过已存在的出站获取规则:

添加到远程 rule-set 对象中的字段
"http_client": {
  "detour": "你的规则下载出站标签"
}

替换标签后与其他字段用逗号分隔。不要给旧版内核添加不认识的 http_client。官方文档标明 download_detour 自 1.14 起弃用、计划在 1.16 移除;按你实际内核版本选用,避免两个写法混用。

下载规则使用的出口与命中规则后的访问出口是两回事。例如广告规则最终执行 reject,但获取广告清单仍需要可用的网络连接。

没有图形配置检查入口时,可对已合并好的完整配置执行:

终端 · 检查配置,不会替你补齐出站
sing-box check -c config.json

如果报格式或版本错误,先恢复备份并查看官方迁移说明。不要把 .mrs 改名成 .srs,两者不是同一种文件格式。

06 · 怎样确认规则真的生效?

能打开网页不等于命中了新规则。请同时检查 请求目标、匹配规则、最终出口 这三项;下面是针对GitHub的检查步骤。

  1. 打开 github.com 上一个已知仓库,确认网页连接命中 science-github。
  2. 再打开仓库中一个原始文本文件,检查 raw.githubusercontent.com 等实际请求的匹配和出口。
  3. 如果还需要 Git 或 IDE 使用同一出口,分别触发一次正常操作并检查连接记录;没有记录说明需要检查流量接管。

读日志时对照这些字段 · 示例,不是你的实时数据

请求目标
github.com
期望的规则集
science-github
期望的处理方式
按网络情况选择已有策略组

不同软件的日志字段名称可能不同。新规则保存后,请关闭并重新建立测试连接;已有的长连接未必立即切换。规则模式正确、集合成功加载、连接确实进入客户端,是排查的三个起点。

07 · 常见问题与恢复方法

浏览器正常,git clone 仍失败?

先判断 Git 命令是否使用了代理。域名规则只有在流量进入相应客户端后才有机会生效,浏览器与命令行的代理设置可能不同。

包安装慢也一定是 GitHub 规则的问题吗?

不一定。包管理器可能访问自己的仓库或第三方 CDN,应根据实际请求域名判断。

可以把这份规则设成 DIRECT 吗?

可以。如果当前网络直连更合适,把策略改成 DIRECT 即可。集合负责识别目标,并不强制使用代理。

浏览器能走代理,其他软件却没有命中规则?

系统代理只覆盖遵循该设置的程序,部分程序使用自己的代理设置或直接连接。先在客户端日志确认目标程序是否出现;没有记录时检查接管方式与分应用设置。只有客户端明确支持并完成所需配置时才使用 TUN;仅添加规则不能接管原本未进入客户端的流量。

域名规则已命中,为什么仍有部分图片、登录或视频失败?

同一服务往往分别使用页面、账号、图片和媒体域名。先查看失败请求的真实目标与最终出口,再判断是否缺少规则、命中拦截或出口不可用。应用直连 IP、IPv6 或 UDP 的连接也可能走不同路径;按对应软件文档检查,不能只凭首页成功认定全部请求都正常。

更新后提示不认识字段,怎样判断是语法还是版本问题?

记录当前客户端和内核版本,查该版本支持的字段与规则格式。先使用配置检查功能查看具体行号:缩进、逗号等属于文件语法,unknown field 一类提示还可能是功能版本不匹配。恢复备份确认原配置可用后,再按官方迁移说明逐项调整。

提交问题反馈时应该准备什么?

提供客户端与内核版本、设备系统、问题出现步骤,以及脱敏后的目标域名、命中规则、出站名称和错误码。保留一份能正常工作的配置用于对照;不要公开完整订阅地址、账号密钥或包含认证信息的日志。

改完后出问题,按这个顺序恢复

  1. 先暂停本次新加的路由规则,保留原订阅;重载后重新测试。
  2. 如果恢复正常,核对新规则的名称、类型、策略与位置,一次只改一项。
  3. 需要完全撤销时,先删除引用此集合的规则,再删除对应 rule-provider 或 rule-set 定义,避免留下“规则集不存在”的引用。
  4. 仍无法判断时,导入修改前的备份,并保留不含账号和密钥的错误信息用于排查。

08 · 规则下载与资料来源

需要远程订阅时,复制下方文件地址填到对应字段;手动保存的本地文件不会自动跟随上游更新。

Mihomo · MRS

域名集合,behavior 使用 domain。

打开 MRS 文件
远程规则地址
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/github.mrs

sing-box · SRS

二进制规则集,format 使用 binary。

打开 SRS 文件
远程规则地址
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/github.srs

图文整理:科学之家。规则填写窗口截图来自 Clash Verge Rev 官方文档并保留来源;编辑入口、分流过程与顺序图为本站绘制的教学示意。上游规则与软件菜单可能变化,请以实际版本和日志为准。