
GitHub: https://github.com/reorproject/reor
Reor 是把「人类写作」和「LLM 检索」做成对等两个生成器、共享同一向量库的本地优先 AI 笔记桌面应用——曾经是 GitHub 上极少数把「AI 原生 + Local-First」都做到位的范式项目,2025-05 主开发停摆,2026-03 被归档,但它的 dual-generator 架构与 LanceDB 实战至今仍是同类产品最有借鉴价值的参考实现。
维度 | 数据 |
|---|---|
GitHub | https://github.com/reorproject/reor |
Star / Fork | 8,563 / 525 |
代码行数 | 71,015 行(真代码约 35,715 行:TS 23,744 + TSX 11,971) |
项目年龄 | 31.2 个月(首提交 2023-10-31,最后提交 2025-05-13) |
开发阶段 | 已放弃(2026-03-07 archive;近 365 天 commit = 0) |
贡献模式 | 独立开发者(samlhuillier 占 64%,34 名贡献者) |
热度定位 | 大众热门(8.5K stars + 113 open issues) |
质量评级 | 代码 A- / 文档 B+ / 测试 C |
License | AGPL-3.0(强传染性) |
最新版本 | v0.2.31(95 tag / 79 Release) |
主开发者 Sam L'Huillier(samlhuillier) 是英国司法部(ai.justice.gov.uk)的 AI 工程师,账号年龄 2.5 年,个人仓库 39 个,主题集中在 LLM 微调、SQL 生成、RAG——这三条线索与 Reor 的产品定位完全自洽。他以 reorproject 组织壳包装这个项目,是个人项目产品化的常见动作。公开兴趣横跨「LLM 微调 / SQL 生成 / RAG」,意味着他并不是从「非技术人写个 AI 笔记 app」的角度出发,而是从「政府/法律场景对本地化的硬需求 + LLM 桌面化拐点」的工程师视角切入。
Sam 看到的是「AI 笔记工具」品类的三重原罪:
而 PKM 工具里「知识是过程不是状态」的共识(Obsidian/Logseq 早已证明双向链接 + 反向索引才是真正范式)告诉他:AI 应该是放大既有写作流,而不是替代。
核心是 Dual-Generator(双生成器):把「人类写作」和「LLM 检索」做成对等的两个生成器,共享同一向量库。人类切换文件时 Related notes sidebar 实时显示语义相似的旧笔记,AI 既能做 Q&A 也能做写作伴读。
由此衍生的工程取舍非常清晰:
.md 形式落盘,不锁格式v0.1.x 核心 RAG、v0.2.x 写作助手 + 多平台打包、v1.0 计划(自定义嵌入、Synced Vault、插件 API、移动端)——这四件事任意一件都是 6 个月以上工作量,单人项目难承,作者清楚这是「个人 + 社区」能维护的极限。2025-05 仓库停摆、2026-03 归档,意味着 v1.0 路线被「搁置」而非「取消」——保持项目可被接手而非僵死。组织壳 + AGPL-3.0 + 没有融资信号告诉我们:作者没有走商业化 SaaS 路线,这条项目从一开始就是「做给同类人用的工具」,而不是「做成公司」。
window.database.search 入口,是「AI 工具如何嵌入既有工作流」的范式参考。combineAndRankResults = vectorScore × 0.7 + keywordScore × 0.3,不依赖任何后端服务——任何本地 RAG、浏览器内 RAG 都该有。ragnote_table_<model>_<dir>,强隔离。30k+ LoC 的 Electron 应用决策 | 方案 | Trade-off | 可迁移性 |
|---|---|---|---|
Electron 三层分离 + contextBridge 窄 API | createIPCHandler<T> 工厂把 100+ IPC 通道强类型化 | 维护成本高,但比 nodeIntegration 安全得多 | 高 |
LanceDB 表名 = <model>_<dir_hash> 强隔离 | schema 漂移时 drop & recreate | 换模型要重新索引全库,但避免误用 | 高 |
双生成器 = 同向量库 + 两种 UI | Q&A 与 Related notes 走同一 window.database.search | Related notes 用前 500 字而非光标 chunk,避免性能灾难 | 极高 |
chokidar + 渲染层主动索引 | 文件监听只通知,不直接嵌 | 「文件树更新」和「向量库更新」分两步 | 高 |
LanceDB schema 自愈 | 检测 schema 不一致直接重建表 | 粗暴但解决了 LanceDB 0.4.x 痛点 | 中 |
维度 | Reor | AnythingLLM | Obsidian + Copilot | Logseq | Khoj |
|---|---|---|---|---|---|
定位 | AI 原生 PKM | LLM 工作台 | PKM 装上 AI 插件 | 块状 PKM | Obsidian 内 AI 助手 |
Star 数 | 8.5k | ~32k | Obsidian 数百万 | ~36k | ~30k+ |
AI 集成方式 | 原生(同向量库) | 工作台式 | 第三方插件 | 第三方插件 | 寄生式 |
本地优先 | ✅ 默认 | ❌ 默认 Docker | ⚠️ 默认云同步 | ✅ | ✅ |
编辑器类型 | Markdown | 无(聊天界面) | Markdown | Outliner | 无(聊天界面) |
笔记可移植 | ✅ 纯 .md | ⚠️ 部分导出 | ✅ 纯 .md | ⚠️ 自有格式 | ❌ |
License | AGPL-3.0 | MIT | Obsidian 商业 | AGPL-3.0 | AGPL-3.0 |
维护状态 | 已归档 | 活跃 | 活跃 | 活跃 | 活跃 |
AI 时代的 Obsidian 替代品,目标用户是「对隐私敏感、对 AI 重度、愿意为软件折腾的人」——典型画像:研究员、律师、医生、独立开发者。归档后这块留给 Khoj、Logseq 插件生态、AnythingLLM Desktop 补位。
LanceDBTableWrapper.deleteDBItemsByFilePaths 直接吞掉错误(「no need to throw error」 注释)electron/main/index.ts + electron/preload/index.ts — Electron 三层 + IPC 工厂范式electron/main/vector-database/lance.ts + lanceTableWrapper.ts — LanceDB schema 自愈与多模型隔离electron/main/llm/models/ollama.ts — Ollama 三级降级src/components/Sidebars/SimilarFilesSidebar.tsx — 双生成器的 Related notes 侧栏src/lib/db.ts — hybridSearch 客户端实现src/components/Editor/BacklinkExtension.tsx — ProseMirror plugin 实现 inline suggestion资源 | 链接 |
|---|---|
DeepWiki | https://deepwiki.com/reorproject/reor(已收录,含架构详解) |
Zread.ai | 未收录(403) |
关联论文 | 无 |
在线 Demo | 无(纯本地桌面 App) |
归档前官方文档 | https://www.reorproject.org/docs/documentation/(域名已跳转,可能下线) |
Discord 社区 | https://discord.gg/b7zanGCTUY |