### 1. Demo 简介
**是什么**:一款纯 Go 开发的多源加速下载器,单文件 exe 零安装,支持 GUI / CLI / 浏览器插件三模式运行。内置 GitHub/HuggingFace 国内镜像加速、16 线程并发、断点续传、分段降级、SHA256 校验。
**面向谁**:
- 在国内下载 GitHub Release / HuggingFace 模型文件困难的开发者
- 需要稳定下载大文件的 AI 从业者
- 想要替代迅雷/IDM 的普通用户
**核心功能**:
1. **多源镜像加速**:自动为 GitHub→ghproxy、HuggingFace→hf-mirror 匹配国内加速源,并发测速选最快
2. **智能下载策略**:按文件大小自动选策略(单线程→16线程→分段降级→换镜像),断点续传 2 秒保存一次
3. **三模式运行**:双击打开 Web GUI / 命令行 JSON 输出 / Chrome Native Messaging 浏览器集成
4. **URL 智能检测**:粘贴网页地址自动识别,提供 CDN 加速访问按钮
5. **工程化细节**:纯 Go 图标嵌入、无终端窗口、原生目录选择器、下载完成打开目录
6. **升级新增skill:CDN下载器做成了skill,并在trae work 验证成功
**界面截图**:
> 【截图 1:Web UI 主界面 — 粘贴链接、选择保存路径、下载按钮】
> 【截图 2:下载进度条 — 实时速度、百分比、ETA】
> 【此处插入截图 3:下载完成 — "打开目录"按钮 + SHA256 校验结果】
> 【截图 4:CLI 模式 — 命令行进度条 + JSON 输出】
### 2. Demo 创作思路
**灵感来源**:
我在做 AI 智能插座产品 YibiClaw 时,需要让 AI 自动下载安装各种企业应用。但在中国大陆网络环境下,GitHub Release 下载极慢(100MB 文件可能要 30 分钟),HuggingFace 模型几乎无法直连,浏览器下载不支持断点续传,现有工具要么收费有广告(迅雷),要么配置复杂(aria2),没有一款真正好用的方案。
**想解决的问题**:
1. **GitHub/HuggingFace 下载慢**:国内开发者每天面对的痛点,影响工作效率
2. **断线重传从头开始**:浏览器下载中断后需重新下载,大文件尤为痛苦
3. **工具碎片化**:普通用户用浏览器、开发者用命令行、没有统一方案
4. **AI 无法自动下载**:现有下载工具不支持 JSON 机器可读输出,AI 无法调用
**为什么做这个方向**:
- **真实刚需**:我自己每天都在用,解决了自己最痛的问题
- **技术挑战丰富**:多线程下载、断点续传、镜像测速、分段降级,每个都是独立的技术难点
- **AI 生态卡位**:作为 YibiClaw AI 智能插座的下载引擎,是 AI 自动化的基础设施
- **差异化明确**:单文件零安装 + 三模式 + 中国镜像优化,市面没有同类产品
### 3. Demo 体验地址
**方式一:下载 exe 直接体验(推荐)**
https://github.com/yanqj1218/yibi-CDN-down/releases/download/v1.0.0/yibi-CDN-down.exe
>
> 下载后双击 `yibi-CDN-down.exe`,自动打开浏览器 Web UI
>
> 测试链接推荐:
> - 测速文件: `https://speed.hetzner.de/100MB.bin\`
**方式二:演示视频**
### 4. TRAE 实践过程
#### 4.1 开发工具
全程使用 **TRAE IDE** 开发,从架构设计到功能实现、调试修 bug,全部通过 TRAE 对话完成。
#### 4.2 开发流程
**第一步:需求拆解与架构设计**
向 TRAE 描述需求:多源加速下载器,Go 语言,单文件 exe,支持 GUI/CLI/NM 三模式。TRAE 帮我规划了完整的项目结构:
```
yibi-CDN-down/
├── main.go # 入口:模式分发
├── engine/ # 下载核心引擎
│ ├── task.go # 编排器(策略选择/镜像轮转/校验)
│ ├── http.go # 多线程下载(Range/WriteAt/进度)
│ ├── segment.go # 分段降级(chunk细分重试)
│ ├── resume.go # 断点续传(元数据持久化)
│ ├── mirror.go # 多源镜像(规则匹配/测速选优)
│ └── verify.go # SHA256 流式校验
├── ui/ # 用户界面
│ ├── cli.go # CLI模式
│ ├── gui.go # Web UI HTTP服务
│ ├── index.html # 嵌入式前端
│ └── picker_windows.go # 原生目录选择器
├── bridge/ # 浏览器通信桥
│ └── native_messaging.go
├── brand/ # 品牌系统
├── tools/addicon/ # 纯Go图标嵌入工具
└── nmtest/ # NM测试工具
```
> 【入截图:TRAE IDE 中项目结构 + 对话过程】
**第二步:核心引擎开发**
用 TRAE 逐步实现下载核心:
- `engine/http.go`:多线程 Range 下载,64KB 缓冲区 WriteAt 直接写文件偏移
- `engine/segment.go`:分段降级算法,chunk 失败自动细分 4 段重试,最多 16 段后换镜像
- `engine/resume.go`:2 秒间隔持久化进度到 JSON 文件,中断后自动加载
- `engine/mirror.go`:镜像规则引擎 + 并发 HEAD 测速
- `engine/verify.go`:256KB 流式 SHA256 校验
> 【截图:TRAE 中编写 engine 核心代码的对话】
**第三步:三模式入口开发**
- GUI 模式:HTTP 服务 + SSE 实时进度推送 + go:embed 嵌入 HTML
- CLI 模式:文本进度条 + JSON 机器可读输出 + 专家模式(-expert)
- Native Messaging:Chrome NM 协议 + WaitGroup 等待下载完成
> 【截图:TRAE 中开发 GUI/CLI/NM 三模式的对话】
**第四步:Windows 工程化(踩坑最多)**
这部分踩了很多坑,都在 TRAE 的帮助下逐一解决:
**坑 1:windowsgui 模式 CLI 无输出**
- 问题:`-H windowsgui` 编译的 exe 不弹黑框,但 CLI 模式 `fmt.Println` 输出到 nowhere
- 解决:TRAE 帮我写了 `attachParentConsole()` — 用 `GetStdHandle` + `GetFileType` 检测 stdout 状态,仅当无效时才 `AttachConsole`
**坑 2:纯 Go 图标嵌入**
- 问题:Go 编译的 exe 无图标,`rsrc` 工具需额外安装且 GitHub 网络不通
- 解决:TRAE 帮我用 `syscall.NewLazyDLL` 直接调用 Windows `UpdateResourceW` API,手写 ICO 格式
**坑 3:目录选择器不弹出**
- 问题:Web UI 点"浏览"按钮无反应
- 解决:`SHBrowseForFolderW` 需要 COM 在同一线程,但 Go goroutine 会迁移线程。加 `runtime.LockOSThread()` 修复
**坑 4:.7z 文件被误判为网页**
- 问题:服务器返回 `text/html` 中转页,.7z 下载被拦截
- 解决:增加 URL 扩展名优先判断,80+ 种扩展名直接判定为下载
**坑 5:Native Messaging 退出丢下载**
- 问题:浏览器关闭后 stdin EOF,下载器立即退出,下载中断
- 解决:`activeDownloads sync.WaitGroup` 等待所有下载完成
> 【截图:TRAE 中调试 Windows 问题的对话】
**第五步:测试与验证**
全部 17 项验收标准通过:
-
小文件/中文件/大文件下载
-
断点续传(中断后继续)
-
SHA256 校验
-
多源镜像竞速
-
CLI JSON 输出
-
GUI 启动 + 品牌显示
-
Native Messaging 协议
-
浏览目录选择器
-
下载完成打开目录
-
URL 智能检测 + CDN 加速
> 【截图:TRAE 中运行测试 + 验证结果的对话】
#### 4.3 Session ID
> **【重要】双击 TRAE 对话复制 Session ID,至少 3 个**
>
> Session ID 1:
.1681622753355188:6aae945b9d29bb4385ed81ac4a9feda9_6a511e9f06bf736b75793a66.6a511ecd06bf736b75793a68.6a511ecc7b7993051a2c086a:Trae CN.T(2026/7/11 00:33:17)
Session ID 2:
.1681622753355188:e7dc12886f4542e146f0072c5f12bd74_6a511e9f06bf736b75793a66.6a51ca7db93a07640b0e23ee.6a51ca7c28c2675970a97280:Trae CN.T(2026/7/11 12:45:49)
> Session ID 3:
.1681622753355188:40f3cc08d3ce6b63d5e3c4565dd4d9a0_6a511e9f06bf736b75793a66.6a51e253b93a07640b0e2afd.6a51e25228c2675970a97284:Trae CN.T(2026/7/11 14:27:31)
Session ID 3:
.1681622753355188:a64913686b0d95411936303def9ca27c_6a511e9f06bf736b75793a66.6a5752805a1eda53a8b02885.6a57527fc5e41374a2547a05:Trae CN.T(2026/7/15 17:27:28)
#### 4.4 技术亮点总结
| 亮点 | 技术 |
|------|------|
| 零依赖单文件 | 纯 Go 标准库,go:embed 嵌入 HTML,7MB exe |
| 三模式运行 | GUI/CLI/Native Messaging 覆盖全场景 |
| 多源镜像加速 | GitHub→ghproxy, HuggingFace→hf-mirror |
| 分段降级算法 | chunk失败自动细分4段重试,最多16段后换镜像 |
| 断点续传 | 2秒间隔持久化元数据,中断自动续传 |
| AI 就绪 | JSON输出 + 专家模式,可被AI直接调用 |
| 纯Go图标嵌入 | UpdateResource API,无需外部工具 |
| windowsgui兼容 | AttachConsole + GetFileType 智能检测 |
### 5. 报名帖链接









