用途
no-mistakes 是一个用于 Git 仓库的「门控推送」(gated push)工作流工具。它把「功能已完成、准备推送」这一环节组织成一条可检查、可干预的流水线,替代直接执行 git push 的做法。其流水线顺序为:intent -> rebase -> review -> test -> document -> lint -> push -> pr -> ci。
主要能力
- 就绪检查:通过内置脚本检查 git、no-mistakes、各 provider CLI、受支持的 agent 二进制、origin 与 no-mistakes 远程、.no-mistakes.yaml 以及 no-mistakes doctor 状态。
- 门控推送:使用 git push no-mistakes <branch> 推送,而非 git push origin。
- 运行跟踪:可附加到当前运行(no-mistakes、no-mistakes attach),查看流水线各步骤结果。
- 发现处理:对阻塞项按步骤(rebase、review、test、document、lint、push、pr、ci)归类,判断属于用户决策、代码修复、配置修复还是外部服务故障。
- 重跑:使用 no-mistakes rerun 重新尝试。
- 跳过与向导:no-mistakes --skip test,lint 或 git push -o no-mistakes.skip=test,lint no-mistakes <branch> 用于一次性跳过;no-mistakes 与 no-mistakes -y 用于引导未提交工作的分支/提交/推送。
- 仓库初始化与移除:no-mistakes init 添加本地 no-mistakes 远程并在 ~/.no-mistakes(或 NM_HOME)下创建门控状态,不删除 origin;no-mistakes eject 移除当前仓库的门控。
使用方式
- 检查就绪:在仓库根目录运行内置脚本(只读、仅标准库):
python3 <skill-dir>/scripts/check_no_mistakes.py --cwd . python <skill-dir>/scripts/check_no_mistakes.py --cwd .
需要机器可读输出时加 --json。随后检查 Git 状态:
git status --short --branch git branch --show-current git remote -v no-mistakes status no-mistakes runs --limit 10
- 确认推送:在任何影响远程的命令前,明确说明分支与命令,例如:
Ready to push <branch> through no-mistakes with: git push no-mistakes <branch>
-
通过门控推送:git push no-mistakes <branch>。
-
附加并驱动运行:no-mistakes 或 no-mistakes attach。
-
处理发现:总结具体步骤、引用关键错误文本、判断类型,仅在用户要求时实施代码/配置修复,修复后重跑或继续;需要再次尝试时使用 no-mistakes rerun。
-
报告结果:是否已推送、PR URL(若创建/更新)、CI 状态、剩余阻塞项。
安装(仅在缺失或损坏时作为回退):
macOS/Linux release binary; installs/restarts daemon
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh
Go install; telemetry off by default unless configured at runtime
go install github.com/kunchenguid/no-mistakes/cmd/no-mistakes@latest
Source checkout
make build make install
安装后运行 no-mistakes doctor。依赖:git 与至少一个受支持的 agent 二进制(claude、codex、opencode、acli for Rovo Dev、pi)或用于 ACP 目标的 acpx;PR/CI 步骤中 GitHub 使用 gh,GitLab 使用 glab,Bitbucket Cloud 使用 NO_MISTAKES_BITBUCKET_EMAIL 与 NO_MISTAKES_BITBUCKET_API_TOKEN。
仓库设置:
git remote -v no-mistakes init
配置示例(.no-mistakes.yaml):
agent: codex
commands: test: "go test -race ./..." lint: "go vet ./..." format: "gofmt -w ."
ignore_patterns:
- "*.generated.go"
- "vendor/**"
auto_fix: rebase: 3 review: 0 test: 3 document: 3 lint: 3 ci: 3
若省略 commands,所选 agent 会尝试自动检测检查项。机器本地路径或标志可放在全局配置 ~/.no-mistakes/config.yaml 的 agent_path_override 中。
适用场景
- 功能开发完成、原本要执行 git push 时,改用门控推送流程。
- 需要统一本地与远程检查(测试、lint、格式、文档、评审)后再推送的仓库。
- 希望由 agent 协助处理流水线发现并修复失败 CI 的场景。
限制与注意事项
- git push no-mistakes、裸 no-mistakes -y 以及 CI 自动修复运行均属于影响远程的操作,除非用户明确要求推送/PR 流程,否则应先询问。
- 分支脏且用户未要求提交、当前分支为 main/master/develop 等受保护基分支、缺少 origin、缺少 no-mistakes 远程且未批准 init、doctor 报告硬失败时,应停止并询问。
- 本地确定性检查来自 commands.test、commands.lint、commands.format;AI 判断覆盖 diff 评审、缺失文档检查、自动修复尝试以及无命令时的检查检测;远程 CI 仍属于 Git provider,no-mistakes 仅监视并可请求 agent 修复失败任务。
- 若 doctor 找不到 agent,先检查 PATH,再在 ~/.no-mistakes/config.yaml 设置 agent_path_override;若守护进程缺少环境变量,应放入登录 shell 加载的启动文件后重启守护进程;若 PR/CI 步骤跳过,检查 gh/glab 认证或 Bitbucket 环境变量。
- 「clean」指分支通过了配置的本地与远程门控,并不代表完美。
- 关于收费、价格、平台支持范围等具体信息,资料中暂未提供。