gentleman-guardian-angel
Gentleman-Programming/gentleman-guardian-angel加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
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 交叉领域找到了属于自己的生态位。