Skip to content

Commit 58b54cd

Browse files
committed
feat: add remotely managed system nodes
1 parent 8bd741c commit 58b54cd

11 files changed

Lines changed: 630 additions & 102 deletions

File tree

‎GitHub加速应用产品方案.md‎

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
# GitBoost 最终 MVP 产品方案
22

3-
版本:V1.0(最终收敛版)
4-
日期:2026-08-11
3+
版本:V1.1(系统节点目录版)
4+
日期:2026-08-13
55

66
## 1. 最终结论
77

88
GitBoost MVP 可行。它的准确定位是:
99

10-
> 一个面向 GitHub 公开 HTTPS 仓库的跨平台桌面加速工具。用户继续使用原始 `https://github.com/...` 地址,应用把 Git 的读取地址临时重写到用户导入并选中的外部加速节点。
10+
> 一个面向 GitHub 公开 HTTPS 仓库的跨平台桌面加速工具。用户继续使用原始 `https://github.com/...` 地址,应用把 Git 的读取地址临时重写到本机检测并选中的外部加速节点。
1111
12-
MVP 只做本地客户端,不建设服务器端系统:
12+
MVP 使用“静态系统节点目录 + 本地数据面”:
1313

14-
- 不建设官方节点中心、爬虫、社区提交或管理后台。
14+
- 官方只发布一个由代理 URL 字符串组成的静态 JSON,不建设数据库、在线 API、爬虫、社区提交或管理后台。
1515
- 不使用 SQLite 或其他数据库。
1616
- 不运行本地 HTTP 转发服务,不代理 Git 数据流。
17-
- 外部节点由用户批量粘贴或从本地 JSON 文件导入。
17+
- 客户端缓存系统节点目录,并与用户手工添加或从本地 JSON 导入的自定义节点合并。
1818
- 应用负责节点校验、测速、选择以及 Git 配置的安全写入与恢复。
1919
- 开发按可验收交付批次执行,不采用传统团队的周数排期。
2020

2121
这一版本验证的是最核心假设:
2222

23-
> 用户是否愿意安装一个桌面工具,通过导入现有 GitHub 加速地址,在不改变日常 clone 命令的前提下获得更稳定的公开仓库下载体验。
23+
> 用户是否愿意安装一个不需要手工维护系统线路的桌面工具,在不改变日常 clone 命令的前提下获得更稳定的公开仓库下载体验。
2424
2525
## 2. 已验证的底层机制
2626

@@ -70,6 +70,7 @@ git push
7070
- 检测系统 Git 是否可用。
7171
- 批量粘贴外部节点。
7272
- 导入本地节点 JSON 文件。
73+
- 从官方静态 URL 数组更新系统节点,并在本地保留最后一次有效缓存。
7374
- 节点增删、启用、禁用和重新命名。
7475
- 使用真实 `git ls-remote` 校验 Git Smart HTTP 能力。
7576
- 对可用节点进行多次测试,按成功率和耗时排序。
@@ -83,8 +84,8 @@ git push
8384

8485
### 3.2 明确不实现
8586

86-
- 官方节点目录、远程订阅、自动抓取公开节点网站。
87-
- 节点清单签名、CDN、服务端健康检查。
87+
- 动态节点 API、自动抓取公开节点网站、社区提交和管理后台。
88+
- 节点清单签名、服务端测速与排名。
8889
- SQLite、ORM、数据库迁移。
8990
- 本地 HTTP/SOCKS 代理或常驻转发端口。
9091
- 私有仓库加速。
@@ -101,7 +102,7 @@ git push
101102

102103
- GitHub 公开仓库 clone、fetch、pull 较慢或不稳定的开发者。
103104
- 使用终端、VS Code 或 JetBrains,并调用系统 Git 的用户。
104-
- 已经有一批外部 GitHub 加速节点,但不想每次手动拼接代理前缀的用户。
105+
- 希望开箱即用,同时允许补充自有 GitHub 加速节点的用户。
105106

106107
### 4.2 使用前提
107108

@@ -243,8 +244,8 @@ anthropics/skills.git
243244
### 7.1 托盘菜单
244245

245246
- 加速开关。
246-
- 当前模式:自动、固定节点或直连。
247-
- 当前节点及最近检测结果。
247+
- 当前模式:自动加速或直连。
248+
- 连接质量及最近检测结果。
248249
- 重新测速并切换。
249250
- 打开主界面。
250251

