详细分析 ▾
运行时依赖
版本
gitlab-mr-reviewer 初始发布:面向 GitLab Merge Request 的自动化端到端代码审查工作流。 - 使用 git 与 glab CLI 自动完成仓库克隆、MR 同步、检出、分析及评论发布。 - 对 MR diff 运行静态代码分析并生成结构化反馈。 - 支持直接向 GitLab MR 发布详细行内评论与总结备注。 - 通过飞书 webhook 或 SMTP 邮件发送审查后通知,并提供示例命令。 - 包含认证、自建 GitLab 实例及版本/工具前置条件的配置指引。
安装命令
点击复制技能文档
端到端自动化审查 GitLab Merge Request 的代理流程:克隆 → 同步 → 检出 MR 分支 → 分析 → 评论 → 通知。
---
目录
- 概述
- 前置条件
- 工作流
- 阶段 1 — 初始化(克隆仓库)
- 阶段 2 — 审查 MR
- 阶段 3 — 发布评论
- 阶段 4 — 通知团队
- 工具
- MR Analyzer
- Feishu Notifier
- 错误处理
- AI 审查增强(OpenClaw 集成)
- 参考指南
- 配置
---
概述
该技能将代理变为常驻 GitLab MR 审查器。首次使用时克隆仓库;每次审查请求时获取最新远程状态,通过glab 检出 MR 分支,运行自动化分析,向 GitLab 回写结构化评论,并可选择将摘要发送至邮箱或 Feishu 群。 核心工具:
git clone / git fetch— 仓库管理glab mr list / glab mr checkout— MR 交互glab mr note— 发布审查评论python scripts/mr_analyzer.py— 对 diff 进行静态分析python scripts/feishu_notifier.py— Feishu webhook 通知- SMTP(通过 Python
smtplib)或任意 mail CLI — 邮件通知
---
前置条件
| 工具 | 安装 | 用途 |
|------|------|------|
| git | 系统包 | 克隆、获取、diff |
| glab | brew install glab 或 glab releases | GitLab CLI |
| python 3.8+ | 系统 | 分析脚本 |
| GitLab PAT | glab auth login | API 认证 |
| Feishu webhook URL | Feishu 群机器人设置 | 可选通知 |
一次性认证:
``bash
glab auth login
# 或设置环境变量
export GITLAB_TOKEN=glpat-xxxx
`
版本检查(需 glab ≥ 1.30.0 以支持 glab mr checkout):
`bash
glab version
# 若版本过低,升级:
brew upgrade glab # macOS
# 或下载最新 release: https://gitlab.com/gitlab-org/cli/-/releases
# 无 glab 时回退:手动 checkout MR 分支
git fetch origin merge-requests//head:mr-
git checkout mr-
`
自托管 GitLab 实例配置:
`bash
# 配置自托管实例(替换 gitlab.example.com)
glab config set host gitlab.example.com
glab config set token glpat-xxxx --host gitlab.example.com
# 验证连接
glab auth status
# 若使用自签名证书,跳过 TLS 验证(仅限内网测试环境)
glab config set skip_tls_verify true --host gitlab.example.com
`
---
工作流
阶段 1 — 初始化(克隆仓库)
代理启动或收到 init 指令时,每个仓库仅运行一次。
`bash
# 克隆目标仓库
git clone git@gitlab.example.com:group/project.git ~/reviews/project
# 验证
cd ~/reviews/project && git log --oneline -3
`
代理触发语:
“初始化仓库 git@gitlab.example.com:group/project.git”
“init repo ”
---
阶段 2 — 审查 MR
每次收到 MR 审查请求时执行。
`bash
# 1. 同步最新远程状态
cd ~/reviews/project
git fetch --all --prune
# 2. 列出开启的 MR 以确认目标
glab mr list --state=opened
# 3. 检出 MR 分支(glab 自动创建本地分支)
glab mr checkout
# 示例:glab mr checkout 42
# 4. 查看与目标分支的 diff
glab mr diff
# 或:git diff origin/main...HEAD
# 5. 运行自动化分析
python /path/to/gitlab-mr-reviewer/scripts/mr_analyzer.py . \
--base origin/main \
--mr-id \
--json --output /tmp/mr__analysis.json
`
代理触发语:
“审核 MR #42”
“review MR 42”
---
阶段 3 — 发布评论
分析完成后,直接向 GitLab MR 发布结构化反馈。
推荐:使用 gitlab_inline_commenter.py 一键发布行内评论
行内评论(Diff Note)绑定到 Changes 标签页的具体代码行,比普通 glab mr note 更精准。
`bash
# 根据 mr_analyzer.py 的 JSON 输出批量发布行内评论
python scripts/gitlab_inline_commenter.py \
--host gitlab.example.com \
--project-id 123 \
--mr-id 42 \
--findings /tmp/mr_42_analysis.json # 发布单条行内评论(AI 语义审查结果)
python scripts/gitlab_inline_commenter.py \
--host gitlab.example.com \
--project-id 123 \
--mr-id 42 \
--file src/auth/token_service.py \
--line 47 \
--severity critical \
--dimension security \
--body "JWT token expiration not validated — add exp check after decode."
# 先 dry-run 确认内容,再正式发布
python scripts/gitlab_inline_commenter.py \
--host gitlab.example.com \
--project-id 123 \
--mr-id 42 \
--findings /tmp/mr_42_analysis.json \
--dry
``