面向技能自学者的视频知识提取与持久化桌面应用 —— 把「看完就忘」变成「学完即得」。 观看教学视频(B 站 / 网课 / YouTube)自学化妆、编程、乐理、绘画等任何技能时,课堂助手自动捕获屏幕与音频,本地转写 + 本地识别 + 内容拼接,一键产出结构化笔记;数据全程留在本机。
| 原则 | 含义 |
|---|---|
| 本地优先 | ASR / OCR / 拼接 / 存储全部本地完成,无网络也能用 |
| 数据不出本机 | 音频、转写、OCR、笔记全部存于本地 SQLite;AI 调用需用户显式授权且默认关闭 |
| AI 为增强层 | 云端多模态仅做「精修 / 知识补充」等增强,失败自动降级到纯本地拼接路径 |
屏幕关键帧捕获 ─┐
├─► 本地 ASR 转写 ─► 双源融合 ─► 内容拼接 ─► 笔记初稿
系统音频捕获 ───┘ (有字幕则跳过 ASR,字幕优先)
- 本地流式 ASR:sherpa-onnx(流式 Zipformer + Silero VAD + SenseVoice 两遍解码 + hotwords 热词)
- 本地 OCR:PaddleOCR PP-OCRv5/v6(关键帧文字检测识别,GPU 可卸载)
- 字幕优先策略:检测到字幕先走 OCR 字幕,无字幕才启动 ASR,节省算力
- 双源融合:转写 + OCR 按时间线纯本地规则拼接为笔记初稿(无 LLM 依赖)
- 视频档案四维解耦(v0.9.0):形态 7 类 × 画面价值 4 档 × 领域 15 类 × 语言;画面价值三信号自动检测、动态调档、领域热词预热
- 会话 → 笔记一键落库,Markdown 渲染 / 源码编辑双模式
- 版本链:每次编辑自动建版本快照,diff 对比、一键回滚(50 版上限)
- AI 增强(可选):AI 精修双模式(预览 / 落库同基线)+ 知识补充九子项,采纳前 diff 预览、成本确认、全程审计
- 时间戳回链(v0.10.0):笔记段落 ↔ 会话视频时间点双向跳转
- FTS5 全文搜索、标签、大纲面板、任务列表勾选
- 全部数据存本地 SQLite(
notes/sessions/notes_versions/ai_usage…) - AI 密钥经 Windows DPAPI 加密存储,明文永不落盘
- 云端能力(AI 精修 / 知识补充)默认关闭,授权后才可用,且只上传最小文本上下文
| 层 | 选型 |
|---|---|
| 桌面壳 | Tauri 2(替代原 Electron 版) |
| 前端 | React 19 + TypeScript + Vite |
| 后端 / 系统层 | Rust(Tauri 主进程,引擎池常驻线程) |
| 本地 ASR | sherpa-onnx crate(流式 Zipformer + Silero VAD + SenseVoice 两遍解码) |
| 本地 OCR | paddle-ocr-rs(PaddleOCR PP-OCRv5/v6 ONNX) |
| 本地数据库 | SQLite(rusqlite,含 FTS5) |
| AI 增强 | 云端多模态(Qwen-VL 系,SiliconFlow 网关),不用本地 LLM |
| 模型分发 | 随安装包捆绑 + 首启同步;开发期脚本下载 |
├── app/ # Tauri 桌面应用
│ ├── src/ # React 19 前端(页面/组件/类型)
│ └── src-tauri/ # Rust 主进程(引擎池/ASR/OCR/捕获/存储/AI)
├── server/ # 服务端部署配置(docker-compose / nginx / deploy.sh,不含业务代码)
├── docs/ # 文档体系(见「文档导航」)
├── scripts/ # 辅助脚本(docs-check / version-bump / 学习会话检测)
├── .github/workflows/ # CI/CD:pr-check(changes 分诊 + 前端/Rust/官网/文档/行数红线 5 job)+ release(NSIS 打包)
├── .husky/ # 提交门禁(pre-commit 直跑全树校验 + commitlint)
└── package.json # 仓库级发布工具链(semantic-release)
- Windows 10/11(当前主力平台;WASAPI 环回 / DXGI 屏幕捕获为 Windows 原生能力)
- Rust stable(含 MSVC 工具链)
- Node.js 20+ 与 npm
cd app
npm install
npm run tauri dev # Tauri 开发模式(前端 + Rust 热重载)
npm run build # 前端类型检查 + 构建(tsc + vite build)cd app/src-tauri
cargo build # 编译
cargo test # 单元测试(拼接 / 切片 / 版本链 / 成本估算等纯逻辑)
cargo clippy # lint(要求零警告)单测不依赖真实模型文件(模型相关用集成测试标注);
AI_REFINE_MOCK=1/AI_ENRICH_MOCK=1可离线走 AI 链路开发。
模型文件不提交仓库,通过脚本下载后放入 app/src-tauri/models/:
# 流式 ASR 模型 / 标点模型 / 说话人模型 / ffmpeg(按需执行)
node app/scripts/download-streaming-asr.mjs
node app/scripts/download-punctuation.mjs网络注意:本机存在 TLS 拦截时 Rust 侧在线下载预编译库可能失败;sherpa-onnx 已通过
sherpa-archive/本地库 +.cargo/config.toml解决。
| 分支 | 用途 |
|---|---|
dev |
日常开发主线(默认分支),所有功能开发在此进行 |
main |
发布线:合并后由 semantic-release 依据 Conventional Commits 自动版本化,生成 CHANGELOG 并触发 Tauri NSIS 打包发布 |
old |
旧 Electron 版代码存档(只读,仅作参照) |
- 提交规范:Conventional Commits(
<type>(<scope>): <subject>),husky + commitlint 强制门禁 - 大功能(>2 天)开
feature/*分支,完成后合入dev
| 入口 | 内容 |
|---|---|
| docs/ | 文档体系总览(维护节奏 / 写作规范) |
| docs/product/ | 产品文档:PRD / 痛点图谱 / MVP 画布 / 需求池 |
| docs/adr/ | 架构决策记录(ADR-001 ~ ADR-016) |
| docs/standards/ | 工程规范(ai-coding / testing / git-workflow / security 等 20+ 篇) |
| docs/versions/ | 版本深度文档(v0.1.0 ~ v0.17.0) |
| docs/archive/ | 归档机制(每日快照 + 技术债滚动清单) |
| CHANGELOG.md | 全量变更流水账 |
重构进行中:原 Electron 版已存档至 old 分支,当前为 Tauri 2 全量重写。
- 已交付:本地提取链路(ASR + OCR + 拼接 + 笔记)→ 系统实时捕获(WASAPI + DXGI + 流式 ASR + 字幕 OCR + 双源融合 + 会话)→ AI 精修 / 知识补充 / 版本链 / 成本与审计 → 视频档案四维解耦 v2(v0.9.0,cargo test 1352 全绿 + clippy 零警告)
- 进行中:v0.10.0 笔记能力建设(Markdown 渲染 / 编辑 / 时间戳回链 / 标签)——规划文档
- 后续:间隔重复闪卡(SM-2)、回顾流、AI 问答等
本项目采用 BUSL-1.1(Business Source License 1.1),全文见根目录 LICENSE。