← 返回信息流
GitHub 热榜GitHub Trending · 日·2 小时前

no-mistakes: 基于 Git 的零错误提交工作流

原标题:kunchenguid/no-mistakes
Go1,784 stars+90 今日

速览

该项目是一个 Git 钩子工具,旨在消除人为疏忽导致的代码错误。它支持在 push 前自动执行 lint、测试等检查步骤,确保只有符合标准的代码才能进入版本库,特别适合对代码质量要求严格的团队或个人开发者。

AI 深度解读

这是什么

no-mistakes 是一个基于 Go 语言开发的开源 Git 代理工具,旨在为本地开发工作流引入一层智能的“质量门禁”(Quality Gate)。它并不取代传统的远程仓库(如 GitHub、GitLab),而是作为一个中间层,拦截本地的 git push 操作。

当开发者将代码推送到 no-mistakes 代理而非直接推送到 origin 时,该工具会在一个隔离的临时工作区(disposable worktree)中启动一个由 AI 驱动验证管道。只有当所有预配置的检查(如测试、文档、Lint、代码审查等)全部通过后,它才会将分支转发至配置的远程推送目标,并自动创建结构清晰的 Pull Request (PR)。

该项目由 kunchenguid 维护,目前 GitHub 星标数约 1784+,主要面向希望提升代码提交质量、减少人工审查负担且深度集成 AI 辅助编程工具的开发团队或个人。

解决的问题

在现代软件开发中,尤其是引入 AI 编程助手(如 Claude Code, Codex, Cursor 等)后,开发者面临以下痛点:

  1. AI 生成的代码质量不可控:AI 助手可能生成看似合理但存在逻辑错误、安全漏洞或不符合项目规范的代码。
  2. 手动 PR 流程繁琐:开发者需要手动执行 git push、编写 PR 描述、等待 CI 结果,若 CI 失败还需手动修复并重新推送,流程割裂。
  3. 本地环境与 CI 环境不一致:本地测试通过不代表能过 CI,导致反复的“提交-失败-修复”循环。
  4. 审查上下文丢失:传统的 PR 往往缺乏详细的变更理由和自动化验证记录,增加 Reviewer 的理解成本。

no-mistakes 通过自动化前置验证和 PR 生成,解决了“代码在到达远程仓库前未经充分验证”的问题,确保推送到主分支的代码始终处于可合并状态。

核心功能

1. 隔离式验证管道 (Isolated Validation Pipeline)

no-mistakes 不会干扰开发者当前的工作目录。它会在一个临时的、隔离的工作区中克隆当前分支,并依次执行以下检查:

  • Review:代码规范与风格检查。
  • Test:运行单元测试和集成测试。
  • Docs:文档生成与链接检查。
  • Lint:静态代码分析。
  • Push & PR:验证通过后,自动推送到目标远程并创建 PR。

2. 多阶段智能修复与人工介入

管道中的每一步检查结果分为两类:

  • 自动修复 (Safe Fixes):对于机械性、无歧义的错误(如格式化问题、简单的 Lint 错误),工具会自动应用修复。
  • 人工介入 (Escalation):对于涉及业务逻辑、意图判断或复杂重构的 finding,工具会暂停并等待开发者确认。开发者可以选择批准、手动修复或跳过。

3. 原生 Agent 集成 (/no-mistakes Skill)

这是该项目的核心差异化功能。它提供了一个名为 /no-mistakes 的 Skill,可直接嵌入到 AI 编程助手(如 Claude Code, Codex, RovoDev, OpenCode, Pi 等)中。

  • 任务驱动:开发者可以直接告诉 AI:“用 /no-mistakes 完成这个任务”,AI 会在后台执行代码修改、运行验证管道,并仅在需要人工判断时暂停。
  • 无头模式 (Headless):支持非交互式命令行调用,适合 CI/CD 流水线或脚本化工作流。
  • 双向反馈:AI 可以读取管道的中间状态,动态调整代码以通过检查。

4. 自动化 PR 生成

一旦所有检查通过,no-mistakes 会自动:

  • 将分支推送到配置的 origin
  • 在 GitHub/GitLab 上创建 PR。
  • 自动生成包含变更摘要、验证结果的 PR 描述,无需开发者手动编写。

亮点 / 与同类相比

| 特性 | 传统 Git 工作流 | CI/CD 后置检查 | no-mistakes | | :--- | :--- | :--- | :--- | | 检查时机 | 推送后 (CI 阶段) | 推送后 (CI 阶段) | 推送前 (本地代理阶段) | | 干扰性 | 无 | 无 | 低 (隔离工作区,不干扰主工作区) | | AI 集成 | 无 | 无 | 原生 (支持多种 Agent 直接调用) | | PR 创建 | 手动或 CI 触发 | 手动或 CI 触发 | 自动且结构化 | | 修复策略 | 人工修复 | 人工修复 | 自动修复 + 人工审核混合模式 | | 反馈速度 | 分钟/小时级 (取决于 CI 队列) | 分钟/小时级 | 秒/分钟级 (本地执行) |

主要亮点:

  • Agent-Agnostic (代理无关):不绑定特定 AI 厂商,支持 Claude, Codex, RovoDev 等多种主流 AI 编程助手。
  • Human-in-the-Loop (人在回路):并非完全自动化,而是保留人类对关键决策的控制权,平衡效率与安全。
  • 非阻塞式开发:验证过程在后台或隔离环境中运行,开发者无需等待即可继续编写其他代码。

适合谁用 / 上手

适合人群

  • 重度 AI 编程助手用户:使用 Claude Code, Cursor, GitHub Copilot Workspace 等工具,希望确保 AI 生成代码质量的用户。
  • 对代码质量有高要求的团队:希望减少低级错误进入主分支,降低 Code Review 负担的团队。
  • 追求极致工作流自动化的开发者:希望从编码到 PR 创建全流程自动化的极客。

上手指南

1. 安装

支持 macOS/Linux (通过 curl 脚本) 和 Windows (Go install 或源码编译)。

# macOS/Linux 快速安装
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh

2. 初始化

在仓库根目录运行初始化命令,配置远程仓库和 Skill。

no-mistakes init
# 输出示例:
# ✓ Gate initialized
# repo /Users/you/src/my-repo
# gate no-mistakes → /Users/you/.no-mistakes/repos/abc123def456.git
# remote [email protected]:you/my-repo.git
# skill /no-mistakes installed for agents at user level

注意:如果是 GitHub Fork 贡献,需使用 --fork-url 参数指定 Fork 地址。

3. 使用方式

方式 A:手动 Git 推送 (显式路径)

git checkout my-branch
# 修改代码...
git add .
git commit -m "feat: add new feature"

# 推送到 no-mistakes 代理而非 origin
git push no-mistakes my-branch

推送后,工具会启动 TUI (终端用户界面) 展示验证进度。开发者可在 TUI 中查看结果、批准自动修复或处理人工介入项。

方式 B:交互式向导 (TUI)

# 无需先 commit,直接运行
no-mistakes
# 或全自动模式
no-mistakes -y

这会引导你创建分支、提交代码并推送。

方式 C:AI Agent 驱动 (推荐) 在 Claude Code 或其他支持 Skill 的 AI 助手会话中直接输入:

/no-mistakes implement user login feature

AI 将自动执行代码实现、运行验证管道,并在遇到需要人工判断的问题时暂停等待你的指令。

4. 构建与测试 (开发者)

make build   # 构建二进制文件
make test    # 运行单元测试
make e2e
查看原文 →github.com