stoneskin (Mr. Sun)

Personal homepage of Mr Sun - AI Solutions Architect, Tech Lead & AWS Cloud Specialist: resume, selected projects, and teaching archive

Karpathy《LLM Wiki》详细摘要:三层架构与三个操作

← 返回目录

来源(一手原文):Andrej Karpathy《LLM Wiki》,GitHub Gist,2026-04-04,https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f 导读见 karpathy-llm-wiki-guide.md。本篇是详细摘要——原理、三层、三操作、索引/日志、落地步骤、一个现成的实现(Graphify),写到不看原文也能学到精髓。 原文 174 行,是一份 idea file(想法文件),不是代码:它只讲模式,不规定具体实现。目录结构、schema 写法、页面格式、工具选择都由你和你的 agent 按自己的域定。

1. 核心思想:从”每次重算”到”编译一次”

1.1 RAG 的问题:不积累

大多数人用 LLM 处理文档的方式是 RAG:上传一堆文件,提问时 LLM 检索相关片段、生成答案。这能用,但 LLM 每次都在从头重新发现知识——没有积累。问一个要综合五份文档的微妙问题,LLM 每次都得重新找、重新拼相关碎片。什么都没积累下来。NotebookLM、ChatGPT 文件上传、大多数 RAG 系统都是这个路子。

1.2 编译式 wiki:知识一次编译、持续保鲜

换一个做法:不只在提问时从原文检索,而是让 LLM 增量地建一个持久的 wiki——一个结构化、互相链接的 markdown 文件集合,夹在你和原始资料之间。新资料进来,LLM 不只是把它编个索引留待以后检索;它读它、抽出关键信息、合进已有的 wiki——更新实体页、修订主题摘要、标出新数据与旧结论矛盾的地方、强化或挑战正在形成的综合。知识编译一次,然后保持最新,而不是每次提问都重新推导。

关键区别:wiki 是一个持久的、不断复利的产物。交叉引用已经在那了。矛盾已经标出来了。综合已经反映了你读过的所有东西。每加一个资料、每问一个问题,wiki 就更富一点。

1.3 分工:人做策展,LLM 做记账

你永远(或几乎永远)不自己写 wiki——LLM 写、维护全部内容。你负责找资料、探索、问对问题。LLM 做所有的苦活——总结、交叉引用、归档、记账,这些正是让知识库长期有用的事。

实际做法:Karpathy 一边开着 LLM agent,一边开着 Obsidian。LLM 根据对话做修改,他实时浏览结果——跟链接、看图谱、读更新过的页面。”Obsidian 是 IDE,LLM 是程序员,wiki 是代码库。”

1.4 适用范围

这个模式能用在很多场景:

2. 三层架构

2.1 第一层:Raw sources(原文层)——不可改的真相来源

你精选的原始资料集合:文章、论文、图片、数据文件。不可变——LLM 只读不改。这是你的真相来源(source of truth)。

要点:精选(curated)是关键词——不是什么都往里塞,而是你挑过的、值得长期保存的资料。原文层不动,wiki 层才敢大胆改;出了问题永远能回溯到原文核对。

2.2 第二层:The wiki(wiki 层)——LLM 全权所有的 markdown

一个 LLM 生成的 markdown 文件目录:摘要、实体页、概念页、比较、总览、综合。LLM 完全拥有这一层:它建页面,新资料进来时更新页面,维护交叉引用,保持整体一致。你读它,LLM 写它。

页面种类(原文列的):summaries(摘要)、entity pages(实体页)、concept pages(概念页)、comparisons(比较)、overview(总览)、synthesis(综合)。实际长什么样由你的域定。

2.3 第三层:The schema(纪律层)——人机共写的配置文件

一个文档(Claude Code 用 CLAUDE.md,Codex 用 AGENTS.md),告诉 LLM:wiki 怎么组织、约定是什么、吃进资料、回答问题、维护 wiki 时按什么流程走。这是关键配置文件——它把 LLM 从通用聊天机器人变成有纪律的 wiki 维护者。你和 LLM 随着摸索、按你的域共同演化它。

为什么 schema 是关键:没有 schema,LLM 每次都是一次性回答;有了 schema,它每次会话都按同一套纪律行事(先读 schema,再动手)。schema 是”让 LLM 稳定地做同一件事”的机制——这正是 harness 的思想(规则导出、纪律文件)。

3. 三个操作

3.1 Ingest(吃进):一个资料能碰 10–15 个页面

你把新资料丢进原文集合,告诉 LLM 处理它。示例流程:LLM 读资料、跟你讨论关键要点、在 wiki 里写一页摘要、更新 index、更新 wiki 里相关的实体页和概念页、往 log 里追加一条。一个资料可能碰到 10–15 个 wiki 页面。

Karpathy 个人偏好一次只吃一个资料、全程参与——他读摘要、检查更新、指导 LLM 强调什么。但也可以批量吃很多资料、少监督。按你的风格定,然后把流程写进 schema,供以后会话用。

要点:ingest 不是”存起来”,是”读进去并合进已有的知识”——更新、修订、标矛盾。一次 ingest 的产出是 wiki 的一次进化。

3.2 Query(问):好的答案要存回 wiki

