发布于 2026-04-06 · 更新于 2026-04-06
前置阅读:让 LLM 持续维护你的知识库:Karpathy LLM Wiki 模式精读与落地指南 那篇讲的是”一个人 + 个人知识库”。这篇专门讲”一个团队 + 一个代码仓库”下这套模式长什么样。不重复原理,只讲落地差异。
一句话结论(读不下去就只看这一句)
在代码项目里,LLM Wiki 的最高价值不是”自动生成文档”——那是 TypeScript、Prisma、Storybook 这些工具已经干掉的场景——而是沉淀那些目前只存在于 Slack、脑子里、PR 讨论里的”为什么”和”历史脉络”,并让它们不会过期。 用一句更直白的话:LLM Wiki 替代的不是 Storybook,而是团队那份三个月没人更新的 Notion。一、场景迁移:从”个人 KB”到”代码项目”,三件事根本改变
Karpathy 原文的默认场景是:一个人读外部文章,LLM 帮他写一份个人 wiki。迁到代码项目,下面三件事会变,而且变得很深:
第三件——触发点从”人主动发起 ingest”变成”git 事件自动触发”——是所有差异里最关键的一个。
它意味着什么?意味着在代码项目里,LLM Wiki 的维护可以挂到 pre-commit hook / PR bot / CI job 上。不再是”我想起来了就跑一下 ingest”,而是”只要代码动了,wiki 就同步动”。
这是代码项目场景相对个人 KB 场景的独特优势:触发器是确定的、事件驱动的、自动化的。人不需要记得去维护。
二、怎么判断一个场景值不值得用 LLM Wiki
在讲具体场景之前,先给一条判断准则,这条准则会贯穿全文:如果这份文档可以从代码里用工具自动生成,就不要用 LLM Wiki 做——让工具做。 LLM Wiki 适合的是:代码里不存在、只存在于人脑和讨论记录里的那些信息——决策理由、历史脉络、跨模块的叙事、“为什么这么做”、“当初放弃了什么方案”。这条准则下,可以画出一张很清楚的图:
三、5 个真正值得做的落地场景
每个场景我会给你:- 是什么 —— 一句话
- Raw sources —— 原始素材从哪里来
- Wiki 长什么样 —— 实际的目录/文件结构
- 触发时机 —— 什么事件让 LLM 去更新
- LLM 的独特价值 —— 为什么人做不好这件事
- ROI —— 收益评估
场景 1:ADR 决策档案(杀手级场景)
是什么:把”为什么我们选了 A 而不是 B”这种决策,从 Slack / PR 讨论 / 会议纪要里打捞出来,变成一份会随时间演化的持久文档。 Raw sources:- PR 讨论串(特别是 review 里的设计争论)
- Slack 里的架构讨论串
- 会议纪要、白板截图
- RFC 草稿
- PR description 或 commit message 里出现
ADR:前缀 → agent 自动起一份新 ADR - 出现”我们为什么不用 X”这类问题时 → agent 查是否已有 ADR,没有就起一份
场景 2:Feature 总图(“一个 feature 一张页”)
是什么:项目里每个 user-facing feature 都有一张 wiki 页,一页浓缩该 feature 的所有信息——用户流程、涉及的代码路径、相关 API、DB 表、known bugs、owner、metrics dashboard 链接。 Raw sources:- PRD 文档、Figma 链接
app/(features)/<feature>/目录下的所有代码- 相关 API routes(
app/api/...) - 相关的 Prisma schema 片段
- Sentry / PostHog 相关 events 的 dashboard
- 曾经的 bug 修复记录
checkout.md 可能长这样:
- PR merge 到
app/checkout/**或components/checkout/**→ agent 更新checkout.md - 新的 Sentry error 频繁出现在这个 feature 的文件里 → agent 主动追加到”历史 Bug”
- PR description 里明确提到”影响 checkout” → 也触发更新
app/ 翻路由、从 prisma/schema.prisma 找表、从 Sentry 找错误、从 Figma 找设计……
这些信息本来应该在一个地方,而不是散落在 6 个工具里。
Feature Page 的价值是提供一个入口页,让你不用记得每个工具在哪。更强的是:PR bot 可以在 review 里自动贴一句:
⚠️ 你这次改动触及了 checkout feature。根据 checkout.md 的 Feature Page,相关的技术债包括 “Payment webhook 重试逻辑重复”,你要不要一起处理?
这就让 wiki 从”被动文档”变成了主动的 review 助手。
ROI:⭐️⭐️⭐️⭐️
尤其适合所有权频繁交接的团队(每次新人接手一个 feature 都要花一两天理解现状)。
场景 3:依赖情报页(Dependency Intel)
是什么:每个非平凡的依赖(react-hook-form、zustand、better-auth 这种)都有一页,包含:我们用了哪些子能力、踩过哪些坑、为什么当初选它、升级注意事项。 Raw sources:package.json- 各库的 CHANGELOG(upstream)
- 你项目里实际的 import 调用点
- 历史上的 workaround PR
react-hook-form.md 的样子:
package.json的 dependencies 改动 → agent 重读对应页的”当前版本”和”升级注意事项”- 新加一个依赖 → agent 起一份新页(但只对”非平凡”依赖起,
lodash不用) - 每周 lint 时,agent 抓一次 upstream CHANGELOG,主动更新”升级注意事项”
npm outdated 告诉你有 30 个包可以升,但不告诉你每个升级对你代码的实际影响。
LLM 的独特价值在于:它能读 upstream CHANGELOG + grep 你的项目,得出一个针对性的影响评估:
📦 react-hook-form 7.52 → 7.53 升级建议 upstream CHANGELOG 说这是人做不了的——人读 CHANGELOG 能读懂变化,但不会去 grep 整个项目找受影响的调用点。LLM 会。 ROI:⭐️⭐️⭐️⭐️⭐️ 你会发现自己突然敢升级以前不敢碰的依赖了。useController的返回类型收窄了field.ref为RefCallback而不是MutableRefObject。 在你的项目里,我 grep 到以下文件用了field.ref.current:这两处升级后会编译报错,建议升级前先改成
components/ui/select.tsx:52components/forms/PhoneInput.tsx:33useImperativeHandle或useEffect + callbackRef的写法。
场景 4:Bug 档案(Incident Wiki)
是什么:每个线上 bug 一页,包含:表象、根因、修复、涉及文件、关联的 incident。重点是让 LLM 主动做归纳——把表象不同但根因相同的 bug 连起来。 Raw sources:- Sentry / PostHog 事件详情
- git commit(特别是
fix:前缀的) - Post-mortem 文档
- 客诉工单
🔍 Wiki Lint 发现这是 LLM Wiki 相对传统 bug tracker 的质变:它不只是记录,它主动做归纳,把”一次性 fix”变成”沉淀为团队规范”。 ROI:⭐️⭐️⭐️⭐️ 中型及以上团队特别有价值。小团队 bug 少时意义有限。bug-2026-03-12、bug-2026-04-01、bug-2026-04-05这三个表象完全不同的 bug, 根因可以归纳为同一个概念:“server/client component 边界识别不准”。 建议新建一个概念页docs/wiki/bugs/concepts/server-vs-client-boundary.md, 把三个 bug 作为该概念的实例连接起来, 并在里面沉淀”怎么预防这类 bug”的通用做法。
场景 5:Onboarding Wiki(自维护的”代码库导览”)
是什么:给新人的”从零到能改第一个 PR”的导览,但它是自维护的——每次 PR 合并会自动检查 onboarding 里引用的路径、命令、环境变量还在不在,过期了自动打 stale 标记。 Raw sources:- 整个 repo
package.jsonscripts.env.example- 当前的 CI 配置
- 每次 PR merge → agent 跑一次 onboarding lint:
- onboarding 里引用的所有文件路径还存在吗?
- 提到的
pnpm xxx命令在package.json里还有吗? - 说的环境变量在
.env.example里还在吗?
- 失败的项自动加
> ⚠️ STALE: 这行引用的 xxx 已经不存在,需要更新
四、反面清单:哪些事不要用 LLM Wiki 做
下面这些场景每一个都能套 LLM Wiki,但都不该套,因为有更好的工具:
判断准则(重复一遍,因为太重要):
如果一份文档可以从代码里用工具自动生成,就不要用 LLM Wiki 做——让工具做。 LLM Wiki 只做”代码里不存在、只存在于人脑和讨论里”的信息。
五、最小起步方案:今天就能在项目里试一下
别一开始就上 5 个场景。按下面的顺序来:Step 1:起最小骨架(10 分钟)
Step 2:在 CLAUDE.md 加三条规则
Step 3:只做场景 1(ADR),跑两周
别急着上 Feature Page、Dependency Intel 那些。先只跑 ADR,两周之后看感觉对不对:- 有没有 ADR 真的被写出来?
- 写出来的 ADR 自己回头读起来有没有价值?
- 挑战记录有没有真的发生?
Step 4:什么时候加更多场景
以下信号出现时,再加对应场景:- 你发现 PR review 里反复问”为什么这样写” → 加 ADR 持续维护(场景 1 的进阶)
- 你接手一个不熟悉的 feature 花了 2 小时摸索 → 加 Feature 总图(场景 2)
- 你升级一个依赖时心里发虚 → 加 依赖情报页(场景 3)
- 连续两三个 bug 看起来根因相似 → 加 Bug 档案(场景 4)
- 团队来了新人且没人愿意带 → 加 Onboarding Wiki(场景 5)
六、一些常见的合理化,和为什么要挑战它们
七、行动清单
读完这篇你可以立刻做的事:- 打开你现在在做的 NextJS(或任何)项目
- 在根目录的
CLAUDE.md里加一节「Wiki 维护约定」,只写场景 1(ADR)的三条规则 - 新建
docs/wiki/decisions/目录 - 选一个你最近在 PR 里讨论过的架构决策,让 agent 起一份 ADR
- 读一遍生成的 ADR,改掉你不满意的地方,反推修正 schema
- 两周之后回头看,判断要不要加场景 2
- 永远不要一上来就做 5 个场景
写在最后
前一篇 til 我们聊了 LLM Wiki 模式的原理,结尾说它最大的优势是”LLM 不会无聊”。 这一篇我们聊了搬到代码项目里能干什么——答案是:它能替你做团队里所有”没人愿意做但又必须做”的那些维护工作。- ADR 写完就没人回头更新?LLM 会。
- Feature Page 写完就腐烂?LLM 会自动检查过期。
- 依赖升级没人敢碰?LLM 会读 CHANGELOG + grep 你的代码,给你针对性的影响评估。
- Bug 一个一个修、从不归纳?LLM 会主动做跨 bug 的根因归纳。
- Onboarding 文档写完就烂?LLM 会每次 PR 合并时 lint 一次自己。
延伸阅读
- 前置原理篇:让 LLM 持续维护你的知识库:Karpathy LLM Wiki 模式精读与落地指南
- 原文:LLM Wiki (gist) by Andrej Karpathy
- 相关 til:Anthropic 长程任务的 Harness 设计(讲 agent 在长程任务里的上下文维护,和 LLM Wiki 的”沉淀”思路一脉相承)
