📄 一句话概括
规则文件有两种失败方式:写太少它不听话,写太多它抓不住重点;二百行的项目百科里,真正影响行为的可能只有三行。
📝 本节和前面几节的关系
上一节说了这份文件为什么重要,这一节讲最容易犯的那个错误:写太多。
一、两种失败方式
写太少:它不知道你的规矩,于是按自己的默认来,按默认来往往就是按最差的方式。 写太多:一份二百行的百科塞进上下文,真正影响行为的那三行被稀释了。 第二种失败更隐蔽——因为你确实写得很认真。
二、什么叫【护栏】
护栏只写会改变它行为的条目:范围、风格、验证方式、不能碰的东西。 护栏型规则的特征:每一条都能被一次具体任务验证——要么它遵守了,要么它没遵守。 本节的演示测的就是这一点:三条护栏,三次验证,全都用得上。
三、什么叫【百科全书】
项目历史、团队八卦、完整接口文档、通用教程——这些它靠读你的项目就能得到,写了只是占用注意力。 判据在第 5.3 节:这条信息它能不能自己读出来?能,就别写。 还有一个现实理由:没人维护得动。一份要每周同步的规则文件,三个月后就过期了。
四、正确的顺序
先写五条护栏,跑一周,再加。每次它犯了错,补一条。 这样长出来的规则文件,每一行都有来历,也每一行都还在被用。 从零开始写一份完美规则文件是不现实的——你并不知道自己会犯什么错。
五、动手 Demo:从【护栏】开始,别写【百科全书】
下面用三条护栏去验一条真实指令,看命中率。
thin = [u"改代码前先说范围", u"不改测试目录", u"交付前跑测试"]
cases = [(u"改代码前先说范围", True, u"命中:先列范围"),
(u"不改测试目录", True, u"命中:用户明说了别动"),
(u"交付前跑测试", False, u"没命中:用户没提测试")]
实跑输出:
--------------------------------------------------------------------
从【护栏】开始,别写【百科全书】
--------------------------------------------------------------------
写规则文件有两种失败方式:写太少它不听话,写太多它抓不住重点。先看差距:
一份【护栏】型规则,只 3 行:
- 改代码前先说范围
- 不改测试目录
- 交付前跑测试
来测一条指令:把项目里所有日期格式统一,注意别动测试文件。
[命中] 改代码前先说范围 命中:先列范围
[命中] 不改测试目录 命中:用户明说了别动
[没中] 交付前跑测试 没命中:用户没提测试
三条里命中 3 条。就算这份护栏再精简,它**每一条都在被用上**。
反过来,一份二百行的项目百科里,真正影响行为的可能只有三行,
**剩下的一百九十七行是在稀释那三行的注意力**。所以从护栏开始。
护栏型规则的判据就是这一列:每一条都能被一次具体任务验证。 而二百行的项目百科里,真正影响行为的可能只有三行,剩下的一百九十七行在稀释那三行。
30 秒实验
- 把你现在想写的规则全列出来,然后逐条问:它能改变它的行为吗?不能就划掉。
- 给这份文件定一个上限:超过多少行就停下来重新审一遍。
常见误区
- 追求【一次写全】。你并不知道自己会犯什么错,规则是长出来的,不是设计出来的。
- 把项目介绍、团队背景写进去。那不是护栏,是给人看的文档。
自测三问(点开对答案)
1. 规则文件的两种失败方式是什么? —— 写太少它按默认来;写太多把真正有效的条目稀释掉。 2. 护栏型规则的判据是什么? —— 每一条都能被一次具体任务验证——要么遵守了,要么没遵守。 3. 为什么不该一次写全? —— 你并不知道自己会犯什么错;规则是长出来的。- ☐ 下一节(5.3 CLAUDE.md中到底该写什么)
相关笔记
- ⌨️ 编程原理 · 索引 — 约定与规范在工程里的作用
- 🧡 Claude Code橙皮书 · 索引