7200行规则,只有1%被想起
约 10 分钟驭光者首发于微信公众号「羲和Lab」

特别企划 · 盘点三个月攒下的7200行规则和60天的会话证据,AI协作里的规矩一共有四种活法 《智能编码进化论》系列 · 数据报告体 · 2026-08
上一篇我们翻完报错,这一篇盘点规矩。《704次失败诊断书》收尾时留了个尾巴:两个月立下的各种规矩,哪些真的在起作用?当时只交了半张答卷——五条对策,两条生效三条虚设。这一篇摊开另一半,对象是全部家底。
先交代三路调研口径。第一路盘资产:清点全局配置与九个工程的规则文件、行数与条文。第二路翻证据:将近60天的会话记录(约1.5G)逐条检索,统计规则被引用、遵循、违反、拒绝的全部痕迹——遵循判定以文本匹配为主,另抽10例人工核验,弱相关误报已剔除。第三路解剖返工:追踪lint与类型检查的修复循环,"规范类返工"从严认定,须同时满足明示违反条目与后续针对性修改两个条件。工程一律使用泛称,样本取自作者自用环境。
家底清单:全局18个规则文件1427行,九个工程50个rules文件共3792行,26个CLAUDE.md合计1949行——粗算约7200行;禁止式与建议式条文约3:1,看着相当硬。机器层却只有权限白名单79条(7200:79,约91:1),hooks为零。也就是说,这7200行纪律没有一行由机器执行,全押在"读了、记了、照做"这条最窄的链路上。
于是只剩一个问题贯穿全文:**这7200行里,还有多少行活着?**发现五回答一半,另一半请你读完自己判断。
发现一:问题不在遵守,在想起
先称一称"想起"的重量。60天的会话里,AI一共发出28741条助手消息,其中显式提到规则的,280条。引用率0.97%。
不到1%。平均每100条消息里,规则的影子出现不足1次。7200行的家底,在这场60天的长跑里几乎全程缺席。
但先别急着盖"形同虚设"的章,第二个数字说了相反的话:抽取280次引用中的10例人工核验,10次全部得到遵守——AI不仅复述了规则,而且逐条照办。
两个数字摞在一起,画像就出来了:AI不是不守规则,是想不起规则。一旦想起,遵守几乎没有悬念;瓶颈全卡在"想起来"这一步。上一篇的核心洞察"规则生效等于第一反应",在这里拿到了第一份直观数据。
分布再补一刀。68%的引用集中在同一个主力前端工程——恰好也是规则最厚的地方,文件最多、条文最密。厚的地方引用多,听着顺理成章;反过来读才刺眼:其余工程,尤其是几个创作型工程,引用率几乎是零。规则的多寡直接标定了想起的概率——哪里有文本垫底,哪里才有1%;连垫底都没有的地方,就是0。
月度曲线倒是给了条向上的斜线:最近一个月引用量环比上升31%。越用越想起——任务类型反复出现,某些规则在被慢慢喂养。只是坡度平缓:以当前基数外推,引用率想爬上一个数量级,遥遥无期。
三个事实摆齐——0.97%的想起率,10/10的遵守率,68%的分布集中——问题的提法就该换了。重点早已不是"AI守不守规矩",而是:
既然想起才是瓶颈,是什么决定了想起?
下一节,答案藏在一组零和非零的对决里。
发现二:红线的分界线是机器
先接上刚才那一问。发现一证明了"想起等于遵守"——引用后跟随率10/10,只要想起就不会违反;可0.97%的想起率又意味着,指望自觉去想起,本身就是小概率事件。于是问题往前递进一格:**当自觉靠不住时,谁在替我们兜住底线?**发现二的答案是两个字:物理成本。红线从来不是被想起的,是被拦住的。
数据里恰好躺着一场天然对照实验。三条同级别的硬规则,命运天差地别。
裸force push:1557次推送,发生0次。"禁止强推"写进了git工作流规则,但真正拦住它的不止文字——每次推送都有人站在旁边,git自身也在持续输出分支状态提示。另有12次--force-with-lease,属自带安全校验的变体,不计入裸推。
新写enum:0次。"不用enum,以interface和type替代"同样是硬条文,它的零违反却与文本无关——方案设计阶段它就被前置注入:生成代码之前的约束清单里白纸黑字,AI落笔时enum根本没有出生机会。194处"enum"字样细查到底,全是阅读存量代码的回显。存量欠账不动,新增口子焊死。
流转前查transitions:1087次状态变更,只查了22次。"变更前必须查询可用状态"白纸黑字,命中率2%,其余98%直接跳过。它身后什么都没有——没人把关,没有前置注入,没有工具闸门,只剩那条0.97%的自觉链路。
三条规则,两种人生。差别不在措辞优劣、位置显隐,只在一件事:**违规的物理成本高不高。**force push有人有机器双重设卡,踩线即刻暴露;enum被注进生成前约束,违规件连出生证明都没有;transitions两样全无,于是98%的时间里被径直绕过。规则生效从不取决于"写得好",只取决于它有没有物化成三种形态之一:要么有人拦,要么提前注进去,要么——等着被跳过。
红线的账就此结清:有闸门的零违反,没闸门的98%跳过。可还有一块拼图安放不下——规范类返工为什么会发生?想不起纸上的规则,顶多是绕开它,谈不上违反它。解剖下一节的235次打回,能看到本篇最意外的结论。
发现三:返工的真相在项目级隐性约定
先铺全景。60天里每一轮lint或类型检查之后,59%一轮通过,41%要修两轮以上。最极端的一个会话,pytest前前后后跑了69轮——那是单次功能边界反复拉锯的特殊案例,属极端个例,不做常态解读,只需知道这套流程最深能走到哪。
把这41%劈开,第一刀下去是好消息:占大头的三类错误,TS2339属性不存在、TS2322类型不匹配、TS2307模块缺失——清一色功能类问题,与编码规范无关。AI并非不懂规矩,是活儿本身有难度,这类账无论谁来写都省不掉。
真正的规范类问题是另一本账:从严认定的235次打回。先拆一个容易产生的误会——235次容易被读成"编码规范经常被人钻空子",方向恰恰相反,发现二刚证明硬条文近乎零违反。这235次的实质不是知规犯规,而是无规可依:逐条翻看打回理由,模式高度一致,违规的几乎都不是写在纸上的条款,而是CLAUDE.md没写的项目级约定。
打回原话很典型:"好多都不符合现有页面的规范。"落到实处:AI写的页面用了裸基础组件,而这个工程历来走既定封装;路由关闭用了自己的路数,没对齐存量做法;视觉走查被跳过,上线前的按钮重复就是这么漏出来的——和发现二的transitions如出一辙,没有闸门的自觉项,最终都会在某个高频场景里被跳过,只是代价从"状态流转写错"换成了"按钮重复上线"。每个工程心里都揣着一层不成文的规范——封装选哪个、路由怎么关、走查何时做,代码库找不到对应条文,AI无从想起,只好按通用最佳实践行事,然后一次次撞上审查的人墙。
打回的去向更有分量:人工指出、批量整改、当场沉淀为新条目——这个闭环在记录里反复出现,每批打回都在给后续会话喂料,同类问题二次发生率明显收敛。所以说返工是规则的母亲:今天235次打回的一部分,正是明天规范文件的草稿。
最后一组数字要掰开说,免得被绝对值吓住。同期检查的执行密度上升了75%——检查变多,暴露的问题自然变多,235次是暴露之后的累计绝对数;放进分母看,规范类打回占全部检查的比重其实在下降。违规没有恶化,是越来越密的检查让更多隐蔽问题提前现形,"完成前必须自检"的要求持续渗透。而那个自动跑检查的工具,本身就是编码规范的机器化把关——再次印证发现二:交给机器的,胜过留给自觉的。
发现四:药不在规则里
接下来是全篇最安静的一组数字。
file-not-read——上一篇的病三,那个"看见了也治不好、吃设计不吃自觉"的老毛病——60天后复查:发生率从千分之6.9降到千分之1.1,降幅84%。
翻遍这段时间的规则变更记录去找药方,只找到一个空集:**期间没有任何一条针对它的新规则写入。**一条都没有。
归因在这一节必须慎之又慎。84%的下降从哪来?候选解释至少有三个:一是使用习惯的自然成熟,两个月高强度协作,人与AI的磨合在累积;二是上一篇病三提过的会话设计调整——派发子代理时把"先Read再修改"显式写进prompt,换了一条轨道绕开病灶;三是高频场景里的隐性学习,同类触发反复出现,行为被慢慢磨圆。哪个因素贡献最大,这份数据裁不了,三者很可能都在出力。
但有一个事实铁证如山,它本身就是最有力的结论:**这场好转没吃过任何一片规则做的药——因为药方压根没写过。**没有新增条款,没有加强审查,7200行纹丝未动,改善照样发生。倘若规则是唯一解,这84%就根本不该出现。
同期还有两个旁证:用量增长17倍,用户手动拒绝AI操作的比率反而下降35%。盘子变大,摩擦变小,规则一侧零投入。
镜头转去看反面,对比更扎眼:真正写下来的那几条,TAPD workflow缓存要求开工先建映射,MCP认证要求提前login——在最需要的那些工程里至今从未执行,与上一篇诊断一字不差。正反合起来:规则改不动行为惯性,行为惯性却能自己长出来。
药既然不在规则里,该回头看看:这三个月长出来的7200行,到底是什么。
发现五:规则的一生
把7200行按出生方式归类,只有两种:规划驱动——某天觉得该有条规范,一口气批量写入十几条;事故驱动——出了事,疼了,追加一条。
存活状况一边倒,事故驱动的,都活了。凭据泄漏事件之后,长出了今天的凭据管理规范——secret禁止明文、配置分级存储、泄漏应急三步;公众号排版接连翻车之后,长出了整章HTML兼容规则——列表怎么分行、br怎么包裹、图片标签挂什么class,每一条都是拿真实翻车换的;auto-memory里的每条记忆背后,也都站着一次具体的跌倒。规划驱动的批量条文则安静得多——没有出生现场可供回忆,也很少再有场景把它们唤醒。事故是剧烈的病原刺激,会留下抗体;规划只是一次平静誊写,写完就和纸一起睡了。
开篇那句"还有多少行活着",到这里能给出一半答案:事故线条上的那些,确定活着;其余大多数,没人说得准——这份模糊本身就是下一条线索的开始。
往下挖,挖出一个更刺目的缺口:**规则的活跃度与版本化严重脱节。**全局配置目录三个月只有2次git提交,其间新增的3个规则文件从未入库,日常改rules不走commit更是常态。规则在生产一线不停代谢,版本库里的"官方版"却近乎化石;哪天真要迁移或回滚,能带走的只有一份过期快照。
第三个信号是重心迁移:最近一个月,新经验越来越多流向auto-memory而非正式rules。事故入记忆,直达生效无需维护;事故入制度,要过文件组织与更新流程。制度几乎停止新增,记忆快速繁殖——与其说偷懒,不如说自然选择:大家用脚投票,投给了活下来的那种形态。
三个观察叠在一起,汇成核心判断:**规则的宿命不是文本。**稳定生效的那些,无一例外换过了形态。换成什么,开药方。
药方:规则的四种活法
先立论:纯文本规则是种脆弱的中间态——既无机器的强制力,又无本能的自动化,只能走"读到、记住、碰巧想起"这条最窄的路。而回看60天的数据,一切稳定生效的规则没有一个停留在纯文本,全都物化成了下面四种形态之一。
**一、变成拦截(机制化)。**权限白名单、hook闸门、自动检查工具皆是此类——执法权从AI手里收回,交给环境和工具,违规要么不可能发生,要么一露头就被打回。force push红线零违反,打回占比走低,背后都是它。适用:高频且后果严重的红线,首选。
**二、变成前置(注入化)。**赶在生成之前写进约束——FSD里那句"以interface加type替代enum",让违规件失去出生机会。拦截管"做了不放行",前置管"根本生不出"。适用:明确的技术选型约束。
**三、变成记忆(沉淀化)。**事故之后写入auto-memory而非排期进制度——相关场景一出现,记忆随上下文自动浮出,"想起"从此不靠运气,靠场景触发。发现五的重心迁移正是在走这条路。适用:经验教训、坑点警示。
**四、变成本能(内化)。**高频触发喂养肌肉记忆,file-not-read的84%下降给出实证:行为的成熟不需要条文,只需要足够多的重复场景。适用:无伤大雅的小毛病,承认它,配合它。
四条活法之外,若不得不写一条纯文本规则,数据的建议非常具体:条文必须自带触发钩子。坏写法:"注意保持代码整洁"——没有触发时刻,AI想不起,人也想不起。好写法:"当提交前检查发现lint警告时,立即修复后再提交"——触发时刻、动作、条件三元素齐全,并把触发时刻绑定到高频场景,让它借每一次触发被复习。没有哪条原则性条文靠"写得精炼"被记住。找不到钩子的原则性条文,只剩两种诚实的归宿:尽快物化为四种活法之一,否则接受现实——它只对认真读它的人生效一次。
最后排序,留给你自查自己的规则库:**最好的规则让违规不可能,其次让想起不必要,最差让遵守全凭自觉。**7200行逐行问一遍:各自在哪一层?
结尾:约束的尽头
三篇至此连成一气:《从2277个子代理说起》证明版本升级是药,《704次失败诊断书》证明数据记录是听诊器,这一篇补上第三件——规则是免疫系统。而免疫系统每次产出抗体,都需要病原刺激:没摔过的跤,养不出活着的规则。
7200行是家底,也是负债。每一行无人想起的文字,维护成本都在悄悄计息——要跟着改,要陪着重构,删还舍不得。所以这篇数据真正主张的不是"少写规则",而是一次迁移:**把预算从"写"挪到"形态"。**能拦截的去装闸,能前置的去注入,剩下的交给记忆和本能,文本只负责过渡。
还有一个尾巴必须交代干净。上一篇留下的钩子叫静默吞掉——88.6%的失败无人知晓。这一篇里躺着它的同胞兄弟:98%的流程跳过无声,3个新规不入库无声,一场零处方的好转也无人在场作证。**违规会静默,失败会静默,规则的失活同样静默。**下一站:让规则的死亡也可见——静默失败是"失败没人看见",静默失活是"规则死了没人知道",两股暗流该合流了。
免责声明
本文内容仅供学习交流,所述方法需结合实际场景灵活运用。AI工具输出结果仅供参考,关键业务决策请结合人工判断。
本文由AI辅助创作,经人工审核编辑后发布。文中所有工程均使用泛称(如主力前端工程、创作型工程),涉及的项目名称与标识信息均已脱敏;全部数据来自作者自用环境近60天的会话记录实测,样本有限,不代表普遍情况,各项统计口径以文内说明为准。
《智能编码进化论》特别企划 · 数据报告体 · 2026-08
本文首发于微信公众号「羲和Lab」,公众号内可留言交流
阅读公众号原文