no-mistakes 是一个用 Go 编写的开源 Git 命令行工具,目前在 GitHub 上获得约 8.2k star。它在你和真实远端之间插入一层本地 git 代理:把 git push no-mistakes 当作推送入口,工具会先在一次性 worktree 里跑完一套由 AI 驱动的检查管线,全部通过后才把分支转发到配置的推送目标,并自动开出干净的 PR。项目采用 MIT 协议,最新版本 v1.60.2 于 2026 年 8 月 29 日发布。

它解决什么问题

直接向主干分支推送代码,是错误进入主线的常见入口:测试没跑完、文档没更新、格式不合规的提交,往往要等远端 CI 跑完才发现,之后修一轮、再推一轮,PR 正文还得手写。no-mistakes 的做法是把这些检查前置到本地推送这一步:机械性的检查交给管线自动执行,需要人判断的事才升级给人。

工作机制:一次推送跑完一条管线

整体流程是:

  1. 执行 git push no-mistakes,工具在真实远端前拦截这次推送;
  2. 创建一次性 worktree,你的工作分支原地不动;
  3. 在 worktree 里按 review → test → docs → lint → push → PR → CI 的顺序执行检查;
  4. 每项检查通过才继续,失败则停下并给出 finding;
  5. 全部绿灯后,分支才被转发到配置的推送目标,PR 自动打开。

管线非阻塞运行,检查期间可以继续在原来的工作区干活。

支持多种 AI 编程代理

管线不绑定某一家 agent:claude、codex、grok、rovodev、opencode、pi、copilot、antigravity、cursor 都可配置,也支持 acp 协议,并带有序回退;每个 gate 都要求存在一个可运行的配置 agent。项目同时提供 /no-mistakes skill 给 Claude Code 等编码代理,底层用 axi 非交互界面驱动同一套审批流,让编码代理完成开发任务后直接被这套管线把关。

人的决定权保留在流程里

管线产出的 finding 分两类:机械性修复自动应用,涉及意图判断的升级给人 approve、fix 或 skip。远端 CI 失败时,管线会走受守卫的 force-push 路径修复并发布修复;当无法证明修复基于你已审阅的提交时,修复会退回 Review 流程后再发布,避免无关历史替换已审阅的提交。

安装与上手

安装命令:

curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh

Windows、Go install 与源码构建方式见项目安装指南。初始化后,日常开发照旧,推送时改用 git push no-mistakes <分支>;也可以直接运行 no-mistakes 打开 TUI,由向导完成建分支、提交、推送的整个过程。向 GitHub fork 仓库贡献时,用 no-mistakes init --fork-url <你的 fork 地址>,让 origin 保持指向父仓库。

小结

no-mistakes 把「推送前本地全量检查、AI 自动修复、人工决策兜底」整合成 git push 的一个新入口,让每次提交进主干前都先过一遍可配置的 AI 验证管线。项目目前 8.2k star、835 fork、595 次提交、54 位贡献者,Go 占代码库 99.9%,2026 年 4 月创建,仍在高频迭代中。