<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM on 鬼哥的空间</title><link>https://guige.ai/tags/llm/</link><description>Recent content in LLM on 鬼哥的空间</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 19 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://guige.ai/tags/llm/index.xml" rel="self" type="application/rss+xml"/><item><title>Skill 越多，Agent 为什么越容易犯选择困难？</title><link>https://guige.ai/p/skills-are-not-memory/</link><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/skills-are-not-memory/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Skill 越多，Agent 为什么越容易犯选择困难？" /&gt;&lt;p&gt;不知道大家Vibe Coding时间久了以后会不会碰到这样的问题: 学习和使用了不少有用的skill, 自己的skill库越来越丰富, 但 Skill 库越攒越多，Agent 反而偶尔开始犯一种很熟悉的病：&lt;strong&gt;选择困难症。&lt;/strong&gt; 有些问题, 这个skill能处理, 那个也能搞定, 但又都不是完美匹配当前场景的. 导致同一个问题, 多次解决路径居然不一致, 带来的结果和周边影响也不一样.&lt;/p&gt;
&lt;p&gt;AI跟人一样, 对一些问题有多条解决路径选择时。就跟鬼哥看到“干炒牛河、辣椒炒肉、小炒黄牛肉、湖南米粉”同时出现在菜单上，脑子就直接进入一个 &lt;code&gt;Infinity Loop&lt;/code&gt; 循环, 这顿饭都没力气吃下去了。Agent 面前如果同时摆着几十份名字相近、边界暧昧的 Skill，情况大致相同，只是它不会叹气，而是更认真地读错几份文件。&lt;/p&gt;
&lt;p&gt;鬼哥昨天读到一篇新论文 &lt;a class="link" href="https://arxiv.org/pdf/2608.14036" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Demystifying Agent Skills: Why They Work—Until They Don’t&lt;/em&gt;&lt;/a&gt; 恰好把这个问题拆开了。它问的不是“Skill 有没有用”，而是更麻烦也更有价值的问题：&lt;strong&gt;它什么时候帮忙、为什么帮忙、又从哪里开始添乱？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;论文的答案很克制：Skill 确实有效，但它最主要的作用不是给 Agent 多塞一点知识，而是把过去混乱的经验压缩成一根可执行的“程序锚点”。问题也在这里：锚点一旦抛错地方，船就会稳稳地停在错误的位置。&lt;/p&gt;
&lt;p&gt;&lt;img alt="一张菜单式的 Agent Skill 库，多个相似选项让 Agent 在选择循环中犹豫" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/cover.webp" srcset="https://guige.ai/p/skills-are-not-memory/cover_hu_b48826964b622baf.webp 800w, https://guige.ai/p/skills-are-not-memory/cover.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-不是经验文档而是经验的蒸馏"&gt;Skill 不是“经验文档”，而是经验的蒸馏
&lt;/h2&gt;&lt;p&gt;论文把同一批历史执行轨迹做成了三种版本：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;给 Agent 的东西&lt;/th&gt;
 &lt;th&gt;它保留了什么&lt;/th&gt;
 &lt;th&gt;它容易带来的问题&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Raw&lt;/td&gt;
 &lt;td&gt;什么都不注入，让 Agent 从头做&lt;/td&gt;
 &lt;td&gt;每次都要重新发现环境、命令和检查步骤&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Workflow Memory&lt;/td&gt;
 &lt;td&gt;清洗过的历史流程&lt;/td&gt;
 &lt;td&gt;仍夹带失败分支、偶然细节和冗长探索&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Skill&lt;/td&gt;
 &lt;td&gt;从同一批流程蒸馏出的 &lt;code&gt;SKILL.md&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;需要判断是否适用、如何适配&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这个对照很关键。Skill 和 Workflow Memory 来自&lt;strong&gt;同一批成功与失败轨迹&lt;/strong&gt;，所以它们的差异不能简单归因于“前者知道得更多”。&lt;/p&gt;
&lt;p&gt;在匹配比较里，Skill 的成功率为 &lt;strong&gt;61.9%&lt;/strong&gt;，Raw 为 &lt;strong&gt;59.1%&lt;/strong&gt;，Workflow Memory 为 &lt;strong&gt;55.9%&lt;/strong&gt;；Skill 相比 Workflow Memory 的增益为 &lt;strong&gt;6.06 个百分点&lt;/strong&gt;，95% bootstrap 置信区间为 &lt;strong&gt;+0.76 到 +11.36&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;更有意思的是，研究者逐条分析 Agent 轨迹后发现：Skill 有效的案例里，&lt;strong&gt;65.7%&lt;/strong&gt; 是因为它提供了程序锚点——步骤顺序、工具调用、检查点、验证方案、常见坑；只有 &lt;strong&gt;4.5%&lt;/strong&gt; 是因为它补充了 Agent 原本不知道的事实。&lt;/p&gt;
&lt;p&gt;这和很多人的直觉相反。我们写 Skill 时常想“把知识写全一点”，但真正有价值的，往往是让 Agent 在关键时刻不忘记：先启动什么、再检查什么、哪种输出不算完成、踩坑后怎样退回来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Skill 最大的作用，不是替 Agent 多记一条知识，而是在关键步骤上少忘一件事。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="同一批混乱的执行轨迹被蒸馏为简洁的步骤、检查点和风险提示，对比原始 Workflow Memory" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors.webp" srcset="https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors_hu_bfb47188649e5acb.webp 800w, https://guige.ai/p/skills-are-not-memory/skills-as-procedural-anchors.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="它最擅长修的是会做但总忘的问题"&gt;它最擅长修的，是“会做但总忘”的问题
&lt;/h2&gt;&lt;p&gt;论文里的细分结果很像所有做过 Agent 工程的人见过的事故单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;环境或基础设施失败：从 Raw 的 &lt;strong&gt;5.3%&lt;/strong&gt; 降到 Skill 的 &lt;strong&gt;0.2%&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;输出格式或 schema 不匹配：从 &lt;strong&gt;7.4%&lt;/strong&gt; 降到 &lt;strong&gt;3.2%&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;后台服务生命周期失败：从 &lt;strong&gt;2.7%&lt;/strong&gt; 降到 &lt;strong&gt;0.8%&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些不是深奥推理题。它们更多是执行纪律问题：路径没记住、服务没确认、schema 没校验、命令没按正确顺序跑。&lt;/p&gt;
&lt;p&gt;所以一个好的 Skill，应该像一位靠谱但不啰嗦的值班同事：它不替你决定产品要不要做，却会在你准备发布前提醒“配置读了吗？”“服务起来了吗？”“返回值真符合接口吗？”&lt;/p&gt;
&lt;p&gt;但别因此高估它。算法逻辑错误在 Skill 条件下仍有 &lt;strong&gt;7.4%&lt;/strong&gt;，只做静态检查、没有真正运行验证的失败仍有 &lt;strong&gt;11.7%&lt;/strong&gt;。Skill 能稳住执行，不能替人重新定义一个理解错了的问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-的反噬它会让错误的假设更有执行力"&gt;Skill 的反噬：它会让错误的假设更有执行力
&lt;/h2&gt;&lt;p&gt;Skill 不是自动执行的。Agent 必须先判断它是否相关，再决定跟到什么程度，还得在当前环境里修改它。&lt;/p&gt;
&lt;p&gt;这一步一旦偷懒，Skill 就从经验变成了惯性。论文中，&lt;code&gt;skill_guidance_misapplied_or_ignored&lt;/code&gt; 在 Skill 组里占 &lt;strong&gt;10.0%&lt;/strong&gt;，而 Raw 是 &lt;strong&gt;0.8%&lt;/strong&gt;、Workflow Memory 是 &lt;strong&gt;0.4%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是说 Skill 内容一定不好。更常见的情况是：旧任务和新任务看起来像，但一个前提已经变了；Agent 拿着一份“通常正确”的流程，顺手把它套到“不再通常”的场景上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个没有退出条件的 Skill，是把经验固化成偏见的最快方式。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这也是为什么我现在更在意 Skill 里有没有下面四块，而不是它写了多少页：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 适用前提
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 什么输入、环境和权限下使用？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 执行路径
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 关键步骤的顺序是什么？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 验证标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 跑什么检查？什么结果才算完成？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 退出与升级
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 哪些信号说明不适用？何时停止并转人工/换方案？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前面三项让它可执行，最后一项让它不会过度自信。&lt;/p&gt;
&lt;p&gt;&lt;img alt="一份好的 Skill 像程序合同：适用前提、执行路径、验证标准、退出与升级四个模块" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/skill-contract.webp" srcset="https://guige.ai/p/skills-are-not-memory/skill-contract_hu_99942d94b0f46d0b.webp 800w, https://guige.ai/p/skills-are-not-memory/skill-contract.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="skill-库越大难的不是保存而是选择和适配"&gt;Skill 库越大，难的不是保存，而是选择和适配
&lt;/h2&gt;&lt;p&gt;论文专门测了这个问题。候选 Skill 池从 5 个增加到 100 个时，Agent 在真实执行里实际使用 ground-truth Skill 的精确率，平均从 &lt;strong&gt;29.6%&lt;/strong&gt; 掉到 &lt;strong&gt;3.3%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但下游任务成功率却没有同步崩掉，只从 &lt;strong&gt;36.4%&lt;/strong&gt; 变到 &lt;strong&gt;39.3%&lt;/strong&gt;。原因并不神秘：Agent 可能看了多份相近 Skill；其中某份并非标注的“唯一正确答案”，却依然给了有用的操作线索。反过来，即使它选中了 ground-truth Skill，也仍可能在执行、适配或验证环节失败。&lt;/p&gt;
&lt;p&gt;论文由此给出一个很重要的结论：&lt;strong&gt;精确调用标注上的正确 Skill，既不是任务成功的充分条件，也不是必要条件。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这对个人开发者的含义是：别只用“检索命中了没有”衡量 Skill 库。更应该问：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这份 Skill 的触发条件是否能和相邻 Skill 区分开？&lt;/li&gt;
&lt;li&gt;它能否解释自己为什么适用于当前任务？&lt;/li&gt;
&lt;li&gt;它的关键步骤能否被当前环境的 verifier 验证？&lt;/li&gt;
&lt;li&gt;当它与另一份 Skill 冲突时，Agent 知不知道该降级、组合还是停下来问？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Skill 库的瓶颈从来不是存储空间，而是选择和适配能力。菜单可以很长，但“都来一份”不是一个工程策略。&lt;/p&gt;
&lt;p&gt;&lt;img alt="Skill 池从 5 到 100 时，离线检索与真实执行的差异：精确命中下降，但任务成功不等于同步下降" class="gallery-image" data-flex-basis="135px" data-flex-grow="56" height="1672" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success.webp" srcset="https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success_hu_dc57f7ac653ab265.webp 800w, https://guige.ai/p/skills-are-not-memory/retrieval-is-not-success.webp 941w" width="941"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="失败轨迹别急着扔它们是-skill-的边界说明书"&gt;失败轨迹别急着扔，它们是 Skill 的边界说明书
&lt;/h2&gt;&lt;p&gt;研究者还做了一个很实用的消融：构建 Skill 时，保留或去掉历史轨迹的“成功/失败”标记。&lt;/p&gt;
&lt;p&gt;只有成功轨迹时，是否保留标记影响不大；一旦混入失败轨迹，结果标签就开始发挥作用。以 Gemini 在 Terminal-Bench-2 的 &lt;code&gt;3 成功 + 2 失败&lt;/code&gt; 轨迹组合为例：构建 Skill 时保留 outcome labels，成功率为 &lt;strong&gt;74.62%&lt;/strong&gt;；拿掉标签后，只有 &lt;strong&gt;40.00%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这说明失败轨迹并不是应当删掉的脏东西。它告诉我们：哪一步看似合理却不通、什么条件一变流程就失效、最终验证为什么没有通过。&lt;/p&gt;
&lt;p&gt;当然，失败记录原封不动地塞回上下文也不行——Workflow Memory 的 timeout/budget exhaustion 达 &lt;strong&gt;10.6%&lt;/strong&gt;，而 Skill 为 &lt;strong&gt;4.4%&lt;/strong&gt;。正确做法不是保存更多过程，而是把失败蒸馏成可判断的边界：&lt;strong&gt;失败模式、触发条件、检查办法、替代路径。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="给个人开发者的一条-skill-维护规则"&gt;给个人开发者的一条 Skill 维护规则
&lt;/h2&gt;&lt;p&gt;如果你正在维护自己的 Skill 库，我建议不要从“再写一份新的”开始，而是从每次真实任务结束后的四个问题开始：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;这次 Agent 反复犯的，究竟是知识缺口，还是执行步骤遗漏？&lt;/li&gt;
&lt;li&gt;哪一步可以写成稳定的前提、动作和 verifier？&lt;/li&gt;
&lt;li&gt;哪个失败条件必须写进这份 Skill 的退出路径？&lt;/li&gt;
&lt;li&gt;它和已有 Skill 的边界是否足够清楚，还是只是在菜单上多加了一道相似的菜？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若答案只是“我觉得这条 Prompt 很有用”，先别急着建库。让它在几个真实任务里活下来，再把它写成 Skill。&lt;/p&gt;
&lt;p&gt;这篇论文仍是一篇预印本，实验主要集中在终端与工具调用任务，覆盖的 Agent 框架和模型数量也有限；它不等于已经证明了所有网页 Agent 或开放式协作场景的规律。但它至少把一个常被忽略的问题说清了：Skill 的效果不是一次注入，而是一条生命周期——&lt;strong&gt;蒸馏、检索、调用、适配、验证。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;回到开头那张菜单。鬼哥并不需要把所有菜从菜单上划掉；我需要的是知道今天为什么点这道、吃到一半发现不对时能不能换，以及不要把“菜单很丰富”误当成“晚饭已经解决”。&lt;/p&gt;
&lt;p&gt;对 Agent 也是一样。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Zhiyuan Jiang et al., &lt;a class="link" href="https://arxiv.org/pdf/2608.14036" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Demystifying Agent Skills: Why They Work—Until They Don’t&lt;/em&gt;&lt;/a&gt;, arXiv:2608.14036, 2026.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Claude-Cookbooks 全景导航：被 README 藏起来的另一半</title><link>https://guige.ai/p/claude-cookbooks-index/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/claude-cookbooks-index/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Claude-Cookbooks 全景导航：被 README 藏起来的另一半" /&gt;&lt;p&gt;最近 AI 的发展真的是日行千里。&lt;/p&gt;
&lt;p&gt;每天打开手机开源社区、翻公众号、过一遍 GitHub Trending——新模型、新工具、新系统、新应用，再加上无数业内高人分享的实践经验，内容浩如烟海，&lt;strong&gt;百家争鸣，百家齐放&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;说实话，我自己看着都眼花缭乱。有时候晚上躺下想到&amp;quot;今天又没来得及看那几篇论文、那几个新项目&amp;quot;，连睡觉都觉得是在浪费学习时间。&lt;/p&gt;
&lt;p&gt;这种状态持续久了，人是会焦虑的。鬼哥每天拼命学习, 拼命实践, 都快忘了自己还是个吉他手, 也得花时间练琴了.&lt;/p&gt;
&lt;p&gt;但前阵子我沉下心来，花了一段时间认真翻了一遍 Anthropic 官方的这份 &lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;claude-cookbooks&lt;/a&gt;——翻完之后我反倒松了一口气。&lt;/p&gt;
&lt;p&gt;这份仓库里的内容，&lt;strong&gt;积累了 Anthropic 工程师过去三年对 AI 工程化的思考&lt;/strong&gt;。覆盖面非常全：从 API 最基础的用法，到 Prompt Caching 的成本优化，到 Tool Use 的各种进阶模式，再到 Agent SDK、Managed Agents、Skills 这些最近才成型的产品形态——几乎把&amp;quot;怎么用好 Claude 做一个能上生产的 AI 应用&amp;quot;这件事，从头到尾挨个讲了一遍。&lt;/p&gt;
&lt;p&gt;宝藏是真的多，内容也真的多。想用一两篇文章讲清楚根本不现实。&lt;/p&gt;
&lt;p&gt;所以我决定先写这一篇——&lt;strong&gt;给这份指南做一个大致的梳理，整理出一份索引地图。&lt;/strong&gt; 后面每个具体话题，再单独开长文展开。&lt;/p&gt;
&lt;p&gt;也建议你把这份 cookbook 当作一份&lt;strong&gt;可以反复查、反复学的学习地图&lt;/strong&gt;：不需要一次读完，但值得在接下来几个月里反复回来翻。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你打开 &lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt; 的 README，看到的大概是十几条链接——分类、RAG、摘要、几个 tool use 示例、一篇 prompt caching。&lt;/p&gt;
&lt;p&gt;如果你只看 README，会以为这就是一份写了两年没人管的老项目。&lt;/p&gt;
&lt;p&gt;但你往目录里翻一下就会发现——&lt;strong&gt;这份仓库里塞着接近一百篇 notebook，README 里能看到的，大概只占三分之一。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;被 README 藏起来的另一半，恰恰是这两年 Anthropic 官方重点推进的东西：Claude Agent SDK 教程、Managed Agents 的 CMA 系列、Skills 技能包、Tool Use 的进阶玩法、Extended Thinking 和 Tool Search 的新模式……这些内容散落在 &lt;code&gt;claude_agent_sdk/&lt;/code&gt;、&lt;code&gt;managed_agents/&lt;/code&gt;、&lt;code&gt;skills/&lt;/code&gt;、&lt;code&gt;patterns/agents/&lt;/code&gt; 这些 README 完全没提的目录下。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/cover.webp" srcset="https://guige.ai/p/claude-cookbooks-index/cover_hu_53cbe1068ad82fe6.webp 800w, https://guige.ai/p/claude-cookbooks-index/cover_hu_929032a06d32b24c.webp 1600w, https://guige.ai/p/claude-cookbooks-index/cover_hu_1d8f6eabb53c4602.webp 2400w, https://guige.ai/p/claude-cookbooks-index/cover.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;这篇文章做的事很简单：&lt;strong&gt;把这份 repo 按主题重新整理成一张可以反复查的索引地图。&lt;/strong&gt; 每个模块一句话定位、列出具体 notebook 文件名、说清楚什么时候该看它——后面想逐篇深入的时候，翻这一页就知道从哪下手。&lt;/p&gt;
&lt;p&gt;不做深度拆解，只做导航。真正的&amp;quot;为什么要这么设计&amp;quot;那种长文，留给后面每个主题单开一篇来写。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一先把这份-repo-的定位搞清楚"&gt;一、先把这份 repo 的定位搞清楚
&lt;/h2&gt;&lt;p&gt;在往下看之前，先明确一件事：&lt;strong&gt;claude-cookbooks 不是文档的补充，而是可跑的工程示例库。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 官方的内容资源现在大致分成三层：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;资源&lt;/th&gt;
 &lt;th&gt;角色&lt;/th&gt;
 &lt;th&gt;面向&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://docs.claude.com" target="_blank" rel="noopener"
 &gt;docs.claude.com&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;权威文档&lt;/td&gt;
 &lt;td&gt;查 API 参数、模型特性&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://github.com/anthropics/courses" target="_blank" rel="noopener"
 &gt;anthropics/courses&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;入门课程&lt;/td&gt;
 &lt;td&gt;第一次接触 API 的开发者&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;工程菜谱&lt;/td&gt;
 &lt;td&gt;已经会调 API、想把某个具体场景做好的人&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Cookbook 是&amp;quot;可执行的最佳实践&amp;quot;：每个 notebook 就是一个最小可跑的场景，装完依赖、填上 API key 就能复现。它的价值不在于&amp;quot;教你 Claude 是什么&amp;quot;，而在于&amp;quot;别人做过这件事，代码给你抄走&amp;quot;。&lt;/p&gt;