@@ -254,27 +255,27 @@ anthropics/skills.git
254255
GitHub 加速 已开启
255256
路由范围 仅加速清单
256257
线路模式 自动选择
257-
当前节点 节点 A
258-
最近检测 可用 · 286 ms
258+
连接质量 可用 · 286 ms
259+
最近检测 3 分钟前
259260
260-
[重新测速] [切换节点] [切到直连]
261+
[重新测速] [切到直连]
261262
```
262263

263264
首页必须显示:
264265

265266
- 加速是否实际生效。
266-
- 当前节点和最后检测时间。
267+
- 连接质量和最后检测时间,不展示系统代理地址。
267268
- 全局加速或仅加速清单。
268269
- 应用退出后配置仍生效的说明。
269270
- 当前节点失效时需要重试 Git 命令的说明。
270271

271-
### 7.3 节点管理
272+
### 7.3 自定义节点
272273

273274
- 批量粘贴、导入 JSON。
274-
- 节点列表、名称、规范化地址。
275+
- 只展示用户添加的节点、名称和规范化地址;系统节点由远程目录和本地缓存维护。
275276
- 状态、成功次数、最近耗时、最后检测时间和失败原因。
276277
- 固定、启用、禁用、重新测试、删除。
277-
- 导出当前节点 JSON。
278+
- 只导出用户自定义节点 JSON。
278279

279280
### 7.4 路由清单
280281

@@ -369,6 +370,8 @@ git -c url.<rewriteBase>.insteadOf=https://github.com/ \
369370

370371
测试必须使用隔离参数,不能为了测速先修改用户的全局 Git 配置。
371372

373+
全量检测最多同时运行 4 个节点,并且启动刷新、周期健康检查和用户手动检测共用同一个全量任务互斥状态,避免重复检测和健康结果互相覆盖。
374+
372375
状态定义:
373376

374377
- 可用:连续测试成功,返回合法 ref。
@@ -385,6 +388,7 @@ MVP 排序只使用最近有限次数的成功率、耗时中位数和连续失
385388
GitBoost/
386389
├── settings.json
387390
├── nodes.json
391+
├── system-nodes.json
388392
├── health.json
389393
├── routes.json
390394
├── gitboost.gitconfig
@@ -393,7 +397,8 @@ GitBoost/
393397
```
394398

395399
- `settings.json`:启用状态、线路模式、路由范围、当前节点。
396-
- `nodes.json`:用户导入的节点。
400+
- `nodes.json`:用户添加或导入的自定义节点。
401+
- `system-nodes.json`:官方 URL 数组最近一次通过校验的本地缓存。
397402
- `health.json`:每个节点有限的汇总结果,不保存无限历史。
398403
- `routes.json`:用户配置的精确公开仓库加速清单。
399404
- `gitboost.gitconfig`:Git 实际读取的规则。
@@ -485,8 +490,8 @@ AI 可以并行生成 UI、Rust 模块和平台构建配置,但合并顺序仍
485490
| 检查项 | 结果 |
486491
|---|---|
487492
| 是否仍包含 SQLite、ORM 或数据库表 | 通过:已完全删除 |
488-
| 是否仍包含官方节点中心、爬虫、签名和 CDN | 通过:已移出 MVP |
489-
| 外部节点是否只通过本地导入进入 | 通过 |
493+
| 是否仍包含动态节点 API、爬虫、签名和管理后台 | 通过:不包含 |
494+
| 系统节点是否只是静态 URL 数组 | 通过 |
490495
| 是否仍包含本地转发端口 | 通过:不包含 |
491496
| 是否仍用传统周数描述 AI 开发 | 通过:改为交付批次和退出条件 |
492497
| 是否把 SSH、LFS、Release、Raw 或 push 加速混入 | 通过:均明确排除 |
@@ -530,7 +535,7 @@ AI 可以并行生成 UI、Rust 模块和平台构建配置,但合并顺序仍
530535
立项必须同时接受以下事实:
531536

532537
1. 产品加速的是公开 GitHub HTTPS 读取,不是完整的 GitHub 网络代理。
533-
2. 第三方节点只由用户导入和信任,应用只负责验证兼容性,不为节点背书。
538+
2. 系统节点来自官方静态目录,自定义节点由用户添加;两者都必须通过本机真实 Git 检测。
534539
3. 混合使用私有仓库的用户默认采用“仅加速清单”。
535540
4. 节点失效后的恢复方式是“选择新节点并重试”,不是当前命令无感续传。
536-
5. MVP 的成败应先由真实用户流程和跨平台兼容性决定,再考虑节点订阅、官方目录或其他后台能力。
541+
5. MVP 的成败应先由真实用户流程和跨平台兼容性决定,再考虑自动发现、目录签名或其他后台能力。

