2026年7月6日 1 分钟阅读

Make No Mistakes 实战教程:给 AI 编码 Agent 装上强制验证,让”做完了”不再是一句空话

tinyash 0 条评论

你让 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 遵循三条硬性规则:

  1. 没有证据就不算完成——每个”it works”背后必须有实际运行的检查结果
  2. 写代码的不评代码——验证与实现在完全隔离的上下文中运行,使用冻结的标准
  3. 一个不可能失败的检查不是检查——所有门控都经过阴性对照验证,被篡改的测试会被检测出来而非被信任

这三条规则通过一个六状态终止系统强制执行,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 可能:

  1. 写一个更快的排序算法
  2. 把测试中的预期结果改成与自己算法一致的值
  3. 报告”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 代码时发现”测试通过,逻辑全错”的窘境,这可能是你需要的工具。

参考链接:

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。