自用同步仓库,用来集中维护 TV 配置、Mihomo 规则配置、远端规则列表和部分发布资产。
TV/:TVBox、MoonTV 等配置文件。Mihomo/file/:Mihomo 配置、规则源、重命名脚本和兼容规则。Mihomo/file/js/:JavaScript 脚本文件。Mihomo/file/list/:rule-providers使用的 Clash list 规则集。Mihomo/file/txt/:rule-providers使用的 txt 规则集。Mihomo/file/yml/:Mihomo YAML 配置文件。scripts/:从远端 URL 同步文件的脚本和清单。app/:手动纳入仓库的小体积 APK。
使用下面的命令,可以同步 scripts/sync-from-site.json 中配置的文件:
powershell -ExecutionPolicy Bypass -File .\scripts\sync-from-site.ps1scripts/sync-from-site.json 中的每一项都表示“本地文件路径”对应一个“远端 URL”:
{
"files": [
{
"path": "TV/tvbox.json",
"url": "https://example.com/tvbox.json"
}
]
}如果需要同步更多文件,继续往 files 数组里追加即可。
订阅转换入口配置在 Mihomo/file/yml/cfg-all.yml:
custom:
clash_rule_base: https://gh-proxy.org/https://raw.githubusercontent.com/feiyang1128/syncFile/refs/heads/main/Mihomo/file/yml/base-all.yml
enable_rule_generator: false
overwrite_original_rules: true
proxy_groups:
- name: ♻️ 自动选择
type: url-test
lazy: false当前入口配置:
cfg-all.yml:完整配置cfg-no6.yml:不带 IPV6cfg-nocf.yml:不带 cloudflarecfg-no6nocf.yml:不带 IPV6 和 cloudflare
对应规则底座:base-all.yml、base-no6.yml、base-nocf.yml、base-no6nocf.yml。
YAML 配置负责订阅转换策略组;Mihomo/file/yml/base-all.yml 维护 Mihomo 基础设置、rule-providers 和 rules。策略组使用对象式 proxy_groups 显式设置 lazy: false。当前策略组包含:
🚀 节点选择、♻️ 自动选择、🌐 IPV6、✨ AI、🌍 cloudflare🔮 负载-轮询、🔮 负载-散列、🔯 故障转移🎯 全球直连、🛑 全球拦截、🐟 漏网之鱼
所有会进行延迟测试的策略组都统一设置为 3 分钟测试一次:
interval: 180Mihomo/file/yml/base-all.yml 通过 rule-providers 引用的规则集包括:
list:direct、proxy、unbantxt:ipv6、cloudflare-extra、reject-extrareject:来自Mihomo/file/txt/reject.txtai:来自Mihomo/file/txt/AI.txtai-extra:来自Mihomo/file/txt/AI-extra.txtunban:由scripts/sync-from-site.json从 ACL4SSR 同步
syncFile workflow 每小时运行一次,会按 scripts/sync-from-site.json 更新:
Mihomo/file/list/unban.listMihomo/file/txt/reject.txtMihomo/file/txt/AI.txt
本地文件和自动同步文件统一按大小判断,不按文件后缀特殊处理。小于 100 MiB 的文件可以直接提交:
git add app\example.apk本地提交前可以启用仓库内置 hook,让 Git 自动按大小拦截大文件:
powershell -ExecutionPolicy Bypass -File .\scripts\install-git-hooks.ps1启用后,任何已暂存文件只要大于等于 104857600 字节,也就是 100 MiB,提交时都会被拦截;小于 100 MiB 的文件正常提交。这个判断不区分 .apk、.zip 或其它后缀。
自动同步 workflow 也只按文件大小判断同步下来的文件是进入 Git 提交,还是发布到 GitHub Release:
- 小于
104857600字节的同步文件进入 Git 提交 - 大于等于
104857600字节的同步文件发布到synced-assets-latestrelease - 被 release 管理的文件会在同一次 workflow 里上传,并自动排除出 Git 提交
- release 中使用文件名作为资产名;同名资产会先删除再重新上传,保证始终是最新文件
- 下载地址格式为
https://github.com/feiyang1128/syncFile/releases/download/synced-assets-latest/<文件名>
仓库通过 syncFile GitHub Actions 自动更新文件:
syncFile:每小时运行一次,按scripts/sync-from-site.json同步远端文件。- 在 GitHub 网页编辑文件并提交到
main,或将本地修改推送到main后,立即触发相关配置生成;实际完成时间取决于 Actions 排队和运行时间。 - 每次提交都会执行
scripts/build-mihomo-base.ps1,将Mihomo/file/yml/base-common.yml的公共配置更新到base-all.yml、base-no6.yml、base-nocf.yml、base-no6nocf.yml,保留各文件从rule-providers:开始的独立配置,并自动提交生成结果。公共配置应修改base-common.yml。 - 提交触发的任务只生成依赖文件;定时或手动运行工作流时才下载上游文件。直接通过 URL 引用的规则和脚本无需重新生成,客户端按自身刷新周期获取更新。
- 同一分支的任务串行运行;自动提交使用
GITHUB_TOKEN,不会重复触发工作流。