让 LLM 帮你”记账”:LLM Wiki 桌面应用上手指南
Andrej Karpathy 去年写过一篇 gist,叫 LLM Wiki。核心思路很简单,让 LLM 持续构建并维护一个结构化的 Markdown Wiki,你只负责找资料和提问。
理念是好理念,但落地有个问题。原版是个抽象的方法论文档,你得自己配 Claude Code,自己建目录结构,自己维护一切。
最近我看到一个项目,叫 llm_wiki,是 nashsu 把 Karpathy 的理念做成了一个完整的桌面应用。
跨平台的,macOS、Windows、Linux 都能用。Tauri 写的。
我试用了一下,有点意思。
它跟传统 RAG 有什么不一样
先聊聊传统做法。
你用个 RAG 系统,把文档丢进向量数据库,每次查询的时候检索相关片段。这方式有个问题,每次查询都是从头开始,知识没有积累。
LLM Wiki 不一样。
它让 LLM 持续构建并维护一个结构化的 Markdown Wiki。每次导入新资料,LLM 会创建摘要页、更新实体页和概念页、建立双向链接、更新索引。
知识是复利的。
导入第一篇文章,可能创建 5-8 个文件。导入第十篇的时候,LLM 会更新已有页面,标注跨资料关联,指出不同资料的矛盾观点。
这就像滚雪球。越往后,知识库的价值越大。
Karpathy 原版打了个比方,挺形象的。
Obsidian 是 IDE,LLM 是程序员,Wiki 是代码库。
nashsu 这个版本,把这套方法论做成了开箱即用的桌面应用。
目录结构
LLM Wiki 的目录结构很清晰。
项目根目录/
raw/ # 原始资料(LLM 只读)
assets/ # 图片、附件
文章标题.md # 剪藏的文章
wiki/ # LLM 维护的知识库
index.md # 内容索引目录
log.md # 操作日志
purpose.md # 知识库的目标和方向(这个版本新增)
schema.md # 规则和配置
source-xxx.md # 资料摘要页
实体名.md # 实体页(工具、产品、人物)
概念名.md # 概念页(方法论、模式)
overview.md # 全局摘要(每次导入自动更新)
这个版本加了个 purpose.md,挺聪明的设计。
原版只有 schema(知识库怎么运作),没有地方放 why(知识库为什么存在)。purpose.md 就是放目标、关键问题、研究范围、evolving thesis 的地方。
LLM 每次导入和查询都会读这个文件,保持方向感。
页面类型有讲究。
资料摘要页叫 source-{关键词}.md,比如 source-claude-code-n8n-workflow.md。
实体页直接用名字,比如 claude-code.md、n8n.md。
概念页也是直接用名字,比如 two-layer-automation.md。
每个页面都有 frontmatter,记录标签、来源、作者、日期这些信息。
核心功能
1. 两步链式思考导入
原版是一次性导入,LLM 边读边写。这个版本分成了两步,质量明显更高。
第一步(分析):LLM 读资料 → 结构化分析 - 关键实体、概念、论点 - 与已有知识库的连接 - 与已有知识的矛盾和张力 - 对知识库结构的建议 第二步(生成):LLM 拿分析结果 → 生成 Wiki 页面 - 带 frontmatter 的摘要页 - 实体页、概念页带交叉引用 - 更新 index.md、log.md、overview.md - 需要人工审查的项目 - Deep Research 搜索查询
还有一些增强。
SHA256 增量缓存,文件内容哈希后,不变的自动跳过,省 token 省时间。
持久化导入队列,串行处理,崩溃能恢复,失败自动重试最多 3 次。
文件夹导入,递归导入保持目录结构,文件夹路径作为 LLM 分类上下文(比如 “papers > energy” 帮助分类)。
源追溯,每个生成的 Wiki 页面都有 sources: [] 字段,链接回贡献的原始文件。
2. 知识图谱 + 相关性模型
原版只提到了 [[wikilinks]] 交叉引用,没有图谱分析。这个版本做了完整的知识图谱可视化和相关性引擎。
四信号相关性模型:
| 信号 | 权重 | 描述 |
|---|---|---|
| 直接链接 | ×3.0 | 通过 [[wikilinks]] 链接的页面 |
| 源重叠 | ×4.0 | 共享同一原始来源的页面(通过 frontmatter sources[]) |
| Adamic-Adar | ×1.5 | 共享共同邻居的页面(按邻居度数加权) |
| 类型亲和 | ×1.0 | 同类型页面加分(实体↔实体,概念↔概念) |
图谱可视化用 sigma.js + graphology + ForceAtlas2。
节点颜色按页面类型或社区,大小按链接数缩放。边厚度和颜色按相关性权重(绿色=强,灰色=弱)。悬停交互,邻居保持可见,非邻居变暗,边高亮显示相关性分数。
3. Louvain 社区检测
这个原版没有。用 Louvain 算法 自动发现知识聚类。
自动聚类,根据链接拓扑发现哪些页面自然分组,不依赖预定义的页面类型。
类型/社区切换,可以在按页面类型着色和按发现的知识聚类着色之间切换。
凝聚力评分,每个社区按内部边密度评分(实际边数/可能边数),低凝聚力聚类(< 0.15)标记警告。
4. Graph Insights — 意外连接和知识缺口
系统自动分析图谱结构,展示可操作的洞察。
意外连接:
- 检测意外关系,跨社区边、跨类型链接、外围↔枢纽耦合
- 综合意外分数排名最值得注意的连接
- 可标记为已审查,不再出现
知识缺口:
- 孤立页面(度数≤1)— 与知识库其他部分连接很少或没有的页面
- 稀疏社区(凝聚力< 0.15,≥3 页面)— 内部交叉引用弱的知识领域
- 桥接节点(连接 3+ 聚类)— 连接多个知识领域的关键枢纽页面
交互式:
- 点击任何洞察卡片,在图谱中高亮对应节点和边
- 知识缺口和桥接节点有 Deep Research 按钮 — 触发 LLM 优化的研究
5. Deep Research
当 LLM 发现知识缺口时。
用 Tavily API 做 web 搜索,找到相关来源并提取完整内容。
每个主题多个搜索查询,LLM 在导入时生成,针对搜索引擎优化。
LLM 优化的研究主题,从 Graph Insights 触发时,LLM 读 overview.md + purpose.md 生成领域特定主题和查询。
用户确认对话框,研究主题和搜索查询在开始前显示供审查。
LLM 综合发现到 Wiki 研究页面,带与现有 Wiki 的交叉引用。
自动导入,研究结果自动处理提取实体/概念到 Wiki。
6. Chrome Web Clipper
原版提到用 Obsidian Web Clipper。这个版本做了专用的 Chrome 扩展(Manifest V3)。
Mozilla Readability.js 准确提取文章(去掉广告、导航、侧边栏)。
Turndown.js HTML → Markdown 转换,支持表格。
项目选择器,选择剪藏到哪个 Wiki(支持多项目)。
本地 HTTP API(端口 19827),扩展↔应用通信。
自动导入,剪藏内容自动触发两步导入流程。
7. 多格式文档支持
原版专注文本/Markdown。这个版本支持结构化提取,保持文档语义。
| 格式 | 方法 |
|---|---|
| pdf-extract (Rust) 带文件缓存 | |
| DOCX | docx-rs — 标题、粗体/斜体、列表、表格 → 结构化 Markdown |
| PPTX | ZIP + XML — 逐页提取带标题/列表结构 |
| XLSX/XLS/ODS | calamine — 正确单元格类型、多工作表支持、Markdown 表格 |
| 图片 | 原生预览(png, jpg, gif, webp, svg 等) |
| 视频/音频 | 内置播放器 |
| 网页剪藏 | Readability.js + Turndown.js → 干净 Markdown |
8. 向量搜索(可选)
这个版本支持可选的向量语义搜索。
通过任何 OpenAI 兼容的 /v1/embeddings 端点嵌入。
LanceDB(Rust 后端)存储,快速 ANN 检索。
余弦相似度找到语义相关页面,即使没有关键词重叠。
结果合并到搜索,提升现有匹配 + 添加新发现。
基准测试,启用向量搜索后整体召回率从 58.2% 提升到 71.4%。
安装
这个版本是桌面应用,不是 Claude Code skill。
系统要求:
- macOS(ARM + Intel)、Windows、Linux
- Tauri v2 构建的本地桌面应用
安装方式:
GitHub Releases 下载对应平台的安装包。
- macOS:.dmg(ARM 和 Intel)
- Windows:.msi
- Linux:.deb / .AppImage
或者从源码构建。
git clone https://github.com/nashsu/llm_wiki.git cd llm_wiki # 安装 Tauri 依赖,然后构建
初始化:
启动应用,选择或创建项目目录。
应用会自动创建目录结构,包括 raw/、wiki/、.llm-wiki/ 等。
场景模板可选,Research、Reading、Personal Growth、Business、General,每个预配置了 purpose.md 和 schema.md。
配置 LLM:
设置里配置 LLM 提供商、API key、模型、上下文窗口大小(4K 到 1M tokens)、语言。
支持多提供商 LLM。
界面布局
三栏布局。
左侧:知识树 / 文件树,图标侧边栏切换 Wiki、Sources、Search、Graph、Lint、Review、Deep Research、Settings。
中间:聊天窗口,多对话支持,可创建、重命名、删除对话。
右侧:预览面板,可拖拽调整左右面板大小。
活动面板:实时处理状态,显示逐个文件导入进度。
思考/推理显示:对于输出 <think> 块的 LLM(DeepSeek、QwQ 等),滚动 5 行显示,生成时透明度渐变,完成后默认折叠,点击展开。
KaTeX 数学渲染:全文档支持 LaTeX 数学公式,行内 $...$ 和块级 $$...$$。
引用参考面板:每个回复可折叠部分显示使用了哪些 Wiki 页面,按类型分组带图标。
其他特性
多对话支持 — 创建、重命名、删除对话,每个对话独立持久化到 .llm-wiki/chats/{id}.json。
可配置上下文窗口 — 滑块从 4K 到 1M tokens,60/20/5/15 分配给 Wiki 页面/聊天历史/index/系统提示。
审查系统 — LLM 在导入时标记需要人工判断的项目,预定义操作类型(创建页面、Deep Research、跳过),LLM 预生成优化的 web 搜索查询。
智能级联删除 — 删除源文件时移除 Wiki 摘要页,相关 Wiki 页面只移除被删除的源,不删除整个页面,index.md 清理,死链 [[wikilinks]] 清理。
国际化 — 英文 + 中文界面。
Obsidian 兼容 — Wiki 目录可直接作为 Obsidian vault 使用,自动生成 .obsidian/ 目录带推荐设置。
跨平台路径处理 — 统一 normalizePath(),反斜杠→正斜杠,Unicode 安全字符串处理。
核心理念
这个项目的 README 里有段话,我觉得说到了点子上。
维护知识库的繁重工作不是阅读和思考,而是记账——更新交叉引用、保持摘要最新、标注矛盾、维护一致性。人类因维护负担增长快于价值而放弃 Wiki。LLM 不会厌倦,不会忘记更新引用,一次操作可以触及 15 个文件。维护成本趋近于零,Wiki 就能持续运转。
人类的工作,是策划资料来源、引导分析方向、提出好问题、思考意义。
LLM 的工作,是总结、交叉引用、归档、记账——其余一切。
这分工挺合理的。
我们以前做不成个人 Wiki,不是不懂方法,不是没有工具,是维护成本太高了。你记十篇笔记还行,记一百篇的时候,光维护链接和更新摘要就能把你累死。
LLM 不觉得累。它一次操作可以触及 15 个文件,更新所有交叉引用,标注所有矛盾,保持所有摘要最新。
维护成本趋近于零,这件事就能持续运转了。
Karpathy 的原版是抽象的方法论,nashsu 这个版本把它做成了开箱即用的工具。
怎么开始
项目地址在这里。
GitHub:https://github.com/nashsu/llm_wiki
注意是下划线,不是横杠。
下载安装包,安装,启动。
配置 LLM 提供商和 API key,选择或创建项目目录,就可以开始了。
导入第一份资料,开始提问,查看知识图谱。
就这么简单。