&lt;p&gt;换句话说，文档告诉你&lt;strong&gt;某个 API 参数是什么意思&lt;/strong&gt;，cookbook 告诉你&lt;strong&gt;在真实场景里这个参数应该怎么配、还要和哪几件事配合用&lt;/strong&gt;。这两者是互补的——文档适合查细节，cookbook 适合找套路。&lt;/p&gt;
&lt;p&gt;这也解释了为什么它的更新节奏跟着 Anthropic 的产品线走——&lt;strong&gt;每出一个新产品或新能力，这里就会多一个目录&lt;/strong&gt;。Claude Agent SDK 发布之后有了 &lt;code&gt;claude_agent_sdk/&lt;/code&gt;，Managed Agents 发布之后有了 &lt;code&gt;managed_agents/&lt;/code&gt;，Skills 功能上线之后有了 &lt;code&gt;skills/&lt;/code&gt;。所以它也是观察 Anthropic 官方工程重点转向的一个风向标。&lt;/p&gt;
&lt;p&gt;一个小提醒：README 里的链接还是旧的 &lt;code&gt;anthropic-cookbook&lt;/code&gt; 仓库路径（目录名对，仓库名已改成 &lt;code&gt;claude-cookbooks&lt;/code&gt;）。clone 的时候用新名字，跟着链接点进去会被 GitHub 自动重定向，不影响看内容，但会让你怀疑自己是不是 clone 错了库。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二一张总览图20-多个目录怎么归类"&gt;二、一张总览图：20 多个目录怎么归类
&lt;/h2&gt;&lt;p&gt;仓库里大大小小二十多个目录，我按&amp;quot;使用场景&amp;quot;把它们重新归了一下组：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;大类&lt;/th&gt;
 &lt;th&gt;涉及目录&lt;/th&gt;
 &lt;th&gt;解决的问题&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;基础能力&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;capabilities/&lt;/code&gt; &lt;code&gt;multimodal/&lt;/code&gt; &lt;code&gt;extended_thinking/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Claude API 开箱即用能做的事&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Tool Use&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tool_use/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;让模型调用外部工具&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;性能与成本&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;misc/&lt;/code&gt;（caching/batch 部分） &lt;code&gt;observability/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Prompt caching、批处理、用量监控&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Agent 三条路径&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; &lt;code&gt;claude_agent_sdk/&lt;/code&gt; &lt;code&gt;managed_agents/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;从模式→SDK→托管运行时的递进&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Skills 技能包&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;skills/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;打包专业能力给 Claude 调用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;第三方集成&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;third_party/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Pinecone / Voyage / Mongo / Wolfram 等八家&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;评估与微调&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;tool_evaluation/&lt;/code&gt; &lt;code&gt;finetuning/&lt;/code&gt; &lt;code&gt;misc/building_evals.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Prompt eval、工具 eval、Bedrock 微调&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;工程实践（meta）&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;整个仓库的组织方式&lt;/td&gt;
 &lt;td&gt;uv / ruff / registry / slash commands&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/overview.webp" srcset="https://guige.ai/p/claude-cookbooks-index/overview_hu_30e715d96f70a7a.webp 800w, https://guige.ai/p/claude-cookbooks-index/overview_hu_d2028a1bd822e71e.webp 1600w, https://guige.ai/p/claude-cookbooks-index/overview_hu_61f12447a251cb2d.webp 2400w, https://guige.ai/p/claude-cookbooks-index/overview.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;接下来按这个骨架一层层往里翻。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三基础能力层claude-api-开箱即用能做什么"&gt;三、基础能力层：Claude API 开箱即用能做什么
&lt;/h2&gt;&lt;h3 id="31-capabilities--经典的-nlp-任务"&gt;3.1 &lt;code&gt;capabilities/&lt;/code&gt; — 经典的 NLP 任务
&lt;/h3&gt;&lt;p&gt;这是整个 cookbook 里最&amp;quot;传统&amp;quot;的一块，也是大部分教程会从这里开始的原因——这些任务不依赖任何高级特性，一个 API key 就能跑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;classification/&lt;/code&gt;&lt;/strong&gt; — 文本分类。几个 prompt 模式对比，从 zero-shot 到 few-shot 到带 chain-of-thought 的长 prompt。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;summarization/&lt;/code&gt;&lt;/strong&gt; — 摘要。包括长文分块摘要、多文档合并摘要、以及&amp;quot;按角色视角写摘要&amp;quot;这种进阶玩法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;retrieval_augmented_generation/&lt;/code&gt;&lt;/strong&gt; — RAG。从最基础的&amp;quot;向量检索 + 拼 prompt&amp;quot;到带 rerank、混合检索的几种设计。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;contextual-embeddings/&lt;/code&gt;&lt;/strong&gt; — 这是比较新的一篇，讲 Anthropic 自己提出的&amp;quot;给每个 chunk 加一段上下文描述再 embed&amp;quot;的做法，在某些场景上能显著提升召回。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;text_to_sql/&lt;/code&gt;&lt;/strong&gt; — 自然语言转 SQL，包括 schema 注入、错误恢复、结果校验。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;knowledge_graph/&lt;/code&gt;&lt;/strong&gt; — 用 Claude 从文本抽取三元组、构建图谱。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你是刚开始用 Claude API 做项目，这块是&amp;quot;背景知识&amp;quot;——不是每篇都要精读，但至少扫一遍标题，知道什么场景能在这里找到参考实现。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;contextual-embeddings/&lt;/code&gt; 这篇值得单独提一下。传统 RAG 的 embedding 过程是直接把 chunk 扔进 embedding 模型，但很多 chunk 脱离上下文后其实没法检索——比如一段&amp;quot;它在第三季度增长了 12%&amp;quot;，没有&amp;quot;哪家公司 / 哪个产品&amp;quot;的上下文，embedding 向量就很泛。Anthropic 的做法是先用 Claude 给每个 chunk 生成一段上下文描述（&amp;ldquo;这段来自 XXX 公司 2024 Q3 财报的营收章节&amp;rdquo;），再和原文拼在一起去 embed。实测在有些场景上能把召回率提升 35% 以上，代价是 embedding 阶段的 prompt caching 必须做好，不然成本会飙。&lt;/p&gt;
&lt;h3 id="32-multimodal--视觉能力"&gt;3.2 &lt;code&gt;multimodal/&lt;/code&gt; — 视觉能力
&lt;/h3&gt;&lt;p&gt;Claude 的 vision 能力现在已经是基础配置，这个目录把&amp;quot;怎么用好它&amp;quot;讲了一圈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;getting_started_with_vision.ipynb&lt;/code&gt;&lt;/strong&gt; — 入门。base64 编码、URL 传图、多图一起传的几种姿势。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;best_practices_for_vision.ipynb&lt;/code&gt;&lt;/strong&gt; — 最佳实践。图片放在 prompt 的哪个位置、多图之间怎么编号、什么时候该先 OCR 再喂文字。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;reading_charts_graphs_powerpoints.ipynb&lt;/code&gt;&lt;/strong&gt; — 图表解读。财报柱状图、流程图、PPT 截图的实战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;how_to_transcribe_text.ipynb&lt;/code&gt;&lt;/strong&gt; — 表单/手写稿 OCR。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;crop_tool.ipynb&lt;/code&gt;&lt;/strong&gt; — 让 Claude 自己决定&amp;quot;先裁图再看细节&amp;quot;的分步处理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;using_sub_agents.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Haiku 做前置视觉处理，Opus 做最终决策的 sub-agent 模式。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="33-extended_thinking--让模型想得更久"&gt;3.3 &lt;code&gt;extended_thinking/&lt;/code&gt; — 让模型&amp;quot;想得更久&amp;quot;
&lt;/h3&gt;&lt;p&gt;Extended Thinking 是 Claude 4 系列引入的能力，让模型在给出答案前先做一段内部推理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;extended_thinking.ipynb&lt;/code&gt;&lt;/strong&gt; — 基础用法。怎么打开、thinking budget 怎么设、拿到的 thinking block 长什么样。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;extended_thinking_with_tool_use.ipynb&lt;/code&gt;&lt;/strong&gt; — 和 tool use 结合。这个组合比较微妙——model 在 tool call 之间保留 thinking context 的方式跟普通对话不一样，这一篇讲清楚了边界。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="四tool-use-专题整个-cookbook-最密的一块"&gt;四、Tool Use 专题：整个 cookbook 最密的一块
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tool_use/&lt;/code&gt; 目录是更新最频繁、内容也最厚的一块。里面的 notebook 粗粗可以分成&amp;quot;基础用法&amp;quot;和&amp;quot;进阶玩法&amp;quot;两层：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;基础几篇，先过一遍：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;calculator_tool.ipynb&lt;/code&gt; — 第一次接触 tool use 必看，一个最简单的计算器示例。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_choice.ipynb&lt;/code&gt; — &lt;code&gt;auto&lt;/code&gt; / &lt;code&gt;any&lt;/code&gt; / &lt;code&gt;tool&lt;/code&gt;（强制某个具体工具）三种模式的区别。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parallel_tools.ipynb&lt;/code&gt; — 一次响应里并发调多个工具。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;extracting_structured_json.ipynb&lt;/code&gt; — 用 tool use 强制返回结构化 JSON，比裸 prompt 稳定得多。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use_with_pydantic.ipynb&lt;/code&gt; — 直接用 Pydantic 模型定义 tool schema。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;customer_service_agent.ipynb&lt;/code&gt; — 经典的客服机器人综合示例。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;进阶部分，每篇都是一个独立课题：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;memory_cookbook.ipynb&lt;/code&gt; + &lt;code&gt;memory_tool.py&lt;/code&gt;&lt;/strong&gt; — Claude 的 memory tool，让模型能读写自己的记忆文件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;programmatic_tool_calling_ptc.ipynb&lt;/code&gt;&lt;/strong&gt; — PTC（Programmatic Tool Calling）。让 Claude 生成一段小代码来决定怎么调用一组工具，而不是一个个手动编排。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;automatic-context-compaction.ipynb&lt;/code&gt;&lt;/strong&gt; — 自动上下文压缩。长对话里如何在触发上限前让模型自己&amp;quot;总结前面然后丢掉&amp;quot;。这一篇和我之前写过的 &lt;a class="link" href="https://luoli523.github.io/p/claude-code-session-management/" target="_blank" rel="noopener"
 &gt;Session 管理文章&lt;/a&gt; 其实是同一套思路的底层实现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tool_search_with_embeddings.ipynb&lt;/code&gt; + &lt;code&gt;tool_search_alternate_approaches.ipynb&lt;/code&gt;&lt;/strong&gt; — 工具太多塞不进 prompt 的时候怎么办。用 embedding 召回最相关的工具再喂给模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;vision_with_tools.ipynb&lt;/code&gt;&lt;/strong&gt; — 把 vision 输入和 tool use 混在一起用的注意事项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;threat_intel_enrichment_agent.ipynb&lt;/code&gt;&lt;/strong&gt; — 威胁情报富化 Agent，一个比较完整的垂直场景实战。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;context_engineering/&lt;/code&gt;&lt;/strong&gt; 子目录 — 专门讲上下文工程的一组 notebook，是相对独立的小专题。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个目录是我个人会反复回来查的。基本上做任何一个需要&amp;quot;让模型调用外部能力&amp;quot;的项目，都能在这里找到至少一个相近的参考实现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特别想点名 PTC 和 Tool Search 这两篇。&lt;/strong&gt; PTC（Programmatic Tool Calling）解决的是&amp;quot;工具编排逻辑比工具本身还复杂&amp;quot;的场景——比如你有 10 个工具需要按特定顺序调用并做中间结果处理，与其让模型一轮一轮 tool call，不如让它一次性生成一段编排代码，由你在沙箱里执行。这种做法在复杂工作流里能把 round-trip 次数从十几轮压到两三轮，延迟和成本都是数量级的改善。&lt;/p&gt;
