如何使用no-mistakes的auto-fix:让AI安全修复自动生效
【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes
no-mistakes是一款"AI 质量门禁"工具,通过git push no-mistakes拦截你的推送,在隔离工作区中自动运行 review、test、lint 等校验流水线。它的核心亮点之一,就是auto-fix(自动修复)能力:当流水线发现问题时,AI 智能体会自动尝试修复并重新验证,直到全部通过或暂停等待你确认——既不阻塞你的本地开发,也不会让 AI 越权乱改代码。本文带你快速上手这套"安全自动修复"机制。
auto-fix 是什么:问题→修复→重跑 的闭环
传统 CI 红灯后需要你手动改代码再推一次;而 no-mistakes 的 auto-fix 把"发现→修复→验证"做成了一个自动循环:
- 流水线某一步执行后产出findings(问题清单),比如测试失败、lint 告警、review 意见;
- 如果该步骤开启了 auto-fix(次数上限 > 0)且还有剩余尝试次数,执行器会带着上一轮的问题列表让 AI 智能体动手修复;
- 修复后自动重跑该步骤验证;
- 仍有问题且次数未耗尽 → 继续循环;次数用尽或全部通过 → 暂停等你批准,或继续推进流水线。
整个过程发生在一次性的隔离 worktree 中,你的工作目录始终不被触碰,这是它"安全"的第一层保障。
一键上手:auto_fix 配置指南
auto-fix 的开关粒度是"每个步骤一个次数上限",写在auto_fix配置对象里(全局配置~/.no-mistakes/config.yaml,或仓库级.no-mistakes.yaml覆盖单个字段):
| 字段 | 默认值 | 含义 |
|---|---|---|
auto_fix.rebase | 3 | rebase 冲突自动修复次数 |
auto_fix.review | 0 | review 发现的自动修复次数(默认关闭,需手动批准) |
auto_fix.test | 3 | 测试失败自动修复次数 |
auto_fix.document | 3 | 文档步骤(首轮即修复,不走后续循环) |
auto_fix.lint | 3 | lint 问题自动修复次数 |
auto_fix.ci | 3 | CI 失败及合并冲突自动修复次数 |
📌 想把某一步的自动修复关掉?把它设为0即可——该步骤发现问题时会直接暂停,等你人工拍板。字段详情可参考项目文档:docs/src/content/docs/reference/global-config.md。
AI 如何"安全"地修复:三类 finding 的分级授权
no-mistakes 不会让 AI 对任何问题都"来者不拒",而是给每条 finding 一个action标签,形成分级授权:
- ✅auto-fix:客观、机械性的问题(格式、编译错误、常规 bug),自动进入修复循环;
- ⚠️ask-user:涉及产品意图或设计取舍的问题(比如"这个判断是不是该保留"),只暂停等你批准,不进入自动修复;
- no-op:纯信息性提示,无需处理,直接放行。
关键安全设计:如果智能体没有明确标注 action,系统会"失败关闭",默认按 ask-user 处理——未分类的问题永远不允许被 AI 自动修复。这意味着 AI 的自动修改权被严格限制在"有把握的机械修复"范围内,触及意图的改动始终由人决定。
在 TUI 中手动触发修复:按f键
即使自动循环耗尽次数,流水线也只是暂停而不是失败。打开 TUI(运行no-mistakes)后:
- findings 面板列出所有问题,带勾选框;
- 按
space勾选/取消单条,或A(全选)/N(全不选); - 按
e给某条问题附加备注,或+补充自己的意见; - 按
f触发修复——AI 会拿到"选中的问题 + 你的备注 + 历史修复决策"一并处理; - 修复完成后步骤重跑,再次暂停给你查看结果(
fix_review状态),此时你可以批准、再修一次、跳过或中止。
💡 如果想更省心,按y开启yolo 模式:暂停的步骤会被自动授权再修一轮,修完自动批准,避免无限制的修复死循环。
CI 阶段的自动修复:先重试,再让 AI 出手
对于远程 CI 失败,auto-fix 还有一层"省钱"设计:在动用 AI 之前,系统会先判断失败是否由平台自身造成(如任务被取消、环境故障)。这类失败直接确定性重跑对应检查,不消耗任何auto_fix.ci次数;只有真正由你的代码导致的失败,才会升级到 AI 修复循环。每次重跑都会在步骤日志中播报,状态里也会显示auto-fix 1/3这样的进度,透明可追溯。
该逻辑的实现位于 CI 修复步骤源码:internal/pipeline/steps/ci_fix.go,概念文档见 docs/src/content/docs/concepts/auto-fix.md。
修复记录全程留痕,人始终在环
- 每轮都是证据:每次步骤执行(首轮或自动修复轮)都会作为"round"记录进数据库,保存问题清单、耗时、发给修复智能体的完整 payload 和修复摘要,最终汇入 PR 描述的 Risk Assessment 与 Testing 章节;
- 提交信息受控:自动修复产生的 commit 主题来自
commit.fix_message模板,且渲染前会做校验,异常值不会留下半成品暂存区; - 历史连续性检查:每步提交前会校验 worktree HEAD 是否仍延续上次记录的头,防止带外回退丢掉已审历史。
小结
no-mistakes 的 auto-fix 给"AI 自动改代码"加了三重保险:隔离 worktree(不碰你的目录)、action 分级 + 失败关闭(未确认的问题不许自动修)、次数上限 + 人审兜底(修不好就停下问人)。你只需在配置里定好每一步的尝试次数,剩下的交给git push no-mistakes——红灯由 AI 先修一轮,拿不准的交给你拍板。
【免费下载链接】no-mistakesgit push no-mistakes项目地址: https://gitcode.com/GitHub_Trending/no/no-mistakes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考