📄 一句话概括
规则文件分三层:根目录放全局约定、子目录放局部规矩、用户级放个人习惯;动到哪个目录才加载哪一份,根文件才能一直保持短。
📝 本节和前面几节的关系
第四部分的第二个项目开场。前一个项目只有几个文件,这个项目的目录多,先得把规矩摆好。
一、为什么内容项目需要路由
这个项目天生就是多目录的:大纲、初稿、素材、发布脚本。 每个目录的活不一样,要它守的规矩也不一样。 如果全塞进一个文件,它每读一条都要付一次钱,而且越写越长。
二、三层规则文件
根目录 CLAUDE.md:每次会话都加载——放全局约定与禁忌。 子目录 CLAUDE.md:动到该目录文件时才加载——放该模块的局部规矩。 用户级 ~/.claude/:所有项目都生效——放你自己的习惯。 三层的分工,本质是用得越频繁的越往上放,越专用的越往下放。
三、路由带来的两个好处
一、根文件能一直保持短——每次会话都付的那笔钱就少(第 5.2 节)。 二、换模块工作时不相干的规矩自动让位——上下文里只剩当前用得上的。 这跟第 11.2 节搭工具链的顺序是同一个道理:先最小,再按需加层。
四、典型的三层划分
根目录写:口吻、禁忌、每篇必须有的东西。 写作子目录写:三段结构、标题规范、字数上下限。 发布子目录写:平台要求、图片尺寸、发布前必须核对的几项。 判定某条规矩放哪一层,只问一句:它在哪个范围内成立。
五、动手 Demo:CLAUDE.md 路由系统
下面把三层规则文件、各自的加载时机、以及该放什么排开。
TH([u"三层规则文件", u"什么时候加载", u"放什么"], [22, 26, 26])
T([u"根目录 CLAUDE.md", u"每次会话都加载", u"全局约定与禁忌"],
[22, 26, 26])
T([u"子目录 CLAUDE.md", u"动到该目录文件时才加载",
u"该模块的局部规矩"], [22, 26, 26])
实跑输出:
--------------------------------------------------------------------
CLAUDE.md 路由系统
--------------------------------------------------------------------
内容项目通常有好几个目录——大纲、初稿、素材、发布脚本。
**规则文件也跟着分三层**,各管一段:
三层规则文件 什么时候加载 放什么
------------------------------------------------------------------
根目录 CLAUDE.md 每次会话都加载 全局约定与禁忌
子目录 CLAUDE.md 动到该目录文件时才加载 该模块的局部规矩
用户级 ~/.claude/ 所有项目都生效 你自己的习惯
**路由的关键在第二层**:根文件只放全局约定,
每个子目录再放一份自己的——**动到哪个目录,才加载哪一份**。
这样做的两个好处:
① 根文件能一直保持短,**每次会话都付的钱就少**
② 换到另一个模块工作时,**不相干的规矩自动让位**
反过来说,**把所有规矩都塞进根文件,就是一份越写越长的清单**——
写到你都不想读,它当然也不会真的遵守(第 5.2 节)。
路由的关键在第二层:动到哪个目录,才加载哪一份——根文件就能一直保持短。 把所有规矩塞进根文件,就是一份越写越长的清单;写到你都不想读,它也不会真的遵守。
30 秒实验
- 翻一翻你的规则文件,给每一条标一个【它属于哪一层】。
- 把标成【子目录】的挪出去,再看根文件短了多少行。
常见误区
- 把项目里所有规矩都写进根文件。它会越写越长,然后就没人读了。
- 给每个目录都建一份规则文件。只在该目录真有【不一样】的规矩时才建。
自测三问(点开对答案)
1. 规则文件分哪三层? —— 根目录放全局约定、子目录放局部规矩、用户级放个人习惯。 2. 子目录的规则文件什么时候加载? —— 动到该目录的文件时——所以不相干的规矩自动让位。 3. 判定一条规矩放哪一层,问什么? —— 它在哪个范围内成立。- ☐ 下一节(13.2 共享规则,跨项目的一致性)
相关笔记
- 从【护栏】开始,别写【百科全书】 — 根文件为什么要保持短
- 结构设计:分层与组织 — 分层规则的完整做法
- harness工程实战:搭建自己的工具链 — 先最小、再按需加层
- 🧡 Claude Code橙皮书 · 索引