&lt;p&gt;Tool Search 解决的是另一类问题：&lt;strong&gt;工具数量多到塞不进 prompt&lt;/strong&gt;。一个大型 Agent 系统可能挂了几百个 MCP 工具，全部塞进去既超 token 又污染模型判断。用 embedding 预先对工具做语义索引，按用户 query 召回 top-K 工具再喂给模型，是目前比较成熟的解法。这一篇讲清楚了实现细节和几种 trade-off。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/tool-use.webp" srcset="https://guige.ai/p/claude-cookbooks-index/tool-use_hu_e6dfd6544783b5d6.webp 800w, https://guige.ai/p/claude-cookbooks-index/tool-use_hu_e4d5b93d38434ff6.webp 1600w, https://guige.ai/p/claude-cookbooks-index/tool-use_hu_1065b15c30b97f93.webp 2400w, https://guige.ai/p/claude-cookbooks-index/tool-use.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五性能与成本优化"&gt;五、性能与成本优化
&lt;/h2&gt;&lt;p&gt;做 Demo 的时候钱和速度都不敏感，但一旦到线上，&lt;strong&gt;成本和延迟立刻就会成为第一优先级问题。&lt;/strong&gt; 这块内容散落在几个目录里，我挑出来单独放一节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/prompt_caching.ipynb&lt;/code&gt;&lt;/strong&gt; — Prompt caching 的基础用法。配合我之前那篇 &lt;a class="link" href="https://luoli523.github.io/p/llm-prompt-caching-explained/" target="_blank" rel="noopener"
 &gt;Prompt Caching 深度拆解&lt;/a&gt; 一起看效果最好：那篇讲&amp;quot;为什么要这么做&amp;quot;和底层 KV cache 原理，这篇告诉你&amp;quot;具体几行代码怎么写&amp;quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/speculative_prompt_caching.ipynb&lt;/code&gt;&lt;/strong&gt; — 推测式缓存。不等用户发消息，提前把可能的下一轮 prompt 预热进缓存。在某些低延迟场景下能把首 token 延迟打下去很多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/batch_processing.ipynb&lt;/code&gt;&lt;/strong&gt; — Message Batches API。离线批处理的价格是实时请求的 50%，跑评测、做回填数据时能省很多。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/session_memory_compaction.ipynb&lt;/code&gt;&lt;/strong&gt; — 会话记忆压缩。和 tool use 里的 automatic-context-compaction 是配套关系，一个讲工具侧，一个讲消息侧。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;observability/usage_cost_api.ipynb&lt;/code&gt;&lt;/strong&gt; — Usage &amp;amp; Cost API。用来做团队用量看板、成本归因报表。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/using_citations.ipynb&lt;/code&gt;&lt;/strong&gt; — Citations 功能。让 Claude 在回答里标注&amp;quot;这句话来自文档的哪一段&amp;quot;，做 RAG 产品时非常有用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/sampling_past_max_tokens.ipynb&lt;/code&gt;&lt;/strong&gt; — 当输出被 max_tokens 截断时怎么优雅续写。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这几篇单独看每一个都不长，但组合起来基本就是一个&amp;quot;线上项目优化清单&amp;quot;。上线前对着这张清单过一遍，能省下不少成本和踩坑时间。&lt;/p&gt;
&lt;p&gt;有一个非常容易被忽略的组合用法：&lt;strong&gt;prompt caching + batch processing&lt;/strong&gt;。Batch API 本身就打 5 折，再加上 caching 命中的部分又打 1 折左右，叠加下来做离线大规模推理时的成本可以比天真实现低 85% 以上。如果你在做评估、数据标注、回填历史数据这类离线任务，这个组合的经济性优势非常大，但大多数人做 MVP 时根本不会想到要用它。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六agent-的三条进阶路径"&gt;六、Agent 的三条进阶路径
&lt;/h2&gt;&lt;p&gt;这是整个 cookbook 里我认为&lt;strong&gt;最值得花时间的一块&lt;/strong&gt;，也是 README 最没讲清楚的一块。&lt;/p&gt;
&lt;p&gt;Anthropic 把&amp;quot;怎么构建 Agent&amp;quot;拆成了三个层次递进的目录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;patterns/agents/ ← 模式层：概念和套路（轻量）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude_agent_sdk/ ← SDK 层：用 Agent SDK 自己组装（中等）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;managed_agents/ ← 托管层：用 Managed Agents 托管运行时（重型）
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;从左到右是&amp;quot;自由度递减、工程量递减&amp;quot;的关系。&lt;/strong&gt; 哪一层适合你，取决于你要做的系统规模和运行需求。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/agents-layers.webp" srcset="https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_f3490ccceed35968.webp 800w, https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_f705429a21435e12.webp 1600w, https://guige.ai/p/claude-cookbooks-index/agents-layers_hu_5220f69a14a1d93b.webp 2400w, https://guige.ai/p/claude-cookbooks-index/agents-layers.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;h3 id="61-模式层-patternsagents--先把套路搞清楚"&gt;6.1 模式层 &lt;code&gt;patterns/agents/&lt;/code&gt; — 先把套路搞清楚
&lt;/h3&gt;&lt;p&gt;这个目录对应的是 Anthropic 那篇著名博客 &lt;a class="link" href="https://www.anthropic.com/research/building-effective-agents" target="_blank" rel="noopener"
 &gt;&lt;em&gt;Building Effective Agents&lt;/em&gt;&lt;/a&gt; 里提的几种基础模式的&lt;strong&gt;可运行版本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;basic_workflows.ipynb&lt;/code&gt;&lt;/strong&gt; — Prompt chaining / Routing / Parallelization 三种基础工作流模式。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;evaluator_optimizer.ipynb&lt;/code&gt;&lt;/strong&gt; — 评估者-优化者模式。一个 Agent 输出、另一个 Agent 打分并反馈，循环到满足条件为止。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;orchestrator_workers.ipynb&lt;/code&gt;&lt;/strong&gt; — 编排者-工人模式。主 Agent 拆任务，子 Agent 并发执行。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三篇是&amp;quot;概念打底&amp;quot;。哪怕你最后不用 Agent SDK，看一遍这三个模式，再去评估任何第三方 Agent 框架的设计，心里都会有一把尺子。&lt;/p&gt;
&lt;h3 id="62-sdk-层-claude_agent_sdk--官方的-agent-教程"&gt;6.2 SDK 层 &lt;code&gt;claude_agent_sdk/&lt;/code&gt; — 官方的 Agent 教程
&lt;/h3&gt;&lt;p&gt;这是 Anthropic 最近重点推进的一块，基于 &lt;a class="link" href="https://github.com/anthropics/claude-agent-sdk-python" target="_blank" rel="noopener"
 &gt;claude-agent-sdk-python&lt;/a&gt;，六篇 notebook 是一条渐进式的教学路径：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;#&lt;/th&gt;
 &lt;th&gt;文件&lt;/th&gt;
 &lt;th&gt;学到什么&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;00&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;00_The_one_liner_research_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;一行 &lt;code&gt;query()&lt;/code&gt; 起一个研究 Agent，理解异步迭代和基础概念&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;01&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;01_The_chief_of_staff_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CEO 助理 Agent——Memory、Output Styles、Plan Mode、Slash Commands、Hooks、子 Agent 编排全家桶&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;02&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;02_The_observability_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;可观测性 Agent，需要 GitHub Token + Docker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;03&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;03_The_site_reliability_agent.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SRE Agent，处理告警和事故&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;04&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;04_migrating_from_openai_agents_sdk.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;从 OpenAI Agents SDK 迁移过来的映射指南——&lt;strong&gt;有存量代码的团队重点看这篇&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;05_Building_a_session_browser.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Session 浏览器 demo，可视化 Agent 会话&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这一条路径的隐含逻辑是：&amp;ldquo;你如果已经在用 Claude Code，那 Claude Code 背后的 Agent 内核就是 Agent SDK，你可以用同样的工具链做任何 Agent 应用，而不只是软件开发&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;01 这篇 Chief of Staff 我单独推荐——它是整个教程里&lt;strong&gt;最接近&amp;quot;生产级 Agent 到底长什么样&amp;quot;的那篇&lt;/strong&gt;。里面把持久化记忆（CLAUDE.md 机制）、输出风格切换（给 CEO 发邮件 vs 给团队发内部备忘是两种语气）、Plan Mode（复杂任务先产出方案再执行）、Slash Commands（把高频操作做成可复用快捷方式）、Hooks（每次工具调用都自动写审计日志）、Subagent 编排（法务/财务/战略三个专项 Agent 分工协作）这一整套都串起来了。看完之后你会意识到，&lt;strong&gt;&amp;ldquo;Agent&amp;rdquo; 这个概念背后其实是一组工程约束的组合&lt;/strong&gt;，单独拎出任何一个都不够，组合起来才是真正可以上生产的东西。&lt;/p&gt;
&lt;h3 id="63-托管层-managed_agents--claude-managed-agents-cma"&gt;6.3 托管层 &lt;code&gt;managed_agents/&lt;/code&gt; — Claude Managed Agents (CMA)
&lt;/h3&gt;&lt;p&gt;Managed Agents 是 Anthropic 相对较新的一个产品形态：&lt;strong&gt;服务端托管的 Agent 运行时&lt;/strong&gt;，带沙箱、会话持久化、文件状态保留，你只要定义 Agent 和环境，剩下的交给托管服务。&lt;/p&gt;
&lt;p&gt;这个目录分成两组：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三个应用型示例&lt;/strong&gt;（适合先看，建立直觉）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;data_analyst_agent.ipynb&lt;/code&gt; — CSV 进、HTML 分析报告出的数据分析 Agent。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;slack_data_bot.ipynb&lt;/code&gt; — 把上面那个分析 Agent 包成 Slack Bot。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sre_incident_responder.ipynb&lt;/code&gt; — 告警→调查→PR→人审→合并的完整 SRE 流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;六个教程型 notebook&lt;/strong&gt;（以 &lt;code&gt;CMA_&lt;/code&gt; 开头，建议按顺序读）：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Notebook&lt;/th&gt;
 &lt;th&gt;主题&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_iterate_fix_failing_tests.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;入门。引入 agent / environment / session、文件挂载、流式事件循环&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_orchestrate_issue_to_pr.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;issue → 修复 → PR → CI → 人审 → 合并的完整编排&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_explore_unfamiliar_codebase.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;在陌生代码库里探索，含&amp;quot;过期文档陷阱&amp;quot;演示&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_gate_human_in_the_loop.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;人类审批关卡，用自定义工具的 &lt;code&gt;decide()&lt;/code&gt; / &lt;code&gt;escalate()&lt;/code&gt; 模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;提示词版本化与回滚&lt;/strong&gt;——生产 Agent 的脆弱环节，中文圈讲得很少&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;CMA_operate_in_production.ipynb&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;生产部署：MCP 工具集、vault 存 per-user 凭证、webhook idle 模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这一组是目前 cookbook 里&lt;strong&gt;最贴近&amp;quot;企业级 Agent 运营&amp;quot;的内容&lt;/strong&gt;。如果你在做 B 端 Agent 产品，哪怕不用 Managed Agents，也强烈建议看一遍 prompt versioning 和 operate in production 这两篇——它们把&amp;quot;Agent 上线之后你还要做哪些事&amp;quot;讲得最清楚。&lt;/p&gt;
&lt;p&gt;稍微展开一下 &lt;code&gt;CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt; 为什么特别值得看：传统软件工程里代码改动有 Git、有 CI、有灰度发布，但 &lt;strong&gt;prompt 的改动目前很多团队还靠 Excel 或 Notion 维护&lt;/strong&gt;。Prompt 不是代码但比代码更脆弱——同一个字改一下，模型行为可能完全变样。这篇 notebook 给出的答案是把 prompt 也纳入版本化体系：服务端存版本、每个 session 可以绑定到特定版本、用标注过的测试集做版本对比、发现回归可以按 session ID 批量回滚。这套工作流不依赖 Managed Agents 本身也能借鉴——核心思路是&lt;strong&gt;把 prompt 当成一等公民的配置来治理&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七skills-技能包"&gt;七、Skills 技能包
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;skills/&lt;/code&gt; 目录对应的是 Claude 的 Skills 功能——&lt;strong&gt;打包好的&amp;quot;专业能力&amp;quot;&lt;/strong&gt;，Claude 在需要的时候自动发现并加载。&lt;/p&gt;
&lt;p&gt;核心理念是 &lt;strong&gt;Progressive Disclosure&lt;/strong&gt;：技能定义不在每轮对话里都加载，只在模型判断&amp;quot;这个任务需要 Excel 能力&amp;quot;时才把 Excel skill 拉进来，从而节省 token。&lt;/p&gt;
&lt;p&gt;这个目录下有三篇 notebook：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;notebooks/01_skills_introduction.ipynb&lt;/code&gt; — 基础：加 beta header、创建第一个 Excel/PPT/PDF。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notebooks/02_skills_financial_applications.ipynb&lt;/code&gt; — 金融场景：投资组合报告、多格式工作流（CSV → Excel → PPT → PDF）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;notebooks/03_skills_custom_development.ipynb&lt;/code&gt; — 自定义 skill 开发：金融比率计算器、品牌指南 skill。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Skills 这个功能对应的是你在 Claude.ai 里看到的&amp;quot;Claude 帮你直接生成 Excel/PPT&amp;quot;那个能力。如果你想做类似的&amp;quot;让 Claude 产出真正可用的办公文档&amp;quot;的产品，这是唯一的官方路径。&lt;/p&gt;
&lt;p&gt;Progressive Disclosure 这个机制值得单独理解一下。传统做法里，你要给模型扩展能力，通常是把所有工具定义、system prompt、知识都塞进每一轮对话——结果是&lt;strong&gt;你挂的能力越多，token 成本越高，而且大部分 token 根本用不上&lt;/strong&gt;。Skills 的思路是把能力拆成有元数据的&amp;quot;技能包&amp;quot;，只在模型判断当前任务需要时才动态加载对应的代码和指令，本质上是一种 &lt;strong&gt;lazy loading + capability routing&lt;/strong&gt;。这个设计思路在做大型 Agent 平台时非常关键，哪怕你不用 Skills 产品本身，理解它的机制对你设计自己的能力注入系统也有参考价值。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八第三方集成一览"&gt;八、第三方集成一览
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;third_party/&lt;/code&gt; 下有八家集成，都是最小可跑的对接示例：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;目录&lt;/th&gt;
 &lt;th&gt;角色&lt;/th&gt;
 &lt;th&gt;典型场景&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Pinecone/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;向量数据库&lt;/td&gt;
 &lt;td&gt;RAG 召回&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;VoyageAI/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Embedding 模型&lt;/td&gt;
 &lt;td&gt;RAG、语义搜索&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;MongoDB/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文档数据库 + 向量搜索&lt;/td&gt;
 &lt;td&gt;一体化 RAG 后端&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;LlamaIndex/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;RAG 框架&lt;/td&gt;
 &lt;td&gt;和 Claude 一起用的完整 pipeline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Wikipedia/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;知识源&lt;/td&gt;
 &lt;td&gt;实时查询百科做事实补充&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;WolframAlpha/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;计算/数学&lt;/td&gt;
 &lt;td&gt;精确数值计算、公式求解&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;Deepgram/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;语音转文字&lt;/td&gt;
 &lt;td&gt;音频输入场景&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ElevenLabs/&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;文字转语音&lt;/td&gt;
 &lt;td&gt;语音输出场景&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这块适合按需查阅——你项目里用到哪家就去看哪篇，不需要通读。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九评估与微调"&gt;九、评估与微调
