Karpathy「LLM Knowledge Bases」:把知识库当代码仓库管
@yanhua1010 解读 Karpathy 推文:一个词"编译"——Obsidian Vault 是代码仓库,LLM 是编译器;分层、增量、可追溯,附两周最小闭环。
开篇:一个词——"编译"
Karpathy 发了一条推文,讲他怎么用 LLM 构建和管理个人知识库。@yanhua1010 反复读了几遍——不是因为新概念,而是他做的事和作者这几个月在 Obsidian 里折腾的东西结构上撞了,但 Karpathy 用了一个词来概括,作者之前一直没找到:
编译。
把原始资料"编译"成结构化知识。Obsidian Vault 是代码仓库,LLM 是编译器。这个类比一出来,好多之前说不清的感觉突然有名字了。
这课是本系列 Karpathy 工作流的主课:《01 课》讲了 3 步搭建教程,《07 课》讲了自生长三种搭建法——这里把"编译"这套思想彻底讲透。
你的笔记库在腐烂
以下来自 @yanhua1010。评论区有一类反馈反复出现:"我也在用 Obsidian,攒了几百篇笔记,但越攒越乱。我知道里面有好东西,但找不到。"
剪藏了一堆文章,记了不少想法,攒了很多链接。三个月后回头看,大部分变成了死文件——记不住在哪,也记不住讲了什么。传统解法是"定期整理":加标签、补链接、重新分类。作者试了两周就放弃了:靠人来维护笔记库,就跟靠人来做回归测试一样,理论上可以,实际上不可能持续。
Karpathy 换了个思路:别让人整理,让 LLM 整理。而且不是随便整理,是用软件工程的方式来搞——有输入层,有编译层,有输出层;有索引,有健康检查。
靠人定期整理笔记,像"靠人力每天把图书馆所有书重新擦一遍灰":理论上可行,实际上两周就放弃。让 LLM 整理,像"请了个不知疲倦的图书管理员":不累、不忘、不偷懒。
把知识库当代码仓库管
以下来自 @yanhua1010。如果你写过代码,Karpathy 这套东西你会秒懂——这不就是 CI/CD 的知识库版本吗:
软件工程 → 知识库工程
───────────────────────────────
src/ → raw/(原始资料)
build/ → wiki/(知识条目)
logs/ → outputs/(问答归档)
编译器 → LLM
IDE → Obsidian
Lint / CI → 健康检查
增量编译 → 只处理新增/变更的 raw
核心就三件事:
- 分层:原始资料、编译产物、运行时输出,三层分开。你不会把 .class 文件和 .java 文件混在一起,笔记也一样。
- 增量:不用每次全量重建。每天新进来几篇文章,增量编译就好。
- 可追溯:每个知识条目能追到原始来源,每个摘要保留原文引用。出了问题能查到根源——不是"我好像在哪里看过这个说法",而是"来源在 raw/articles/2026-03/ 那篇里,第三段"。
三层像"厨房的生熟分区":raw 是"生鲜区"(原材料不动),wiki 是"成品区"(炒好的菜),outputs 是"点菜单"(客人点过什么、评价如何)。生熟混放,迟早吃坏肚子。
落地方案:三层目录 + 三个摄取入口
以下来自 @yanhua1010 的 Vault 落地方案:
Vault/
├── raw/ # 原始资料,不改
│ ├── articles/ # Web Clipper 剪藏
│ ├── podcasts/ # Podwise 导出
│ └── papers/ # 论文
│
├── wiki/ # 编译产物,LLM 维护
│ ├── indexes/ # 索引(来源清单、概念清单、术语表)
│ ├── concepts/ # 概念条目
│ └── summaries/ # 逐篇摘要
│
├── outputs/ # 运行时输出
│ ├── qa/ # 问答沉淀
│ └── health/ # 健康检查报告
│
├── x/ # X 平台成品
├── 公众号/ # 公众号成品
└── 小红书/ # 小红书成品
他保留了平台内容目录,因为知识库不只是研究用,还要出内容——成品是给读者看的,wiki 是给自己看的,这两个不能混。
摄取:三个入口:
- ① Web Clipper 管网页文章:一键保存,模板里强制写入 source_url、author、published、tags——没有元数据的剪藏跟没剪一样;
- ② Podwise 管播客:自动转录加 AI 摘要,导出 Markdown;
- ③ 手动剪藏管 X 推文和零散内容:Claude Code 的 baoyu-url-to-markdown Skill,丢个链接进去,几秒变干净的 Markdown。
剪藏模板的完整写法见《06 课》(Research Capture),Reader 模式见《04 课》。
编译:这步最关键
以下来自 @yanhua1010。攒了 5 到 10 篇 raw 之后,就可以做第一次"编译"了。在 Obsidian 里打开 Claudian,跟 Claude 说:
读一下 raw/articles/ 里最近新增的文章,为每篇生成摘要,提取概念,更新索引。
然后让它干就行。具体干三件事:
- 逐篇摘要:每篇 raw 产出一份结构化摘要——核心结论、关键证据、疑点、术语,存到 wiki/summaries/;
- 概念抽取:从摘要里提概念,映射到 wiki/concepts/——新概念建条目,老概念补新证据;
- 索引更新:自动维护 All-Sources.md 和 All-Concepts.md。
质量怎么保证?靠 CLAUDE.md。他在里面写了编译规范:摘要的结构模板、概念条目该有哪些字段、命名规则。Claude 每次启动都读,输出就稳了。(CLAUDE.md 详解见《05 课》。)
第一次编译可能要花半小时到一小时。但跑通一次之后,后面增量编译很快——因为只处理新增的 raw。
别攒了 200 篇才想起编译!5–10 篇就做第一次。编译规范先写进 CLAUDE.md,否则每次输出格式漂移。
让每次对话都变成库存:Output 落文件
以下来自 @yanhua1010。Karpathy 方法论里有个设计他觉得特别妙:Output 落文件。
以前他用 AI 的方式:问一个问题,得到答案,关掉;下次类似问题再问一遍。答案全在聊天记录里,等于没有。
现在改了:每次对知识库做复杂提问,结果以 Markdown 文件存到 outputs/qa/:
---
question: "RAG 和轻量索引的适用边界?"
asked_at: 2026-04-03
sources:
- [[S-001 MotherDuck Obsidian RAG]]
- [[C-042 RAG]]
---
# RAG vs 轻量索引
## TL;DR
规模在万级 note 以下,轻量索引够了。
语义搜索需求强或规模更大,上 RAG。
## 结论
...
## 证据
(链接回原始来源)
## 不确定性
...
三个月攒了几十份这样的 Q&A 文件。它们本身就是知识条目——带推理过程和原始来源。下次遇到类似问题,Claude 直接读已有的 Q&A,不用重新推导。
健康检查:给知识库做体检
以下来自 @yanhua1010。这步是大部分人不会想到的——你的笔记库有没有这些情况:同一个概念在三个地方定义不一样;某个条目只有标题没有正文;一堆笔记孤零零没有任何链接指向。
他之前也没在意,直到有一次搜到一条笔记,结论跟另一条完全矛盾,搞不清哪个对——这才意识到知识库也有"技术债",不处理时间越长越乱。
Karpathy 的建议是定期做 Health Checks。他做成了每周任务,让 Claude 检查三样:
- ① 一致性:wiki/concepts/ 里有没有定义冲突?比如"RAG"一处叫"检索增强生成",另一处变成"向量数据库搜索";
- ② 完整性:哪些概念条目缺定义、缺例子、缺来源?
- ③ 孤岛:哪些笔记入链出链都少于 2?该连到哪?
报告存到 outputs/health/,每周一份。做了几周后最大感受:搜到一条笔记,敢直接用了——以前还得想想"这玩意靠谱吗"。
健康检查像"代码的 Lint / CI":每次提交自动跑一遍,揪出命名冲突、空函数、没人调用的死代码。知识库也一样,不体检,技术债越积越多。
别上来就搞 RAG × 两周最小闭环
以下来自 @yanhua1010。这点必须单独说,太多人会在这儿走弯路:一提"AI + 笔记",第一反应是搭 RAG——选 Embedding 模型、搭向量数据库、调切片策略。整套架构搞了一个月,笔记库里还是只有 20 篇文章。
Karpathy 推荐:知识库规模不大时(100 篇文章、40 万词左右),维护几个索引文件就够了——LLM 先读索引定位,再直接阅读相关内容。简单、可靠、零额外成本。等笔记真过了一万条、搜东西找不全时再考虑 RAG(MotherDuck 有篇博文讲了用 DuckDB 给 Obsidian 做向量检索的完整方案,到时候再看不迟)。
两周跑通最小闭环(不需要任何额外工具,Obsidian + 你用的 LLM 就行):
- 第一周:搭 raw → wiki 最小循环——建三个目录(raw / wiki / outputs),装 Web Clipper 配好模板,开始剪藏;攒够 5–10 篇做第一次编译(摘要、提概念、建索引)。
- 第二周:让 Q&A 开始积累,启动第一次健康检查——复杂问答结果存 outputs/qa/,让 LLM 扫一遍 wiki 输出第一份健康报告,按报告补缺失、加链接。
两周后你有一个能持续运转的小系统。规模不重要,流程跑通了就行——后面就是往 raw/ 里不断喂素材,让编译器持续工作。
知识库的"GitHub 时刻":Karpathy 推文最后一句——"这套东西目前仍像一堆 hacky scripts,但有空间做成 incredible new product。"作者想到 2006 年前的版本控制:svn、cvs、git 命令行,只有程序员用;后来有人做成 GitHub,整个协作方式都变了。
个人知识库可能正在类似节点:今天是 Obsidian + LLM + 手搓脚本的组合,看着粗糙,但底层范式已定——把知识当代码来管理:有输入,有编译,有产物,有测试。
程序员:你不需要学任何新东西,代码仓库怎么管,知识库就怎么管。不写代码:也别被"编译"吓住——说白了就是让 AI 帮你定期整理笔记,而且比你自己整理得好得多,因为它不累,不忘,不偷懒。
术语翻卡:点卡片看解释
自测一下:点问题展开参考答案
Vault 对应代码仓库,LLM 对应编译器,Obsidian 对应 IDE,健康检查对应 Lint / CI。
理论上可以,实际上不可能持续——作者自己试了两周定期整理就放弃了;所以换思路:别让人整理,让 LLM 整理。
5 到 10 篇。三件事:逐篇摘要(核心结论/关键证据/疑点/术语→wiki/summaries/)、概念抽取(新概念建条目/老概念补证据→wiki/concepts/)、索引更新(维护 All-Sources.md 和 All-Concepts.md)。
以前问 AI 的答案全在聊天记录里等于没有;现在每次复杂提问的结果存成 outputs/qa/ Markdown(含问题/时间/来源/结论/证据/不确定性),下次直接读,不用重新推导——每聊一次,知识库增加一层。
100 篇文章/40 万词以内,维护几个索引文件就够(LLM 先读索引定位再直接读内容),简单可靠零额外成本;等笔记过一万条、搜东西找不全时再考虑 RAG。