大家好,我是Zack。
先说一个我上周真实踩的坑。让 AI 做个身份证校验码计算器,我就撂了一句「功能做全一点,界面好看一点」。
164 秒,它给我写了 560 行代码。身份证卡面、生肖星座、一键复制,全都有,看着挺唬人。
结果输入 17 位号码一点计算,卡面上赫然显示「110105?undefined undefined?」。再看提示:「前 17 位齐了,点『计算 / 校验』或直接看右侧结果」。
点了。还是不出来。它让我点按钮,按钮点进去又回到同一句提示,死循环。
这就是今天要说的主事:用 AI 做东西,别让它一步到位,先跑通一个最小版本。

我原来的做法:一句话需求,一步到位
我以前用 Claude Code 这类工具,习惯把需求说得很「 direction」:功能做全一点、界面好看一点、专业一点。
总觉得需求写细了麻烦,AI 那么聪明,它自己会悟。
翻车之后我把三次实验摆在一起对比了一下,数字比感觉诚实得多。
我做了三组实验,同一个工具同一个题
同一个任务:身份证校验码计算器,GB 11643-1999 标准,输入前 17 位算出第 18 位校验码。
A 组:模糊需求一步到位。 原话就是「功能做全一点,界面好看一点」。
耗时 164 秒,产出 560 行。功能眼花缭乱,但它自己的主场景——输入 17 位求校验码——是坏的。
B 组:需求写全,一步到位。 我把 10 条要求列成清单:输入框、算法系数、错误提示、深色模式、回车触发、超长截断,一条条写明。
耗时 44 秒,产出 246 行,10 条全对,边界情况也没漏。
C 组:先跑最小版,再逐步加。 第一轮只要「能输入、能算对」,丑一点无所谓。然后第二步加校验和回车,第三步加深色模式和页脚。
三轮耗时 19 + 32 + 60 = 111 秒,最终 84 行,全对。


三组放一起,规律就出来了:
| 做法 | 耗时 | 代码量 | 结果 |
|---|---|---|---|
| 模糊需求 + 一步到位 | 164s | 560 行 | 主场景翻车 |
| 需求写全 + 一步到位 | 44s | 246 行 | 全对 |
| 最小版 + 三步迭代 | 111s | 84 行 | 全对 |
为什么模糊需求必翻车
「功能做全一点」这句话,在 AI 听来是「多做一些能显得全的事」。
生肖、星座、卡面特效,这些都是「看起来全」的花活,加起来不费脑子。
但「输入 17 位之后到底该怎么交互」这种真正影响能不能用的细节,它只能猜。猜错了就写出那个死循环:17 位凑齐后提示你点按钮,按钮的处理逻辑又只重复了一遍输入检查,永远到不了出结果那一步。
560 行里,花活占了大约 300 行,坏掉的恰好是 17 位这个主场景的分支处理。
你要的东西它没做对,它做对的东西你不要。
可以直接抄的做法
第一步,把功能缩到一句话。校验码计算器的最小版就一句话:输入前 17 位,按系数算出第 18 位,显示完整号码。权重要连系数表一起给它:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2,校验码表 1 0 X 9 8 7 6 5 4 3 2。算法规则你自己不写清楚,AI 编码参考的教程版本不一,算错了你都不知道。
同时明确说不要什么:「不要标题美化、不要深色模式、不要错误提示」。这几条负向约束比写十条正向需求还管用,AI 默认爱加戏,你把戏台拆了它就老实了。
第一步跑完先验收:打开页面,输一个你知道答案的号码,看结果对不对。我用的测试号是 11010519491231002,第 18 位应该是 X。
第二步,加交互和校验。空输入显示什么、超 17 位怎么截断、回车要不要触发,一次说两三条就够。
第三步,才是好看的事。标题、配色、深色模式,放最后。这时候功能是对的,美化是锦上添花;反过来先美化,翻车了你分不清是功能坏了还是样式坏了。
每一轮都用同一句提示词结构:「在现有文件基础上补 X,其他别动」。这句「其他别动」省了我不知道多少返工,不然 AI 每轮都想着重构你上一轮的东西。
前后对比
翻车那次:164 秒换来一个不能用的东西,还要回头排查为什么显示 undefined,排查时间远超 164 秒。
改成最小版之后:111 秒,每一步 30 到 60 秒,每步结束都是一个能跑的东西。任何一步翻车,回退的只有那一轮改动,几分钟就能定位。
省的不只是时间。最大的变化是心里踏实:每一步我都亲眼见过它能跑,最后一步不需要祈祷。
两条通用原则
第一条:能跑的 5 行比跑不起来的 200 行值钱。最小版本的意义不是省 token,是给你一个每一步都验证过的地基。
第二条:需求模糊等于把设计权扔给 AI,它猜的方向大概率不是你要的。你哪怕只多写一句「输入 17 位就直接出结果,不用点按钮」,那个死循环就不会出现。
你用 AI 做东西时翻过什么车?评论区聊聊,翻车现场越具体越有价值。