3302 字
17 分钟
Karpathy 个人知识库小试牛刀:用 LLM Wiki 替代 RAG

LLM Wiki 是什么#

2026 年 4 月,Andrej Karpathy 发布了一篇 GitHub Gist,提出了一种全新的个人知识管理范式:让 LLM 做”知识编译器”,提前把原始资料编译成结构化 Wiki,查询时直接读取已编译好的知识,而不是每次从文档碎片中检索。

核心理念:LLM 不只是写代码的工具,更擅长组织知识。你丢原始素材进去,LLM 自动帮你生成结构化、双向链接的 Wiki 页面,知识越攒越聪明。

特性说明
架构三层结构:raw/(原始素材)→ wiki/(LLM 编译的知识)→ CLAUDE.md(规则文件)
核心操作Ingest(摄入)、Query(查询)、Lint(健康检查)
数据格式纯 Markdown,人类可读,任意编辑器可打开
知识积累有状态的——每次摄入都在丰富知识库,不是每次都”重新发现”
工程复杂度零基础设施,只需文件夹 + LLM + 文本编辑器
透明度每一条声明都可追溯到具体的 .md 文件和 raw/ 源文件
适合规模100–500 篇高质量文档,sub-100K token 的 Wiki 总量

Karpathy 原话:“This is the end of the forgotten bookmark. For the individual, it’s a compounding research assistant.” —— 这是收藏夹吃灰的终结。对个人而言,它是一个产生复利的研究助手。

这篇文章适合谁#

  • 收藏夹爆满的研究者:存了几百篇文章但再也没打开过,想系统化消化信息
  • 个人知识管理者:试过 Notion、Obsidian、Logseq 但始终缺一个自动整理机制
  • AI 深度用户:已经在用 Claude Code / Cursor / Codex,想让它帮你自动维护知识库

你将收获什么#

  • 理解 LLM Wiki 的核心思想——为什么”编译优于检索”,它和 RAG 到底有什么区别
  • 掌握从零搭建的完整流程——从目录结构到 CLAUDE.md 配置到第一次摄入
  • 了解可直接使用的社区方案——不用从零写 CLAUDE.md,用现成 Skill 一键初始化

核心架构#

my-knowledge-base/
├── raw/ # 第一层:原始素材(只读,不可变)
│ ├── articles/ # 网页文章
│ ├── papers/ # 论文 PDF 转 Markdown
│ ├── repos/ # 代码仓库文档
│ └── data/ # 截图、表格等
├── wiki/ # 第二层:LLM 编译的结构化知识
│ ├── index.md # 总索引,每次操作必须更新
│ ├── log.md # 仅追加的操作日志
│ ├── concepts/ # 概念词条
│ ├── entities/ # 人物、组织、项目
│ ├── sources/ # 每篇素材的摘要页
│ └── comparisons/ # 对比分析页
├── outputs/ # 输出产物(报告、幻灯片、lint 结果)
└── CLAUDE.md # 第三层:Schema 规则文件(最关键)

分工明确:

  • :筛选素材、提问引导方向、审核 Wiki 质量、维护 raw/
  • LLM:读取素材、生成摘要和概念页、维护交叉引用、更新索引、标记矛盾

Karpathy 用编译器类比来描述这个过程:

编译器概念LLM Wiki 对应
源代码raw/ 目录
编译器LLM
可执行文件wiki/ 目录
测试/检查Lint 操作
运行时Query 查询

环境准备#

工具用途必需?
Claude Code主 LLM Agent,读取素材、生成 Wiki 页面
ObsidianWiki 前端——图谱视图、反向链接、搜索推荐
Obsidian Web Clipper浏览器扩展,一键将网页转为 Markdown 存入 raw/推荐
Git版本控制,每次 Wiki 更新可追溯推荐
Marp(Obsidian 插件)将 Markdown Wiki 页面转为演示幻灯片可选
Dataview(Obsidian 插件)对 Wiki frontmatter 做结构化查询可选

本质上只需要一个文件夹 + Claude Code。Obsidian 和 Git 是锦上添花,但不装也能跑通完整流程。

社区项目一览#

Karpathy 的 Gist 发布后一周内,社区涌现了大量实现。如果你不想从零手写 CLAUDE.md,这些现成项目能帮你一键初始化,直接开始用:

项目特点安装
karpathy-llm-wiki多平台支持(Claude Code / Cursor / Codex / OpenCode),783⭐,含级联更新、冲突检测、两级 lint、多模态摄入npx add-skill Astro-Han/karpathy-llm-wiki
llm-wiki-skill多平台支持(Claude Code / Codex / OpenClaw),1449⭐,水彩卡片风知识图谱、一句话零配置初始化、SHA256 智能去重、微信公众号/知乎等国内素材源bash install.sh --platform claude
git-wiki托管在你自己的 Git 仓库中,本地混合搜索(BM25 + 向量 + LLM 重排),纯离线bash <(curl -sL https://git.io/git-wiki)
llm-wiki-manager8 种操作模式,4 个幂等 Python 脚本,多 Wiki 路由,自动日期标注 lint 报告git clone 到 skills 目录

推荐:追求功能完整选 karpathy-llm-wiki,中文用户偏好本地化体验选 llm-wiki-skill,数据隐私要求极高的选 git-wiki(纯本地搜索,不依赖云端 LLM)。

快速上手#

第一步:创建目录结构#

Terminal window
mkdir -p ~/my-wiki/{raw/{articles,papers,repos,data},wiki/{concepts,entities,sources,comparisons},outputs}
touch ~/my-wiki/wiki/index.md
touch ~/my-wiki/wiki/log.md
cd ~/my-wiki
git init
echo "outputs/" >> .gitignore

第二步:编写 CLAUDE.md(最关键的一步)#

CLAUDE.md 是把通用 LLM 变成守纪律的知识工人的核心。没有它,输出质量不稳定;有了它,LLM 每次操作都遵循统一规范。

# My Personal Wiki
## 项目结构
- `raw/` — 原始素材,只读。永远不要修改这里的文件。
- `wiki/` — LLM 生成和维护的 Markdown 页面。
- `wiki/index.md` — 总目录。每次操作后必须更新。
- `wiki/log.md` — 仅追加的操作日志。
- `outputs/` — 生成的报告、lint 结果等。
## 页面规范
每个 Wiki 页面必须包含 YAML frontmatter:
---
title: "页面标题"
type: concept | entity | source-summary | comparison
sources:
- raw/articles/某篇文章.md
related:
- "[[相关概念]]"
created: YYYY-MM-DD
updated: YYYY-MM-DD
confidence: high | medium | low
---
命名规则:
- 文件名用 kebab-case,与概念名一致(如 `attention-mechanism.md`
- 内部引用统一用 `[[wikilinks]]`
- 引用来源时始终链接回 `raw/` 文件路径
## 工作流
### Ingest(摄入)
1. 读取 raw/ 中的新素材
2. 和用户讨论关键发现
3. 在 wiki/sources/ 中创建素材摘要页
4. 更新或新建 concept/entity 页面
5. 更新 wiki/index.md
6. 在 wiki/log.md 末尾追加:## [YYYY-MM-DD] ingest | 素材标题
### Query(查询)
1. 先读 wiki/index.md 定位相关页面
2. 读这些页面,综合回答
3. 用 [[wikilinks]] 标注引用来源
4. 如果回答有留存价值,主动询问是否保存为新 Wiki 页面
### Lint(健康检查)
1. 扫描所有 Wiki 页面,检查矛盾
2. 找出孤页(无入链的页面)
3. 标记被引用但未创建的概念
4. 找出被新素材取代的过时声明
5. 结果保存到 outputs/lint-YYYY-MM-DD.md

第三步:添加第一批素材#

Obsidian Web Clipper 浏览器扩展,把你感兴趣的文章一键转为 Markdown,保存到 raw/articles/

或者手动操作:

Terminal window
# 假设你有一篇想收藏的博客文章
cp ~/Downloads/some-article.md raw/articles/

第四步:启动 Claude Code,开始摄入#

Terminal window
cd ~/my-wiki
claude

然后对 Claude 说:

“我把 3 篇文章放到了 raw/articles/ 里。请全部摄入,创建对应的 Wiki 页面,更新索引。”

Claude Code 会逐一读取每篇素材,生成结构化 Wiki 页面,建立交叉引用,更新索引——一次性完成。

第五步:用 Obsidian 查看知识图谱#

Terminal window
# 用 Obsidian 打开 wiki/ 目录作为 Vault
# 点击左侧 Graph View 按钮,即可看到知识节点和双向链接图谱

此时你应该能看到类似这样的效果:每篇文章摘要是一个节点,提取出的概念是另一个节点,它们之间通过 [[双向链接]] 相连,形成一张可视化的知识网络。

[此处插入 Obsidian 图谱截图:节点+连线形成知识网络]

如果暂时没有截图,也可以用 Obsidian 打开你的 Wiki Vault,点击左侧 Graph View 按钮自行查看。节点越大表示被引用次数越多,连线越密表示知识关联越丰富。

进阶玩法#

三步编译法(社区改进版)#

Karpathy 原版的”摘要 + 链接”足够好,但社区在实践中迭代出了更深入的版本:

步骤操作说明
1. 浓缩砍到核心结论(≤ 3 条)+ 关键证据不是摘要,是提炼
2. 质疑对每条结论追问——前提假设是什么?换个场景还成立吗?数据来源可靠吗?有没有反例?主动发现盲区
3. 对标跨领域找类似现象,创建迁移链接让知识产生跨界关联

这让 Wiki 不仅”存储”知识,还能主动发现矛盾、填补盲区、跨界关联。

Git 自动提交 Hook#

.git/hooks/post-commit
#!/bin/bash
# 每次提交后自动做一次轻量 lint
claude --print "对 wiki/ 做一次快速健康检查,只标记严重问题,结果追加到 outputs/lint-$(date +%Y-%m-%d).md"

定时 Lint#

用 cron 定期跑健康检查:

Terminal window
# 每天凌晨 3 点执行 lint
0 3 * * * cd ~/my-wiki && claude --print "执行完整 lint,结果保存到 outputs/" && git add -A && git commit -m "auto lint $(date +%Y-%m-%d)"

多 Wiki 管理#

当你积累了多个领域的知识库后(如 AI 研究、投资笔记、课程笔记),可以创建多个 Wiki 目录,每个有自己的 CLAUDE.md

~/wikis/
├── ai-research/
│ ├── raw/ wiki/ CLAUDE.md
├── investment-notes/
│ ├── raw/ wiki/ CLAUDE.md
└── course-notes/
├── raw/ wiki/ CLAUDE.md

累积到一定程度后:微调小模型#

Karpathy 提出的终极愿景:当 Wiki 数据通过持续 LLM 维护变得足够”纯净”后,用 Wiki 数据微调一个小模型,把知识直接压缩进模型权重——你的个人知识库变成专属私有大模型。

不过这一步需要 Wiki 规模达到数千页、质量经过多轮 lint 打磨后才可行,属于远期目标。

LLM Wiki vs RAG:什么时候用哪个#

维度RAGLLM Wiki
状态无状态——每次查询独立有状态——知识持续积累
基础设施向量数据库 + Embedding + 检索管线一个文件夹
交叉引用每次查询临时发现摄入时预建,始终可用
每次查询 Token 成本高(检索 + 重排 + 生成)低(读索引 + 定向读页面)
可追溯性Chunk 级引用,常有损文件级引用,追溯到 raw/
矛盾检测不检测——冲突片段共存Lint 时主动标记
适合规模百万级文档100–500 篇高质量文档
内容更新需重建索引增量编译即可

选 RAG 的场景: 百万级文档、内容频繁变动、多团队规模。

选 LLM Wiki 的场景: < 500 篇源文档、希望知识产生复利、零基础设施偏好、个人或小团队使用。

常见问题#

Q:我用 ChatGPT / Cursor / Codex 行不行?

都可以。Karpathy 的方法论是工具无关的——核心是 raw/wiki/CLAUDE.md 三层架构。Claude Code 的原生 Agent 能力最强,但任何能读文件、写文件的 LLM 工具都能胜任。社区已有 Cursor 和 Codex 的适配实现。

Q:原始素材放什么格式?PDF 行不行?

建议尽量转成 Markdown。LLM 读取 Markdown 最可靠,PDF 解析依赖具体工具,可能丢失格式。Obsidian Web Clipper 能一键把网页转 Markdown。如果只有 PDF,可以先用 pdftotext 或 LLM 自带的 PDF 阅读能力转成文本。

Q:Wiki 太大会不会让 LLM 上下文不够用?

Karpathy 原版 Wiki 约 100 篇文章、400K 词,在 Claude 200K 上下文中完全放得下。如果 Wiki 超过上下文窗口,社区已经有方案:git-wiki 内置本地混合搜索(BM25 + 向量 + LLM 重排),llmwiki(Rust crate)用 Tantivy + fastembed 实现无需 LLM 索引也能扩展。

这两个方案都能让 Wiki 规模突破上下文限制:

  • git-wiki:用 qmd 做本地搜索,搜索后只把相关页面送进上下文
  • llmwiki:替换 index.md 为真实搜索引擎(BM25 + 语义搜索 + 混合 RRF)

Q:和 Obsidian 自带的关系图谱有什么区别?

Obsidian 图谱只展示 [[链接]] 关系,不会自动发现缺失的概念、标记矛盾、或跨文章提炼主题。LLM Wiki 的 Lint 操作能做 Obsidian 本身做不到的语义分析。

Q:隐私怎么办?数据都在本地?

所有数据都在本地 Markdown 文件中。用 Claude Code 时数据会发送到 Anthropic API,但你也可以切换到本地模型(Ollama + 开源模型)。纯 Markdown 格式意味着数据不受厂商锁定。

总结#

Karpathy 的 LLM Wiki 不是要革 RAG 的命,而是提供另一种哲学:编译优于检索、质量优于数量、显式关联优于隐式 Embedding

对于个人知识管理,它是最轻量的方案——你只需要文件夹 + Claude Code,就能让 AI 帮你把收藏夹里吃灰的文章变成活的、会生长的知识网络

参考资源#

Karpathy 个人知识库小试牛刀:用 LLM Wiki 替代 RAG
https://blog.syomega.top/posts/karpathy-llm-wiki-guide/
作者
酱w
发布于
2026-05-26
许可协议
CC BY-NC-SA 4.0