【免费下载链接】gentleman-guardian-angel
😇 Gentleman Guardian Angel (gga) - Provider-agnostic code review using AI. Use Claude, Gemini, Codex, Ollama to enforce your coding standards.
GGA(gentleman-guardian-angel)是一款 Provider-agnostic 的 AI 代码审查工具,而gga run --pr-mode是它的杀手级功能:不再只看最后一个提交,而是把整份 PR 的变更交给 AI 审查。本文带你从零上手 GGA PR 审查模式,覆盖分支基线检测、--diff-only省钱技巧与 CI 集成实战。
为什么只盯最后一个提交不够?
先想一个场景:你在 feature 分支上提交了 8 次——改接口、改实现、修测试、最后补一个文档。普通的 pre-commit 审查每次只盯着"当前暂存文件",CI 里的--ci模式则只看最后一次提交。
问题就出在这里:
- 中间提交的违规可能被"洗白":第三次提交埋下的
any类型,第七次提交只是把文件挪了个位置,单独看任何一次提交都"没毛病",合起来却是一坨不合规的代码; - 跨文件的整体性问题看不见:比如新模块拆了 5 个文件,每个文件单独审查都通过,但模块整体违反了项目架构规范。
--pr-mode的解法很直接:以基线分支为参照,把 PR 范围内所有改动的文件一次性交给 AI 审查。它的实现逻辑都在 lib/pr_mode.sh 里,核心就做四件事:
- 自动检测基线分支(
main>master>develop优先级) - 用
git diff计算基线分支...HEAD范围内的全部变更文件 - 按
FILE_PATTERNS/EXCLUDE_PATTERNS过滤文件列表 - 把"编码规范 + 变更文件完整内容"打包成审查 prompt 发给 AI
一键安装与初始化
macOS / Linux 上最快的安装方式是 Homebrew:
brew install gentleman-programming/tap/gga手动安装则先克隆仓库:
git clone https://gitcode.com/gh_mirrors/ge/gentleman-guardian-angel cd gentleman-guardian-angel ./install.sh装好后,到你的项目目录做两步初始化:
cd ~/your-project gga init # 生成 .gga 配置文件 gga install # 安装 pre-commit git hook然后写一个AGENTS.md描述你的编码规范(比如"禁止 any 类型""必须命名导入 React"),GGA 就会拿着这份规范去审查代码。GGA 支持 Claude、Gemini、Codex、Ollama 等 11 种 AI Provider,改一下.gga里的PROVIDER即可切换,详见 docs/providers.md。
--pr-mode 快速上手:三条命令跑通整份 PR 审查
一切准备就绪后,在你的 feature 分支上执行:
gga run --pr-mode就这么简单。GGA 会:
- 自动检测基线分支:按
main>master>develop的优先级取第一个存在的本地分支,检测逻辑见 lib/pr_mode.sh 中的detect_base_branch()函数 - 列出
基线分支...HEAD范围内所有改动过的文件(自动过滤已删除文件) - 将文件完整内容连同
AGENTS.md规范一起发给 AI - 解析 AI 回复开头的
STATUS: PASSED或STATUS: FAILED,失败时列出每一条违规的文件、行号和修复建议
如果你的项目基线不是这三个名字(比如release/v3),在.gga里加一行即可,配置说明见 docs/configuration.md:
PR_BASE_BRANCH="release/v3"📌 小技巧:不确定当前生效的配置时,随时运行gga config查看。
想更省更快?用 --diff-only 只传 diff
默认模式下,GGA 会把每个变更文件的完整内容发给 AI——审查上下文最全,但 token 消耗也最高。如果 PR 只改了很小一部分,完全可以加一个--diff-only:
gga run --pr-mode --diff-only此时 prompt 里只包含 PR 的 unified diff(实现见 lib/pr_mode.sh 中的build_pr_prompt()函数),官方文档原话是"faster, cheaper"——更快、更省钱。两种模式怎么选:
| 场景 | 推荐模式 | 原因 |
|---|---|---|
| 新模块、大重构、跨文件架构调整 | --pr-mode | AI 需要完整文件上下文 |
| 小功能、小修复、CI 日常跑量 | --pr-mode --diff-only | diff 足以判断,成本更低 |
⚠️ 注意:--diff-only必须与--pr-mode搭配使用,单独使用会报错(--diff-only can only be used with --pr-mode)。
把整份 PR 审查放进 CI/CD
本地审查是"提交前自查",CI 审查是"合并前最后一道闸"。把--pr-mode放进流水线,每次 PR 打开或更新时都会自动执行完整审查。GitHub Actions 示例如下,完整写法见 docs/integrations.md:
on: pull_request: types: [opened, synchronize] jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 # 必须全量拉取,才能对比基线分支 - name: Install GGA run: | git clone https://gitcode.com/gh_mirrors/ge/gentleman-guardian-angel /tmp/gga echo "/tmp/gga/bin" >> $GITHUB_PATH - name: Run AI Review run: gga run --pr-mode两个容易踩的坑:
fetch-depth: 0不能省。CI 默认 shallow clone 只拉一层历史,main...HEAD的 diff 范围会算不出来;- Provider CLI 要先装好。比如用 Claude 需要先
npm install -g @anthropic-ai/claude-code并配置好 API Key。
配合.gga里的STRICT_MODE="true"(默认开启),AI 回复含糊其辞时 CI 会直接判失败,防止"没审明白却放行"。
常见问题排查
报错Could not detect base branch:本地既没有main也没有master/develop分支。要么先git checkout main,要么在.gga里显式配置PR_BASE_BRANCH。
审查了不该审的文件?:检查.gga中的FILE_PATTERNS和EXCLUDE_PATTERNS,PR 模式的文件过滤完全复用这两个配置项。
结果总是"变了又变"?:PR 模式默认走智能缓存,文件内容、AGENTS.md、.gga任一变化才会重新送审,机制详解见 docs/caching.md。
更多问题可查 docs/troubleshooting.md。
延伸阅读
- 命令完整参考:docs/commands.md
- 配置项速查:docs/configuration.md
- PR 模式单元测试:spec/unit/pr_mode_spec.sh(分支检测、范围构建、文件过滤都有覆盖)
一句话总结:gga run --pr-mode把"资深工程师通读整份 PR"这件事自动化了——本地跑一遍自检,CI 跑一遍把关,代码规范从此不再靠人肉盯。
【免费下载链接】gentleman-guardian-angel
😇 Gentleman Guardian Angel (gga) - Provider-agnostic code review using AI. Use Claude, Gemini, Codex, Ollama to enforce your coding standards.
相关推荐
pyenv-win源码贡献实战:从提交PR到代码审查的完整流程
pyenv win源码贡献实战:从提交PR到代码审查的完整流程 引言:为什么参与pyenv win开源贡献? 作为Windows平台下Python版本管理工具的
开发工具CLIElectron应用崩溃报告终极指南:Sentry在LanMiaoDesktop中的完整集成实践
Electron应用崩溃报告终极指南:Sentry在LanMiaoDesktop中的完整集成实践 作为一款基于Electron Vue+Vuetify技术栈开发
桌面应用前端如何在CSS中直接编写SVG?postcss-write-svg完整入门指南
如何在CSS中直接编写SVG?postcss write svg完整入门指南 postcss write svg是一款强大的PostCSS插件,它让开发者能够直
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考