所有文章
AI 趋势2026-04-089 分钟

Karpathy 用的那个词是『编译』——这个词改变了一切

所有人都在抄 Karpathy 的三个文件夹,几乎没人注意他用来描述文件夹之间发生了什么的那个动词。那个动词才是整个论点。

LLM WikiKarpathy编译知识库MCPRAG

人们引用 Karpathy 的 LLM Wiki gist 时,几乎总是引用结构:三个文件夹、原始素材、wiki、schema 文件。这部分很容易抄。GitHub 上已经有半打 repo 能在一分钟内帮你把这些文件夹搭好。

但如果你仔细读 gist,里面最重要的东西不是文件夹。是一个动词。

Karpathy 说,知识是被编译一次,然后保持新鲜的——而不是每次查询都重新推导一遍。

不是"总结"。不是"索引"。不是"录入"。是编译

我认为这一个词就是整个论点。复刻他这套设置的人,几乎所有人都没注意到这个词意味着什么。

编译到底是什么意思

在软件里,编译不是把源代码缩短。编译器不会读你的 C 文件然后写一个更短的 C 文件。它把源转换成一个不同的产物不同的表示为不同的消费者优化。输出不是给输入的同一拨读者看的,是给某个本来根本接触不到输入的东西执行的。

这恰好是 Karpathy 在描述的那件事的正确比喻,也恰好是 RAG 在做的那件事的错误比喻。

RAG 不编译任何东西。RAG 是运行时查找。每次查询,你回到原始素材,抓出统计上看起来和问题相似的片段,然后祈祷把它们粘进上下文窗口能产出连贯的东西。素材永远没被转换过。模型从来没机会提前思考它们。每一次查询都是第一次查询。

Karpathy 的 wiki 是反过来的。模型读一遍原始材料、理解它、然后把理解写下来。Wiki 不是素材的副本,而是一个新的产物、新的表示、为新的消费者优化的——下一个需要在它之上回答问题的 LLM。理解是预先做完的,一次,存起来。

这才是复利的来源。你不是每次都在重新推导知识,你是在已经推导过的知识堆上继续加。

为什么动词比文件夹更重要

如果你只抄了文件夹,你仍然可以把动词搞错。我看过的大多数 GitHub 克隆版都搞错了——它们把 wiki 文件夹当成用户倾倒笔记的地方,LLM 偶尔过来整理一下。那不是编译,那是打扫卫生。

真正的编译有三个性质,光靠文件夹结构本身保证不了:

它是有意丢信息的。 编译器会扔掉下一阶段不需要的东西。Karpathy 的 wiki 应该扔掉那些和你实际会问的问题无关的素材部分。如果你的 wiki 和原始素材一样长,你没在编译,你在复制。

它产出和输入不同的形状。 一个编译过的、关于某个人的 wiki 页面,不是"提到他的那篇文章,稍微改了改"。它是一个结构化的实体页,把所有提到过这个人的素材汇总起来,解决矛盾,链接到相关实体。输出有一个输入没有的形状。那个形状就是价值所在。

它会被新输入作废。 当你加入一份新的原始素材时,涉及同一主题的 wiki 页应该被重新编译,不是被追加。这是大多数克隆版完全跳过的部分。它们把录入当成"加一条新笔记"。真正的编译把录入当成"重建受影响的实体页"。没有这一步,你的 wiki 会漂移、自相矛盾,慢慢变成一个 LLM 没法在上面推理的烂摊子。

如果你的系统不做这三件事,你拥有的是文件夹,不是编译器。

这意味着 wiki 应该住在哪里

一旦你认真对待这个动词,有一个问题就跟着来了——那群"在笔记本上放一堆文件夹"的人还没真正回答过它:谁来运行编译器?

在 Karpathy 的设置里,答案是"你,手动,在 Claude Code 里,在你想起来的时候"。这对他有用。他是 Andrej Karpathy。他有那个自律和技术亲和度坐下来开个 agent,每次加东西的时候叫它重新编译相关页面。

对几乎所有其他人来说,这一步就是系统死掉的地方。不是因为人懒,而是因为只要编译依赖于人记得去触发它,你就回到了任何个人知识工具历来的失败模式:一片半整理的笔记墓地,没人维持新鲜。

修复这个问题的办法不是给编译器做一个更好的触发 UI。修复办法是让编译器变成任何 agent 都能从任何地方调用的东西,作为正在发生的对话的副作用自动发生。

这是 MCP 可访问的知识层在做的事。当你在 Claude.ai 里结束一次研究对话时,agent 可以在对话结束之前主动写回你的知识库——不是因为你叫它写,而是因为"进行一次有用的对话"现在本来就包含这一步。当你明天在另一个 agent 里问问题时,那个 agent 能读到昨天那个 agent 写下的东西。编译是连续发生的,作为"使用 AI"这件事的背景属性,而不是你需要安排时间去做的家务。

这只在以下条件成立时有效:知识层可以通过 URL 访问、有一个稳定的写入 API、住在不是你笔记本电脑的地方。文件夹里的文件做不到这件事。本地的 Obsidian vault 做不到这件事。当用户在手机上时,编译器没有地方运行;当 agent 跑在别人的数据中心里时,它没有东西可以编译。

直白版的自我推销

我直说写这篇的动机。KnowMine 是我过去六个月在做的东西,它从结构上说,就是一个给个人知识用的托管编译器。底层是 pgvector,顶层是 MCP,agent 在对话过程中而不是对话之后写入。Karpathy 的 gist 是我一直在依据的论点最清晰的外部表述,他选的那个动词是我最希望更多人认真对待的部分。

但我并不真的需要你用 KnowMine 才能接受这个论点。论点是:如果你这周因为这个 gist 在搭一个 LLM Wiki,问问自己——你的设置里哪一部分真的在做编译,哪一部分只是在用一个花哨的名字往文件夹里塞文件。如果答案是"我想起来运行的时候才编译",你建的是一个文件夹。如果答案是"每次有 agent 碰到系统时都在编译",你建的是基础设施。

Karpathy 用了对的词。大多数抄他的人,还没在建那个词所描述的东西。

开始构建你的 AI 原生知识库

免费开始使用,连接 Claude、ChatGPT 等多种 AI

免费开始
Karpathy 用的那个词是『编译』——这个词改变了一切 - KnowMine Blog