揭示Claude等AI编程工具启动时实际读取哪些文件、超出200行/25KB后索引会被静默截断等机制,并给出文件夹组织最佳实践。
零件彼此互不相识。你周一想出的东西,周二打开文件时已经不在了——它找到了答案,你继续推进,但答案留在了现在已经关闭的聊天窗口里。下周再问同样的问题,它从头开始。所以同一件事你付了两次钱:一次是解决它,一次是在自己脑子里记住它,好再说一遍。一堆好的零件不是系统。系统之所以是系统,是因为一个会话的结尾是下一个会话的开头。
一个文件夹,你的 AI 在工作之前读取它,在学习之后写回它。
这就是全部了。文件夹是简单的那一半,一个下午就能搭好。关键是循环:读取、工作、写回,下一个会话在前一个学到的东西上打开。文件夹是单向的。循环才让下一个会话能够重新进入。

这些大部分你已经一次运行了一个。
文件夹。磁盘上的文件,按你正在用它们做什么来分类。仅此而已。
记忆。你的 AI 写自己的笔记并保存在它自己的文件夹里,而不是你的文件夹里,这就是你给它记忆的方式。我的库里有 465 条。
规则。CLAUDE.md 是在任何工作开始之前首先被完整读取的文件,你写一次就够了,这是规则的大部分工作。
技能。把一类工作保存为一个文件夹。在使用之前它不花你任何东西:你的 AI 看到名称和一行关于何时使用它的说明,只有当任务匹配时才打开正文。
Agent。第二个 AI,但脑袋是空的。它拿不到主会话的记忆,这是让人栽跟头的地方。它需要的东西要放在你发给它的 prompt 里,否则它就瞎干。我个人 agents 文件夹里有六个。
Hooks。规则被读取,钩子被执行,我之前专门写过一篇讲这个。钩子是工具本身在固定时刻运行的小程序,不管模型决定什么。我有七个钩子,分布在四个时刻:工具运行前、工具运行后、我发送 prompt 时,以及会话结束时。
命令。一个保存在文件里的 prompt,所以你输入一个词而不是十行。
写回。在会话结束时,把学到的东西写回到它当初读取的文件夹里。没人写这一个,但它才是把七个好零件变成一个循环的关键。
这就是 tidy 版本出错的地方,而在这里搞清楚细节能省下一下午的困惑——为什么你的 AI 忽略了你明明能在磁盘上看到的笔记。
指向你的笔记文件夹并不意味着它会读你的笔记。
每个对话开始时只加载一个简短的索引文件,详细文件只有在索引中有什么指向它时才会打开。所以索引有预算,而且是个硬限制:超过 200 行或 25 KB,其余的就会被丢弃。静悄悄的。transcript 里没有任何提示。我的索引是 117 行 22,252 字节,离那个上限比我感觉舒服的要近。
Skill 正文行为也一样。名称和触发行在前,正文按请求打开。
Hooks 与这两者不同,因为它是这三个之中唯一一个不是建议的东西。
文件夹里有 465 个文件,索引是其中之一,所以详细文件有 464 个。

运行时从你打开会话的位置开始沿着文件夹树向上遍历,完整读取一路上找到的每个 CLAUDE.md,在任何工作开始之前。
所以放置是加载的关键。放在你启动的地方,不是下面一个文件夹。
我的 41,480 字节放在 00-Meta/ 里。我的 vault 顶部没有 CLAUDE.md。所以当我从顶部打开会话时,那个文件不会在启动时加载。
它也不是完全隐形的,而且这个部分在两个方向上都容易被说错。它会在之后被读取,按需读取——第一次我的 AI 打开那个文件夹里的文件时,也就是在工作已经开始之后。我 31 条命令中有 8 条会按名称调用它,所以这八条会在一开始就拿到它。另外 23 条不会。
如果一条规则必须在第一个 token 出现时就存在,文件就必须放在你启动时的那个级别。否则你就是在依赖工作本身经过那个位置。
Effort 随着每一层级的增加而上升。
它已经在做这其中的一些事了。自动记忆默认开启,你工作文件夹上方的任何 CLAUDE.md 都会在启动时被完整读取。
你用大白话提出要求。说"记住那个"。说"把这个加到 CLAUDE.md"。说"保存为技能"。它把文件写到正确的地方,你永远不需要学习文件夹布局。/init 会从你所在的项目写出一个初始的 CLAUDE.md。
你把它设置成一直存在的状态。文档说得很清楚:"设置规则由客户端强制执行,无论 Claude 决定做什么。CLAUDE.md 指令塑造 Claude 的行为,但不是硬性执行层。"所以任何每次都必须发生的事都是 hook。不是一行指令。
规则被读取。hook 被执行。这就是第二行和第三行之间的全部区别。

我的 /endSession 命令有第三阶段,就是几行简单的英语。新事实——关于如何与我或我的项目合作——进入记忆文件,加上一行在索引里,加上一个在 vault 决策日志里的存根。
以下就是这几行产生的结果。
记忆文件夹里有 465 条笔记。我自己的决策日志里有 474 条。其中 454 条以相同的文件名存在于两个地方,441 条带有相同的 footer 行,说明它们是从记忆库写出的。
我没有打任何一个字。是学到东西的那个会话在离开时写下的,下一个会话就在这些上面打开。
这就是循环。我的 AI 读取的文件夹就是它写到的文件夹。
不要一开始就构建完整的东西。选一件你这个月已经向你的 AI 解释过两次的事。
在你下一个会话结束时,说:把它写到 CLAUDE.md 里,这样下次就有了。然后明天打开新会话,检查它是否做到了。
如果做到了,你就有了一个循环,之后的事就是填充它。
如果你不想从零开始,构建整个文件夹的 prompt 在我的指南里:用 Obsidian 和 Claude Code 构建第二大脑。粘贴进去,它会为你写好文件。
这一篇来自 Code Meet AI,我的 Newsletter,在那里我记录我实际运行的设置和数字来自我自己的磁盘。下一期讲的是如何在文件夹变大后保持它的运行。