AI 为什么像个没眼力见的新人
第一次做 Vibe Coding(不自己写代码、而是指挥 AI 来做软件)时,你常会看到 AI 实力很强却做偏了,因为它不了解你的情况。它加上你没要求的功能;你说"只改这一处",它却把旁边也动了;它说"全好了",可你一按按钮却没反应。
这不是 AI 不行,而是它不知道你想要什么、你的项目是什么样——就像一个很能干的新人,入职第一天并不了解公司。它需要的是几张便签:贴在桌上的常备说明,让你不必每次都重新解释。
这些便签贴在哪里 —— harness
贴这些便签的地方,就是一个叫 CLAUDE.md(或 AGENTS.md)的文件。它是放在项目文件夹最顶层的纯文字文件,AI 每次对话开始时都会自动先读它。像这样事先铺好底子、让 AI 按你的方式工作,就叫 harness。
该写些什么呢?好在开发者们很早就总结出的几条原则,正好是很好的便签。它们大致分两组——(A)如何给 AI 派活,(B)如何让代码和信息保持整洁。
A 组 —— 如何给 AI 派活:安德烈·卡帕西的四条原则
安德烈·卡帕西是提出"Vibe Coding"一词的 AI 研究者。把他为"指挥 AI 写代码"总结的四条指令,用非开发者的话来说是这样的。
先想再做(Think First)。越能干的新人,一问就越会立刻按自己的方式做出来。你说"做个注册",他做成了邮箱注册,可你想要的是 Kakao 登录,于是又得从头再来。所以让 AI 在动手前先说"我这样理解对吗?"。用话对齐方向的五秒钟,省下推倒重来的三十分钟。
不加多余(Simplicity First)。AI 有个"好心"添加你没要求功能的毛病。你只要一个保存按钮,它连自动保存、版本管理都给你带上。三样你都不用,却都成了可能出故障的地方。让它只做你要求的最小实现。
只改该改的(Surgical Changes)。你说"只把按钮改成蓝色",它却把整个按钮重写,顺手删掉了点击功能。颜色是变了,可按下去没反应。让它只改你指定的部分,别碰无关的代码。
目标驱动(Goal-Driven)。没有完成标准,AI 会停在"看起来好了"——只做了界面,却漏了真正的保存连接。反过来,只要钉死"保存后刷新页面文章仍要在",它就会自己反复修改重试,直到达成——这正是大语言模型最大的强项。
B 组 —— 让代码和信息整洁:SSOT·DRY·KISS·YAGNI
这些是让代码本身保持整洁的原则。刚开始不懂也没关系,但知道了能让 AI 做出来的东西以后少些纠缠。
唯一答案(SSOT,Single Source of Truth)。同一个信息复制到多处,必然会不一致——因为你改了一处却忘了其余。放在一处,其余引用它。不要重复(DRY,Don't Repeat Yourself)是它的代码版:同样的代码出现两次以上,就做成一份复用。下面是真实代码示例。
保持简单(KISS,Keep It Simple)。别炫技搞复杂,先选易懂的做法。现在不需要就别做(YAGNI,You Aren't Gonna Need It)。"以后也许用得上"现在不要做。你大概已经发现,KISS 和 YAGNI 与卡帕西的"不加多余"其实是同一个意思。
// 坏例 —— 品牌色散落在多处
按钮色 = "#E1892F"
标题色 = "#E1892F"
链接色 = "#E1892F"
// 想改颜色要三处都改,漏掉一处颜色就不一致
// 好例 —— 定义一次,其余引用(SSOT + DRY)
品牌色 = "#E1892F"
按钮色 = 品牌色
标题色 = 品牌色
链接色 = 品牌色
// 现在只改品牌色一行,按钮·标题·链接就一起变了看着有八条,其实只有四条常识
我们看了八条,但把重叠的去掉,要记的只有四条常识。
不必被八个缩写吓到。"动手前确认、做完验证 / 保持简单 / 只动交办的部分 / 归拢到一处"——这四句话就是全部。
| 一句大白话 | 归并的原则 | 对新人说的话 |
|---|---|---|
| ① 动手前确认,做完验证 | Think First + Goal-Driven | 先问"我这样理解对吗?" · 别说"好了",要真正验证 |
| ② 保持简单 | Simplicity First + KISS + YAGNI | 只做我要的 · 别提前造 |
| ③ 只动交办的部分 | Surgical Changes | 只改那一处 · 别碰旁边 |
| ④ 归拢到一处 | SSOT + DRY | 答案·模板放一处 · 禁止复制粘贴 |
可直接粘贴的 CLAUDE.md(真实示例)
把这些原则落进一个实际文件,就是下面这样。放在项目文件夹最顶层,命名为 CLAUDE.md 即可。(用 Claude Code 就用 CLAUDE.md;若混用 Cursor、Codex 等多种工具,把相同内容放进 AGENTS.md。)
# 本项目中 AI 要遵守的规则
我不是开发者。请把专业术语用通俗的话解释清楚,并且尽量简短。
## 做事方式
- 先想再做:写代码前,先用通俗的话说明你要做什么、怎么做,并得到我的确认。我的要求含糊时,先问,别猜。
- 不加多余:只做解决当前要求的最小实现。不要添加我没要求的功能。
- 只改该改的:只修改我指定的部分,不要碰无关的代码。
- 目标驱动:先定义"成功标准"(例如:保存后刷新页面文章仍在),然后反复调整直到真正达成。
## 代码·信息的整洁
- 唯一答案(SSOT):同一个设置或信息只放在一处,其余地方引用它。
- 不要重复(DRY):同样的代码出现两次以上,就抽成函数复用。
- 保持简单(KISS):与其炫技地复杂,不如选易懂的做法。
- 现在不需要就别做(YAGNI):"以后也许用得上"现在不要做。
## 安全
- 在做难以撤销的操作(如删除文件)之前,务必先征询我的意见。现在就开始
四步就够。(1)打开你正在做的项目文件夹。(2)在最顶层新建一个 CLAUDE.md 文件——或者直接对 AI 说"建一个 CLAUDE.md 文件,把这些规则放进去"。(3)把上面的内容粘贴进去。(4)从下一次对话起,AI 会先读这些便签再开始。
所谓擅长 Vibe Coding,与其说是擅长写代码,不如说更接近于为 AI 搭好舞台、让它能好好帮你。而这座舞台,正是贴在新人桌上的这几张便签。
