跳到主要内容

「半年删一次 CLAUDE.md」——这药方一半是安慰剂

毒角兽
毒角兽

· 阅读约 4 分钟

先说结论:Boris Cherny 那句「每六个月删掉 CLAUDE.md、skills 和 hooks」,方向对,动作粗。我拿自己的项目照着试了一圈,越试越觉得这建议已经被传成玄学了。

背景两句话带过。Boris 在 YC 采访里说,Opus 5 这代模型,你半年前攒的指令文件基本该清零。他的底气来自 Anthropic 自己:官方把 Claude Code 系统提示砍了 80% 以上,用的还是消融法——整段删掉,一行行加回来,量每行的实际影响。

官方都在给自己瘦身,你那个越攒越厚的 CLAUDE.md 凭什么豁免?

「凭什么」我同意。「删了重写」我不同意。

删一遍治的是膨胀

我的 CLAUDE.md 攒了小半年,四十几行。挑了个周五下午全删,任务照跑,对着 diff 一条条加回来。

结果:三分之二的内容,加不加回来输出没区别。真正影响行为的不到十行。

这和 Reporails 那份分析对得上。他们扫了约三万个公共仓库,agent 指令文件里平均只有 27% 起了预期作用,73% 是脚手架。苏黎世联邦理工更狠:AGENTS.md 里的描述性概述不改善结果,还白烧 20% 以上的推理成本。

所以「删一遍」有用。治膨胀。

但 Reporails 还有一条数据,比 27% 重要得多:89.9% 的配置文件里至少有一条不指明具体对象的模糊指令。

翻译一下:你文件里不只有废话,还有「遵循最佳实践」这种空话,还有互相打架的规则。

这种东西,删了重写能发现吗?不能!

你自己重写,大概率把同样的模糊指令再写一遍。你以为它是经验,其实是错觉。模型不报错,不说「这条我看不懂」,它就是安静地差那么一点。删一遍,膨胀没了,混乱原封不动。这就是安慰剂的那一半。

hooks 别跟着陪葬

Boris 把 hooks 和 CLAUDE.md 捆在一起删。这条我直接反对。

CLAUDE.md 是建议。模型听完建议,判断权还在它手里。Opus 5 变聪明了,旧建议多余,删了合理。

hooks 是硬闸门。格式检查、禁止提交、拦截命令——这些不经过模型的脑子。模型从 4 代升到 5 代,你那条「禁止直接 push main」就变得不必要了?没有。只要模型还会出错——永远会——这道闸门就有独立的存在价值。

捆在一起清零,等于换锁的同时把灭火器也扔了。锁是该换,灭火器招谁惹谁了?

/doctor 这个台阶

有意思的是,Anthropic 自己也没让你裸删。他们出了个 /doctor 命令,帮你清理 CLAUDE.md 和 skills,原则是:删掉模型能从代码库自己推导出来的内容,留下真正的约定。

这比「半年删一次」精细。它承认该留的得留,问题是怎么区分。

我跑了一下。它标出来的冗余,和我手动消融的结果重合度挺高。但有几条互相冲突的规则它没碰——也可能是我写得实在太隐晦。这条还没测透,先别信我这半句。

真正的问题是谁来判断

绕来绕去就一个问题:你怎么知道某条指令在起作用?

Boris 的答案是看时间——半年了,扔。Anthropic 的答案是消融——量差值,官方有这条件,你未必有。/doctor 是反推——模型能自己推出来的就算冗余。

共同点:全都绕着「模型表现」转。而模糊指令、冲突规则,恰恰是模型不会喊疼的类型。它静默降你 5%,你消融十遍也归因不到那句「保持简洁但完整」头上。

确定性诊断是个方向——不问模型,直接对规则做静态检查:有没有指明对象,有没有冲突。不性感,但这类问题本来就不该指望模型自己招供。

锐评评分卡

Boris 这条建议:方向对,粒度粗。旧指令拖累新模型,这个判断我举双手赞成,官方砍 80% 系统提示就是最硬的证据。但「全删重写」只治膨胀不治混乱,还顺手把 hooks 捆绑销售了。

这波冤不冤?半冤。信「旧文件该清理」,不冤;照着「半年清零」四个字执行,冤。

我的做法:CLAUDE.md 每个大版本升级后消融一遍。hooks 一个不删。模糊指令趁还记得当初为什么写,赶紧改成具体的。别攒到半年——那时候你自己都不记得哪条是教训、哪条是仪式了。

毒角兽
毒角兽

拿到新工具先上手拆一遍,官方通稿信一半留一半,实测说话。

查看主页 →