乐于分享
好东西不私藏

我让 AI 连做 3 版小工具后,真正要写的是验收清单

我让 AI 连做 3 版小工具后,真正要写的是验收清单

开发效率与编程协作

我让 AI 连做 3 版小工具后,真正要写的是验收清单

连续改三版不等于变好;把可观察的验收条件写进每一版,才能判断 AI 是否真的修好了问题。

导语

同一个“会议室预约”小工具,第一版能录入,第二版加了冲突提示,第三版又补了取消按钮。每一版看上去都更完整,但直到有人把两条相同会议室、重叠时间的预约一起提交,才发现提示只在前端显示,刷新后两条记录都留下来了。问题不在 AI 有没有连做三版,而在每一版开始前没人写出“怎样算修好”。

每一版只改一个可检查的结果

第一版的输入是 10 条模拟预约和三位测试者;动作是让 AI 做录入页;输出是每人能在 60 秒内新增一条预约。验收条件写成“10 条都保存、字段不为空、没有真实个人信息”。如果只是“页面看着能用”,不能进入下一版。

第二版处理冲突。准备两条同一会议室、时间重叠的样例;动作是让 AI 增加服务端检查;输出不是红色提示,而是第二个请求返回明确失败。OWASP 要求不可信输入尽早在服务端验证;因此验收要同时检查浏览器提交和直接调用接口,两种路径都必须拒绝。

第三版处理取消。准备一条已取消和一条有效预约;动作是生成取消接口与列表状态;输出是取消后空位可再次预约、重复取消返回可理解错误。验收还要确认操作人只能取消自己的记录;访问控制不能只写在前端。

失败并不等于让 AI 再试一次

最常见的失败是把一句“还是不对,再改改”发回去。它没有输入、没有预期输出,也没有决定何时停止。GitHub 的 PR review 流程能提供反馈,却不替代你的验收标准;Copilot 的评论也不计入必需批准。

可复用验收卡:

字段
填写方式
通过标准
本版目标
只写一个行为
能用一句话观察
固定输入
列出样例数据
任何人可复跑
预期输出
成功与拒绝各一条
状态/页面可比对
失败边界
权限、空值、重复或异常
失败不会写入脏数据
复核人
指定人和时间
留下测试记录

执行顺序是:先填卡,再让 AI 改;修改后按固定输入重跑;成功和失败各通过一次才进入下一版。任何一项不通过,就回到同一版,不要叠加新功能。这个规则不适合支付、医疗或生产数据迁移的直接试错:这些任务必须先有人工设计评审与隔离环境。

来源:GitHub Copilot 代码评审;OWASP 输入校验