‎README.md‎

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# GitBoost
22

3-
GitBoost 是一个 macOS / Windows 桌面工具:用户继续使用原始 `https://github.com/...` 地址,应用通过 Git 原生 URL 重写,把公开仓库的读取临时切到用户选择的外部节点。push 默认保持 GitHub 直连;显式 `pushurl` 会在诊断中告警。
3+
GitBoost 是一个 macOS / Windows 桌面工具:用户继续使用原始 `https://github.com/...` 地址,应用通过 Git 原生 URL 重写,把公开仓库的读取临时切到本机自动选择的加速线路。push 默认保持 GitHub 直连;显式 `pushurl` 会在诊断中告警。
44

55
当前交付支持 Apple Silicon(arm64)macOS,以及 64 位 Windows 10/11(x86_64)。macOS 不构建 Intel 或 Universal 版本。
66

77
## 当前实现
88

99
- Tauri 2 + Rust 核心,React + TypeScript 界面。
10-
- 预置 `https://fastgit.cc/https://github.com/`,首次状态为“未检测”。
11-
- 粘贴 / JSON 导入、规范化、去重、凭据与查询参数拒绝。
12-
- 隔离的 `git ls-remote` 双次检测、失败分类、有限健康历史与自动选路。
10+
- 从官方静态 URL 列表更新系统节点,本地保留 Last Known Good 缓存;远程不可用不影响已有线路。
11+
- 系统节点与用户自定义节点合并后统一规范化、去重和检测;凭据、查询参数与片段会被拒绝。
12+
- 隔离的 `git ls-remote` 双次检测、最多 4 路并发、全量任务互斥、失败分类、有限健康历史与自动选路。
1313
- 全局加速 / 基于 URL 前缀的仅加速清单、公开仓库清单、固定节点与直连模式。
1414
- GitHub Release 文件地址校验、节点小流量探测和浏览器下载。
1515
- 独立 `gitboost.gitconfig`、候选配置验证、原子替换、精确 include 注册与恢复。
1616
- Git 冲突、有效 fetch/push 地址、显式 `pushurl` 的脱敏诊断。
17-
- 基于 Git Trace2 Unix Stream Socket 的实际连接日志,区分 FastGit、GitHub 直连和其他重写;不落盘原始参数或凭据。
17+
- 基于 Git Trace2 Unix Stream Socket 的实际连接日志,区分加速线路、GitHub 直连和其他重写;不落盘原始参数或凭据。
1818
- macOS / Windows 托盘控制、定时健康检查、登录时启动。
1919

2020
## 路由清单的匹配边界
@@ -53,6 +53,8 @@ npm run build:windows
5353

5454
Windows 需要先安装 Git for Windows。安装包默认按当前用户安装;WebView2 缺失时由安装器静默引导安装。产物位于 `src-tauri/target/x86_64-pc-windows-msvc/release/bundle/`。
5555

56-
数据保存在系统的应用数据目录 `pro.gitboost.desktop` 下。恢复操作只删除 GitBoost 自己注册的 `include.path` 并清空自己的重写规则,不修改任何仓库的 remote。
56+
系统节点目录源文件为仓库根目录的 `nodes.json`,发布地址为 `https://cdn.jsdelivr.net/gh/DiscoverBox/gitboost@main/nodes.json`。文件只包含代理 URL 字符串,不包含 ID、名称、类型或转换规则。
57+
58+
数据保存在系统的应用数据目录 `pro.gitboost.desktop` 下。`system-nodes.json` 保存最近一次有效的系统节点目录,`nodes.json` 只保存用户自定义节点。恢复操作只删除 GitBoost 自己注册的 `include.path` 并清空自己的重写规则,不修改任何仓库的 remote。
5759

5860
“使用日志”要求 GitBoost 正在运行,只保留最近 7 天的脱敏记录。应用退出后加速配置仍然有效,但没有本地 Socket 接收 Trace2 事件,因此退出期间的 Git 操作不会补记;Socket 不可用不会阻断 Git 命令。

‎nodes.json‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
"https://fastgit.cc"
3+
]

0 commit comments

Comments
 (0)