mcpField
K
karpathy-llm-wiki

karpathy-llm-wiki

github.com/astro-han生产力2.6k8.2k 次安装14 周前更新
代码仓库

关于 karpathy-llm-wiki

Karpathy LLM Wiki 是一项技能,用于根据来源材料构建和维护个人知识库。它将 raw/ 中不可变的文件与编译后的 wiki 文章分开,并提供摄取、查询、归档和检查流程。

主要功能

  1. 01在 raw/ 中保存不可变来源文件
  2. 02将来源编译为 wiki 文章
  3. 03搜索 wiki 并据此回答
  4. 04将回答归档为新页面
  5. 05检查链接、索引和证据
  6. 06记录摄取与 wiki 更新

适用场景

  1. 01将收集的来源整理成文章
  2. 02根据现有 wiki 内容回答问题
  3. 03将综合回答归档到 wiki
  4. 04检查文章证据和引用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/astro-han/karpathy-llm-wiki --skill karpathy-llm-wiki

安装后在 Claude Code 中输入/karpathy-llm-wiki确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
LICENSE
README.md
examples/
ai-coding-tools-index.md
log-sample.md
README.md
claude-code-statusline-landscape.md
2026-03-19-claude-code-statusline-landscape.md
references/
archive-template.md
raw-template.md
article-template.md
index-template.md
scripts/
check_evidence.py
tests/
test_check_evidence.py

详细介绍

Karpathy 大模型 Wiki

使用大模型构建和维护个人知识库。你管理两个目录:raw/(不可变的源材料)和 wiki/(编纂后的知识文章)。源材料放入 raw/,再编纂成 wiki 文章,wiki 会随时间不断积累。

Karpathy 的核心理念:

  • “大模型编写并维护 wiki;人类阅读并提出问题。”
  • “wiki 是一种持久且不断积累的成果。”

架构

三层,均位于用户的项目根目录下:

raw/ — 不可变的源材料。你可以读取,但永不修改。按主题子目录组织(例如 raw/machine-learning/)。

wiki/ — 编纂后的知识文章。你拥有完全的管理权。按主题子目录组织,仅一层:wiki/<topic>/<article>.md。包含两个特殊文件:

  • wiki/index.md — 全局索引。每篇文章占一行,按主题分组,包含链接、摘要和更新日期。
  • wiki/log.md — 仅追加的操作日志。

SKILL.md(此文件)— 架构层。定义结构和工作流规则。

模板位于相对于此文件的 references/ 目录中。需要了解 raw 文件、文章、归档页面或索引的确切格式时,请阅读这些模板。

初始化

仅在首次摄取时触发。检查 raw/ 和 wiki/ 是否存在。只创建缺少的内容;绝不覆盖现有文件:

  • raw/ 目录(包含 .gitkeep)
  • wiki/ 目录(包含 .gitkeep)
  • wiki/index.md — 标题为 # Knowledge Base Index,正文为空
  • wiki/log.md — 标题为 # Wiki Log,正文为空

如果查询或检查无法找到 wiki 结构,请告知用户:“请先执行一次摄取以初始化 wiki。”不要自动创建。

溯源不变量

wiki/ 中每个承载关键信息的事实——数字、日期、直接引语——都必须原样存在于该文章 Raw 字段链接的 raw/ 文件中。编纂过程会确立此不变量(写入前先定位);检查过程会验证此不变量(scripts/check_evidence.py 会在关联的 raw 文件中检索高信号字面内容——带后缀或较大的数字、小数、ISO 日期、较长的引语;编纂时先定位再写入的规则则涵盖其余内容)。由于 raw/ 不可变,经过验证的文章会持续保持有效;该脚本只需数秒即可重新检查整个 wiki,因此无需维护增量状态。


摄取

将源材料抓取到 raw/,再编纂到 wiki/——除非该源没有带来新内容。始终抓取;是否编纂取决于以下分流规则。

抓取(raw/)
  1. 使用环境提供的任意网页或文件工具获取源内容。如果没有任何工具能访问该源,请让用户直接粘贴内容。

  2. 选择一个主题目录。先检查现有的 raw/ 子目录;如果主题足够接近,就复用已有目录。只有主题确实不同,才创建新的子目录。

  3. 保存为 raw/<topic>/YYYY-MM-DD-descriptive-slug.md。

    • 根据源标题生成 slug,使用 kebab-case,最多 60 个字符。
    • 发布日期未知 → 从文件名中省略日期前缀(例如 descriptive-slug.md)。元数据中的 Published 字段仍须保留;将其设为 Unknown。
    • 如果同名文件已存在,则追加数字后缀(例如 descriptive-slug-2.md)。
    • 添加元数据头部:源 URL、采集日期、发布日期。
    • 保留原文。清理格式噪声。不要改写观点。

    确切格式请参阅 references/raw-template.md。

分诊

