no-mistakes
Git 推送代理工具,在代码推送到远程前自动运行 AI 驱动的审查/测试/ lint 管道,所有检查通过后才创建干净的 PR。亮点是与多种 coding agent(Claude、Codex 等)兼容,支持自动修复安全机械性错误,人类只需处理涉及意图的发现。今日 stars 暴涨,适合追求代码质量和自动化 PR 流程的团队。
README
git push no-mistakes
清除所有杂乱,提交干净的 PR。
English · 简体中文
no-mistakes 在你真实的远程仓库前放置了一个本地 Git 代理。
将分支推送到 no-mistakes 而不是 origin,它会创建一个可丢弃的工作目录(worktree),运行一个 AI 驱动的验证流水线,仅在所有检查通过后将分支转发到配置的推送目标,并自动打开一个干净的 PR。
- 非阻塞 - 流水线在隔离的工作目录中运行,不会干扰你的工作。
- Agent(智能体)无关 - 支持
claude、codex、rovodev、opencode或通过acpx的acp:<target>。 - Agent 原生支持 -
/no-mistakes让你的编码智能体(coding agent)执行一个任务并将其门控,或者对已有的已提交工作进行门控:它会运行流水线,让流水线应用安全修复,并将剩余需要人为判断的部分升级给你处理。 - 人始终掌握决策权 - 自动修复或审查发现的问题,由你决定。
- 默认生成干净的 PR - 一键推送、打开 PR、观察 CI(持续集成)并自动修复失败。
完整文档:https://kunchenguid.github.io/no-mistakes/
工作原理
你的分支
│ git push no-mistakes
▼
┌──────────────────────────────────────────────┐
│ 可丢弃的工作目录 — 你的工作保持原样 │
│ 审查 → 测试 → 文档 → 代码检查 → 推送 → PR → CI │
└──────────────────────────────────────────────┘
│ 所有检查通过
▼
为你打开的干净 PR
每个步骤要么自行通过,要么带着一个 发现(finding) 停下来,等待你处理。 安全的、机械式的修复会被自动应用;任何涉及你意图的内容都会被升级给你 批准、修复 或 跳过。 除非所有检查都通过,否则任何内容都不会到达配置的推送目标。
安装
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh
Windows、Go 安装以及从源码构建的说明见安装指南。
快速开始
$ no-mistakes init
✓ 门控初始化完成
仓库 /Users/you/src/my-repo
门控 no-mistakes → /Users/you/.no-mistakes/repos/abc123def456.git
远程 git@github.com:you/my-repo.git
技能 /no-mistakes 已安装到用户级别的智能体中
通过门推送时请使用:
git push no-mistakes <branch>
$ git checkout my-branch
# 在分支上做一些工作...
$ git push no-mistakes
* 流水线已启动
运行 no-mistakes 进行审查。
$ no-mistakes
# 打开当前运行的 TUI(终端用户界面)
对于 GitHub fork 贡献,将 origin 指向父仓库,并用 no-mistakes init --fork-url <your-fork-url> 初始化。
在 TUI 中你可以对每个发现进行处理:自动修复类型的发现会被自动应用(或批准后应用),需要用户判断类型的发现则需要你批准、修复或跳过。
一旦所有检查通过,门控会将你的分支转发到配置的推送目标并为你打开 PR,因此无需手动执行 git push origin,也无需手动编写 PR 描述。
希望让你的编码智能体以无头模式驱动同样的流程?使用 /no-mistakes(见下文)。
三种触发门控的方式
每个变更都通过相同的流水线执行。根据你完成变更时的工作方式选择入口:
git push no-mistakes- 显式的 Git 路径。将已提交的分支推送到门控远程仓库而不是origin。no-mistakes- TUI。在做出变更后运行(无需提交),向导会引导你创建分支、提交并通过门控推送,然后关联到运行中。no-mistakes -y会自动完成所有这些步骤。/no-mistakes- 智能体技能。告诉编码智能体执行一个任务并通过/no-mistakes <task>进行门控,或者使用裸的/no-mistakes对已有的已提交工作进行门控。它会运行流水线,让流水线应用安全修复,并在遇到需要人为判断的内容时停下来询问你。
no-mistakes init 会为 Claude Code 和其他智能体安装 /no-mistakes 技能。在底层,该技能驱动 no-mistakes axi,一个面向同一审批流程的非交互式 TOON 接口。
参见快速入门了解完整的首次运行向导。
开发
make build # 构建 bin/no-mistakes,包含版本信息
make test # 运行 go test -race ./...(不包括 e2e 测试套件)
make e2e # 运行标记的端到端智能体旅程测试套件
make e2e-record # 当智能体通信格式变化时重新录制 e2e 测试夹具
make lint # 检查生成的技能文件是否漂移,并运行 go vet ./...
make skill # 重新生成已提交的 no-mistakes 技能文件
make fmt # 运行 gofmt -w .
make demo # 重新生成 demo.gif 和 demo.mp4(需要 vhs 和 ffmpeg)
make docs # 构建 docs/dist 中的 Astro 文档站点
查看 Makefile 获取完整的目标列表。
make e2e-record 会用真实的 claude、codex 和 opencode CLI 覆盖 internal/e2e/fixtures/,消耗真实的 API 配额,提交前请仔细审查。