&lt;/h2&gt;&lt;p&gt;这两块相对偏&amp;quot;工程化&amp;quot;，但一旦你开始做严肃点的 AI 产品就绕不过去：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/building_evals.ipynb&lt;/code&gt;&lt;/strong&gt; — 自动化评估。用 Claude 当 judge 给自己的 prompt 打分。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/generate_test_cases.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Claude 生成测试用例来做对抗性评估。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;tool_evaluation/tool_evaluation.ipynb&lt;/code&gt;&lt;/strong&gt; — 工具级评估。Agent 系统里每个 tool 调用是否正确、参数是否合理的专项评估。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/metaprompt.ipynb&lt;/code&gt;&lt;/strong&gt; — Metaprompt：让 Claude 帮你写/优化 prompt。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;misc/building_moderation_filter.ipynb&lt;/code&gt;&lt;/strong&gt; — 用 Claude 搭内容审核过滤器。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;finetuning/finetuning_on_bedrock.ipynb&lt;/code&gt;&lt;/strong&gt; — 在 AWS Bedrock 上微调 Claude，附 &lt;code&gt;datasets/&lt;/code&gt; 示例数据。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;微调这块目前官方只出了 Bedrock 路径的教程，直接从 Anthropic API 做 fine-tuning 目前还不是公开能力。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十仓库工程实践这本身就是一份怎么管理-notebook-项目的样板"&gt;十、仓库工程实践：这本身就是一份&amp;quot;怎么管理 Notebook 项目&amp;quot;的样板
&lt;/h2&gt;&lt;p&gt;这一节是给另一类读者的——&lt;strong&gt;那些在自己团队里也要维护大量 notebook / 示例代码的工程师。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;claude-cookbooks 这个 repo 本身的组织方式，其实是一份挺成熟的范本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;用 &lt;code&gt;uv&lt;/code&gt; 做包管理&lt;/strong&gt;。有 &lt;code&gt;uv.lock&lt;/code&gt; 和 &lt;code&gt;uv.toml&lt;/code&gt;，&lt;code&gt;uv sync --all-extras&lt;/code&gt; 一键把所有依赖装齐。相比 &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;，速度快一个数量级，也更容易复现。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;ruff&lt;/code&gt; 做 lint 和 format&lt;/strong&gt;。行长 100、双引号。Notebook 里放宽了 E402（中间 import）、F811（重定义）、N803/N806（变量命名），这几条放宽对 notebook 写作很实用——Jupyter 里本来就会有大量这种&amp;quot;不优雅但可读&amp;quot;的写法。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;pre-commit&lt;/code&gt; + &lt;code&gt;Makefile&lt;/code&gt; + &lt;code&gt;tox&lt;/code&gt;&lt;/strong&gt;。&lt;code&gt;make check&lt;/code&gt; / &lt;code&gt;make fix&lt;/code&gt; / &lt;code&gt;make test&lt;/code&gt; 三条命令覆盖日常。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;registry.yaml&lt;/code&gt; + &lt;code&gt;authors.yaml&lt;/code&gt;&lt;/strong&gt;。每篇 notebook 在 &lt;code&gt;registry.yaml&lt;/code&gt; 里登记标题、路径、作者、分类，方便后续站点化检索。这是一个很聪明的做法——&lt;strong&gt;内容和元数据分离&lt;/strong&gt;，让 notebook 集合可以被当成一个可查询的数据库来对待。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;.claude/&lt;/code&gt; 目录 + 自定义 slash commands&lt;/strong&gt;。&lt;code&gt;/notebook-review&lt;/code&gt;（检查 notebook 质量）、&lt;code&gt;/model-check&lt;/code&gt;（校验模型 ID 是不是用了非推荐的日期版本）、&lt;code&gt;/link-review&lt;/code&gt;（检查死链）。这几个 slash command 既给人用，也给 CI 用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;lychee.toml&lt;/code&gt;&lt;/strong&gt;。专门的死链检查配置，比自己手写正则靠谱。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 里写死模型 ID 规范&lt;/strong&gt;。明确规定&lt;strong&gt;永远用非日期别名&lt;/strong&gt;（如 &lt;code&gt;claude-sonnet-4-6&lt;/code&gt;）而不是 &lt;code&gt;claude-sonnet-4-6-20250514&lt;/code&gt;。这种小约定写在 CLAUDE.md 里，让 Claude Code 或其他 Agent 在写示例代码时不会跑偏。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/engineering.webp" srcset="https://guige.ai/p/claude-cookbooks-index/engineering_hu_20e96aab13bf3de9.webp 800w, https://guige.ai/p/claude-cookbooks-index/engineering_hu_1827c5387705f6a2.webp 1600w, https://guige.ai/p/claude-cookbooks-index/engineering_hu_afecf6a7cba2650a.webp 2400w, https://guige.ai/p/claude-cookbooks-index/engineering.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;p&gt;这些细节如果你自己维护过一个 notebook 集合，应该能立刻 get 到它们的价值。我之前维护过几套内部示例代码，最大的痛点就是&lt;strong&gt;时间一长没人管，示例里的 API 调用方式和模型名全都过时了&lt;/strong&gt;。claude-cookbooks 用 CI + slash command + 自动化校验把这件事从&amp;quot;靠人自觉&amp;quot;变成&amp;quot;靠流程保证&amp;quot;，是很值得抄的做法。&lt;/p&gt;
&lt;p&gt;另一个细节是 &lt;code&gt;registry.yaml&lt;/code&gt; 里每篇 notebook 都登记了分类标签和作者。这看起来只是一个 meta 索引文件，但它背后其实是一个&lt;strong&gt;内容运营思路&lt;/strong&gt;：让示例集合既能被人读，也能被机器查询。未来如果要做一个&amp;quot;按类目筛选的交互式站点&amp;quot;或者&amp;quot;根据用户目标推荐 notebook 的 Agent&amp;quot;，&lt;code&gt;registry.yaml&lt;/code&gt; 就是现成的数据源。把内容和元数据分开，永远比把元数据硬编码进 README 要更灵活。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十一我接下来会按什么顺序往里钻"&gt;十一、我接下来会按什么顺序往里钻
&lt;/h2&gt;&lt;p&gt;最后给自己留一份阅读路线图，也供参考：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你是第一次用 Claude API：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;misc/prompt_caching.ipynb&lt;/code&gt; — 先把成本大头的底子打好&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use/calculator_tool.ipynb&lt;/code&gt; + &lt;code&gt;tool_choice.ipynb&lt;/code&gt; — Tool use 基础&lt;/li&gt;
&lt;li&gt;&lt;code&gt;capabilities/retrieval_augmented_generation/&lt;/code&gt; — 如果你要做 RAG&lt;/li&gt;
&lt;li&gt;&lt;code&gt;multimodal/getting_started_with_vision.ipynb&lt;/code&gt; — 如果涉及图像&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;如果你已经在用 Claude Code，想扩展到自定义 Agent：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; 三篇 — 先把概念过一遍&lt;/li&gt;
&lt;li&gt;&lt;code&gt;claude_agent_sdk/00&lt;/code&gt; → &lt;code&gt;01&lt;/code&gt; → &lt;code&gt;04&lt;/code&gt; — 沿着教程走&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_use/memory_cookbook.ipynb&lt;/code&gt; + &lt;code&gt;automatic-context-compaction.ipynb&lt;/code&gt; — 长会话 Agent 必备&lt;/li&gt;
&lt;li&gt;&lt;code&gt;managed_agents/CMA_operate_in_production.ipynb&lt;/code&gt; — 想上线再看这篇&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;如果你在做 B 端 Agent 产品：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;managed_agents/&lt;/code&gt; 全套六篇 CMA 教程&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tool_evaluation/tool_evaluation.ipynb&lt;/code&gt; + &lt;code&gt;misc/building_evals.ipynb&lt;/code&gt; — 评估不能缺&lt;/li&gt;
&lt;li&gt;&lt;code&gt;observability/usage_cost_api.ipynb&lt;/code&gt; — 成本监控&lt;/li&gt;
&lt;li&gt;&lt;code&gt;managed_agents/CMA_prompt_versioning_and_rollback.ipynb&lt;/code&gt; — 运营侧&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-cookbooks-index/roadmap.webp" srcset="https://guige.ai/p/claude-cookbooks-index/roadmap_hu_1d416a2740308291.webp 800w, https://guige.ai/p/claude-cookbooks-index/roadmap_hu_4d9e6d16e7eafd7.webp 1600w, https://guige.ai/p/claude-cookbooks-index/roadmap_hu_b6dc883e03637fbb.webp 2400w, https://guige.ai/p/claude-cookbooks-index/roadmap.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="结尾这只是起点"&gt;结尾：这只是起点
&lt;/h2&gt;&lt;p&gt;写到这里回头看，这份 cookbook 里随便挑一个模块展开，都够单独写一篇长文：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent SDK 的六篇 notebook 值得一篇一篇拆，特别是 Chief of Staff 那篇里塞了一整套生产级 Agent 该有的能力&lt;/li&gt;
&lt;li&gt;Managed Agents 这个新产品形态本身就值得一篇&amp;quot;它和 Agent SDK 到底什么区别&amp;quot;的分析&lt;/li&gt;
&lt;li&gt;Tool Use 里的 PTC、Tool Search with Embeddings、Memory Tool 每一个单拿出来都能写一篇技术拆解&lt;/li&gt;
&lt;li&gt;Skills 的 Progressive Disclosure 机制和它对 token 经济的影响，是个完整的专题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;patterns/agents/&lt;/code&gt; 对应的那三种设计模式，配合实际项目经验聊一聊会很有意思&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些我都打算一篇一篇写。这份导航文章就当是书签——&lt;strong&gt;以后每完成一篇深度拆解，就回来把对应的链接加上&lt;/strong&gt;，让这里慢慢长成一张真正可用的学习路线图。&lt;/p&gt;
&lt;p&gt;如果你也在看这份 cookbook，欢迎告诉我你最关心哪个模块，我排序的时候可以参考一下。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/claude-cookbooks" target="_blank" rel="noopener"
 &gt;anthropics/claude-cookbooks&lt;/a&gt; — 本文索引的主体&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/claude-agent-sdk-python" target="_blank" rel="noopener"
 &gt;anthropics/claude-agent-sdk-python&lt;/a&gt; — Agent SDK 本体&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/anthropics/courses" target="_blank" rel="noopener"
 &gt;anthropics/courses&lt;/a&gt; — 如果你还在更早的阶段，先看这个&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/research/building-effective-agents" target="_blank" rel="noopener"
 &gt;Building Effective Agents&lt;/a&gt; — Anthropic 官方 Agent 设计方法论&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills" target="_blank" rel="noopener"
 &gt;Equipping agents for the real world with Skills&lt;/a&gt; — Skills 的设计理念&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Prompt Caching 深度拆解：Claude Code 是如何做到 92% 命中率的</title><link>https://guige.ai/p/llm-prompt-caching-explained/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/llm-prompt-caching-explained/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Prompt Caching 深度拆解：Claude Code 是如何做到 92% 命中率的" /&gt;&lt;p&gt;你有没有想过这样一个问题：&lt;/p&gt;
&lt;p&gt;当你跟 Claude Code 对话了 30 分钟，中间来回几十个 tool call 之后，&lt;strong&gt;每一次它要回复你，都会把前面所有的对话历史重新发一遍给模型。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;System prompt、tool schema、CLAUDE.md 里的项目约定、三轮之前已经处理过的那些文件内容——&lt;strong&gt;全部重新读、重新算、重新计费。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是 bug，是 LLM API 的工作方式。对于长会话的 Agent 来说，这种&amp;quot;重复计算&amp;quot;往往是你 AI 基础设施账单里&lt;strong&gt;最贵的一项&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;举个数：一个 2 万 token 的 system prompt，跑 50 轮对话，那就是 &lt;strong&gt;100 万 token 的纯冗余计算&lt;/strong&gt;，全部按输入价格计费，产生零新价值。而这笔开销会在每个用户、每个 session 上复利叠加。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="558px" data-flex-grow="232" height="570" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/redundant-compute.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/redundant-compute_hu_4a7c96ee286129ff.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/redundant-compute.webp 1327w" width="1327"&gt;&lt;/p&gt;
&lt;p&gt;解决办法是 &lt;strong&gt;Prompt Caching&lt;/strong&gt;。但要真正把它用好，你得先搞清楚底下到底发生了什么。&lt;/p&gt;
&lt;p&gt;这篇文章来自 &lt;a class="link" href="https://x.com/_avichawla/status/2044670188998803855" target="_blank" rel="noopener"
 &gt;Avi Chawla 的一篇推文&lt;/a&gt;，作者把 Claude 如何做到 &lt;strong&gt;92% 缓存命中率&lt;/strong&gt;这件事讲得非常透彻。我把它翻译整理出来，并加入了一些自己使用 Claude Code 过程中的观察。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一静态上下文-vs-动态上下文"&gt;一、静态上下文 vs 动态上下文
&lt;/h2&gt;&lt;p&gt;要优化一个 prompt，你得先理清楚：&lt;strong&gt;哪些是会变的，哪些是不变的。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;每一次 Agent 的请求，其实都由两个&lt;strong&gt;本质上完全不同&lt;/strong&gt;的部分组成：&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="476px" data-flex-grow="198" height="669" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/static-vs-dynamic.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/static-vs-dynamic_hu_7ba484b4ea78e057.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/static-vs-dynamic.webp 1327w" width="1327"&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;th&gt;特征&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;静态前缀&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;system 指令、tool 定义、项目上下文、行为规范&lt;/td&gt;
 &lt;td&gt;每轮都一样，永远不变&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;动态后缀&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;用户消息、模型回复、tool 输出、终端观察&lt;/td&gt;
 &lt;td&gt;每轮都在增长&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;这个划分，就是 prompt caching 能成立的前提。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;推理基础设施会把静态前缀对应的数学状态（也就是 KV tensor）存下来，让后续发送&lt;strong&gt;完全相同前缀&lt;/strong&gt;的请求可以直接跳过计算，从内存里读出来。&lt;/p&gt;
&lt;p&gt;一旦你把这件事想通，后面所有的架构决策，都会变得非常显然。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二kv-cache-到底在缓存什么"&gt;二、KV Cache 到底在缓存什么
&lt;/h2&gt;&lt;p&gt;要理解为什么缓存这么有效，得先看 Transformer 处理你的 prompt 时到底做了什么。&lt;/p&gt;
&lt;p&gt;LLM 推理有两个阶段：&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="516px" data-flex-grow="215" height="677" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/prefill-decode.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/prefill-decode_hu_cdfda347ace53c5a.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/prefill-decode.webp 1456w" width="1456"&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prefill 阶段&lt;/strong&gt;：处理你输入的整个 prompt。在所有 token 上跑一轮密集矩阵乘法，构建模型的内部表示。这个阶段是 &lt;strong&gt;compute-bound&lt;/strong&gt;（算力瓶颈），非常贵。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decode 阶段&lt;/strong&gt;：一个 token 一个 token 地生成。每次把新 token 追加到序列里，预测下一个。这个阶段是 &lt;strong&gt;memory-bound&lt;/strong&gt;（显存瓶颈），因为大部分工作是在读历史状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在 prefill 阶段，Transformer 会为&lt;strong&gt;每一个 token&lt;/strong&gt; 计算三个向量：&lt;strong&gt;Query、Key、Value&lt;/strong&gt;。Attention 机制用它们来决定每个 token 跟其他 token 的关系。&lt;/p&gt;
&lt;p&gt;关键在于：&lt;strong&gt;一个 token 的 Key 和 Value 只依赖于它前面的那些 token。一旦算出来，就永远不会变。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;video src="kv-attention.mp4" autoplay loop muted playsinline style="width:100%;max-width:100%;border-radius:8px;"&gt;&lt;/video&gt;&lt;/p&gt;
&lt;p&gt;没有缓存的情况下，这些 Key 和 Value tensor 在每次请求结束后就被丢掉了，下次请求要从头再算一遍。对于 2 万 token 的前缀，那就是 2 万 token 的 attention 计算——完全没必要重复。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;KV Cache&lt;/strong&gt; 的做法是：把这些 tensor 持久化在推理服务器上，用 token 序列的&lt;strong&gt;加密哈希&lt;/strong&gt;做索引。当新请求进来、前缀完全一致时，哈希命中，tensor 直接从内存里加载，这段 prefill 计算&lt;strong&gt;整个跳过&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这把每生成一个 token 的计算复杂度从 &lt;strong&gt;O(n²)&lt;/strong&gt; 降到 &lt;strong&gt;O(n)&lt;/strong&gt;。对于一个重复使用 50 轮的 2 万 token 前缀，省下的算力是非常可观的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三经济账"&gt;三、经济账
&lt;/h2&gt;&lt;p&gt;定价结构才是让这个架构决策&lt;strong&gt;真正有分量&lt;/strong&gt;的地方。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cache Read&lt;/strong&gt;：0.1x 的基础输入价格——也就是&lt;strong&gt;九折优惠，打完一折&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache Write&lt;/strong&gt;：1.25x 的基础价格——存 KV tensor 要加收 25% 溢价。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extended 1-hour Caching&lt;/strong&gt;：2.0x 的价格。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面是 Claude 各模型的具体价格：&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="885px" data-flex-grow="369" height="368" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/cache-pricing.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/cache-pricing_hu_1a7ad128b991d206.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/cache-pricing.webp 1358w" width="1358"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但这笔账只有在缓存命中率够高的时候才划算。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;生产环境里最好的例子，就是 Claude Code。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四claude-code-的-30-分钟实录"&gt;四、Claude Code 的 30 分钟实录
&lt;/h2&gt;&lt;p&gt;Claude Code 的整个架构设计，都围绕一个目标展开：&lt;strong&gt;让缓存一直保持热的（keep the cache hot）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面这段是一次真实的 30 分钟编码会话从&lt;strong&gt;计费视角&lt;/strong&gt;看起来是什么样的：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;第 0 分钟&lt;/strong&gt;：Claude Code 加载 system prompt、tool 定义、项目 CLAUDE.md 文件。这个载荷&lt;strong&gt;超过 2 万 token&lt;/strong&gt;，而且每个 token 都是新的，这是&lt;strong&gt;整场会话里最贵的一刻&lt;/strong&gt;。但这笔钱你只付一次。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 1-5 分钟&lt;/strong&gt;：你开始下指令，Claude Code 派出 Explore Subagent 在代码库里游走，打开文件、跑 grep 命令。所有这些都被追加到动态后缀里。但那 2 万 token 的静态前缀现在是在&lt;strong&gt;以 $0.30/MTok 的缓存价读取&lt;/strong&gt;，而不是 $3.00/MTok。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 6-15 分钟&lt;/strong&gt;：Plan Subagent 收到的是一份&lt;strong&gt;摘要版简报&lt;/strong&gt;，而不是原始结果——因为把原始输出塞进来只会让动态后缀没必要地膨胀。它产出一份实现计划，你批准后，Claude Code 开始改代码。每一轮都在从缓存里读静态前缀，&lt;strong&gt;命中率飙过 90%&lt;/strong&gt;，而且每次访问都会重置 TTL、让缓存保持温热。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 16-25 分钟&lt;/strong&gt;：你提出修改，意味着更多 tool call、更多终端输出、动态后缀里堆积更多上下文。到这时，整场会话已经处理了&lt;strong&gt;几十万 token&lt;/strong&gt;，但每一轮都在从缓存读那 2 万 token 的地基。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第 28 分钟&lt;/strong&gt;：你在终端敲 &lt;code&gt;/cost&lt;/code&gt;。&lt;strong&gt;不带缓存&lt;/strong&gt;的话，Sonnet 4.5 的定价下 200 万 token 要花 &lt;strong&gt;$6.00&lt;/strong&gt;。带上 92% 效率的缓存，其中 184 万 token 是 cache read，总成本降到 &lt;strong&gt;$1.15&lt;/strong&gt;——&lt;strong&gt;单次任务减少 81%&lt;/strong&gt;。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="439px" data-flex-grow="183" height="559" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/claude-code-session-cost.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/claude-code-session-cost_hu_fb319275f820682f.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/claude-code-session-cost.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;这就是一个&lt;strong&gt;热缓存&lt;/strong&gt;应该长的样子：为静态地基付一次钱，然后免费读取任意多次。动态尾部是唯一会被持续计费的部分。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;鬼哥的使用体感&lt;/strong&gt;：我平时重度用 Claude Code，每次敲 &lt;code&gt;/cost&lt;/code&gt; 都会注意一下 &lt;code&gt;cache_read_input_tokens&lt;/code&gt; 这一栏——动辄占到整个输入量的 90% 以上，这个数字非常直观地告诉你&lt;strong&gt;缓存是不是在工作&lt;/strong&gt;。如果哪天命中率突然掉下去，基本就是提示你：你可能刚刚做了什么破坏缓存的事——比如中途换模型、或者手抖改了某个 subagent 的定义。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五哈希缓存的脆弱性"&gt;五、哈希缓存的脆弱性
&lt;/h2&gt;&lt;p&gt;关于 prompt caching，最反直觉的一点是：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;&amp;ldquo;1 + 2 = 3&amp;rdquo; 可以命中缓存，但 &amp;ldquo;2 + 1&amp;rdquo; 就是一次 miss。&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;推理基础设施是&lt;strong&gt;从头开始&lt;/strong&gt;对整个 token 序列做哈希。只要序列里任何东西变了，哪怕只是两个元素的顺序——哈希就变了，&lt;strong&gt;整个前缀都要按全价重算&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="434px" data-flex-grow="181" height="565" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/hash-fragility.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/hash-fragility_hu_c18a6052d25c30fa.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/hash-fragility.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;这不是什么实现细节，&lt;strong&gt;这是 Claude Code 所有工程决策背后最核心的约束。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;下面是生产环境里真实出现过的、破坏缓存的几个例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 system prompt 里注入了一个&lt;strong&gt;时间戳&lt;/strong&gt;——每次请求都生成一个独一无二的哈希。&lt;/li&gt;
&lt;li&gt;一个 JSON 序列化器&lt;strong&gt;对 tool schema 的 key 排序不稳定&lt;/strong&gt;——前缀直接作废。&lt;/li&gt;
&lt;li&gt;一个 AgentTool 的参数在会话中途被&lt;strong&gt;动态修改&lt;/strong&gt;——2 万 token 的缓存全部报废。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;从这里可以推出&lt;strong&gt;三条铁律&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;不要在会话中途修改 tool。&lt;/strong&gt; Tool 定义是缓存前缀的一部分，加一个、删一个，都会让下游所有东西失效。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;永远不要在会话中途切换模型。&lt;/strong&gt; 缓存是按模型绑定的，意味着切到便宜模型继续对话，要重建整个缓存——省的钱可能还抵不上重建成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;永远不要通过修改前缀来更新状态。&lt;/strong&gt; Claude Code 的做法是：把提醒标签追加到&lt;strong&gt;下一条用户消息&lt;/strong&gt;里，而不是去编辑 system prompt——前缀永远不动。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;鬼哥补充一条&lt;/strong&gt;：你在写自定义 Agent 的时候，&lt;strong&gt;注意 Python dict 序列化成 JSON 时的 key 顺序&lt;/strong&gt;。Python 3.7+ 的 dict 是有序的，但如果你的 tool schema 有一部分来自合并多个 dict 或者来自数据库查询，顺序可能每次都不一样。这种隐性的不确定性，是最容易让你整夜找不到原因的 cache miss 来源。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六应用到你自己的-agent"&gt;六、应用到你自己的 Agent
&lt;/h2&gt;&lt;p&gt;不管你是直接用 Claude Code，还是从头搭自己的 Agent，规则都是一样的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;按这个顺序组织你的 prompt&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;System 指令和行为规范&lt;/strong&gt;放在最上面。会话期间不要改。&lt;/li&gt;
&lt;li&gt;**Tool 定义一次性全部加载完毕。**不要中途增减。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检索到的上下文和参考文档&lt;/strong&gt;接下来。会话期间保持稳定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对话历史和 tool 输出&lt;/strong&gt;放最下面。这才是你的动态后缀。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="439px" data-flex-grow="183" height="559" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/prompt-structure.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/prompt-structure_hu_23ced9a4cd27b397.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/prompt-structure.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;如果你用的是 Anthropic API 的 &lt;strong&gt;auto-caching&lt;/strong&gt;，缓存断点会随着对话增长自动推进。如果不用 auto-caching，你得&lt;strong&gt;手动管理 token 边界&lt;/strong&gt;——边界错了一个位置，就意味着完全错过缓存。&lt;/p&gt;
&lt;p&gt;对于&lt;strong&gt;上下文压缩&lt;/strong&gt;（当你快接近上下文上限时），要用**&amp;ldquo;缓存安全的分叉&amp;rdquo;&lt;strong&gt;这种做法：保留同样的 system prompt、tool、对话历史，然后把压缩指令作为一条&lt;/strong&gt;新消息追加**在后面。缓存前缀得以复用，真正要被计费的新 token 只有压缩指令本身。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="439px" data-flex-grow="183" height="559" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/llm-prompt-caching-explained/cache-safe-forking.webp" srcset="https://guige.ai/p/llm-prompt-caching-explained/cache-safe-forking_hu_408380e2df72fa4b.webp 800w, https://guige.ai/p/llm-prompt-caching-explained/cache-safe-forking.webp 1024w" width="1024"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;验证缓存是否在工作&lt;/strong&gt;，盯死 API 响应里这三个字段：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;字段&lt;/th&gt;
 &lt;th&gt;含义&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cache_creation_input_tokens&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;写入缓存&lt;/strong&gt;的 token 数&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cache_read_input_tokens&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;从缓存读取&lt;/strong&gt;的 token 数&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;input_tokens&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;没走缓存&lt;/strong&gt;、按全价计费的 token 数&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;缓存命中率&lt;/strong&gt; = &lt;code&gt;cache_read_input_tokens / (cache_read_input_tokens + cache_creation_input_tokens)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;把它当成你的&lt;strong&gt;可用率（uptime）指标&lt;/strong&gt;来盯。命中率掉下去，就是警报。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七takeaways"&gt;七、Takeaways
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Prompt Caching 不是一个你打开开关就能用的特性，而是一种必须贯穿到架构层面的纪律。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;核心思想其实简单到一句话：&lt;strong&gt;把静态内容放最上面，动态内容从下面长。&lt;/strong&gt; 基础设施会对前缀做哈希、存储 KV tensor、然后在你每一次读取时给你&lt;strong&gt;九折&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但&lt;strong&gt;纪律藏在所有细节里&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要往 system prompt 里注入时间戳&lt;/li&gt;
&lt;li&gt;不要打乱 tool 定义的顺序&lt;/li&gt;
&lt;li&gt;不要在会话中途切换模型&lt;/li&gt;
&lt;li&gt;不要在缓存断点上游去修改任何东西&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code 在生产规模上演示了这套纪律的效果：&lt;strong&gt;92% 的缓存命中率，81% 的成本削减&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;如果你正在搭 Agent 却没有围绕 prompt caching 做设计，&lt;strong&gt;你就是在把大部分利润留在桌上。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原文推文：&lt;a class="link" href="https://x.com/_avichawla/status/2044670188998803855" target="_blank" rel="noopener"
 &gt;Prompt caching in LLMs, clearly explained - @_avichawla&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anthropic Prompt Caching 文档：&lt;a class="link" href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching" target="_blank" rel="noopener"
 &gt;Prompt caching - Anthropic Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Claude Code Session 管理指南：1M 上下文是把双刃剑</title><link>https://guige.ai/p/claude-code-session-management/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/claude-code-session-management/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Claude Code Session 管理指南：1M 上下文是把双刃剑" /&gt;&lt;p&gt;你用 Claude Code 的时候，是不是就一个终端窗口，一路发消息到底？&lt;/p&gt;
&lt;p&gt;我之前也是这样。直到最近读到 Anthropic 的 Thariq 写的一篇关于 Session Management 的帖子，才意识到自己一直在用最笨的方式——&lt;strong&gt;把 100 万 token 的上下文窗口当成一个无限垃圾桶。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thariq 说他最近跟很多 Claude Code 重度用户聊过，发现一个反复出现的主题：&lt;strong&gt;1M token 的上下文窗口是把双刃剑。&lt;/strong&gt; 它让 Claude Code 能自主运行更久、处理更复杂的任务，但同时也打开了 context pollution（上下文污染）的大门——如果你不刻意管理 Session，模型的表现反而会越来越差。&lt;/p&gt;
&lt;p&gt;Session 管理变得比以往更重要。要不要开两个终端？每次发 prompt 都新开一个 Session？什么时候该用 compact、rewind、还是 subagent？&lt;/p&gt;
&lt;p&gt;这篇文章把这些问题讲清楚了。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="600px" data-flex-grow="250" height="743" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/intro.webp" srcset="https://guige.ai/p/claude-code-session-management/intro_hu_928a18d577c60896.webp 800w, https://guige.ai/p/claude-code-session-management/intro_hu_5966da4ef3580032.webp 1600w, https://guige.ai/p/claude-code-session-management/intro.webp 1858w" width="1858"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="contextcompaction-和-context-rot"&gt;Context、Compaction 和 Context Rot
&lt;/h2&gt;&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="785px" data-flex-grow="327" height="440" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/context-rot.webp" srcset="https://guige.ai/p/claude-code-session-management/context-rot_hu_bf0d5bd36e5abf9a.webp 800w, https://guige.ai/p/claude-code-session-management/context-rot.webp 1440w" width="1440"&gt;&lt;/p&gt;
&lt;p&gt;先把基础概念对齐。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context Window（上下文窗口）&lt;/strong&gt; 是模型在生成下一条回复时能「看到」的全部内容——包括系统提示词、整段对话历史、每次工具调用的输入和输出、以及读过的每一个文件。Claude Code 的上下文窗口是 &lt;strong&gt;100 万 token&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;但使用上下文是有代价的，这个代价叫 &lt;strong&gt;Context Rot（上下文衰退）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Context Rot 指的是：随着上下文越来越长，模型性能会下降。因为注意力机制会被分散到更多的 token 上，老旧的、不相关的内容开始干扰当前任务。Anthropic 观察到的规律是，&lt;strong&gt;大约在 300-400k token 的时候，Context Rot 开始出现&lt;/strong&gt;——但这高度依赖任务本身，不是一条硬规则。&lt;/p&gt;
&lt;p&gt;上下文窗口是一个硬性截断。当你快用完的时候，需要把当前的工作总结成更精简的描述，在新的上下文窗口中继续——这个操作叫 &lt;strong&gt;Compaction（压缩）&lt;/strong&gt;。你也可以手动触发它。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="664px" data-flex-grow="276" height="520" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/compaction-primer.webp" srcset="https://guige.ai/p/claude-code-session-management/compaction-primer_hu_8662cf40b5cb7265.webp 800w, https://guige.ai/p/claude-code-session-management/compaction-primer.webp 1440w" width="1440"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="每一轮对话结束后都是一个分叉点"&gt;每一轮对话结束后，都是一个分叉点
&lt;/h2&gt;&lt;p&gt;假设你刚让 Claude 做完了一件事，上下文里现在有了一些东西（工具调用、输出结果、你的指令），接下来你有 &lt;strong&gt;5 个选项&lt;/strong&gt;——但大多数人只用了第一个：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Continue&lt;/strong&gt; —— 继续在同一个 Session 中发消息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/strong&gt;（双击 Esc）—— 跳回到之前某条消息，从那里重新开始&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/strong&gt; —— 新开一个 Session，通常带着你从上一轮蒸馏出来的 brief&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;/compact&lt;/code&gt;&lt;/strong&gt; —— 压缩当前 Session 的历史，在摘要的基础上继续&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subagent&lt;/strong&gt; —— 把接下来的工作委托给一个拥有独立干净上下文的子代理，只拿结果回来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最自然的反应当然是继续发消息。但另外四个选项的存在，就是为了帮你管理上下文。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="634px" data-flex-grow="264" height="1016" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/session-options.webp" srcset="https://guige.ai/p/claude-code-session-management/session-options_hu_111bbd8f57598709.webp 800w, https://guige.ai/p/claude-code-session-management/session-options_hu_e99f042065d6b264.webp 1600w, https://guige.ai/p/claude-code-session-management/session-options_hu_b73264c6eba92f04.webp 2400w, https://guige.ai/p/claude-code-session-management/session-options.webp 2686w" width="2686"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="什么时候该开新-session"&gt;什么时候该开新 Session？
&lt;/h2&gt;&lt;p&gt;1M 的上下文意味着你现在可以更可靠地完成更长的任务——比如让 Claude 从零搭建一个全栈应用。但 &lt;strong&gt;上下文没用完，不代表你不该开新 Session。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anthropic 的经验法则：&lt;strong&gt;当你开始一个新任务时，也应该开始一个新 Session。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;灰色地带在于：你可能想做一些相关的任务，上下文中的一部分内容仍然有用，但不是全部。&lt;/p&gt;
&lt;p&gt;比如，你刚实现了一个功能，接下来要写它的文档。虽然可以新开 Session，但 Claude 得重新读一遍你刚实现的那些文件，更慢也更贵。写文档不是一个对「智能强度」要求特别高的任务，多余的上下文带来的效率增益可能值得保留。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我自己的判断方式&lt;/strong&gt;：下一个任务要是做错了会不会很麻烦？如果答案是&amp;quot;会&amp;quot;（比如重构核心逻辑），果断新开。如果答案是&amp;quot;还好&amp;quot;（比如写文档、加注释），继续旧 Session 省事。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="最值得养成的习惯用-rewind-代替纠正"&gt;最值得养成的习惯：用 Rewind 代替纠正
&lt;/h2&gt;&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="576px" data-flex-grow="240" height="600" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/rewind-flow.webp" srcset="https://guige.ai/p/claude-code-session-management/rewind-flow_hu_d88cf5d596c407ef.webp 800w, https://guige.ai/p/claude-code-session-management/rewind-flow.webp 1440w" width="1440"&gt;&lt;/p&gt;
&lt;p&gt;如果只能推荐一个习惯，Thariq 说他会选 &lt;strong&gt;rewind&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在 Claude Code 里，双击 Esc（或者运行 &lt;code&gt;/rewind&lt;/code&gt;）可以跳回到之前任意一条消息，从那个点重新给 prompt。那条消息之后的所有内容会被从上下文中丢弃。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rewind 往往比纠正更好。&lt;/strong&gt; 举个例子：Claude 读了 5 个文件，尝试了一个方案，没成功。你的本能反应可能是说&amp;quot;那个不行，试试 X 方案吧&amp;quot;。但更好的做法是：&lt;strong&gt;rewind 到刚读完文件的那个点，然后带着你学到的信息重新给指令。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;别用方案 A，foo 模块没有暴露那个接口——直接走方案 B。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;你还可以用&amp;quot;summarize from here&amp;quot;让 Claude 总结它的发现，生成一份交接消息——有点像未来的 Claude 给过去的自己写了一封信：这条路走不通，原因是什么。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="625px" data-flex-grow="260" height="476" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/rewind-summary.webp" srcset="https://guige.ai/p/claude-code-session-management/rewind-summary_hu_e234a24d7dbf114.webp 800w, https://guige.ai/p/claude-code-session-management/rewind-summary.webp 1240w" width="1240"&gt;&lt;/p&gt;
&lt;p&gt;这件事我自己踩过很多坑。之前遇到 Claude 写的代码不对，我都是直接在下面追&amp;quot;不对，换个方式&amp;quot;、&amp;ldquo;还是不行，试试另一个&amp;rdquo;——结果上下文里全是失败的尝试，越到后面 Claude 表现越差。后来开始用 rewind，明显感觉&amp;quot;一次做对&amp;quot;的概率高了很多。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="compact-vs-新开-session"&gt;Compact vs 新开 Session
&lt;/h2&gt;&lt;p&gt;一旦 Session 变长，你有两种减重方式：&lt;code&gt;/compact&lt;/code&gt; 或者 &lt;code&gt;/clear&lt;/code&gt;（新开）。它们感觉很像，但行为完全不同。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/compact&lt;/code&gt;&lt;/strong&gt;：让模型总结对话历史，用摘要替换完整记录。这是有损的——你在信任 Claude 来决定什么是重要的。好处是你不需要自己写任何东西，而且 Claude 可能在包含重要细节和文件方面比你更全面。你也可以引导它：&lt;code&gt;/compact 聚焦 auth 重构部分，丢掉测试调试内容&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="617px" data-flex-grow="257" height="560" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/compact-vs-clear.webp" srcset="https://guige.ai/p/claude-code-session-management/compact-vs-clear_hu_d7732f7f04c266ed.webp 800w, https://guige.ai/p/claude-code-session-management/compact-vs-clear.webp 1440w" width="1440"&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/clear&lt;/code&gt;&lt;/strong&gt;：你自己写下重要的内容——&amp;ldquo;我们正在重构 auth 中间件，约束是 X，关键文件是 A 和 B，已经排除了方案 Y&amp;rdquo;——然后清空重开。工作量更大，但最终的上下文完全是你认为相关的内容。&lt;/p&gt;
&lt;p&gt;简单说：&lt;strong&gt;&lt;code&gt;/compact&lt;/code&gt; 是让 Claude 帮你做摘要，&lt;code&gt;/clear&lt;/code&gt; 是你自己做摘要。&lt;/strong&gt; 前者省事但有损，后者费力但精确。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="什么导致了一次坏-compact"&gt;什么导致了一次「坏 Compact」？
&lt;/h2&gt;&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="640px" data-flex-grow="266" height="600" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/bad-compact.webp" srcset="https://guige.ai/p/claude-code-session-management/bad-compact_hu_47f0e1a381e4a061.webp 800w, https://guige.ai/p/claude-code-session-management/bad-compact.webp 1600w" width="1600"&gt;&lt;/p&gt;
&lt;p&gt;如果你经常跑长 Session，可能遇到过 compact 之后 Claude 突然变蠢的情况。&lt;/p&gt;
&lt;p&gt;Anthropic 发现，&lt;strong&gt;坏 compact 通常发生在模型无法预测你接下来要做什么的时候。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;举个例子：autocompact 在一段漫长的 debugging session 之后触发，它把调查过程总结了一遍。然后你的下一条消息是&amp;quot;现在去修 bar.ts 里那个 warning。&amp;quot;&lt;/p&gt;
&lt;p&gt;但因为 Session 的主题一直是 debugging，那个 warning 可能已经被当作不重要的内容从摘要中丢掉了。&lt;/p&gt;
&lt;p&gt;更麻烦的是：&lt;strong&gt;由于 Context Rot，模型在触发 compaction 的那个时刻恰恰处于最不聪明的状态。&lt;/strong&gt; 它用最差的自己去总结整段历史，结果可想而知。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解法&lt;/strong&gt;：利用 1M 上下文给你的时间余量，&lt;strong&gt;在 Context Rot 出现之前主动执行 &lt;code&gt;/compact&lt;/code&gt;&lt;/strong&gt;，并且告诉它你接下来打算做什么，作为总结的方向引导。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="subagent独立上下文的子任务"&gt;Subagent：独立上下文的子任务
&lt;/h2&gt;&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="540px" data-flex-grow="225" height="640" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/subagent-flow.webp" srcset="https://guige.ai/p/claude-code-session-management/subagent-flow_hu_d1e7202e93fa63b7.webp 800w, https://guige.ai/p/claude-code-session-management/subagent-flow.webp 1440w" width="1440"&gt;&lt;/p&gt;
&lt;p&gt;Subagent 本质上是一种上下文管理手段。当你提前知道一块工作会产生大量中间输出、但你不再需要那些中间内容时，它特别有用。&lt;/p&gt;
&lt;p&gt;当 Claude 通过 Agent 工具生成一个 subagent，这个 subagent 会获得&lt;strong&gt;自己独立的全新上下文窗口&lt;/strong&gt;。它可以做任意多的工作，然后合成结果，只把最终报告返回给父 agent。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Anthropic 的心理测试&lt;/strong&gt;：我还会需要这些工具输出吗？还是只需要结论？&lt;/p&gt;
&lt;p&gt;虽然 Claude Code 会自动调用 subagent，但你也可以显式指定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;启动一个 subagent，根据这个 spec 文件验证我刚才的实现是否正确&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;启动一个 subagent，读完另一个代码库，总结它的 auth 流程是怎么实现的，然后你自己按同样方式来&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;启动一个 subagent，根据 git 变更记录给这个功能写文档&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个功能我现在用得越来越多。特别是让 subagent 去读别的项目的源码然后回来总结，效果非常好——因为读源码的过程会产生海量 token，留在主上下文里是纯粹的浪费。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="最后"&gt;最后
&lt;/h2&gt;&lt;p&gt;Session 管理这件事，说到底就一句话：&lt;strong&gt;每次 Claude 结束一轮工作、你准备发下一条消息的时候，那是一个决策点。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要无脑继续。停下来想一想：上下文还干净吗？方向对吗？接下来的任务真的需要之前的全部内容吗？&lt;/p&gt;
&lt;p&gt;Anthropic 说他们预计未来 Claude 会学会自己处理这些。但就现阶段而言，主动管理 Session 是你能做的、对 Claude Code 使用体验影响最大的一件事。&lt;/p&gt;
&lt;p&gt;&lt;img class="gallery-image" data-flex-basis="432px" data-flex-grow="180" height="1386" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/claude-code-session-management/summary.webp" srcset="https://guige.ai/p/claude-code-session-management/summary_hu_a80e9de32e659f75.webp 800w, https://guige.ai/p/claude-code-session-management/summary_hu_33f095029075481e.webp 1600w, https://guige.ai/p/claude-code-session-management/summary_hu_785dadb26a08e4e6.webp 2400w, https://guige.ai/p/claude-code-session-management/summary.webp 2496w" width="2496"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;原推文：&lt;a class="link" href="https://x.com/trq212/status/2044548257058328723" target="_blank" rel="noopener"
 &gt;Thariq (@trq212) on X&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.anthropic.com/engineering/claude-code-best-practices" target="_blank" rel="noopener"
 &gt;Claude 官方博客原文&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Karpathy 的 LLM Wiki：用大模型编译知识，而不是检索知识</title><link>https://guige.ai/p/karpathy-llm-wiki/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://guige.ai/p/karpathy-llm-wiki/</guid><description>&lt;img src="https://guige.ai/" alt="Featured image of post Karpathy 的 LLM Wiki：用大模型编译知识，而不是检索知识" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&amp;ldquo;我最近大部分的 token 消耗，不再是在操作代码，而是在操作知识。&amp;rdquo; —— Andrej Karpathy, 2026.04.03&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;2026 年 4 月 3 日，Karpathy 发了一条推文，描述了他最近用 LLM 构建个人知识库的工作流。第二天，他把这个想法整理成了一个 &lt;a class="link" href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" target="_blank" rel="noopener"
 &gt;GitHub Gist&lt;/a&gt;，并提出了一个有趣的理念：&lt;strong&gt;在 LLM Agent 时代，分享 idea 比分享代码更有价值——你把 idea 交给自己的 Agent，它会为你定制和构建一切。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这条推文迅速引爆了技术社区。但在热度之下，Karpathy 真正提出的东西值得我们认真拆解：一种**用 LLM 编译知识（而非检索知识）**的全新范式。&lt;/p&gt;