保存原始文件后、编辑 wiki/ 之前,使用源文件中的关键实体及其同义词搜索 wiki/,然后说明处理结果:

  • New — 创建一篇或多篇新文章。
  • Update — 合并到现有文章中。
  • Disputed — 与现有内容矛盾;可与 New 或 Update 合并使用(冲突标注见 Compile)。
  • No material — 未增加 wiki 中已有知识以外的内容。保留原始文件,记录日志(见 Post-Ingest),然后停止。不要试图从内容单薄的来源中硬凑出一篇文章。

New、Update 和 Disputed 可以组合使用。No material 为排他选项。

编译(wiki/)

确定新内容应归入何处:

  • 与现有文章的核心论点相同 → 合并到该文章中。将新来源添加到 Sources/Raw。更新受影响的章节。
  • 新概念 → 在最相关的主题目录中创建一篇新文章。文件名应使用概念名称,而非原始文件名。
  • 涉及多个主题 → 放入最相关的目录。在其他位置的相关文章中添加 See Also 交叉引用。

这些选项并非互斥。单个来源可能需要合并到一篇文章中,同时还需要为其引入的独立概念另建一篇文章。无论哪种情况,都要检查事实冲突:如果新来源与现有内容矛盾,请使用 Status: Disputed 区块标记存在争议的说法(参见 references/article-template.md)。如果冲突内容位于不同文章中,则两篇文章都要标记并互相链接。

来源忠实度。 写入任何数字、日期和直接引语之前,都必须先在原始文件中找到它(使用 grep 或阅读文件);写入的值必须与原文完全一致——如果来源写的是 42K,就写 42K,而不是 42,000。推导出的值(计算所得的总和、差值、数量)必须列出其组成部分,以便在原始文件中逐一查找。如果无法找到某个值,就不要写出其精确形式;应将其省略,或不写具体数值。

文章格式参见 references/article-template.md。要点:

  • Sources 字段:作者、组织或出版物名称 + 日期,以分号分隔。
  • Raw 字段:指向 raw/ 文件的 Markdown 链接,以分号分隔。
  • 从 wiki/<topic>/ 出发的相对路径使用 ../../raw/<topic>/<file>.md(向上两级到项目根目录)。
级联更新

更新主文章后,检查连带影响。不要只依赖索引:在整个 wiki 中搜索来源的关键实体、别名及其涉及的说法,然后更新所有内容受到实质影响的非归档文章。每个更新过的文件都要刷新 Updated 日期。

当新来源取代或否定现有说法时,应保留旧说法作为记录,但用 Status 区块标记(参见 references/article-template.md):如果有更新的内容取代了旧内容,则标记为 Outdated;如果来源之间存在分歧,则标记为 Disputed。绝不要悄悄改写历史。

归档页面绝不进行级联更新(它们是特定时间点的快照)。

摄取后处理

更新 wiki/index.md:为每篇受影响的文章添加或更新条目。新增主题章节时,附上一行描述。Updated 日期反映文章知识内容最近一次变更的时间,而不是文件系统时间戳。格式参见 references/index-template.md。

在 wiki/log.md 末尾追加:

## [YYYY-MM-DD] ingest | <primary article title>
- Disposition: <New; Update; Disputed>
- Raw: <raw file path>
- Updated: <cascade-updated article title>

如果未发生级联更新,则省略 - Updated: 行。对于 No material,记录日志后停止。使用相对于项目根目录的原始文件路径(例如 raw/topic/file.md):

## [YYYY-MM-DD] ingest | no material: <project-root-relative raw file path>
- Disposition: No material

精确的 no-material 标题是机器可读的清单键;要构成完整的、便于人类阅读的日志条目,仍必须包含 Disposition 行。

研究(多来源采集)

仅当用户明确要求研究某个主题或将资料来源收集到知识库时使用。普通知识问题应使用 Query,它不会写入文件。

  1. 将主题拆分为几个角度。针对每个角度,广泛搜索——包括官方名称、缩写和同义词,而不只是字面关键词。
  2. 对于你预计会得出的每个核心结论,有意搜索相反观点:失败案例、批评、未能复现的研究。
  3. 按照惯例将选定的来源保存到 raw/。搜索可以并行进行;但编纂不能并行——一次只编纂一个来源,因为 index.md、log.md 和级联更新属于共享状态。

Query

搜索知识库并回答问题。触发示例: -“我对 X 了解多少?” -“总结与 Y 相关的所有内容” -“根据我的知识库比较 A 和 B”

步骤
  1. 阅读 wiki/index.md,找到候选文章,然后使用主题的关键词及其同义词对 wiki/ 进行全文搜索。在索引和全文搜索结果均为空之前,绝不要声称知识库中没有相关内容——并说明你已进行搜索。
  2. 阅读找到的文章并综合作答。
  3. 优先使用知识库内容,而不是你自身训练所得的知识。使用 Markdown 链接引用来源:[文章标题](wiki/topic/article.md)(对话中的引用使用相对于项目根目录的路径;在 wiki/ 文件内使用相对于当前文件的路径)。
  4. 在对话中输出答案。除非用户提出要求,否则不要写入文件。
归档

