周四下午接了个跨三个模块的改动。同事把项目里的 .claude 目录发我,六样东西:上下文、规则、权限、钩子、命令、子代理。

照着配齐,第一周反而更慢。规则和上下文重复,钩子每次编辑后跑全量测试,权限开得宽又不敢真放手。不是工具不行,是六层配置在互相打架。

砍到三层才稳定。

先说结论:每天真正生效的是三层

判断一层配置值不值,看两件事:是不是每次会话都参与,能不能减少「它做错了,我过两天才发现」的次数。

层什么时候进上下文解决什么我的取舍
`CLAUDE.md`每次会话项目事实、禁区、验收标准必配,控制在几十行
权限设置每次工具调用哪些能自动做,哪些必须问必配,先写拒绝
钩子工具调用前后格式化、拦截、自动验收两个够用
规则启动或命中文件分目录、分文件类型的规范大仓库再拆
skill调用时把重复流程固化成 `/命令`重复三次再写
子代理派生时隔离上下文、并行读多写少才值

配满不是目标。配置越多,过期和冲突的概率越高。

CLAUDE.md 写边界,规则按路径补

很多人第一版写成项目介绍:做什么的、用了什么框架。这些模型读几行代码就能推断,写进去只占上下文。

它猜不到的是:本地怎么起服务、测试命令是什么、哪些目录不能碰、改完怎么验、提交信息怎么写。

加载方式也值得利用。当前目录和上级的 CLAUDE.md 启动时读入;子目录的要等模型读写那里才加载。包级规范放子目录,比全塞根目录省。

@路径 会把文件展开进上下文,最多四层;只是提一嘴就用反引号包住。HTML 注释注入前会被剥掉,留给人看的备注不花上下文。

规则目录处理另一类问题:只在某类文件上有意义的规范。.claude/rules/ 下的文件头部写 paths,比如 paths: ["src/api/**/*.ts"],命中才加载。字段叫 paths,不是 globs,从别的编辑器搬过来最容易写错。

没有 paths 的规则启动即加载,优先级同 CLAUDE.md。别把什么都塞进规则目录,那只是把一个大文件拆成十个小文件。

配完用 /context 看实际装了什么。

权限先拒绝,再放行

权限规则按拒绝、询问、放行的顺序匹配,第一条命中就定。放行不能给拒绝开例外。

先列禁区:.env、密钥目录、生产配置、迁移文件。这些不是小心一点能解决的。

再放开高频低风险动作:看状态、看 diff、跑测试。需要人拍板的留询问:推送、部署、删数据。

项目共享配置放 .claude/settings.json,跟仓库走;个人权限放 .claude/settings.local.json,默认不进版本库。

钩子只配两个:一个拦,一个收尾

钩子是唯一能在模型动手前后强制执行动作的层。

一个放调用前,拦截改迁移文件、动生产配置、执行危险命令;一个放写文件后,跑格式化和轻量检查。

容易误解:退出码 0 只表示「我没意见」,仍走正常权限流程;退出码 2 才阻断,stderr 会回给模型当反馈。所以拦截信息写人话,别只写一个 blocked,模型看不懂就换个方式再试。

别在钩子里跑全量测试,每次编辑等两分钟,人会先关掉它。钩子失败没日志,看起来跟没配一样。

命令已经并进 skill,长流程别再塞上下文

早先是在 .claude/commands/ 放 markdown,用 /名字 调用。现在还能用,但命令已经并进 skill:.claude/skills/名字/SKILL.md 同样生成 /名字,新项目建议用后者。

差别在加载时机:skill 正文只在被调用或判定相关时进上下文,常驻成本几乎为零,还能带模板和脚本。

所以「二十步发布流程」「固定周报模板」别写进 CLAUDE.md 天天占位,做成 skill。

什么时候写?同一段提示词手动贴到第三次。

子代理只在读得多、写得少时值

子代理有独立上下文,适合「翻很多文件,只要一个结论」的活:大范围排查、跨模块审查、资料汇总。读完就丢,不把过程塞回主会话。

不适合频繁确认的任务:改三个文件,每改一个都问你,交接成本比省下的上下文贵。

也别为了并行而并行。两个子代理改同一片代码,合并冲突的时间够你自己改完。

一周内怎么加上去

顺序别换。前一步不稳,后一步就是负担。

从空目录到能用的五步
  1. 1写 CLAUDE.md只写跑法、禁区、验收,控制在几十行
  2. 2收权限先列拒绝,再放开高频只读命令
  3. 3加两个钩子一个拦截敏感改动,一个做格式化
  4. 4跑一周记录每次返工,判断缺的是规则还是流程
  5. 5固化成 skill同一段提示词出现第三次,才值得写成命令
先让它知道边界,再决定它能自己走多远

跑一周再看要不要加规则和子代理。多数人卡住不是配置不够,是 CLAUDE.md 太虚,模型每次都要猜。

哪里会翻车

配置会过期。模型升级、目录重构后,半年前的规则可能在误导它。每季度删一轮,比往上加有用。

权限放太宽。为省几次确认把写操作全放开,赔进去的可能是一次误删。

钩子静默失败。没日志没提示,你以为它在检查,其实早没跑。

配置文件变成第二份文档。写时认真,之后没人看,新同事不知道哪条还有效。

回到最初的问题:值不值得让工具干,不看它能不能做,看它做完之后我要花多少时间发现它做错了。三层跑顺,比六层配满更接近答案。