&lt;p&gt;本文将系统性地拆解这套思维体系——从它的历史渊源到技术架构，从与 RAG 的本质区别到社区的尖锐争论，最后给出可落地的实践路径。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="一从-1945-年说起bush-的-memex-构想"&gt;一、从 1945 年说起：Bush 的 Memex 构想
&lt;/h2&gt;&lt;p&gt;要理解 Karpathy 在做什么，我们需要先回到 81 年前。&lt;/p&gt;
&lt;p&gt;1945 年 7 月，Vannevar Bush 在《The Atlantic》发表了一篇名为 &lt;em&gt;&amp;ldquo;As We May Think&amp;rdquo;&lt;/em&gt; 的文章，提出了 &lt;strong&gt;Memex&lt;/strong&gt;（memory + index 的合成词）——一台桌面大小的设备，能存储一个人所有的书籍、记录和通信，并以&amp;quot;极快的速度和灵活性&amp;quot;供人检索。&lt;/p&gt;
&lt;p&gt;Memex 最独特的设计是&lt;strong&gt;关联路径（Associative Trails）&lt;/strong&gt;：用户可以在任意文档之间创建链式连接，模拟人类联想式思维，而非传统的层级索引。用户可以给这些路径加批注、创建分支，然后分享给同事。&lt;/p&gt;
&lt;p&gt;这个构想直接影响了后来的一系列技术发明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Douglas Engelbart&lt;/strong&gt;（1945）读到这篇文章后开始研究，最终发明了鼠标、文字处理器和超链接&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ted Nelson&lt;/strong&gt;（1965）明确引用 Memex，创造了&amp;quot;超文本&amp;quot;（Hypertext）这个概念&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tim Berners-Lee&lt;/strong&gt;（1989）在此基础上构建了万维网&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DARPA&lt;/strong&gt;（2014）直接以 Memex 命名了一个研究项目&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但 Bush 的构想有一个致命缺陷：&lt;strong&gt;维护成本&lt;/strong&gt;。谁来持续更新这些关联路径？谁来在新文档加入时更新所有相关的交叉引用？谁来标注新旧信息之间的矛盾？&lt;/p&gt;
&lt;p&gt;答案在 81 年后到来：&lt;strong&gt;LLM。&lt;/strong&gt;&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Bush 的 Memex 构想其实比万维网更接近 Karpathy 的方案——Web 是公开的、混乱的、弱链接的；Memex 是私人的、策展的、富链接的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Memex 到 LLM Wiki 的演化路径" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/karpathy-llm-wiki/memex-evolution.webp" srcset="https://guige.ai/p/karpathy-llm-wiki/memex-evolution_hu_81a5d52f274460d6.webp 800w, https://guige.ai/p/karpathy-llm-wiki/memex-evolution_hu_743c5c39e7231ce7.webp 1600w, https://guige.ai/p/karpathy-llm-wiki/memex-evolution_hu_f3d3b3374a2dc3ab.webp 2400w, https://guige.ai/p/karpathy-llm-wiki/memex-evolution.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="二核心洞察编译知识而非检索知识"&gt;二、核心洞察：编译知识，而非检索知识
&lt;/h2&gt;&lt;h3 id="rag-的根本问题"&gt;RAG 的根本问题
&lt;/h3&gt;&lt;p&gt;目前大多数人使用 LLM 处理文档的方式是 &lt;strong&gt;RAG（Retrieval-Augmented Generation）&lt;/strong&gt;：上传文件 → 切块建索引 → 查询时检索相关片段 → 生成回答。&lt;/p&gt;
&lt;p&gt;Karpathy 一针见血地指出了 RAG 的本质问题：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;&amp;ldquo;LLM 每次查询都从零重新发现知识。什么都不积累。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这就像一个图书管理员，每次有人来问问题，他都要从头翻阅所有的书，找到相关段落，拼凑出一个答案。下次同样的人来问相关的问题，他又从头来一遍——完全不记得上次的工作。&lt;/p&gt;
&lt;p&gt;RAG 的具体局限：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;RAG 的问题&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;知识综合&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;只检索扁平文档，不在文档间创建关联和综合&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;复利效应&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;答案每次重新推导，知识不累积&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;检索噪声&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;基于嵌入的检索容易出现语义/词汇不匹配的静默失败&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;基础设施&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;需要向量数据库、嵌入模型、分块策略等一整套基建&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;上下文窗口&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;即使 2M token 也只能装约 300-400 页，一份财报就可能耗尽&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="知识编译一种新范式"&gt;知识编译：一种新范式
&lt;/h3&gt;&lt;p&gt;Karpathy 的替代方案是：&lt;strong&gt;不要只在查询时检索原始文档，而是让 LLM 增量地构建和维护一个持久的 Wiki。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;当添加新资料时，LLM 不仅仅是索引它。它会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;阅读&lt;/strong&gt;全文并提取关键信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;整合&lt;/strong&gt;到现有的 wiki 知识体系中&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更新&lt;/strong&gt;相关的实体页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;修正&lt;/strong&gt;已有的摘要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标注&lt;/strong&gt;新旧信息之间的矛盾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;强化&lt;/strong&gt;跨文档的综合分析&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;知识编译一次，持续维护，而非每次查询都重新推导。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个形象的比喻：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RAG&lt;/strong&gt; = 一个有超快叉车的巨型仓库——什么都能找到，但不能解释货物之间的关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LLM Wiki&lt;/strong&gt; = 一个有专职图书管理员的策展图书馆——管理员不断写新的综述来描述和关联旧有的藏书&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="关键区别wiki-是一个持续复利的知识制品"&gt;关键区别：Wiki 是一个持续复利的知识制品
&lt;/h3&gt;&lt;p&gt;交叉引用真实存在，矛盾被标注，综合分析反映了所有已读内容。&lt;strong&gt;Wiki 随着每一个新来源和每一次提问而变得更丰富。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="RAG vs LLM Wiki 的知识流向对比" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/karpathy-llm-wiki/rag-vs-wiki.webp" srcset="https://guige.ai/p/karpathy-llm-wiki/rag-vs-wiki_hu_d7618d0e63cbd3f.webp 800w, https://guige.ai/p/karpathy-llm-wiki/rag-vs-wiki_hu_5ea6c40a5c7b9391.webp 1600w, https://guige.ai/p/karpathy-llm-wiki/rag-vs-wiki_hu_e4edf2abddd9117c.webp 2400w, https://guige.ai/p/karpathy-llm-wiki/rag-vs-wiki.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="三三层架构"&gt;三、三层架构
&lt;/h2&gt;&lt;p&gt;Karpathy 在 Gist 中明确定义了三层架构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌─────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ The Schema（配置层） │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ CLAUDE.md / AGENTS.md │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 定义 wiki 结构、惯例、工作流 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ The Wiki（知识层） │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ LLM 生成和维护的 .md 文件 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 摘要 / 实体页 / 概念页 / 综述 / 索引 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├─────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ Raw Sources（原始资料层） │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 不可变的策展文档 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ 文章 / 论文 / 图片 / 数据集 / 代码库 │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="第一层raw-sources原始资料"&gt;第一层：Raw Sources（原始资料）
&lt;/h3&gt;&lt;p&gt;这是&lt;strong&gt;不可变的事实来源&lt;/strong&gt;。文章、论文、图片、数据文件——只进不改。所有的原始材料都保存在 &lt;code&gt;raw/&lt;/code&gt; 目录中。&lt;/p&gt;
&lt;p&gt;采集工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Obsidian Web Clipper&lt;/strong&gt; 浏览器扩展：一键将网页文章转为 markdown&lt;/li&gt;
&lt;li&gt;配合 Obsidian 快捷键将相关图片下载到本地，方便 LLM 直接引用&lt;/li&gt;
&lt;li&gt;手动放入的论文 PDF、数据集等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="第二层the-wiki知识层"&gt;第二层：The Wiki（知识层）
&lt;/h3&gt;&lt;p&gt;这是 LLM 生成和维护的核心层——一组结构化的、互相链接的 markdown 文件。包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;摘要页&lt;/strong&gt;：每个原始资料的关键要点提炼&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实体页&lt;/strong&gt;：人物、组织、技术的专属页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概念页&lt;/strong&gt;：抽象概念的解释和关联&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;综述页&lt;/strong&gt;：跨多个来源的主题综合分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;索引文件&lt;/strong&gt;：全局目录和导航&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;关键原则：人类几乎不直接编辑 wiki，这是 LLM 的领地。&lt;/strong&gt; 你负责策展来源、提出问题、引导方向；LLM 负责所有的簿记工作。&lt;/p&gt;
&lt;h3 id="第三层the-schema配置层"&gt;第三层：The Schema（配置层）
&lt;/h3&gt;&lt;p&gt;一个配置文档（如 &lt;code&gt;CLAUDE.md&lt;/code&gt; 或 &lt;code&gt;AGENTS.md&lt;/code&gt;），定义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wiki 的目录结构和命名规范&lt;/li&gt;
&lt;li&gt;页面的模板格式&lt;/li&gt;
&lt;li&gt;摄入新资料时的工作流程&lt;/li&gt;
&lt;li&gt;质检的标准和流程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个配置层将 LLM 从通用聊天机器人转变为&lt;strong&gt;结构化的知识维护者&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="四三大核心操作"&gt;四、三大核心操作
&lt;/h2&gt;&lt;h3 id="操作一ingest摄入"&gt;操作一：Ingest（摄入）
&lt;/h3&gt;&lt;p&gt;当你往 &lt;code&gt;raw/&lt;/code&gt; 目录放入新资料时：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LLM 阅读原始资料&lt;/li&gt;
&lt;li&gt;与你讨论关键要点&lt;/li&gt;
&lt;li&gt;写摘要页，放入 wiki&lt;/li&gt;
&lt;li&gt;更新 &lt;code&gt;index.md&lt;/code&gt;（全局目录）&lt;/li&gt;
&lt;li&gt;遍历已有的 wiki 页面，更新所有相关的实体页和概念页&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;log.md&lt;/code&gt; 中追加操作记录&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;一次摄入可能会触及 &lt;strong&gt;10-15 个 wiki 页面&lt;/strong&gt;——这正是 LLM 维护的核心价值：人类不可能每加入一份资料就手动更新十几个页面，但 LLM 可以。&lt;/p&gt;
&lt;h3 id="操作二query查询"&gt;操作二：Query（查询）
&lt;/h3&gt;&lt;p&gt;当你向 LLM 提问时：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LLM 首先读取 &lt;code&gt;index.md&lt;/code&gt; 了解知识库全局结构&lt;/li&gt;
&lt;li&gt;根据问题定位相关的 wiki 页面&lt;/li&gt;
&lt;li&gt;阅读相关页面，综合回答，&lt;strong&gt;附上引用来源&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;如果答案质量足够好，将其作为新页面归档到 wiki 中&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最后一点至关重要——你的探索和提问不是一次性的消耗，而是&lt;strong&gt;持续增值的投资&lt;/strong&gt;。每一次高质量的问答都会回流到知识库中，让它在下一次查询时更加丰富。&lt;/p&gt;
&lt;p&gt;Karpathy 的研究 wiki 在单个主题上已经增长到 &lt;strong&gt;~100 篇文章、~40 万词&lt;/strong&gt;。令人惊讶的是，在这个规模下，他发现&lt;strong&gt;不需要花哨的 RAG——LLM 自动维护的索引文件和简要摘要，已经足够让它找到所有重要的相关数据&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="操作三lint质检"&gt;操作三：Lint（质检）
&lt;/h3&gt;&lt;p&gt;定期对 wiki 进行&amp;quot;健康检查&amp;quot;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;矛盾检测&lt;/strong&gt;：不同页面之间的数据冲突&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;过时标注&lt;/strong&gt;：可能已经不准确的断言&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;孤立页面&lt;/strong&gt;：没有任何入链的页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺失引用&lt;/strong&gt;：应该存在但缺失的交叉引用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据空白&lt;/strong&gt;：知识库中缺失的重要概念&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新文章建议&lt;/strong&gt;：基于已有数据，发现值得深入探索的新方向&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LLM 擅长的不只是回答问题，还包括&lt;strong&gt;提出问题&lt;/strong&gt;。Lint 操作让知识库自我进化。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="五关键基础设施索引与日志"&gt;五、关键基础设施：索引与日志
&lt;/h2&gt;&lt;h3 id="indexmd--知识的目录"&gt;index.md —— 知识的目录
&lt;/h3&gt;&lt;p&gt;这是 LLM 回答问题时&lt;strong&gt;首先读取的文件&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以类别组织的全局目录&lt;/li&gt;
&lt;li&gt;每个页面附有链接、简要摘要和元数据&lt;/li&gt;
&lt;li&gt;每次 Ingest 后自动更新&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 机器学习
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; [&lt;span class="nt"&gt;Transformer 架构&lt;/span&gt;](&lt;span class="na"&gt;concepts/transformer.md&lt;/span&gt;) — 自注意力机制的核心原理及变体
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; [&lt;span class="nt"&gt;LoRA 微调&lt;/span&gt;](&lt;span class="na"&gt;concepts/lora.md&lt;/span&gt;) — 低秩适应的参数高效微调方法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; [&lt;span class="nt"&gt;MoE 架构&lt;/span&gt;](&lt;span class="na"&gt;concepts/moe.md&lt;/span&gt;) — 混合专家模型的路由策略和效率权衡
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 论文摘要
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; [&lt;span class="nt"&gt;Attention Is All You Need&lt;/span&gt;](&lt;span class="na"&gt;summaries/attention-paper.md&lt;/span&gt;) — Transformer 原始论文要点
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; [&lt;span class="nt"&gt;LoRA Paper&lt;/span&gt;](&lt;span class="na"&gt;summaries/lora-paper.md&lt;/span&gt;) — 低秩适应方法的理论基础
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="logmd--操作的时间线"&gt;log.md —— 操作的时间线
&lt;/h3&gt;&lt;p&gt;一个**只追加（append-only）**的时间记录：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## [2026-04-01] ingest | Attention Is All You Need
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;添加 Transformer 原始论文。新建概念页：transformer.md, self-attention.md。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;更新：index.md, nlp-overview.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## [2026-04-02] query | MoE vs Dense 的效率权衡
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;回答了关于 MoE 架构的查询，综合了 3 篇论文的观点。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;输出归档为：analysis/moe-vs-dense.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## [2026-04-03] lint | 健康检查
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;发现 2 个矛盾（transformer.md 与 attention-paper.md 的参数数量不一致），
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;标注 3 个孤立页面，建议新文章：positional-encoding.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个日志有两个作用：一是让你追踪知识库的演化历程，二是其一致的格式使得程序化解析成为可能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="六工具生态"&gt;六、工具生态
&lt;/h2&gt;&lt;h3 id="obsidian知识的可视化前端"&gt;Obsidian：知识的可视化前端
&lt;/h3&gt;&lt;p&gt;Karpathy 使用 Obsidian 作为&lt;strong&gt;阅读和导航界面&lt;/strong&gt;——不是用来写（写是 LLM 的事），而是用来&lt;strong&gt;看&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Graph View&lt;/strong&gt;：以图谱形式展示所有文章的互链关系，一眼看到知识结构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时渲染&lt;/strong&gt;：LLM 在后台编辑 markdown 文件时，Obsidian 实时更新显示&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;反向链接面板&lt;/strong&gt;：查看哪些页面引用了当前页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataview 插件&lt;/strong&gt;：查询 YAML frontmatter，生成动态表格&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="marp从知识到演示"&gt;Marp：从知识到演示
&lt;/h3&gt;&lt;p&gt;&lt;a class="link" href="https://marp.app/" target="_blank" rel="noopener"
 &gt;Marp&lt;/a&gt; 是一个基于 markdown 的幻灯片工具。你可以让 LLM 从 wiki 中提取内容，直接生成演示文稿——知识到输出的转化链路极短。&lt;/p&gt;
&lt;h3 id="qmd本地搜索引擎"&gt;QMD：本地搜索引擎
&lt;/h3&gt;&lt;p&gt;当知识库规模增大时，需要更精确的搜索。&lt;a class="link" href="https://github.com/tobi/qmd" target="_blank" rel="noopener"
 &gt;QMD&lt;/a&gt; 是 Shopify 创始人 Tobi Lutke 开发的本地 markdown 搜索引擎：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;qmd search&lt;/code&gt;&lt;/strong&gt;：BM25 全文关键词搜索（快速，无需模型）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;qmd vsearch&lt;/code&gt;&lt;/strong&gt;：语义向量搜索（找概念相关但无关键词重叠的内容）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;qmd query&lt;/code&gt;&lt;/strong&gt;：混合搜索 + LLM 重排序（最高质量）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所有处理在本地运行，支持 MCP Server 协议，可直接被 Claude Code 等 Agent 调用。&lt;/p&gt;
