gentleman-guardian-angel
通过 Git Hook 在每次 commit 前自动触发 AI 代码审查,零依赖纯 Bash 实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过 Git Hook 在每次 commit 前自动触发 AI 代码审查,零依赖纯 Bash 实现
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Gentleman Programming 团队开发的开源 AI 代码审查工具,为每个 Git 仓库配备永不疲倦的 AI 代码守护者
每一个技术团队都面临一个令人沮丧的现实:制定了详尽的代码规范,却在 Code Review 阶段发现团队成员一次次触犯同样的错误——命名不规范、提交信息混乱、测试覆盖不足、安全隐患代码绕过检查。资深的代码审查者疲于重复指出相同问题,团队士气因此受挫。Gentleman Guardian Angel(简称 gga) 正是为解决这一结构性矛盾而生。它的核心理念简单而有力:让 AI 在每次 git commit 之前自动审查暂存文件,确保只有符合团队规范的代码才能进入代码库。
试想这样一个场景:一位开发者正在赶一个紧急需求,在疲惫中写出了一段存在 SQL 注入风险的代码。传统流程中,这条隐患会在 Code Review 时被发现,彼时修复成本已经提高。而在 gga 的工作流中,隐患在 commit 之前就被拦截,修复成本降至最低。
Gentleman Programming 是一个专注开发者工具的开源组织,2025 年 12 月 12 日正式开源 gga 项目,并在 GitHub 上迅速积累了超过 1050 颗星(截至 2026 年 6 月)。项目的创始动机来自团队内部的真实痛点:他们希望有一个零依赖、无锁定的方案,能够同时支持 Claude Code、OpenAI Codex、Google Gemini 等多个 AI Provider,不被任何一个厂商绑定。
项目采用 MIT 许可证,完全开源,由一个经验丰富的 Bash 脚本专家团队维护。值得注意的是,项目从诞生之初就将跨平台作为核心设计目标——不仅支持 macOS 和 Linux,还原生支持 Windows Git Bash 和 WSL,无需任何特殊配置。
gga 通过 Git pre-commit hook 接入开发工作流。在开发者执行 git commit 后、commit 实际写入之前,gga 自动提取暂存区(staged files)的所有变更,将内容连同团队自定义的 AGENTS.md 规范文件一起发送给 AI Provider 进行审查。
如果 AI 认为代码不符合规范,commit 会被拒绝,开发者会收到详细的修改建议;只有审查通过,commit 才能继续执行。这种"拦截式审查"改变了代码质量的治理模式——问题在产生时就解决,而不是积累到 Code Review 阶段才爆发。
对于自动化流水线,gga 提供了 --ci 模式,专门审查最近一次 commit 中变更的文件。这使其能够无缝集成到 GitHub Actions、GitLab CI 等主流 CI/CD 平台,在自动化流程中执行代码质量门禁检查。
PR Mode(--pr-mode)是 gga 最强大的功能之一。它不仅审查最后一次 commit,而是对比 PR 的基础分支(自动检测 main/master/develop)与当前分支,分析整个 PR 的完整变更范围。这解决了传统代码审查中"每次只看到最后一个 commit"的盲区,让审查者对 PR 的全局影响有完整认知。
gga 令人印象深刻的技术决策之一是选择 Pure Bash 作为唯一编程语言。整个项目零外部依赖(除了 Bash 本身),无需 Node.js、Python 或任何运行时环境。这意味着:
项目结构清晰分层:
| 目录/文件 | 职责 |
|---|---|
| bin/gga | CLI 入口,处理参数解析、配置加载、hook 安装 |
| lib/providers.sh | AI Provider 调度核心,支持 7 种 Provider |
| lib/cache.sh | 智能缓存,避免重复审查未改动文件 |
| lib/pr_mode.sh | PR 模式 diff 对比与聚合逻辑 |
| skills/ | 项目内部维护规范(6 个技能模块) |
| spec/ | 单元测试 + 集成测试(266 个测试用例) |
| Makefile | 完整开发命令集,支持 Docker 测试环境 |
providers.sh 是项目最核心的库文件,它将不同 AI Provider 的调用方式抽象为统一的接口:
PROVIDER="claude" # Claude Code CLI
PROVIDER="gemini" # Google Gemini CLI
PROVIDER="codex" # OpenAI Codex CLI
PROVIDER="opencode" # OpenCode CLI
PROVIDER="ollama:llama3" # 本地 Ollama
PROVIDER="lmstudio" # LM Studio 本地模型
PROVIDER="github:gpt-4o" # GitHub Models API
每个 Provider 都有对应的验证函数(检查 CLI 是否安装)和执行函数(构建 prompt 并调用)。这种设计确保了新增 Provider 只需在 providers.sh 中添加一段 case 分支,不会影响其他模块。
对于大型代码库,重复审查未变更文件是巨大的资源浪费。gga 内置的 SHA256 文件内容哈希缓存机制,会自动跳过内容未变化的文件的审查。缓存目录位于 ~/.cache/gga/,可通过命令管理:gga cache status 查看缓存状态,gga cache clear 清理缓存。
AGENTS.md 是 gga 审查的核心依据——它不是一个配置文件,而是一个面向 AI Agent 的技能定义文件。格式上参考了 Hermes Agent 的 SKILL.md 规范,每个团队可以根据自身需求定制审查标准。
项目本身维护了 6 个内部技能模块:
这种"技能化规范"的方式,比传统 Checklist 更有结构性,AI 理解起来更准确,审查结果的一致性也更高。
Homebrew(推荐 macOS/Linux)
brew install gentleman-programming/tap/gga
手动安装(跨平台)
git clone https://github.com/Gentleman-Programming/gentleman-guardian-angel.git
cd gentleman-guardian-angel
./install.sh
cd ~/your-project
gga init # 生成示例 .gga 配置文件
gga install # 安装 pre-commit hook
# 编辑 .gga 设置 PROVIDER(如 PROVIDER="claude")
# 创建 AGENTS.md 编写团队代码规范
# 完成——之后的每次 commit 都将自动审查
| 项目 | 要求 |
|---|---|
| 运行环境 | macOS / Linux / Windows (Git Bash / WSL) |
| Bash 版本 | >= 5.0 |
| 磁盘占用 | ~10MB |
| 内存占用 | < 256MB(纯脚本,无需运行时) |
| GPU | 不需要(AI 调用由远程 Provider 处理) |
| AI Provider | 至少安装一种:Claude/Gemini/Codex/Ollama 等 |
虽然多 Provider 设计避免了厂商锁定,但项目本身并不包含任何 AI 能力——它只是一个调度层。没有安装任何 Provider CLI(如 Claude Code)的用户将无法使用 gga。这意味着 gga 解决的只是"谁来审查"的问题,而不是"审查能力从哪里来"的问题。用户仍需为 AI Provider 的 API 使用付费(或管理本地模型)。
项目定位为 CLI 工具,没有任何图形界面。对于不熟悉命令行的开发者,初始配置(编写 AGENTS.md、配置 Provider)存在一定学习曲线。虽然文档质量极高,但上手体验仍依赖用户的 CLI 熟悉度。
gga 的审查质量直接由 AGENTS.md 的编写质量决定。如果规范文件写得笼统模糊,AI 的审查结果也会泛泛而谈。好的 AGENTS.md 需要团队投入时间维护,这在初期会形成一定维护成本。
gga 的出现折射出一个重要趋势:AI 能力正在从模型层向工具层快速渗透。过去一年的开源生态中,大量项目开始将 AI 作为"可插拔的能力组件"而非"核心产品本身"。gga 正是这一范式的典型代表——它不训练模型,不微调权重,只专注于将现有 AI 能力精准注入代码开发流程。
从增长曲线看,gga 在 6 个月内从 0 增长到 1050+ stars,增长速度在同类工具中处于较快水平。其采用的 Pure Bash 技术路线也提供了差异化——绝大多数 AI 代码审查工具依赖 Node.js/Python 环境,而 gga 以极简依赖的方式覆盖了传统路径无法触达的场景(轻量容器、嵌入式开发环境等)。
总的来说,Gentleman Guardian Angel 是一个定位精准、工程质量高、文档完善的 AI 开发者工具。它解决的问题具体而真实,解决方案克制而专注,在 AI + DevOps 交叉领域找到了属于自己的生态位。