关于 karpathy-llm-wiki
Karpathy LLM Wiki 是一项技能,用于根据来源材料构建和维护个人知识库。它将 raw/ 中不可变的文件与编译后的 wiki 文章分开,并提供摄取、查询、归档和检查流程。
主要功能
- 01在 raw/ 中保存不可变来源文件
- 02将来源编译为 wiki 文章
- 03搜索 wiki 并据此回答
- 04将回答归档为新页面
- 05检查链接、索引和证据
- 06记录摄取与 wiki 更新
适用场景
- 01将收集的来源整理成文章
- 02根据现有 wiki 内容回答问题
- 03将综合回答归档到 wiki
- 04检查文章证据和引用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ astro-han/ karpathy-llm-wiki --skill karpathy-llm-wiki安装后在 Claude Code 中输入/karpathy-llm-wiki确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreLICENSEREADME.mdexamples/ai-coding-tools-index.mdlog-sample.mdREADME.mdclaude-code-statusline-landscape.md2026-03-19-claude-code-statusline-landscape.mdreferences/archive-template.mdraw-template.mdarticle-template.mdindex-template.mdscripts/check_evidence.pytests/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/)
-
使用环境提供的任意网页或文件工具获取源内容。如果没有任何工具能访问该源,请让用户直接粘贴内容。
-
选择一个主题目录。先检查现有的
raw/子目录;如果主题足够接近,就复用已有目录。只有主题确实不同,才创建新的子目录。 -
保存为
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,它不会写入文件。
- 将主题拆分为几个角度。针对每个角度,广泛搜索——包括官方名称、缩写和同义词,而不只是字面关键词。
- 对于你预计会得出的每个核心结论,有意搜索相反观点:失败案例、批评、未能复现的研究。
- 按照惯例将选定的来源保存到 raw/。搜索可以并行进行;但编纂不能并行——一次只编纂一个来源,因为 index.md、log.md 和级联更新属于共享状态。
Query
搜索知识库并回答问题。触发示例: -“我对 X 了解多少?” -“总结与 Y 相关的所有内容” -“根据我的知识库比较 A 和 B”
步骤
- 阅读
wiki/index.md,找到候选文章,然后使用主题的关键词及其同义词对 wiki/ 进行全文搜索。在索引和全文搜索结果均为空之前,绝不要声称知识库中没有相关内容——并说明你已进行搜索。 - 阅读找到的文章并综合作答。
- 优先使用知识库内容,而不是你自身训练所得的知识。使用 Markdown 链接引用来源:
[文章标题](wiki/topic/article.md)(对话中的引用使用相对于项目根目录的路径;在 wiki/ 文件内使用相对于当前文件的路径)。 - 在对话中输出答案。除非用户提出要求,否则不要写入文件。
归档
当用户明确要求将答案归档或保存到知识库时:
- 将答案写为新的知识库页面。参见
references/archive-template.md。将对话中的引用转换为归档页面时,把相对于项目根目录的路径(例如wiki/topic/article.md)改写为相对于文件的路径(例如../topic/article.md或同目录下的article.md)。- 来源:指向答案中引用的知识库文章的 Markdown 链接。
- 不设 Raw 字段(内容并非来自 raw/)。
- 文件名应体现查询主题,例如
transformer-architectures-overview.md。 - 将文件放入最相关的主题目录。
- 始终创建新页面。不要合并到现有文章中(归档内容是综合后的答案,而非原始材料)。
- 更新
wiki/index.md。在 Summary 前加上[Archived]。 - 追加到
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)。普通查询不会写入任何文件。