Karpathy 的 LLM Wiki — 构建并维护持久化、相互链接的 Markdown 知识库

来源:Hermes Agent 中文社区 — 技能文档
标签:knowledge-base, research, markdown, rag-alternative, obsidian

核心理念

以相互链接的 Markdown 文件形式构建并维护一个持久化、不断累积的知识库。

与传统的 RAG(每次查询都从头重新发现知识)不同,Wiki 一次性编译知识并保持其最新状态。交叉引用已经存在。矛盾之处已被标记。综合内容反映了所有摄取的信息。

分工: 人类负责策划来源和指导分析。代理负责总结、交叉引用、归档并保持一致性。

三层架构

1
2
3
4
5
6
7
8
9
10
11
12
13
wiki/
├── SCHEMA.md # 规范、结构规则、领域配置
├── index.md # 内容目录,按类型分节
├── log.md # 操作日志(追加式,按年轮转)
├── raw/ # Layer 1:不可变的原始来源
│ ├── articles/ # 网页文章
│ ├── papers/ # PDF、arXiv 论文
│ ├── transcripts/ # 会议记录、访谈
│ └── assets/ # 图片、图表
├── entities/ # Layer 2:实体页面(人物、组织、产品、模型)
├── concepts/ # Layer 2:概念/话题页面
├── comparisons/ # Layer 2:并排分析
└── queries/ # Layer 2:值得存档的查询结果
  • Layer 1 原始来源:不可变,代理只读不改
  • Layer 2 Wiki:代理拥有的 Markdown 文件,由代理创建、更新和交叉引用
  • Layer 3 Schema:SCHEMA.md 定义结构、约定和标签分类法

恢复现有 Wiki(每次会话必须)

  1. 读 SCHEMA.md — 理解领域、约定和标签分类法
  2. 读 index.md — 了解已有页面和摘要
  3. 读 log.md 最近 20-30 条 — 了解近期活动

大型 Wiki(100+ 页面)还应针对主题运行 search_files。

核心操作

1. 导入(Ingest)

用户给来源(URL/文件/粘贴)→ 整合到 wiki:

  1. 捕获原始来源:URL 用 web_extract 获取 markdown 存到 raw/;加 frontmatter(source_url, ingested, sha256)
  2. 讨论要点:什么有趣、什么对领域重要
  3. 检查现有内容:搜索 index.md 和 search_files 找已有页面
  4. 编写或更新 wiki 页面:
    • 新实体/概念:满足页面阈值才创建(2+ 来源提及或核心内容)
    • 已有页面:追加新信息,更新事实
    • 交叉引用:每个页面至少 2 个 [[wikilinks]]
    • 标签:只用 SCHEMA.md 分类法中的标签
    • 来源标记:3+ 来源的页面附加 ^[raw/articles/source.md]
  5. 更新导航:index.md 加新页面,log.md 记录操作
  6. 报告变更

单个来源可触发 5-15 个 wiki 页面的更新 — 这是复合效应。

2. 查询(Query)

  1. 读 index.md 识别相关页面
  2. 大型 Wiki 还需 search_files 全文搜索
  3. 读相关页面,综合答案
  4. 引用 wiki 页面:” 基于 [[page-a]] 和 [[page-b]]…”
  5. 有价值的答案归档到 queries/ 或 comparisons/
  6. 更新 log.md

3. 检查(Lint)

  1. 孤立页面:没有入站 [[wikilinks]] 的页面
  2. 断链:指向不存在页面的 [[links]]
  3. 索引完整性:每个页面应出现在 index.md
  4. Frontmatter 验证:必需字段齐全
  5. 过时内容:updated 超过最新来源 90 天
  6. 矛盾信息:共享标签但事实冲突的页面
  7. 可信度信号:confidence: low 和单一来源页面
  8. 来源漂移:sha256 不匹配
  9. 页面大小:超过 200 行的页面
  10. 标签审计:不在分类法中的标签
  11. 日志轮转:超过 500 条时轮转

页面类型

实体页面

每个值得注意的实体一个页面。包含:概述、关键事实和日期、与其他实体的关系([[wikilinks]])、来源引用。

概念页面

每个概念或话题一个页面。包含:定义/解释、当前知识状态、开放问题或辩论、相关概念([[wikilinks]])。

对比页面

并排分析。包含:比较内容和原因、比较维度(表格优先)、结论或综合、来源。

前置信息(frontmatter)

1
2
3
4
5
6
7
8
9
10
11
---
title: 页面标题
created: YYYY-MM-DD
updated: YYYY-MM-DD
type: entity | concept | comparison | query | summary
tags: [来自分类法]
sources: [raw/articles/source-name.md]
confidence: high | medium | low # 可选
contested: true # 可选,标记矛盾
contradictions: [other-page-slug] # 可选
---

标签分类法示例(AI/ML)

  • Models: model, architecture, benchmark, training
  • People/Orgs: person, company, lab, open-source
  • Techniques: optimization, fine-tuning, inference, alignment, data
  • Meta: comparison, timeline, controversy, prediction

规则:每个标签必须出现在分类法中。新标签先加到 SCHEMA.md 再使用。

更新策略

新信息与已有内容矛盾时:

  1. 比较日期,新的通常覆盖旧的
  2. 确实矛盾则两方都保留,标注日期和来源
  3. 标记 contradictions: [page-name]
  4. 在 lint 报告中标记供用户审查

与 Obsidian 的集成

Wiki 目录可以直接作为 Obsidian vault 使用:

  • [[wikilinks]] 渲染为可点击链接
  • Graph View 可视化知识网络
  • YAML frontmatter 支持 Dataview 查询
  • raw/assets/ 存放图片通过 ![[image.png]] 引用

相关工具

llm-wiki-compiler — Node.js CLI,可将来源编译成概念 wiki,兼容 Obsidian。