1425 字
7 分钟

LLM Wiki:知识只编译一次

最近逛 Hermes Agent 的源码,发现有个 llm-wiki skill。看实现,原来是 Andrej Karpathy 提出的思路。

Karpathy 在 Gist 里提了个概念:与其每次用 RAG 从零检索,不如让 agent 帮你构建一个持久化的知识库

完整思路在这里:https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f


RAG 的重复劳动问题#

RAG 每次查询都要走完整流程:检索 → 提取 → 合成。

同一个问题问两次,系统每次都从头干一遍活。你问”Transformer 是什么”,系统翻文档、提取内容、生成答案。换个说法再问,系统又从头来一次。

Wiki 模式的核心价值:知识整理一次,永久保存。下次直接查已编译的内容。


传统笔记 vs LLM Wiki#

传统笔记应用LLM Wiki
优化给人浏览优化给模型读取
你导航文件夹层级你用自然语言描述需求
手动搜索和检索agent 找到并合成跨整个知识库

传统笔记是”存起来以后自己找”,LLM Wiki 是”存起来让 agent 理解后帮你找”。


为什么 Markdown 是正确基础#

Karpathy 强调用 markdown,理由有三:

便携无锁定

.md 文件任何编辑器都能打开。不依赖某家公司活着。之前用过几个云笔记产品,后来倒闭了,数据导出特别麻烦。

LLM 原生支持

模型训练数据里有大量 GitHub README、技术文档。headers、列表、代码块这些结构,模型天然能识别。不需要额外解析。

强制清晰

markdown 的格式本身推动组织内容:标题命名段落,列表分开条目。不像某些富文本编辑器,混乱内容也能存进去。

Karpathy 有一句话:

No database. No vector embeddings. No server. Just files and a capable model.


三层架构#

wiki/
├── SCHEMA.md # 规则、约定、标签分类
├── index.md # 所有页面目录 + 一行摘要
├── log.md # 操作日志(只追加)
├── raw/ # Layer 1: 原始来源(不可修改)
│ ├── articles/ # 网页文章
│ ├── papers/ # PDF/论文
├── entities/ # Layer 2: 实体页(人、组织、产品)
├── concepts/ # Layer 2: 概念/主题页
├── comparisons/ # Layer 2: 对比分析
└── queries/ # Layer 2: 有价值的查询结果

Layer 1:原始来源

agent 只读,不改。你丢进去的文章、论文,原样保存。source material 不丢失,万一 wiki 页面有错误,可以回去查原文。

Layer 2:Wiki 页面

编译后的知识。agent 创建、更新、建立链接。每个页面对应一个实体、概念或对比。

Layer 3:Schema

定义规则:标签分类、页面命名规范、什么时候该建新页面。给 agent 的”操作手册”。


人机协作分工#

你做的事agent 做的事
提供源材料(链接、文章、论文)提取内容、识别实体概念
决定领域范围、指导分析方向创建页面、建立跨链接
用 Obsidian 打开 wiki 目录浏览维护 index、log、lint 检查

你提供原材料,agent 加工整理。wiki 目录在本地,随时手动编辑。


四个核心操作#

Ingest(导入)#

丢给 agent 一个链接或文章,它会:

  1. 提取内容,保存到 raw/
  2. 识别提到的实体、概念
  3. 创建或更新 wiki 页面
  4. 建立 [[wikilink]] 跨引用
  5. 更新 index.md 和 log.md

一篇源文章可能触发 5-15 个页面的更新。Karpathy 叫这”复利效应”。

Query(查询)#

问 agent:“wiki 里有没有关于 Transformer 的内容?”

它会:

  1. 读 index.md 找相关页面
  2. 搜索所有 .md 文件
  3. 从已编译的知识合成答案
  4. 告诉你引用了哪些页面

Lint(检查)#

定期健康检查:

  • 孤儿页面(没有其他页面链接到它)
  • 断裂链接(指向不存在页面)
  • 过期内容(90 天没更新)
  • 矛盾信息(同主题页面说不一样的话)

摘要技巧#

每个 wiki 页面顶部写一行 summary。agent 读这行就能判断整个文件是否相关,不用读完全文。十秒钟写个摘要,省下 agent 读无关文件的时间。


适用场景判断#

适合:

  • 学术研究(论文多、概念交叉引用频繁)
  • 技术学习(框架/工具层出不穷)
  • 行业跟踪(公司、产品、人物动态)
  • 个人知识库(任何你想长期累积的领域)

判断标准:

  • 信息会反复查询吗?
  • 内容之间有交叉引用价值吗?
  • 想长期累积,不是临时查一次?

三个都满足,就适合。

不适合:

  • 临时一次性问题
  • 纯数据存储(没有概念/实体需要链接)
  • 高频变化数据(实时行情、天气预报)

如何触发 agent#

前提是 skill 启用。Hermes 默认启用,被禁用的话,从 config.yamldisabled 列表移除。

之后对 agent 说:

  • “创建一个 wiki,主题是 AI 工具” → 初始化目录结构
  • “把这篇文章加入 wiki” → ingest 操作
  • “wiki 里有没有关于 X 的内容” → query 操作
  • “检查一下 wiki 有没有问题” → lint 操作

Obsidian 兼容性#

wiki 目录本身就是 Obsidian vault:

  • [[wikilinks]] 渲染为可点击链接
  • Graph View 可视化知识网络
  • YAML frontmatter 支持 Dataview 查询

如果机器没有显示器(比如服务器),可以用 obsidian-headless 做 sync,让你在笔记本上用 Obsidian 浏览,agent 在服务器上写。


总结#

llm-wiki 的核心价值:知识只编译一次,之后直接用

不像 RAG 每次从头检索,它是 agent 帮你维护一个结构化的 markdown 知识库。你丢源材料,agent 提取整理、建立链接、维护结构。

适合需要长期累积、反复查询、有交叉引用价值的领域。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
LLM Wiki:知识只编译一次
https://blog.moewah.com/posts/karpathy-llm-wiki-knowledge-base/
作者
MoeWah
发布于
2026-04-09
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
MoeWah
Hello, I'm MoeWah.
分类
标签
站点统计
文章
174
分类
9
标签
377
总字数
304,552
运行时长
0
最后活动
0 天前

目录