同一句「做好了」,可能只到「我写了代码」,也可能到「线上真实用户能用且能回滚」。中间差六层,每一层都能让你翻车。
为什么需要这一页
你让 AI 做事,它回你一段自信的话:「已完成,功能正常运行」。
问题是,这句话在语言上是完成,在现实里可能只是文件被写了。它没有跑过,没有人点过,线上还是旧的。等你自己发现,往往已经过了几个小时,甚至已经告诉了客户。
这不是 AI 撒谎,是它对「完成」的判断标准和你不一样。你说的完成是「用户能用」,它说的完成常常是「我按你的话生成了内容」。
所以验收不是不信任,是把两个人的「完成」对齐到同一层现实。
六层完成度
任何一件事,都先问自己现在真实站在第几层。往上一层,都需要新的证据,不是新的措辞。
| 层 | 叫法 | 成立的意思 | 要什么证据 |
|---|---|---|---|
| 1 | 概念 | 只是说清了要做什么 | 一段能被别人复述的需求,没有代码 |
| 2 | 实现 | 代码写完了,能读能改 | 看得见改了哪些文件、改了什么 |
| 3 | 测试 | 有自动检查通过了 | 命令输出:几个通过、几个失败 |
| 4 | 运行时 | 真的跑起来了 | 本机访问,看到预期结果,不是「应该会」 |
| 5 | 主路径 | 真实用户的正常操作能走通 | 不用特殊参数、不改配置,从入口点进去能完成 |
| 6 | 生产 | 线上真实环境有效 | 线上地址可访问、有回滚办法、出问题看得见 |
关键规则只有一条:能证明到第几层,就只说到第几层。
「单元测试通过」不等于「跑起来了」——测试可以绕过真实入口。 「本机跑通」不等于「线上好了」——线上还有构建、环境变量、域名、缓存。 「部署脚本执行成功」不等于「用户能看到」——用浏览器打开那个网址才算。
通用验收话术:五句话
不必学复杂的提示词技巧。它宣布完成时,你回这五句里的任意几句,就能立刻分辨他在第几层。
- 你改了哪些文件?分别改了什么? —— 逼他从「宣布」回到「具体」。答不出具体文件,基本停在概念层。
- 你实际运行了什么命令,原始输出贴给我。 —— 注意是「原始输出」,不是他复述的结论。
- 我现在要打开哪个地址、点哪一步,才能自己看到这个效果? —— 这一句直接把他从第 3 层拽到第 4、5 层。
- 这次改动可能弄坏什么?怎么退回去? —— 没有回滚答案的改动不要放上线。
- 哪部分你没有验证过? —— 这句最有用。好的回答会承认边界;差的回答会继续说「全部已验证」。
请按这个格式汇报,不要只说"已完成": 1. 改了哪些文件,每个文件改了什么 2. 实际执行的命令 + 原始输出(不要复述,贴出来) 3. 我怎么自己看到效果:访问哪个地址、点哪一步、预期看到什么 4. 这次改动可能影响什么,怎么退回去 5. 哪些部分你没有真正验证过 如果某一项做不到,直接写"未做",不要用推测的说法填上。
五个最常见的糊弄,以及破法
| 他说 | 实际可能是 | 你回一句 |
|---|---|---|
| 已完成,功能正常运行 | 文件写了,没跑过 | 贴运行命令的原始输出 |
| 测试全部通过 | 测试没覆盖你要的那条路径 | 这个测试实际点进的是哪个入口? |
| 已部署到线上 | 构建成功但进程还是旧的 | 线上那个网址现在打开,标题/内容是新的吗? |
| 应该可以了 | 没验证,在推测 | 「应该」不算,你实际看到了什么? |
| 我已经修复了这个问题 | 改了一处相似代码,真正的原因还在 | 触发原来那个操作,现在还会不会复现? |
一件反过来的事:别让验收变成刁难
验收的目的是让活儿真的成立,不是抓错。三条自律:
按不可逆性收紧。 改一个文案,跑起来看一眼就够;动数据库、动线上、动钱、动别人的数据,才需要全套证据和回滚方案。给所有事都上最高门槛,只会让你自己不想干了。
先给结构,再要证据。 你在提需求时就说清「做完要交什么」,比事后审问有效十倍。这也是每个词条里「你可以这样告诉 AI」那段的写法。
承认「未验证」是好答案。 如果它老实说「这一段我没跑过」,那是可靠信号,值得鼓励,而不是扣分。你要的是一个会说实话的合作者,不是一个永远宣布成功的机器。
带走一句
不要问「你做完了吗」。问「我怎么自己看到」。前一个问题只能得到语言,后一个问题只能用现实回答。