提前列出常见借口与反驳
Rationalization-Prevention Table
把容易绕过规则的理由列出来,并说明为何不能据此省略检查。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
一次 null 输入问题已经有回归测试,但 Agent 常用“改动很小”或“上次成功”跳过它。教学约定:normalizeItems(null) 应返回空数组,测试位于 tests/normalize.test.mjs;当前补丁改变该函数的空值处理。你要让这些熟悉的理由回到具体检查。
具体做法
根据实际发生的绕过行为列一张短表,依次写理由、它缺少的证据、补证据的动作。“改动很小”缺少行为检查,应执行 null 用例;“上次成功”缺少当前版本证据,应验证新补丁。若动作无法执行,写明阻碍并保留未验证状态。只覆盖当前问题,不把表扩展成对一切情况的训诫。
反例
修复 normalizeItems 的 null 处理后绝不跳过验证,要有纪律。小改动也一样必须认真。
改进写法
修复当前 normalizeItems 补丁后使用这张检查表:
理由“改动很小” → 改动大小不说明 null 行为,运行 node --test tests/normalize.test.mjs,核对 normalizeItems(null) 返回 []。
理由“上次成功” → 旧版本结果不覆盖当前补丁,读取当前运行输出和退出码。
不能执行 → 报告具体环境缺口与未验证状态,不声明通过。每行的目的都是补足这次空值修复的证据。
为什么这样改
泛泛的纪律要求没有说明遇到熟悉的捷径时要做什么。表把理由和缺失证据相连,再给出对应动作;执行者能够识别一个绕过信号,并回到受影响行为的检查。
如何验证
用两种教学情况审阅报告:只说“只改一行”时,应继续要求 null 检查;只引用旧成功日志时,应指出版本不匹配。示意的合格记录列出当前命令、退出码及 null 用例结果,或明确列出无法运行的原因。
若任何理由导致没有证据却声明通过,检查失败。这里只设计检查,不声称真实运行过该教学测试。
适用边界
不要推断 Agent 的心理动机,记录实际跳过的动作即可。表不能保证遵守,也不意味着微小修改都需要无关的全套测试。发现已有当前版本的有效结果时可引用它,不能为了表格机械重复执行。
原文与版本
- obra/superpowers · Rationalization Prevention
查看此版本的文件8ca22dba9a94 - obra/superpowers · Common Rationalizations
查看此版本的文件8ca22dba9a94