当用户明确要求将答案归档或保存到知识库时:

  1. 将答案写为新的知识库页面。参见 references/archive-template.md。将对话中的引用转换为归档页面时,把相对于项目根目录的路径(例如 wiki/topic/article.md)改写为相对于文件的路径(例如 ../topic/article.md 或同目录下的 article.md)。
    • 来源:指向答案中引用的知识库文章的 Markdown 链接。
    • 不设 Raw 字段(内容并非来自 raw/)。
    • 文件名应体现查询主题,例如 transformer-architectures-overview.md。
    • 将文件放入最相关的主题目录。
  2. 始终创建新页面。不要合并到现有文章中(归档内容是综合后的答案,而非原始材料)。
  3. 更新 wiki/index.md。在 Summary 前加上 [Archived]。
  4. 追加到 wiki/log.md:
    ## [YYYY-MM-DD] query | Archived: <page title>
    

Lint

对知识库进行质量检查。分为三个类别,权限级别各不相同。

安全修复(自动修复)

自动修复以下问题:

索引一致性——将 wiki/index.md 与实际的 wiki/ 文件进行比对(不包括 index.md 和 log.md):

  • 文件存在但索引中缺少条目 → 添加条目,并使用 (no summary) 占位符。对于 Updated,如果文章中有元数据 Updated 日期,则使用该日期(对于归档页面,使用 Archived 日期);否则回退为文件的最后修改日期。
  • 索引条目指向不存在的文件 → 在索引中标记为 [MISSING]。不要删除该条目;由用户决定。
  • 索引条目的 Updated 与文章元数据中的 Updated(或归档页面中的 Archived)不同 → 更新索引条目,使其与文章一致。

内部链接——检查 wiki/ 文章文件中的所有 Markdown 链接(正文和 Sources 元数据),不包括 Raw 字段链接(由下方 Raw 引用规则验证)、See Also 部分链接(由下方 See Also 规则处理),以及 index.md/log.md(由上方规则处理):

  • 目标不存在 → 在 wiki/ 中搜索其他位置是否有同名文件。
    • 恰好找到一个 → 修正路径。
    • 找到零个或多个 → 向用户报告。

Raw 引用——Raw 字段中的每个链接都必须指向现有的 raw/ 文件:

  • 目标不存在 → 在 raw/ 中搜索其他位置是否有同名文件。
    • 恰好找到一个 → 修正路径。
    • 找到零个或多个 → 向用户报告。

See Also——在每个主题目录中:

  • See Also 链接的目标不存在 → 在 wiki/ 中搜索其他位置是否有同名文件。
    • 找到一个 → 修正路径。
    • 找到零个 → 删除该链接(失效的交叉引用并非关键内容)。
    • 找到多个 → 向用户报告。
机械检查报告(不修复)

使用 python3 <skill-dir>/scripts/check_evidence.py <project-root> 运行这些机械检查(可选地在命令后添加相对于项目根目录的文章路径,以限制范围)。默认范围为整个 wiki;脚本运行很快。报告检查结果;绝不要自动修复事实。

来源忠实度——报告的疑似问题仅供核查,并非定论:其中可能包含派生值和产品名称。请结合原始上下文判断,仅报告确实不一致的问题。

证据错误——脚本无法核验的文章(缺少 Raw 字段、Raw 链接无法解析,或 Raw 链接指向 raw/ 之外)。这些问题始终需要作出判断,不能由脚本修复。

未引用的 raw 文件——记录为 No material disposition 的文件不计入;其余文件都应作为实际待办提醒。

判断类报告(不修复)

以下问题依赖判断。报告发现,不要自动修复:

  • 文章之间存在事实矛盾
  • 较新的来源已取代过时说法,但文章仍在没有 Status 块的情况下呈现这些说法
  • 来源存在分歧但缺少冲突注释
  • 明显缺少相关文章之间的交叉引用(提出建议;不要擅自添加)
  • Status 块格式错误(Outdated 缺少日期,或任一块缺少说明;格式参考:references/article-template.md)
  • 没有其他 wiki 文章链接到的孤立页面
  • 缺少跨主题引用
  • 经常提及但没有专属页面的概念
  • 自归档以来,其引用的来源文章已大幅更新的归档页面
后置检查

追加到 wiki/log.md:

## [YYYY-MM-DD] lint | <N> issues found, <M> auto-fixed

约定

  • 全文使用带相对链接的标准 Markdown。
  • wiki/ 仅支持一级主题子目录,不得嵌套更深。
  • 日志条目、Collected 日期和 Archived 日期使用当天日期。Updated 日期反映文章知识内容最后一次变更的时间。Published 日期取自来源(不可用时使用 Unknown)。
  • 在 wiki/ 文件中,所有 Markdown 链接均使用相对于当前文件的路径。在对话输出中,使用相对于项目根目录的路径(例如,wiki/topic/article.md)。
  • Ingest 会同时更新 wiki/index.md 和 wiki/log.md(No material ingest 仅更新日志)。Archive(来自 Query)会同时更新两者。Lint 会更新 wiki/log.md(仅在自动修复索引条目时更新 wiki/index.md)。普通查询不会写入任何文件。

评论

支持 Markdown