我给 AI 写了两千行规则,
亲手把它喂成了傻子
你那个越写越长的规则文件,正在悄悄把 AI 喂钝
这里是 DV,事情是这样的。
最近陪几个朋友准备面试,他们都不是新手,手上都在实打实地带项目。聊着聊着发现,好几家面试官不约而同问了同一类问题,而且问得特别刁。不考算法,不考八股,就盯着你平时怎么跟 AI 搭伙干活。
其中一个问题,把我一个朋友直接问沉默了。
面试官问:你那个每天喂给 AI 的项目规则文件,现在多少行了?
朋友说两千多吧,答得挺自豪——项目约定、业务背景、踩过的坑,想到啥加啥。面试官又补一句:那你算过没,这两千行你一个月得为它重复掏多少次钱。朋友卡住了。这账他没算过。
我在旁边听着,后背有点发凉。因为他描述的那个越写越长、AI 越来越不听话的过程,我比他还熟。我亲手把一个 AI 喂笨过。
我现在手上同时跑好几个项目,主力是 Claude Code 和 Codex,平时还用 Worktile 排任务、追进度。每个项目我都建一套文件,让 AI 一进来先读,搞清楚现在到哪一步。
一开始我特别天真,觉得文件嘛,当然写得越全 AI 越懂我。于是我把所有东西都怼进一个 README.md,背景、规则、每天进展、历史决策、一堆链接,全在一个文件里。
头两周爽翻了。一个文件走天下。
然后它就开始报应我了。
README 越滚越长,AI 的反应肉眼可见地变钝。最气人的一次,我在文件里白纸黑字写了一条死规矩,它连着三四回当没看见,眼睛都不眨地跳过去。
我先是骂它蠢。后来翻文件才发现,是我蠢。那条规矩被我埋在四百多行的腰上,前面糊着一坨背景,后面压着一串早就失效的链接。它不是没读到,是那一句的分量,被周围一千句废话给压没了。
那天我才算真听懂了面试官那个问题。
你写给 AI 的那个常驻文件,根本不是写一次就买断的资产,它更像一份你忘了取消的订阅——里面每留一行,AI 每开一轮对话都自动替你续一次费。
很多人,包括当初的我,都把它当成一个存东西的仓库,觉得存得越多越保险。可 Claude Code、Codex 这类工具的机制是,每开一轮会话,自动把整个规则文件原封不动塞进上下文。它不是用到了才去翻,是每一轮都从头到尾重读。
我打个你我每天都在干的比方。这就像你每天早上出门前,非得把整个衣柜从左到右、每件衣服都拿出来上身比一遍,才肯决定今天穿哪套。衣柜大点本来是好事,可你要是把十年前的旧校服、压箱底再也不穿的伴娘裙也挂在里头,每天早上全都得重新比划一遍,那这衣柜就不是方便,是折磨。你真正天天穿的,就那七八件。
所以那坑我算是踩透了。怎么重整,我没急着先讲一堆大道理,是直接抄起刀,把这摊烂账一刀一刀拆开的。下面这套,是我在 Claude Code 和 Codex 上反复翻车试出来的,不是什么金科玉律,也还在改。你挑顺手的拿,看不顺眼的尽管拍。
砍在那个什么都装的
README 上
我把它拆了。现在它只剩三样:入口、当前状态、下一步。完事。AI 进来扫一眼,三十秒就知道这是啥项目、到哪了、接下来干嘛。
其余的全部分流。不怎么变的背景、业务、约束,进 context.md。每天的推进按日期记进 progress.md。重要决策连同当时为啥这么定,进 decisions.md。那些云端链接、外部资料、素材索引,归进 resources.md。
一拆,每个文件都瘦了,还各司其职。AI 查进展翻 progress,查背景翻 context,谁也不挤谁。最值钱的是那个入口文件,干净得发亮。
插句我自己的糗事。我最舍不得拆的恰恰是进展记录,总觉得摆 README 里一眼就能瞅见多省事。结果它一天涨一点,硬生生把入口撑爆,逼着 AI 每轮陪我重温上周三干了啥。后来我一咬牙把进展全迁进 progress.md,README 里只留一句话交代现在到哪,整个世界安静了。
拆到这一步,我才算彻底想透,当初那个什么都装的大文件,到底贵在哪。代价有两层,一层明一层暗。
明的那层是钱和时间。这么厚一份中文掺代码的文件,体量本就不小,一次正经开发动辄来回几十轮,每一轮都把它从头到尾重读一遍,账单滚起来快得吓人。又慢,又贵。
暗的那层才是真杀手——注意力被稀释。模型的注意力就那么多,你把二三十条天天要命的硬规矩,跟一千多行随手记的流水账拌在一起,那二三十条的声音就被盖住了。我那条被无视的死规矩就是这么没的。后来我把它单拎出来按在文件最顶上,单独成段,它立刻就活过来了。我一个字都没改,只是把它从地下室搬到了大门口。
顺嘴说句可能招人烦的话。网上一堆教程让你跑个命令一键生成一份大而全的规则文件,我向来不买账。那种一键生成的东西,与其说是初稿,不如说是一张等着我去删的清单。我到手第一件事就是砍,砍到只剩每轮真用得上的那几条。越是机器随手堆出来的,越得往死里删。
不常用的东西,
用到了才喊它出来
我有个代码型项目,架构规矩定得很死。后端一律走 Controller 到 Service 到 Repository 三层,谁也不许越级,Controller 不准伸手碰数据库,跨层传东西得用 DTO。前端也一套,Page 管布局、Component 只管渲染、Service 管接口、Hook 管复用状态。这堆规范摞起来好几百行。
搁过去我准一股脑全塞进主文件。可我哪天都在写后端吗。我可能整周都泡在前端上,那后端那几百行就白白陪读一整周,图啥。
所以我把这些领域规范全挪进一个单独的 .claude/rules/ 文件夹,主文件里只留一行引用,要用了才让 AI 去加载。写后端调后端那份,写前端调前端那份。不碰它们的时候,安安静静躺着,一个 token 都不花。
怎么判断一条该常驻还是该按需,我就追问自己两件事:下次我还会用到它吗,它会不会过两周就变了味。两个答案都站得住,才留主文件。偶尔才用、可一用就是整套动作的,做成按需加载,要了再喊。
还有一种,纯粹一锤子买卖的活,干完不会有第二回,那干脆张嘴在对话里交代清楚就完了,何必为它专门立一份天天陪读的文件。常驻文件赚的是复利,靠的是同一条规则被反复调用;只发生一次的事写进去,那不是攒资产,是背债。
定个规矩,
逼自己定期给它瘦身
这文件注定会胖,没有例外。因为加一句话的手特别轻,删一句话却得动脑子判断这条还留不留。人嘛,本能就是挑轻松的干。所以你不立个规矩逼自己,它只会一路胖下去。
我现在每次收尾都走一套固定动作:顺手更新进展,该动的入口、决策、素材索引一起动了,规范变了就改对应的规则文件,最后跟自己交代清楚这次改了啥、还剩啥。这套动作能让文件跟着项目一起代谢,而不是只进不出。
我还给自己立了几条触发线,一碰到就知道该动手清了。
我自己都开始懒得从头读它了,那 AI 就更不可能认真读。
我发现自己又在跟 AI 解释一件文件里明明写过的事——说明那条要么没写清,要么被埋太深。
文件里开始混进只在某个具体当下才成立的话——过几天就作废的临时信息,是最该被赶出常驻区的。
同一个意思换着措辞写了好几处——重复不光占地方,还容易前后打架,把 AI 搞拧巴。
我隔一阵就给主力项目的规则文件做次体检。上个月有回我一口气删掉小两百行,本以为它会更糊涂,结果第二天它头一次老老实实守住了那条我最头疼、之前怎么都按不住的规矩。
砍得最狠的一刀:
把方法和材料分开放
我给自己刻了条死规矩:方法全局化,材料项目化。
拆开说。那些跨项目通用的能力——一套写作流程、一套数据清洗脚本,这些是方法,统一搁进全局的 skill 目录,哪个项目都能喊。而某个项目专属的背景、数据、业务规则,这些是材料,只准窝在它自己项目的文件夹里,一步都不许迈出去。
我为啥对这条这么狠,因为我串过味,还串得特别下不来台。
那阵子我手上两个项目并行,一个是给酒店做的经营助手,里头有套很细的调价规矩,淡旺季怎么浮、对手一降价我怎么跟。我当时贪方便,把这套调价逻辑写进了全局 skill,心想没准哪天别的项目也用得上呢。
结果没几天我切到另一个项目——一个给电商商家做的 AIGC 工具,跟酒店半毛钱关系没有。我让 AI 帮我捋一下这工具的定价策略,它张嘴就甩给我一套淡旺季浮动、盯着竞对房价调整的方案。
一个做图做视频的电商工具,
哪门子的淡旺季房价啊。
盯着屏幕缓了半天才回过味,是我自己手贱,把酒店的材料塞进了全局方法里,它在新项目被无差别加载,串味了。
这事特别像冰箱。你图省事,把一块没封好的臭豆腐随手丢进去,第二天一开门,里面的牛奶、蛋糕、水果,全是一股子味。臭豆腐本身没错,错在它该单独密封,不该跟谁都挨着。材料就是那块没封好的臭豆腐,你把它当方法到处乱塞,迟早把整个冰箱熏得没法用。
所以我现在分得死死的。我个人跨所有项目的偏好——比如改代码前先把思路讲给我听、不许默默自作主张、注释一律写中文,这些搁全局,只在我自己这台机器上生效。某个项目专属、还要跟人共享的约定,放进那个项目跟着代码走。低频但成套的专项流程,做成按需加载的 skill。三层各守一摊,谁也别熏谁。
项目一切换,
怎么保证上下文不串味
我用的是 git worktree。它能把同一个仓库的不同分支,签出到几个互不相干的物理目录,每个目录都是独立工作区。而规则文件是认目录的,所以你在 A 目录里干活,加载的就是 A 那套上下文,挪到 B 目录,换成 B 那套,两边的临时状态各过各的日子,谁也污染不到谁。
这招在两种时候特别顶用。一种是并行开发:我同时推两个特性,一边一个 worktree,B 那个特性要临时关掉某个校验,这种脏活就写进 B 自己的目录,做完连同目录一起清掉,绝不会脏了 A。另一种是高风险试错:我要动个大手术心里没底,开个独立 worktree 撒开了试,所有乱七八糟的探索全圈在那个目录,搞砸了整个删掉,主战场毫发无伤。
当然它不是仙丹。开一个 worktree,就像在外头多租一间工作室,租多了不光占地方,你自己都记不清哪间堆了什么。它顶多适合那种短平快、又需要彼此隔开的并行活儿;真正要长期管住的项目约定,还得老老实实沉进那份跟着代码走的规则文件里。
折腾到这一步,我才慢慢品出点别的味来。
我们这代人跟 AI 搭伙,最容易栽的跟头,跟我们自己学东西时栽的,是同一个。我们总以为占有得越多越安心。笔记记得越满越踏实,收藏夹塞得越爆越像学到了。可你我都心知肚明,那个攒了三百篇的收藏夹,你一篇都没回头看过。东西堆进去不等于长进脑子,喂给 AI 也不等于它能用上。
回到那个衣柜。真正会穿衣服的人,衣柜里挂的不是最多的,是最对的。每过一阵就清掉一批再也不穿的,留下的每件都拿得出手。给 AI 写规则,是一模一样的手艺——会买的人,挑的从来不是最多,是最对。
说回开头那几个朋友。后来真把这事想通的,面试反倒都过了。不是因为背熟了什么标准答案,是因为他们真回去把自己那个两千行的文件,亲手删过、拆过、分过层,所以面试官换着花样追问的时候,他们答得不慌。
最后说几句
所以屏幕前的你,要是也在天天给 AI 喂一个越长越厚的规则文件,今晚不妨打开它,从头到尾过一遍,只问自己一个问题——这里头到底有几行,是真的每一轮都还用得上的。
剩下那些,删了吧。你的 AI 会松一口气的。
夜雨聆风