让 AI 证明自己没改坏
AI 改代码很快,问题只有一个:你怎么知道它没改坏?
《小光头勇闯修真界》做到后期,我同时开多个 agent 改不同模块。 答案不是「review 一遍」,而是把验收做成机器能判的五层。
五层验收,从静态到真机
- LSP 静态检查:用脚本卡
ERROR=0,错误数从 43 压到 0 之后才允许提交 - 179 项断言:核心玩法、数值、状态机逐项跑
- 机器人试玩:3 个固定 seed 的机器人通关,检查可达性
- 目标视口截图:每轮按 1080×1920 截图存档,用于视觉验收
- 真机:最后一道人眼检查
最关键的一句规则:缺证据只能是 UNDETERMINED
第二层里我把结论固定成三种状态:PASS / FAIL / UNDETERMINED。
没有截图、没跑机器人、日志缺失——一律 UNDETERMINED。 不允许「看起来没问题」,因为那等于把证据的判断权交回给人,AI 就又可以糊弄了。
机器人必须走真实输入路径
第一版机器人是白盒直调的:直接改状态、直接触发通关,结果造出了「假通关」。
后来改成必须通过虚拟指针走真实输入路径,重开也必须走真实的点击流程并断言结果。 测试如果绕过真实的输入路径,测的就是测试本身。
用确定性回归当熔断
重构成「行为保持不变」的改动,必须逐位复现基线数值: 机器人的通关时间要和基线一致(比如 185.68 / 203.18 / 192.17 秒)。
数字对不上,哪怕只有 100 毫秒,也说明某处行为变了。
两个容易忽略的坑
- 隔离玩家存档:测试必须切到 qa 模式,否则游戏里的永久升级会悄悄修改基线
- 干净 worktree 复核:让另一个 agent 在干净的 worktree 上 checkout 指定 commit 再跑一次,别在脏工作区「自证清白」
一句话
让 AI 自己跑测试只是第一步。真正要设计的是:AI 的产出如何被独立验证。
这篇笔记的原始 Markdown:let-ai-prove.md llms.txt · RSS