SolverNote: 您的本地优先、由 AI 驱动的第二大脑。
SolverNote 是一款桌面知识管理应用,旨在将强大的本地 AI 功能与流畅的笔记体验相结合。所有笔记、数据甚至 AI 模型都完全存储在您的本地计算机上,确保了极致的隐私和数据所有权。无需订阅,无需云端依赖。
- ✍️ 智能 Markdown 编辑器: 提供一个功能丰富的 Markdown 编辑器,支持实时预览、语法高亮和便捷的快捷工具栏。
- 🧠 本地 AI 驱动:
- 上下文感知聊天: 与内置的 AI 助手 (Solver) 对话,它可以理解您当前正在撰写或查看的笔记内容,提供更精准的回答和建议。
- 智能关联 (RAG): 在您撰写或查看笔记时,AI 会在侧边栏自动浮现语义上相关的其他笔记片段,即使它们没有共享任何关键词。这有助于您发现知识间的深层联系。
- 🔒 100% 本地优先与隐私保护:
- 所有笔记都以纯文本 Markdown 文件的形式存储在您本地的
notes文件夹中。 - AI 模型 (
.gguf格式) 下载并运行在您的设备上,您的任何数据都不会离开您的计算机。
- 所有笔记都以纯文本 Markdown 文件的形式存储在您本地的
- ⚡ 高性能向量搜索: 利用
LanceDB在本地构建向量索引,实现笔记内容的毫秒级语义搜索。 - 📂 文件系统集成:
- 通过
chokidar实时监听文件变化,您在外部编辑器中对notes文件夹的任何修改都会被应用自动索引和同步。 - 直观的文件树视图,方便您快速导航。
- 通过
- 🎨 现代化 UI:
- 基于 Vue 3 和 Pinia 构建,响应迅速。
- 支持浅色、深色模式,并可跟随系统主题自动切换。
- 简洁的三栏式布局,逻辑清晰。
| 类别 | 技术 |
|---|---|
| 桌面框架 | Electron |
| 前端 | Vue 3 (Composition API), Vite, Pinia, Vue Router |
| 样式 | Sass/SCSS |
| AI 核心引擎 | node-llama-cpp (用于在本地 CPU 上运行 GGUF 模型) |
| 向量数据库 | @lancedb/lancedb (用于本地向量存储与搜索) |
| Markdown | markdown-it, highlight.js (代码高亮) |
| 构建与打包 | Electron Builder |
| 文件系统 | fs-extra, chokidar |
- Node.js (推荐 v18.x 或更高版本)
npm或yarnGit
-
克隆仓库
git clone https://github.com/git-hub-cc/SolverNote.git cd SolverNote -
安装依赖
npm install
-
运行开发环境
npm run dev
此命令会同时启动 Vite 开发服务器 (用于前端 UI) 和 Electron 主进程。应用启动后,您会看到一个窗口。
-
下载 AI 模型 (重要!) 应用首次运行时,核心 AI 功能是不可用的,因为缺少模型文件。
- 导航到应用左侧菜单的 "Settings" 页面。
- 您会看到 "AI 模型" 部分列出了两个必需的模型 (一个用于对话,一个用于嵌入/搜索)。
- 点击 "下载" 按钮,等待模型下载完成。
- 下载完成后,请重启应用 (
Ctrl+C停止开发服务器后,重新执行npm run dev),以便 Electron 后端能加载新下载的模型。 - 您可以在 "AI 服务状态" 面板中确认模型是否已 "准备就绪 (Ready)"。
要为您的操作系统打包一个可分发的应用,请运行:
npm run build构建完成后,安装包将出现在项目根目录下的 dist 文件夹中。
SolverNote 遵循标准的 Electron 应用架构,分为两个主要进程:
- Main Process (主进程) -
electron/- 负责创建和管理应用窗口 (
main.js)。 - 处理所有与操作系统底层交互的逻辑,如文件读写 (
handlers.js)、IPC 通信等。 - 承载所有 AI 密集型任务:
services/llmService.js: 加载对话模型 (如 Qwen) 并处理聊天流。services/vectorService.js: 加载嵌入模型 (如 BGE),创建文本向量,并与 LanceDB 交互进行相似性搜索。services/modelManager.js: 负责下载和管理模型文件。
- 负责创建和管理应用窗口 (
- Renderer Process (渲染进程) -
src/- 负责应用界面的展示和用户交互,是一个完整的 Vue 3 单页应用。
- 通过
preload.js暴露的electronAPI与主进程进行安全的异步通信。 - 使用 Pinia (
src/stores/) 管理全局状态,如笔记列表、AI 状态等。
-
笔记索引 (Indexing):
- 应用启动或
notes文件夹发生变化时,chokidar会触发事件。 - 主进程的
vectorService读取笔记内容,使用 BGE 嵌入模型将其转换为向量。 - 生成的向量与笔记元数据 (ID, 标题, 文本块) 一同存入本地的 LanceDB 数据库。
- 应用启动或
-
智能关联 (Semantic Search / RAG):
- 当用户在 UI 中查看一篇笔记时,渲染进程通过 IPC 调用主进程的
vectors:search方法。 vectorService将当前笔记的标题或内容作为查询,在 LanceDB 中搜索最相似的向量。- 返回的相似笔记片段最终展示在 AI 侧边栏中。
- 当用户在 UI 中查看一篇笔记时,渲染进程通过 IPC 调用主进程的
本项目基于 ISC License 许可。详情请见 LICENSE 文件。


