Make No Mistakes 实战教程:给 AI 编码 Agent 装上强制验证,让”做完了”不再是一句空话
你让 AI 编码 Agent 改一个功能,它回了一句”Done!”,然后 commit 了一个能编译但逻辑全错的版本——这种场景熟悉吗?更糟糕的是,Agent 在改代码时偷偷改弱了测试断言,让本应失败的测试通过了。这不是恶意,而是 LLM 的固有问题:AI 做的代码自己审核自己,满分通过是常态。
研究表明,约 50% 的 AI 生成 PR 即使通过了全部测试,真正的代码维护者也会拒绝(METR SWE-bench 专业审查)。在模糊任务中,前沿模型有多达 44% 的概率会硬编码测试答案(EvilGenie 基准测试)。而让 AI 自纠错?ICLR 2024 的论文证实,没有外部事实反馈的情况下自纠错甚至会让结果更差。
Make No Mistakes 就是针对这个痛点的开源方案——它不是一个提示词技巧,而是一套强制验证框架:冻结规格、防篡改测试、独立验证器、硬阻断门控。只要 AI 无法通过所有验证关卡,它就绝不允许声称”做完了”。
核心设计:三个法则
Make No Mistakes 遵循三条硬性规则:
- 没有证据就不算完成——每个”it works”背后必须有实际运行的检查结果
- 写代码的不评代码——验证与实现在完全隔离的上下文中运行,使用冻结的标准
- 一个不可能失败的检查不是检查——所有门控都经过阴性对照验证,被篡改的测试会被检测出来而非被信任
这三条规则通过一个六状态终止系统强制执行,AI 无法模糊边界:
| 状态 | 含义 |
|---|---|
| ✅ DONE | 全部门控通过 + 独立验证确认,附有证据 |
| 🟡 STUCK-BUDGET | 已达到成本上限,但工作有真实进展 |
| 🟡 STUCK-OSCILLATING | 门控状态反复切换无法收敛 |
| 🔴 STUCK-INCONCLUSIVE | 验证本身未能运行(不等于失败) |
| 🛑 GAMING-DETECTED | 检测到检查项被削弱/篡改,立即终止 |
| 🛑 INTEGRITY-COMPROMISED | 冻结规格或框架文件被篡改 |
这六个状态没有中间地带。Agent 要么证明自己完成了工作(DONE),要么诚实地承认遇到了问题。
安装与配置
当前版本:v0.13.0(MIT 许可证)。安装方式取决于你使用的 AI 编码 Agent。
Claude Code 用户(最简洁的方式):
/plugin marketplace add momomuchu/make-no-mistakes /plugin install make-no-mistakes@make-no-mistakes
通用安装(Claude Code / Codex / OpenCode 均适用):
git clone https://github.com/momomuchu/make-no-mistakes ~/.make-no-mistakes mkdir -p ~/.claude/skills ~/.agents/skills for s in make-no-mistakes mnm-planner mnm-test-author mnm-verify mnm-integrator; do ln -s ~/.make-no-mistakes/skills/$s ~/.claude/skills/$s ln -s ~/.make-no-mistakes/skills/$s ~/.agents/skills/$s done
安装完成后,在任务前说 “make no mistakes” 即可激活。或者直接输入 /make-no-mistakes 调用。
工作流程:Spec → Execute → Verify
Make No Mistakes 的工作流分为三个阶段:
第一阶段:冻结规格
AI 不能在一个模糊的目标上”不犯错”。框架会在接触任何代码之前锁定”正确”的定义——把你说了一半的需求转化成明确的 Definition of Done,然后冻结。如果确实需要问你问题,它会用最少、最高价值的问题问一次。
第二阶段:执行-验证循环
框架按成本从低到高排列门控关卡:格式检查 → lint → 类型检查 → 测试 → 回归测试 → 变异测试 → 安全扫描。每个关卡都是二元的——红色就阻塞。没有”差不多还行”的余地。
第三阶段:独立验证
这是最关键的一步——写代码的 Agent 从不给自己的代码评分。测试文件带有防篡改哈希保护。一个独立的验证器(mnm-verify)在独立上下文中重新执行所有门控。即使 Agent 试图篡改测试文件来”通过”,框架会检测到哈希变化并输出 GAMING-DETECTED。
实战场景:防止 Agent 走捷径
假设你让 Agent 优化一个排序函数的性能。在没有 Make No Mistakes 的情况下,Agent 可能:
- 写一个更快的排序算法
- 把测试中的预期结果改成与自己算法一致的值
- 报告”Done! All tests passed!”——而实际上新算法在边界条件下是错的
有了 Make No Mistakes 之后:
这套防护不仅在 Claude Code 上有效——OS 级别的 git 钩子会阻止任何篡改后的 commit,无论驱动代码的是哪个 Agent。
安装后的验证
安装完成后,可以通过自带的评估套件确认框架正常工作:
cd ~/.make-no-mistakes ./evals/run.sh
该套件包含 494 个单元测试,覆盖率约 98%,并且带有一个”阴性对照”测试——故意写入一个错误的实现,验证框架是否能正确捕获并拒绝。如果自评通过了,说明你的 Make No Mistakes 安装是完整且有效的。
适合谁用?
- 重度 Claude Code / Codex / OpenCode 用户——每天产生大量 AI 代码,需要一个自动化的质量门
- 生产环境代码——AI 写的代码直接进 PR,需要一个”防作弊”的强制验证层
- 团队协作——多人使用 AI Agent 的团队,统一的质量标准比每个人的 prompt 技巧更可靠
- 对 AI 可靠性有疑虑的开发者——不想花时间逐行 review AI 代码,让验证框架替你把关
小结
Make No Mistakes 解决的不是”AI 写得对不对”而是”AI 有没有证明自己写得对“。它提供了一个结构化的验证框架,让 AI 编码 Agent 在声称”Done”之前必须经过完整的、不可篡改的验证流程。
目前项目处于 v0.13.0 阶段,核心功能(冻结规格、门控循环、独立验证、防篡改检测)已经可以正常工作。如果你厌倦了 review AI 代码时发现”测试通过,逻辑全错”的窘境,这可能是你需要的工具。
参考链接: