ByteNoteByteNote

字节笔记本

2026年6月24日

我装了个「AI 门卫」,挡在我和 Git 远程之间

API中转
¥120

推代码这件事,能不能让 AI 先替我把一道关?


上周在 GitHub 刷到一个名字很冲的项目——no-mistakes(不出错)。它的 slogan 更冲:Kill all the slop. Raise clean PR.(杀掉所有毛刺,提交干净的 PR。)

我一向对「AI 帮你写代码」的工具保持警惕,但这个不太一样:它不是帮你写,而是挡在你和真实远程之间,在你 git push 出门之前,先用 AI 把代码从头到脚查一遍。

听起来很美,但真的能用吗?我把它装到机器上,从头到尾实测了一遍。

它到底干了什么

一句话讲清楚:你不 push 到 origin,而是 push 到一个叫 no-mistakes 的本地「关卡」。

这个关卡背后跑着一条 AI 流水线:代码评审 → 测试 → 文档 → 基线对齐 → lint。全部绿灯之后,代码才会被转发到真正的远程,并自动开 PR。

最妙的是——这条流水线跑在一个一次性隔离 worktree 里,你本地的工作区一行都不动。你可以接着写下一个任务,它在后台默默替你擦屁股。

整个机制的信任基础就一句话:没有东西能在所有检查变绿之前到达真实远程。

实测:我亲眼看着 AI 改了我的 README

我在 GitHub 建了个临时私有仓库,写了个 11 行的 app.py(两个函数:adddivide),然后:

git push no-mistakes feat/test-pipeline

push 立刻返回了,但代码没有到达 origin——被关卡拦住了,只启动了一条异步流水线。

然后我去翻了它的运行日志,这才是最震撼的部分。流水线的每一步都有独立的日志文件,全是 AI 的真实输出

代码评审——AI 真的读了 diff,给出结论:「自包含的小改动,没发现 bug、安全问题或可简化之处。」

测试——因为我没配测试框架,它直接让 AI agent 去跑代码,agent 真的执行了 adddivide、除零异常三条路径,确认行为正确。

文档——这步最让我吃惊。AI 发现 README 没提 app.py自己动手补了一段 Usage 文档,还提交了一个 commit

add(a, b) - returns a + b. divide(a, b) - returns a / b; raises ValueError if b is 0.

文档准确、格式规范、甚至带了运行示例。我看着分支的 head 从一个 commit 推进到了另一个——那是 AI 自己写的提交。

这不是 demo,不是 mock,每一步都有日志为证。

也不是没毛病

安装这一关,它就先把自己绊了一跤。

官方推荐的一键脚本,底层是用未认证的方式去请求 GitHub API 取最新版本号。结果直接撞上 403 限流,安装失败。一台没配 token 的干净机器,装它的第一步就可能卡住。

我最后是绕过去手动装好的:用已认证的 gh 取版本号,手动下载、解压、装到 ~/.no-mistakes/bin

还有几个体验小瑕疵:装完会无确认地直接拉起后台守护进程;卸载关卡时不清本机残留数据;下载二进制不做 sha256 校验(虽然官方有提供 checksums 文件)。

这些都是小问题,但叠加起来,能看出这是个功能扎实、工程化还差口气的早期项目。

谁该试试它

如果你是那种重度依赖 AI agent 写代码的人——Claude Code、Codex、OpenCode 轮着用——那 no-mistakes 值得一试。

它解决的真实痛点是:agent 产代码的速度,早就超过了人类 review 的速度。一堆「看似能跑、实则带毛刺」的提交涌进 CI,红了打回,返工成本越来越高。

no-mistakes 在 CI 之前、在 push 出门之前,再加一道本地的、AI 驱动的、还能自动修复的门禁。它不替代 CI,而是把问题挡在离家最近的地方

而且它不绑死某一个 AI——装上后自动识别出我机器上的 5 个 agent,任君挑选。

写在最后

这次测试我全程隔离在一个临时仓库里,测完即删,主项目一行没动。但 no-mistakes 这个思路,我是真的服气:

让 AI 在你眼皮底下、在代码出门之前,先把活儿干扎实。

比起那些宣称「全自动、你不用管了」的工具,我更信任这种**「AI 先查一遍,最后还是你拍板」**的设计。人始终在驾驶座。

项目地址:github.com/kunchenguid/no-mistakes

如果你也被 AI 写的代码「背刺」过,不妨给它一个下午试试。


你平时怎么挡住 AI 写出的毛刺代码?靠人工 review,还是 CI,还是干脆放任?评论区聊聊。

分享: