读:Karpathy 的 LLM Wiki——让 AI 帮你维护知识库
原文:Karpathy's LLM Wiki: The Idea File That Changes Everything
2026 年 4 月,Andrej Karpathy(OpenAI 联合创始人、前 Tesla AI 负责人、"vibe coding"一词的创造者)发了一条推文,说他最近把大量的 LLM token 从"操纵代码"转向了"操纵知识",用 LLM 来构建个人知识库 wiki,而不是写代码。这条推文爆了。第二天他又发了一条后续,这次没分享代码也没分享应用,而是分享了一份"idea file",一份描述了整个系统架构和设计理念的 GitHub gist。本文解读这份 idea file 的核心设计,并探讨如何用 Emacs/Org-mode 生态来实现。
Idea File:agent 时代的新分享格式
Karpathy 对 idea file 的定义很明确:
在这个 LLM agent 的时代,分享具体的代码或应用没那么必要了。你只需要分享想法,然后对方的 agent 会根据具体需求定制和构建。
这是一个微妙的转变。过去开发者做了一件有用的东西,分享的是实现(GitHub 仓库、npm 包、Docker 镜像)。接收方 clone、配置、运行。但在每个人都有 LLM agent(Claude Code、OpenAI Codex、Cursor 等)的世界里,分享想法可能比分享代码更有用。
为什么?因为想法是可移植的,代码是特定的。Karpathy 用 Obsidian + macOS + Claude Code,你也许用 VS Code + Linux + Codex。一个共享的 GitHub 仓库需要 fork、适配、调试。一份共享的 idea file 只需要复制粘贴给你的 agent,agent 就会构建一个适配你环境的版本。
Karpathy 说这份 gist"故意保持了一点抽象和模糊,因为可以延伸的方向太多了"。文档最后一句话点明了设计意图:"这份文档唯一的职责是传达模式。你的 LLM 能搞定剩下的。"
Wiki vs RAG:知识复利 vs 一次性检索
这份 idea file 的核心是对比两种使用 LLM 处理文档的方式。
RAG 的问题
大多数人与 LLM + 文档的交互方式是 RAG(检索增强生成):上传一批文件,提问时 LLM 检索相关片段,生成答案。NotebookLM、ChatGPT 文件上传、大多数企业 AI 工具都是这个模式。
Karpathy 指出问题所在:"LLM 每次回答问题时都从头重新发现知识。没有积累。"
问一个需要综合五篇文档的问题,RAG 系统每次都要找出相关片段并拼凑起来。明天再问同一个问题,它重做一遍。什么都不积累,什么都不复利。
Wiki 的方案
Karpathy 的替代方案:"不要在查询时从原始文档检索,而是让 LLM 增量构建和维护一个持久的 wiki,即在你和原始资料之间构建一组结构化的、相互链接的 markdown 文件。"
当你添加新资料时,LLM 不是简单索引它以备后续检索,而是阅读它、提取关键信息、整合到已有的 wiki 中:更新实体页面、修订主题摘要、标注新数据与旧结论的矛盾、根据新证据修正或强化已有的综述。
核心一句话:"知识只编译一次,然后保持更新,而不是每次查询都重新推导。"
| 维度 | 传统 RAG | LLM Wiki |
|---|---|---|
| 知识处理时机 | 查询时(每次提问都重来) | 摄入时(每份资料只处理一次) |
| 交叉引用 | 每次查询临时发现 | 预构建并持续维护 |
| 矛盾检测 | 可能发现不了 | 摄入时即标注 |
| 知识积累 | 无,每次查询从零开始 | 每份资料和每次查询都在复利增长 |
| 输出格式 | 聊天回复(转瞬即逝) | 持久的 markdown 文件 |
| 维护者 | 系统(黑盒) | LLM(透明、可编辑) |
| 人的角色 | 上传资料和提问 | 策展、探索、提出好问题 |
复利效应
Karpathy 反复强调这一点:"wiki 是一个持久的、复利增长的产物。"交叉引用已经建好了,矛盾已经标注了,综述已经反映了你读过的所有内容。每添加一份资料、每问一个问题,wiki 都变得更丰富。
三层架构
Karpathy 定义了三个层次,每层有明确的归属和职责。
第一层:Raw Sources(原始资料)
你积累的原始文档集合,包括文章、论文、图片、数据文件等。这些是 不可变的 :LLM 可以读,但永远不能改。这是你的知识源头。LLM 在 wiki 中犯了错,你可以追溯到原始资料来纠正。
第二层:Wiki(知识库)
LLM 生成的 markdown 文件目录,包含摘要、实体页面、概念页面、对比分析、概述、综述。LLM 完全拥有这一层:创建页面、新资料到来时更新、维护交叉引用、保持一致性。你读它,LLM 写它。
第三层:Schema(配置文件)
一份文档(Claude Code 用 CLAUDE.md ,Codex 用 AGENTS.md ),告诉 LLM wiki 的结构、约定、以及摄入资料、回答问题、维护 wiki 时的工作流程。这是关键配置文件,让 LLM 成为有纪律的 wiki 维护者,而不是普通的聊天机器人。
没有 schema,每次与 LLM 的会话都从零开始。LLM 不知道你的约定、页面格式或工作流程。你每次都要重新解释一切。Schema 就是跨会话的持久记忆,确保一致性,把通用 LLM 变成你的专属 wiki 维护者。
三个操作
Ingest(摄入)
你把新资料放入 raw 目录,告诉 LLM 处理它。一个典型的处理流程为:LLM 阅读资料,与你讨论关键要点,在 wiki 中写摘要页,更新索引,更新相关的实体和概念页面,在活动日志中追加记录。一次摄入可能触及 10-15 个 wiki 页面。
一次摄入不只是创建一个新页面,它会波及整个 wiki。如果你摄入了一篇关于新 transformer 变体的论文,LLM 可能会做如下动作:为论文创建新的摘要页、更新"注意力机制"概念页、更新"缩放定律"页面(如果有新基准数据)、更新作者或机构的实体页、更新对比页面(如果论文与已知模型做了基准对比)、从现有页面添加指向新内容的链接、更新索引、在日志中记录。
Karpathy 有个偏好:"我喜欢一次摄入一份资料,过程中持续跟进,阅读摘要、检查更新、引导 LLM 侧重什么。但你也可以批量摄入多份资料,减少监督次数。"
Query(查询)
你向 wiki 提问。LLM 搜索相关页面,阅读后综合出带引用的答案。答案可以采取多种形式:markdown 页面、对比表、幻灯片(Marp)、图表。
但最重要的洞察是:"好的答案可以回写到 wiki 中作为新页面。"一次对比分析、一个发现都是是有价值的,不应该消失在聊天历史中。这样你的探索和摄入的资料一样在知识库中复利增长。
Lint(健康检查)
定期让 LLM 检查 wiki 的健康状况。检查内容包括:页面间的矛盾、已经被新资料取代的过时结论、孤儿页面、被多次提及但缺少独立页面的概念、缺失的交叉引用、可以通过网络搜索填补的数据空白。
Org-mode 适配方案
Karpathy 的方案以 Obsidian 为前端,但核心设计(markdown 文件 + 目录结构 + git + LLM agent)与 Emacs/Org-mode 生态天然契合。下面是具体的对应关系和适配建议。
目录结构
Org-mode 的方案和原文完全一致,只是文件后缀不同:
my-research/ ├── raw/ # 原始资料(不可变) │ ├── articles/ │ ├── papers/ │ └── assets/ ├── wiki/ # LLM 维护的知识库 │ ├── index.org # 总目录 │ ├── log.org # 活动日志 │ ├── overview.org # 综述 │ ├── concepts/ # 概念页面 │ ├── entities/ # 实体页面 │ ├── sources/ # 资料摘要 │ └── comparisons/ # 对比分析 └── CLAUDE.md # Schema 配置
双向链接:Org-roam 替代 Obsidian Wiki Links
Org-roam 提供与 Obsidian 一模一样的双向链接功能。在 wiki 页面中用 [[roam:概念名]] 创建链接,Org-roam 会自动维护反向链接。这意味着你在"注意力机制"页面链接了"Transformer",在"Transformer"页面就能看到反向链接。在 Emacs 中用 M-x org-roam-node-find 搜索和跳转页面,效果等同于 Obsidian 的快速跳转。
搜索:grep/ripgrep 替代 qmd
Karpathy 提到 qmd(Tobi Lutke 开发的本地 markdown 搜索引擎,支持 BM25 + 向量搜索 + LLM 重排序)。在 wiki 规模不大(100 个资料、几百个页面)时,Karpathy 自己也说 index.org 文件本身就能当索引用。LLM 读一下索引(几千 token),找到相关页面,直接去读。
在这个规模下,ripgrep( rg )完全可以替代 qmd:
# 在 wiki 中搜索关键词 rg "注意力机制" wiki/ # 搜索特定 frontmatter 属性 rg "#+type: concept" wiki/
当 wiki 增长到几百个页面、索引文件本身大到一次读不完时,再考虑引入专门的搜索工具。
Schema:CLAUDE.md 配置 Org-mode 规则
在 CLAUDE.md 中定义 Org-mode 的 wiki 规则,比如:
## Page Conventions Every wiki page MUST have org-mode property drawer: :PROPERTIES: :TITLE: Page Title :TYPE: concept | entity | source-summary | comparison :SOURCES: [list of raw/ files referenced] :RELATED: [list of wiki pages linked] :CREATED: [YYYY-MM-DD Day] :UPDATED: [YYYY-MM-DD Day] :CONFIDENCE: high | medium | low :END: ## Ingest Workflow When I say "ingest [filename]": 1. Read the source file in raw/ 2. Discuss key takeaways with me 3. Create/update a summary page in wiki/sources/ 4. Update wiki/index.org 5. Update all relevant concept and entity pages 6. Append an entry to wiki/log.org
Graph View:org-roam-ui 替代 Obsidian Graph
Obsidian 的图谱视图是它的一大卖点。Org-roam 生态有 org-roam-ui 插件,提供类似的交互式图谱:所有 wiki 页面作为节点,所有 [[roam:...]] 链接作为边。在 Emacs 中用 M-x org-roam-ui-open 启动,浏览器中查看。
总结:对应关系
| Karpathy 方案 | Org-mode 替代 | 说明 |
|---|---|---|
| Obsidian | Emacs + Org-mode | 文件格式从 Markdown 改为 Org |
| Org-roam 双向链接 | 功能一致 | |
| Graph View | org-roam-ui | 浏览器中查看交互式图谱 |
| qmd 搜索 | ripgrep + index.org | 小规模够用,大规模再升级 |
| YAML frontmatter | Org property drawer | Org-mode 原生的元数据格式 |
| CLAUDE.md / AGENTS.md | CLAUDE.md | 内容不变,只是规则适配 Org 格式 |
| Marp 幻灯片 | Org-reveal / ox-beamer | 从 wiki 内容生成演示文稿 |
| Dataview 查询 | org-ql / org-dblock | 对 frontmatter 做 SQL 式查询 |
| Web Clipper | org-web-tools / curl + pandoc | 把网页转为 Org 文件 |
| Git | Git | 完全一致 |
Memex:80 年前的预言
Karpathy 在 idea file 的结尾做了一个历史联系:
这个想法在精神上与 Vannevar Bush 1945 年的 Memex 相近——一个个人的、经过策展的知识存储,文档之间有关联路径。Bush 的愿景更接近这个东西,而不是万维网最终变成的样子:私有的、主动策展的,文档之间的连接与文档本身一样有价值。他没能解决的部分是:谁来维护。LLM 处理了这件事。
1945 年,Vannevar Bush(MIT 工程师、美国科学研究与发展办公室主任)在《大西洋月刊》发表了一篇题为"As We May Think"的文章。他描述了一个叫 Memex(memory + index)的假想设备:一台书桌大小的机器,个人可以将所有书籍、记录和通信存储在缩微胶片上,快速搜索,并创建带有个人批注的文档链接序列(他称之为"关联路径")。
Bush 的核心洞察是:人脑按联想工作,不按字母顺序工作。层级化的归档系统(如图书馆目录)强迫你进入僵化的分类。Memex 让你创建自己的知识路径,把化学论文链接到经济学报告再到历史散文,遵循你自己的逻辑。
他的一句名言:"全新的百科全书形式将会出现,内建一套贯穿全文的关联路径网络。"
Memex 直接启发了 Douglas Engelbart(读到了 Bush 的文章后"被这个想法感染",后来发明了鼠标和个人计算概念)、Ted Nelson(1965 年创造了"超文本"一词)和 Tim Berners-Lee(1989 年的万维网)。
但正如 Karpathy 所观察的,万维网变成了公共的、混乱的,而不是私有的、策展过的。Bush 设想的是个人的:你的知识、你的连接、你的路径。LLM Wiki 更接近那个原始愿景。
Bush 在 1945 年无法解决的核心问题:谁来维护?创建关联路径、更新连接、保持一致性,这些都是繁琐的手工劳动。人类放弃知识系统,是因为维护负担的增长速度超过了它带来的价值。Karpathy 写道:"LLM 不会厌倦,不会忘记更新一个交叉引用,可以在一次操作中触及 15 个文件。wiki 能保持维护,因为维护成本接近于零。"
从哪里开始
Karpathy 的 idea file 不是一个蓝图,而是一颗种子。你把它交给 LLM agent,一起把它培育成适合你领域的东西。
实操建议:从一个主题、10 份资料开始。不需要等完美工具。复制 gist 内容,粘贴给你的 agent(Claude Code、Codex 或其他),让它帮你创建目录结构和 schema 文件。然后开始摄入第一份资料。
有一个简单的检验方法:摄入 10 份资料后,问 wiki 一个需要综合多份资料才能回答的问题。如果结构化的 wiki 给了你单独阅读每份资料时得不到的洞察,说明系统在起作用。