Skip to content
JAMESHPFPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

SubFlow 订阅编排器

SubFlow 是一个本地订阅配置编排工具。它面向 Clash Verge Rev / Mihomo / Clash.Meta 一类 YAML 配置:上传订阅后,保留原始基础配置和 proxies,只重新组织 proxy-groups 与内联 rules,最后导出单个可用 YAML。

项目现在同时支持本地 Web 运行和 Electron 桌面 App。桌面版双击即可使用,不需要用户安装 Node、Ruby 或手动启动服务。

核心能力

  • 上传完整 YAML 订阅文件。
  • 保留 proxies 前面的基础配置,例如 mixed-port、dns、hosts、cfw-bypass。
  • 原样保留 proxies,不改节点内容、不删节点、不重排节点。
  • 从上传文件生成当前订阅的策略组模板。
  • 支持保存、应用、删除自定义分组模板。
  • 支持按地区、关键词和精确节点管理分组来源。
  • 支持导入 Rules 文件,格式可以是 .txt、.yaml、.yml。
  • 支持保存上传文件自带的原始 Rules 为本地模板。
  • 支持工具备份 JSON,包含分组模板、Rules 模板、当前编辑规则和偏好配置。
  • 支持静态校验并提示规则、分组和路由器兼容风险。
  • 导出单个 YAML 文件,方便用于 Clash Verge Rev、Mihomo 或路由器。

下载使用

最新桌面版在 GitHub Releases:

SubFlow Releases

当前 v0.1.2 提供:

  • Windows 安装版:SubFlow.Setup.0.1.2.exe
  • Windows 便携版:SubFlow.0.1.2.exe
  • macOS Apple Silicon:SubFlow-0.1.2-arm64.dmg
  • macOS zip:SubFlow-0.1.2-arm64-mac.zip

macOS 包目前未做 Apple Developer 签名。如果系统提示无法打开,可以在“系统设置 > 隐私与安全性”里允许打开,或右键 App 选择“打开”。

基本流程

  1. 打开 SubFlow。
  2. 点击 上传 YAML,选择一个完整订阅配置。
  3. 在 来源配置 检查节点数量、原始分组、原始规则和 DNS 状态。
  4. 在 策略组模板 调整分组来源、地区分组、精确节点、排除节点。
  5. 在 规则与校验 导入或编辑 Rules,并处理校验问题。
  6. 在 输出预览 确认结果。
  7. 点击 下载 YAML 导出最终配置。

Rules 工作流

SubFlow 把 Rules 分成三类来源:

  • 上传 YAML 自带的原始 rules。
  • 用户导入的 Rules 文件。
  • 用户保存的 Rules 模板。

导入 Rules 文件

在 规则与校验 面板点击 导入 Rules 文件。

  • .txt 会按规则文本解析。
  • .yaml / .yml 会读取顶级 rules:。
  • 导入后会覆盖当前 Rules 编辑区。
  • 覆盖前如果编辑区已有内容,会先弹出确认。

保存上传文件 Rules

点击 保存上传文件 Rules 可以把当前订阅 YAML 自带的原始 rules 保存成本地 Rules 模板。

注意:保存的是上传文件里的原始 rules,不是你在编辑区临时修改后的内容。这样更适合作为不同订阅之间复用的规则基线。

工具备份中的 Rules

导出工具备份 会保存:

  • 当前分组模板。
  • 已保存的分组模板。
  • 当前 Rules 编辑区内容。
  • 已保存的 Rules 模板。
  • 路由器模式、全局排除等工具偏好。

工具备份是 SubFlow 自己的 JSON,不是最终代理配置。最终代理配置请使用 下载 YAML。

策略组模板

SubFlow 支持三类分组方案:

  • 当前订阅:默认方案,从上传文件里的 proxy-groups 转换而来。
  • 基础模板:从零开始生成常见分组,例如节点选择、自动选择、地区分组。
  • 我的模板:用户手动保存的分组方案。

分组模板只影响导出的 proxy-groups,不会修改上传文件的 proxies、基础配置或原始规则。

节点管理

节点管理只改变生成分组时的引用方式,不会修改真实节点。

支持:

  • 搜索节点。
  • 按地区筛选节点。
  • 多选节点。
  • 加入当前分组。
  • 从当前分组排除。
  • 恢复排除。
  • 全局排除。
  • 恢复全局排除。

疑似信息节点,例如 剩余流量、套餐到期、官网、订阅、流量,只会提示,不会自动删除。

校验提示

导出前会进行静态校验,常见提示包括:

  • 规则引用了不存在的策略组。
  • 分组引用了不存在的节点或分组。
  • 分组为空。
  • 动态节点来源展开后为空。
  • MATCH 不是最后一条规则。
  • 存在重复规则。
  • 规则数量过多,路由器可能启动慢。
  • PROCESS-NAME 等桌面规则在路由器上可能无效。
  • 分组里包含疑似信息节点。

内置策略不会被误判为缺失,例如 DIRECT、REJECT、REJECT-DROP、PASS、GLOBAL。

本地 Web 运行

要求:

  • Node.js >=22

安装依赖:

npm ci

开发模式:

npm run api
npm run dev

打开:

http://127.0.0.1:5173

生产模式:

npm run build
npm start

npm start 会优先服务 dist/ 中的 React 构建产物。如果没有构建产物,会回退到旧的 public/ 静态页面。

桌面 App 开发与打包

本机桌面预览:

npm run desktop:dev

macOS 本机打包:

npm run dist:mac

Windows 打包建议使用 GitHub Actions 的 Windows runner:

git tag v0.1.2
git push origin v0.1.2

推送 v* 标签后,.github/workflows/desktop-build.yml 会构建 macOS 和 Windows 桌面包,并把产物附加到对应 GitHub Release。

打包产物位于 release/desktop/。该目录已被忽略,不应提交进仓库。

常用命令

npm run typecheck
npm run build
npm test

本地浏览器 smoke 验证:

SUBFLOW_URL=http://127.0.0.1:5173/ node .tmp/subflow-react-smoke.mjs
SUBFLOW_URL=http://127.0.0.1:5173/ node .tmp/subflow-rules-template-smoke.mjs

如果本地没有 Playwright 浏览器二进制,可以先安装:

npx playwright install chromium

技术栈

  • Vite
  • React
  • TypeScript
  • Tailwind CSS
  • Node HTTP server
  • Electron
  • electron-builder
  • yaml
  • Playwright

项目结构

src/
  App.tsx                 主界面和应用级流程
  components/             通用 UI 组件
  core/                   YAML、Rules、模板、校验等核心逻辑
  features/
    source/               来源配置和节点管理
    groups/               策略组模板编辑
    rules/                Rules 编辑、导入、模板和校验
    export/               输出预览和 YAML 下载
  state/                  工作区状态与本地存储
electron/
  main.js                 Electron 主进程入口
server.js                 本地 API 与静态资源服务
test/
  core.test.js            核心逻辑测试

安全边界

真实订阅 YAML 通常包含服务器地址、端口、密码、UUID、Reality/TLS 参数等敏感信息。

请不要:

  • 把真实订阅文件提交到仓库。
  • 把真实订阅文件当作公开示例。
  • 在 issue、日志、截图里暴露完整节点配置。

SubFlow 的设计目标是本地处理:上传、模板、规则和导出都在本机完成。

当前不做

  • 不拉取远程订阅链接。
  • 不做云端同步。
  • 不做账号体系。
  • 不默认使用 rule-providers。
  • 不自动删除疑似信息节点。
  • 不保证保留原 YAML 注释和原始排版。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages