/install gitlab-mr-reviewer
\r \r
GitLab MR Reviewer\r
\r
GitLab MR 审查调度层技能。只定义触发条件、执行顺序、硬规则和失败回退;命令细节与长参考统一放到 references/。\r
\r
适用场景\r
\r
- 用户明确提到 GitLab MR 审查,例如:
审核 MR #42、检查合并请求 42\r - 需要对 MR 发布行内评论、总结评论、approve 或 request changes\r
- 需要在审查后发送飞书通知\r
- 需要对 MR 做静态分析或 AI 深审(在配置允许时)\r \r
不适用场景\r
\r
- GitHub PR 审查(非 GitLab)\r
- 纯本地代码评审且用户明确不希望与 GitLab 交互\r
- 缺少最小配置且用户不希望先做初始化\r \r
执行前检查清单(Preflight)\r
\r
执行前必须确认(配置优先从 reviewer.config.json 读取,其次才是环境变量):\r
\r
- 工具可用:
git、glab、python\r - 配置齐全:
gitlab.projectId、review.repoPath、gitlab.defaultBaseBranch\r - 主机格式一致:
gitlab.host统一使用主机名(例如gitlab.example.com,不带协议)\r - 已认证:
glab auth status可通过,或存在有效GITLAB_TOKEN\r - 当前任务目标明确:仅审查 / 审查并评论 / 审查并通知 / approve\r
- 配置读取来源:统一以
reviewer.config.json为准(不要依赖环境变量回填)\r \r 缺少最小配置时,先停下并向用户追问,不得猜测 project id、host、repo path。\r \r
核心工作流\r
\r
- 同步仓库:进入
REVIEW_REPO_PATH并执行git fetch --all --prune\r - 切换 MR:优先
glab mr checkout \x3CMR_ID>\r - 运行分析:执行
scripts/mr_analyzer.py生成 JSON 结果\r - 生成结论:根据严重级别与置信度,得出
approve或request_changes\r - 发布评论:\r
- 有有效文件与行号 ->
scripts/gitlab_inline_commenter.py\r - 无法定位行号 -> 回退为 MR 总结评论\r
- 有有效文件与行号 ->
- 需要通知时:执行
scripts/feishu_notifier.py\r \r
Webhook 触发语义(强制)\r
\r
- 任何
System Hook GitLab/ webhook 自动触发,默认等价于:审核 MR #\x3Cid> 并通知飞书\r - webhook 触发不是“仅分析”模式,必须执行完整闭环:\r
- 完成 MR 审查并生成结论 \r
- 发布 GitLab 审查结果(优先行内评论,失败回退总结评论) \r
- 发送飞书通知 \r
- 返回发送回执(gitlab_publish / feishu_notify 的 success|fail 与失败原因)\r
- 不允许只输出审查结论而不执行发送动作\r
- 飞书配置缺失时必须显式报错,不允许静默跳过\r
- GitLab 发布必须走脚本 API 路径(
scripts/gitlab_inline_commenter.py),不要直接用终端文本粘贴glab mr note\r - 同一次 webhook 任务只允许 1 条总结评论,禁止重复发布\r
- 发布文本必须是 UTF-8 中文可读,禁止乱码评论\r \r
硬规则\r
\r
- 永远先静态分析,再决定是否做 AI 深审\r
- 审查结论、行内评论、总结报告必须使用中文\r
- 允许简化的是 skill 的表达风格,不允许简化审查结果与报告结构\r
- 不泄露任何 secret(如
GITLAB_TOKEN、FEISHU_WEBHOOK_URL)\r confidence \x3C 0.6不下结论,改为提问式评论\r- 单个问题只评论一次,避免重复刷屏\r
- 行号缺失或定位失败时,必须降级为 summary note\r
- 大 MR 优先审查高风险文件,不做无边界全量深审\r
- 检测到
notifications.feishuWebhookUrl已配置时,默认执行飞书通知;除非用户明确要求不通知\r - webhook 自动触发时,默认执行 GitLab 发布 + 飞书通知;除非用户在指令中明确禁止\r \r
失败回退顺序(必须按顺序)\r
\r
glab mr checkout失败 -> 检查glab version、认证、host\r- 仍失败 -> 使用
git fetch origin merge-requests/\x3CMR_ID>/head:mr-\x3CMR_ID>+git checkout\r mr_analyzer.py显示无 diff -> 校验 base 分支与当前 HEAD\r- 行内评论发布失败 -> 回退到 MR 总结评论(Overview)\r
- AI 上下文超限 -> 仅审查
review_order前 N 个高风险文件\r - 证据不足 -> 停止断言并向作者提问\r \r
输出契约\r
\r
mr_analyzer.py输出是后续评论/通知的事实来源\r- 至少保证字段:
verdict、score、findings、severity_counts\r findings中file或line缺失时,不发送行内评论\r- 审查结论只允许:
approve、request_changes、block\r \r
最小示例\r
\r
示例 1:审核 MR\r
\r
输入:审核 MR #42\r
\r
动作:preflight -> checkout -> analyzer -> 评论总结 -> 给出结论\r
\r
示例 2:审核并通知\r
\r
输入:审核 MR #42 并通知飞书\r
\r
动作:示例 1 全流程 + feishu_notifier.py\r
\r
示例 3:通过 MR\r
\r
输入:通过 MR #42\r
\r
动作:仅在无阻塞问题时执行 glab mr approve 42;否则改为 request changes 并解释原因\r
\r
参考文档\r
\r
- 运行配置:
reviewer.config.json\r - GitLab 命令与发布流程:
references/gitlab_review_workflow.md\r - 审查清单:
references/mr_review_checklist.md\r - AI 审查提示词:
references/review_prompts.md\r
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install gitlab-mr-reviewer - 安装完成后,直接呼叫该 Skill 的名称或使用
/gitlab-mr-reviewer触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
gitlab-mr-reviewer 是什么?
当需要审核 GitLab 合并请求、检查 MR diff 风险、发布 GitLab 审查评论、执行 approve/request changes,或发送 MR 审查通知时使用。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 202 次。
如何安装 gitlab-mr-reviewer?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install gitlab-mr-reviewer」即可一键安装,无需额外配置。
gitlab-mr-reviewer 是免费的吗?
是的,gitlab-mr-reviewer 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
gitlab-mr-reviewer 支持哪些平台?
gitlab-mr-reviewer 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 gitlab-mr-reviewer?
由 whrime(@whrime)开发并维护,当前版本 v1.0.3。