&lt;p&gt;号称能实现 &lt;strong&gt;95%+ 的 token 节省&lt;/strong&gt;——哲学是：与其把整个知识库塞进上下文窗口，不如精确搜索后只传递相关内容。&lt;/p&gt;
&lt;h3 id="git时间机器"&gt;Git：时间机器
&lt;/h3&gt;&lt;p&gt;整个 wiki 就是一个 git 仓库。每一次 Ingest、Query、Lint 都产生可追踪的 diff。你可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;git log&lt;/code&gt; 追踪知识的演化&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;git blame&lt;/code&gt; 追溯每一行的来源&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;git diff&lt;/code&gt; 查看每次操作的具体变更&lt;/li&gt;
&lt;li&gt;随时回滚到任意历史状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;纯文本 + Git = 可移植、有版本控制、工具无关、面向未来。文件比应用活得更久。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="七为什么这套方法真的有效"&gt;七、为什么这套方法真的有效
&lt;/h2&gt;&lt;p&gt;Karpathy 给出了一个简洁有力的解释：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;&amp;ldquo;维护知识库的枯燥部分不是阅读或思考——而是簿记。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;更新交叉引用、保持摘要最新、标注矛盾、维护一致性——这些工作是人类放弃维护 wiki 的根本原因。企业内部的 Confluence 为什么总是过时？个人的 Notion 笔记为什么半年后就成了废墟？因为&lt;strong&gt;维护成本太高&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;LLM 解决了这个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;不会厌倦&lt;/strong&gt;：更新 15 个页面的交叉引用对 LLM 来说和更新 1 个一样轻松&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不会遗忘&lt;/strong&gt;：每次 Ingest 都会检查所有相关页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;成本趋近于零&lt;/strong&gt;：维护的边际成本几乎可以忽略&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无限耐心&lt;/strong&gt;：Lint 操作需要 N×N 的比较？没问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人类负责有创造力的部分：&lt;strong&gt;选择什么值得读、提出什么问题、决定往什么方向深入。&lt;/strong&gt; LLM 负责一切机械性的簿记工作。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="八社区的尖锐争论"&gt;八、社区的尖锐争论
&lt;/h2&gt;&lt;p&gt;这条推文引发了激烈的讨论。支持者和批评者都提出了有价值的观点。&lt;/p&gt;
&lt;h3 id="支持方"&gt;支持方
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&amp;ldquo;每家企业都有一个 raw/ 目录，但没人编译过它。这就是产品。&amp;rdquo;&lt;/strong&gt; —— 创业者 Vamshi Reddy 一语道破了商业潜力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;这样你拥有记忆；在现有的平台部署中，拥有记忆的是平台。&amp;rdquo;&lt;/strong&gt; —— TeMPOraL 指出了数据主权的关键优势。所有数据都是本地 markdown 文件，不依赖任何平台。&lt;/p&gt;
&lt;h3 id="批评方思考的摩擦力"&gt;批评方：思考的摩擦力
&lt;/h3&gt;&lt;p&gt;最有哲学深度的批评来自知识管理社区。&lt;/p&gt;
&lt;p&gt;Extended Brain 的一篇分析文章直接指出了**&amp;ldquo;思考的摩擦力&amp;rdquo;&lt;strong&gt;问题：Niklas Luhmann 的 Zettelkasten（卡片盒笔记法）之所以有效，是因为&lt;/strong&gt;手动用自己的话重写想法&lt;strong&gt;这个动作本身就是思考的机制。当你写到一半写不下去的时候，那个卡壳的瞬间恰恰暴露了你理解上的空白——这种&lt;/strong&gt;有价值的阻力**，是 LLM 生成的综合分析无法替代的。&lt;/p&gt;
&lt;p&gt;Hacker News 的 qaadika 也提出了类似观点：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;&amp;ldquo;正是在做这些事情的过程中，新想法才会涌现……我的许多洞见都来自于偶然看到一条笔记紧接着另一条笔记。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="批评方幻觉污染"&gt;批评方：幻觉污染
&lt;/h3&gt;&lt;p&gt;另一个实际的担忧：LLM 在生成 wiki 内容时可能引入幻觉，而这些幻觉会被后续的查询当作事实引用，形成&lt;strong&gt;幻觉的复利效应&lt;/strong&gt;——不是知识在复利增长，而是错误在复利增长。&lt;/p&gt;
&lt;p&gt;jdthedisciple 在 HN 上说：&lt;strong&gt;&amp;ldquo;我宁愿每次都引用原始文档，而不是一个我可能没时间去核实的 LLM 生成的 wiki。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="我的看法两者不矛盾"&gt;我的看法：两者不矛盾
&lt;/h3&gt;&lt;p&gt;这两种批评都有道理，但并不意味着 LLM Wiki 模式无价值。关键是找到正确的分工：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LLM 负责基础设施和地图&lt;/strong&gt;：索引、交叉引用、摘要、矛盾标注&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人类负责综合和思考&lt;/strong&gt;：基于 LLM 的地图，做出自己的判断和创造&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;溯源机制不可省略&lt;/strong&gt;：每一个 wiki 断言都应该能追溯到 &lt;code&gt;raw/&lt;/code&gt; 中的原始来源&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;社区中一些成熟的实现已经在解决这些问题：基于内容 hash 的新鲜度验证、propositions 级别的来源追踪、AI 生成内容和人类编写内容的明确标记等。&lt;/p&gt;
&lt;p&gt;&lt;img alt="LLM Wiki 中人与 AI 的分工模式" class="gallery-image" data-flex-basis="430px" data-flex-grow="179" height="1536" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/karpathy-llm-wiki/human-ai-division.webp" srcset="https://guige.ai/p/karpathy-llm-wiki/human-ai-division_hu_e5c5a5beb63f9249.webp 800w, https://guige.ai/p/karpathy-llm-wiki/human-ai-division_hu_8d739e2740c2b82.webp 1600w, https://guige.ai/p/karpathy-llm-wiki/human-ai-division_hu_708f816a24c33142.webp 2400w, https://guige.ai/p/karpathy-llm-wiki/human-ai-division.webp 2752w" width="2752"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="九社区实践中沉淀的高级模式"&gt;九、社区实践中沉淀的高级模式
&lt;/h2&gt;&lt;p&gt;Gist 的评论区和 HN 讨论中，实践者们贡献了不少有价值的改进模式：&lt;/p&gt;
&lt;h3 id="1-分类后再提取"&gt;1. 分类后再提取
&lt;/h3&gt;&lt;p&gt;不同类型的文档需要不同的处理策略——报告和信件的提取方式完全不同。先分类，再用对应的模板提取。&lt;/p&gt;
&lt;h3 id="2-token-预算分级"&gt;2. Token 预算分级
&lt;/h3&gt;&lt;p&gt;为索引设计四级上下文策略：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;级别&lt;/th&gt;
 &lt;th&gt;内容&lt;/th&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;L0&lt;/td&gt;
 &lt;td&gt;页面标题列表&lt;/td&gt;
 &lt;td&gt;快速概览&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;L1&lt;/td&gt;
 &lt;td&gt;标题 + 一句话摘要&lt;/td&gt;
 &lt;td&gt;定位相关页面&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;L2&lt;/td&gt;
 &lt;td&gt;完整摘要&lt;/td&gt;
 &lt;td&gt;深入了解&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;L3&lt;/td&gt;
 &lt;td&gt;全文&lt;/td&gt;
 &lt;td&gt;精确引用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;LLM 根据查询复杂度选择合适的级别，避免要么读太少要么烧光上下文。&lt;/p&gt;
&lt;h3 id="3-类型化模板"&gt;3. 类型化模板
&lt;/h3&gt;&lt;p&gt;使用基于实体类型的页面结构（人物模板、技术模板、论文模板），而非通用模板。这比自由格式能更好地维护一致性。&lt;/p&gt;
&lt;h3 id="4-决策记录"&gt;4. 决策记录
&lt;/h3&gt;&lt;p&gt;不只记录&amp;quot;知识变了什么&amp;quot;，还记录&amp;quot;为什么变&amp;quot;。当 wiki 页面被修改时，同时生成 decision record 记录推理过程和被否决的替代方案。&lt;/p&gt;
&lt;h3 id="5-隐私分层"&gt;5. 隐私分层
&lt;/h3&gt;&lt;p&gt;敏感内容用本地模型（如 Ollama）处理，通用内容用云端模型（如 Claude）。这让机构级部署成为可能。&lt;/p&gt;
&lt;h3 id="6-规模瓶颈感知"&gt;6. 规模瓶颈感知
&lt;/h3&gt;&lt;p&gt;纯 markdown 方案在 &lt;strong&gt;~500 个文档&lt;/strong&gt; 以内表现良好。超过这个规模，考虑引入 SQLite 存储元数据，或使用 QMD 等搜索工具辅助定位。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十未来方向从上下文到权重"&gt;十、未来方向：从上下文到权重
&lt;/h2&gt;&lt;p&gt;Karpathy 在推文中提到了一个意味深长的方向：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;&amp;ldquo;当知识库足够大时，自然会想到合成数据生成 + 微调，让 LLM 把数据&amp;rsquo;知道&amp;rsquo;在权重里，而非仅靠上下文窗口。&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这描述了一条完整的知识管道：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;原始资料 → LLM 编译为 wiki → wiki 作为高质量训练数据 → 微调领域专用模型
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;一个维护良好的 wiki 本身就是&lt;strong&gt;高质量的合成训练数据&lt;/strong&gt;——它结构化、有引用、有交叉验证、不断被 lint。这可能是通往个人化、领域化 LLM 的最自然路径。&lt;/p&gt;
&lt;p&gt;加上上下文窗口的指数级增长（GPT-3 的 2K → Gemini 2.0 Pro 的 2M，&lt;strong&gt;1000 倍增长&lt;/strong&gt;），&amp;ldquo;把整个 wiki 加载到单次上下文&amp;quot;的方式在当前规模下完全可行，无需向量数据库。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="十一动手实践从零构建你的-llm-wiki"&gt;十一、动手实践：从零构建你的 LLM Wiki
&lt;/h2&gt;&lt;p&gt;理论说完了，下面是可执行、可落地、可见成效的实践路径。&lt;/p&gt;
&lt;h3 id="阶段一最小可行-wiki第-1-2-天"&gt;阶段一：最小可行 Wiki（第 1-2 天）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：跑通完整的 Ingest → Query 循环，感受知识编译的效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;具体步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;创建项目目录结构&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mkdir -p my-wiki/&lt;span class="o"&gt;{&lt;/span&gt;raw,wiki,wiki/summaries,wiki/concepts&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; my-wiki
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git init
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;编写 Schema 文件&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;创建 &lt;code&gt;CLAUDE.md&lt;/code&gt;（如果用 Claude Code）或等效的系统提示：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gh"&gt;# Wiki Schema
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 结构
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; raw/: 原始资料，只读
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; wiki/index.md: 全局目录，按类别组织
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; wiki/log.md: 操作日志，只追加
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; wiki/summaries/: 每个原始资料的摘要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; wiki/concepts/: 概念页面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## Ingest 工作流
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;当我说&amp;#34;ingest &amp;lt;文件&amp;gt;&amp;#34;时：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;1.&lt;/span&gt; 阅读 raw/ 中的指定文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;2.&lt;/span&gt; 在 wiki/summaries/ 创建摘要页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;3.&lt;/span&gt; 识别关键概念，创建或更新 wiki/concepts/ 中的概念页
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;4.&lt;/span&gt; 更新 wiki/index.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;5.&lt;/span&gt; 在 wiki/log.md 追加记录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 页面格式
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;每个 .md 文件开头包含 YAML frontmatter：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; title, date, sources, related
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;采集 3-5 篇你感兴趣领域的文章到 &lt;code&gt;raw/&lt;/code&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以用 Obsidian Web Clipper，也可以手动复制粘贴为 markdown。&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;逐个 Ingest&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在 Claude Code（或你选择的 LLM Agent）中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ingest raw/article-1.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;观察 LLM 如何创建摘要、识别概念、更新索引。&lt;/p&gt;
&lt;ol start="5"&gt;
&lt;li&gt;&lt;strong&gt;提一个需要跨文档综合的问题&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;这几篇文章在 XX 主题上有什么共识和分歧？
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;预期成果&lt;/strong&gt;：3-5 篇原始资料 → 3-5 个摘要页 + 若干概念页 + 1 个索引 + 1 个日志。你会直观感受到&amp;quot;编译&amp;quot;和&amp;quot;检索&amp;quot;的区别。&lt;/p&gt;
&lt;h3 id="阶段二建立-obsidian-工作流第-3-5-天"&gt;阶段二：建立 Obsidian 工作流（第 3-5 天）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：让知识库可视化，建立高效的采集通道。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;具体步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;用 Obsidian 打开 wiki 目录&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;安装 Obsidian，将 &lt;code&gt;my-wiki/&lt;/code&gt; 作为 Vault 打开&lt;/li&gt;
&lt;li&gt;打开 Graph View，观察页面互链的图谱&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;安装关键插件&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;插件&lt;/th&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Obsidian Web Clipper&lt;/td&gt;
 &lt;td&gt;一键采集网页到 &lt;code&gt;raw/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Dataview&lt;/td&gt;
 &lt;td&gt;动态查询 frontmatter 数据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Marp Slides&lt;/td&gt;
 &lt;td&gt;将 wiki 内容转为幻灯片&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;建立采集习惯&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;浏览到有价值的文章 → Web Clipper 保存到 &lt;code&gt;raw/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;下载相关图片到本地（Obsidian 快捷键）&lt;/li&gt;
&lt;li&gt;定期（每天或每周）批量 Ingest&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;&lt;strong&gt;开始提问和归档&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;每次查询后评估答案质量&lt;/li&gt;
&lt;li&gt;好的答案让 LLM 归档为新 wiki 页面&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;预期成果&lt;/strong&gt;：原始资料增长到 10-20 篇，wiki 开始呈现有意义的图谱结构。&lt;/p&gt;
&lt;h3 id="阶段三引入-lint-和工具链第-2-3-周"&gt;阶段三：引入 Lint 和工具链（第 2-3 周）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：让知识库自我进化，提升数据完整性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;具体步骤&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;运行第一次 Lint&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;对整个 wiki 做一次健康检查：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 找出页面之间的矛盾
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 标注可能过时的断言
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 列出缺失交叉引用的孤立页面
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- 建议值得新增的概念页
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;安装 QMD&lt;/strong&gt;（可选，当规模超过 50 篇时建议引入）&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @tobilu/qmd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qmd index wiki/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qmd search &lt;span class="s2"&gt;&amp;#34;你的查询&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;建立定期维护节奏&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;每周一次 Lint&lt;/li&gt;
&lt;li&gt;每次 Lint 后根据建议执行 2-3 个改进&lt;/li&gt;
&lt;li&gt;追踪 &lt;code&gt;log.md&lt;/code&gt; 的增长趋势&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;预期成果&lt;/strong&gt;：wiki 开始自我修复和自我增强。你会发现 LLM 建议的新方向经常出乎意料地有价值。&lt;/p&gt;
&lt;h3 id="阶段四输出和复用第-4-周"&gt;阶段四：输出和复用（第 4 周+）
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：让知识库产出实际价值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;具体场景&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;写报告&lt;/strong&gt;：让 LLM 基于 wiki 生成特定主题的分析报告&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;做演示&lt;/strong&gt;：用 Marp 格式输出幻灯片&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生成可视化&lt;/strong&gt;：让 LLM 用 matplotlib 生成数据图表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;回答复杂问题&lt;/strong&gt;：wiki 越大，能回答的问题越复杂&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;发现盲区&lt;/strong&gt;：通过 Lint 发现你知识体系中的空白&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一次输出都可以考虑归档回 wiki，形成正向循环。&lt;/p&gt;
&lt;h3 id="进阶方向"&gt;进阶方向
&lt;/h3&gt;&lt;p&gt;当你的 wiki 稳定运行一个月以上，可以考虑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多主题 Wiki&lt;/strong&gt;：为不同研究方向建立独立的 wiki&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP 集成&lt;/strong&gt;：将 wiki 搜索暴露为 MCP Server，让其他 Agent 也能查询&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义 CLI 工具&lt;/strong&gt;：基于你的特定需求开发辅助脚本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微调实验&lt;/strong&gt;：将 wiki 内容转化为 QA 对，微调一个领域专用的小模型&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="十二总结"&gt;十二、总结
&lt;/h2&gt;&lt;p&gt;Karpathy 提出的不是一个工具，而是一个&lt;strong&gt;设计模式&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;人类策展，LLM 编译&lt;/strong&gt;——人负责选择、提问、思考；LLM 负责簿记、索引、维护&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编译优于检索&lt;/strong&gt;——知识编译一次、持续更新，而非每次查询都从零推导&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;复利效应&lt;/strong&gt;——每一次 Ingest 和 Query 都让知识库变得更丰富&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;维护成本趋零&lt;/strong&gt;——LLM 解决了 Bush 1945 年就发现的维护问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;纯文本哲学&lt;/strong&gt;——Markdown + Git，可移植、有版本、面向未来&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;从 1945 年 Vannevar Bush 的 Memex 构想，到 2026 年 Karpathy 的 LLM Wiki 实践，人类花了 81 年找到了解决个人知识管理维护难题的方案。答案是：&lt;strong&gt;把维护交给不会厌倦的 LLM，把思考留给自己。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="LLM Wiki 完整工作流总览" class="gallery-image" data-flex-basis="360px" data-flex-grow="150" height="1684" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://guige.ai/p/karpathy-llm-wiki/workflow-overview.webp" srcset="https://guige.ai/p/karpathy-llm-wiki/workflow-overview_hu_4ec695d9c738730c.webp 800w, https://guige.ai/p/karpathy-llm-wiki/workflow-overview_hu_256b3f4f5d99b69c.webp 1600w, https://guige.ai/p/karpathy-llm-wiki/workflow-overview_hu_32bbbfe7529bb46f.webp 2400w, https://guige.ai/p/karpathy-llm-wiki/workflow-overview.webp 2528w" width="2528"&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://x.com/karpathy/status/2039805659525644595" target="_blank" rel="noopener"
 &gt;Karpathy 原始推文&lt;/a&gt;（2026.04.03）&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f" target="_blank" rel="noopener"
 &gt;Karpathy GitHub Gist: LLM Wiki&lt;/a&gt;（2026.04.04）&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://news.ycombinator.com/item?id=47640875" target="_blank" rel="noopener"
 &gt;Hacker News 讨论&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.w3.org/History/1945/vbush/vbush.shtml" target="_blank" rel="noopener"
 &gt;Vannevar Bush, &amp;ldquo;As We May Think&amp;rdquo;, The Atlantic, 1945&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/tobi/qmd" target="_blank" rel="noopener"
 &gt;QMD - Local Markdown Search Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://extendedbrain.substack.com/p/the-wiki-that-writes-itself" target="_blank" rel="noopener"
 &gt;Extended Brain: &amp;ldquo;The Wiki That Writes Itself&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2502.12110" target="_blank" rel="noopener"
 &gt;A-MEM: Agentic Memory for LLM Agents (arXiv:2502.12110)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/SingggggYee/awesome-llm-knowledge-bases" target="_blank" rel="noopener"
 &gt;Awesome LLM Knowledge Bases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>