你对着 wiki 提问。LLM 找相关页面、读它们、综合出带引用的答案。答案的形式随问题而定——markdown 页、比较表、幻灯片(Marp)、图表(matplotlib)、画布。

重要洞见:好的答案可以作为新页面存回 wiki。 你要来的比较、做的分析、发现的联系——这些都有价值,不应该消失在聊天记录里。这样你的探索就像吃进的资料一样,在知识库里复利。

3.3 Lint(体检):定期健康检查

定期让 LLM 给 wiki 做健康检查。查:

LLM 还擅长建议新的调查问题和新的资料来源。这让 wiki 在长大过程中保持健康。

4. 索引与日志:规模化的两个文件

4.1 index.md(目录):先读它,再钻进去

内容导向的目录:wiki 里每页列出来,带链接、一句话摘要、可选的元数据(日期、来源数)。按类别组织(实体、概念、来源等)。LLM 每次 ingest 都更新它。回答问题时,LLM 先读 index 找相关页面,再钻进去。

这个办法在中等规模下”出乎意料地好”(~100 份资料、几百页),而且不需要 embedding 的 RAG 基建。索引就是检索——先读目录,再读正文。

4.2 log.md(时间线):可 grep 的历史

时间导向的、只追加的记录:发生了什么、什么时候——ingest、query、lint pass。实用技巧:每条用一致的前缀开头(例如 ## [2026-04-02] ingest | Article Title),这样 log 就能用简单的 unix 工具解析——grep "^## \[" log.md | tail -5 给你最近 5 条。log 给出 wiki 演化的时间线,也帮 LLM 理解最近做了什么。

index 是”有什么”(空间),log 是”发生了什么”(时间)。两个文件分工不同。

5. 可选工具

到某个时候,你可能想建小工具帮 LLM 更高效地操作 wiki。最明显的是 wiki 页面的搜索引擎——小规模下 index 文件就够,但 wiki 长大后你想要真正的搜索。

Karpathy 点名的工具是 qmd(https://github.com/tobi/qmd):本地 markdown 搜索引擎,混合 BM25/向量搜索 + LLM 重排,全在设备上;有 CLI(LLM 可以 shell 出去调它)和 MCP server(LLM 可以把它当原生工具用)。也可以自己 vibe-code 一个简单的搜索脚本——需要时再说。

6. 实用技巧(原文的 tips)

7. 为什么能成

维护知识库最烦的部分不是读和想——是记账:更新交叉引用、保持摘要最新、标出新数据与旧结论矛盾的地方、保持几十个页面一致。人放弃 wiki,是因为维护负担长得比价值快。LLM 不会烦、不会忘更新一个交叉引用、一次能改 15 个文件。wiki 能维持下去,是因为维护成本近零。

人的工作是:精选资料、指导分析、问好问题、想清楚这一切意味着什么。LLM 的工作是其余一切。

这个想法在精神上与 Vannevar Bush 1945 年的 Memex 相通——个人、精选的知识库,文档之间靠关联小径组织。Bush 的愿景比后来的 web 更接近这个:私人、主动精选、文档之间的联系与文档本身同等重要。他解决不了的那部分是”谁来维护”。LLM 解决了。

8. 原文没讲什么(注意点)

9. 落地步骤与三处用途的映射

本节是注:原文没写这三处映射,是按你的三件事对出来的。

9.1 通用落地步骤

  1. 选一个域(越小越好,先跑通再扩大)。
  2. 建三层:raw/(原文,不可改)、wiki/(LLM 写的 markdown)、schema 文件(CLAUDE.md 或 AGENTS.md,写清组织、约定、三操作流程)。
  3. 把 Karpathy 的 gist 贴给你的 agent,让它按你的域实例化 schema(共写第一版)。
  4. 一次吃一个资料:agent 读、讨论要点、写摘要页、更新 index 与相关页、记 log;你全程看,指导强调什么。
  5. 问问题:对着 wiki 问,好的答案存回 wiki 当新页面。
  6. 定期 lint:让 agent 体检(矛盾、过期、孤页、缺页、缺引用、数据缺口),按结果补资料或修页面。
  7. 需要时再加工具:先靠 index + log 跑到 ~100 份资料;大了再上 qmd 或自己写搜索。

9.2 映射到 open-memex

9.3 映射到本地文件组织

9.4 映射到 WorkBuddy 的 AI harness

10. 一个现成的实现:Graphify(代码库上的编译式知识图谱)

来源:Graphify-Labs/graphify(GitHub,Apache-2.0,v0.9.99,2026-10-30 刚更新;~14 万 stars)。这是 Karpathy 模式在代码库上的一个现成实现——它建的图就是 wiki 的一种形态。评测数字是 README 自报的,未独立验证。

10.1 它是什么

Graphify 把一个代码库(连同它的文档、SQL schema、配置、PDF)变成一张可查询的知识图谱,是一份给 Claude Code、Cursor、Codex、Gemini CLI 等 20+ 种 agent 用的 /graphify skill。核心理念与 LLM Wiki 相同:知识编译一次,而不是每次提问都重新找——只不过编译的产物是一张图(节点 + 边)而不是一堆 markdown 页。

10.2 它怎么实现三层

10.3 它怎么实现三操作

10.4 关键机制:确定性解析 + 边带置信度

10.5 它与原文模式的差别