通过轮询对 GitLab 合并请求进行自动化 AI 代码审查。定期检查开放的合并请求,审查代码差异中的安全漏洞、错误等。
GitLab MR 代码审查是一项面向实际任务的技能,主要用于GitLab MR. 以Polling为基础的自动代码审查.;Architecture. 无网络hook服务器——纯民意测验. 已审查 MRs tracked in {baseDir}/mr-reviewed.json.Setup.;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
基于轮询的 GitLab MR 自动化代码审查。
Cron (*/2 * * * *) → gitlab-api.js list-mrs → 跳过已审查的 MR → 获取 diff → AI 审查 → 发布评论/备注
{baseDir}/mr-reviewed.json 中{baseDir}/.env 中配置 GitLab 凭据:GITLAB_URL=https://gitlab.example.com GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx脚本会自动加载该文件。环境变量具有更高优先级(若已设置则不会被覆盖)。
node {baseDir}/scripts/gitlab-api.js get-versionnode {baseDir}/scripts/gitlab-api.js get-version # 测试连接
node {baseDir}/scripts/gitlab-api.js list-mrs # 列出所有待审 MR
node {baseDir}/scripts/gitlab-api.js list-mrs --project # 按项目过滤
node {baseDir}/scripts/gitlab-api.js get-changes # 获取 MR diff
node {baseDir}/scripts/gitlab-api.js get-file # 获取文件内容
node {baseDir}/scripts/gitlab-api.js post-comment --file # 行内评论(必须使用 --file!)
node {baseDir}/scripts/gitlab-api.js post-note '' # 汇总备注
{
"body": "**[Critical]** sql_injectionnnRaw query with user input.",
"position": {
"base_sha": "abc123",
"start_sha": "def456",
"head_sha": "ghi789",
"new_path": "src/db.js",
"new_line": 42
}
}
base_sha/start_sha/head_sha 来自 get-changes 输出中的 diff_refs 字段。
.gitlab-review-prompt.md;工作进程将通过 get-file 自动获取该文件| 问题 | 解决方法 |
|---|---|
| MR 未被审查 | openclaw cron list — 检查工作进程是否已启用? |
| API 错误 | node {baseDir}/scripts/gitlab-api.js get-version |
| 重复审查 | 检查 {baseDir}/mr-reviewed.json 是否存在且可写;确保 cron 提示中设置了最高优先级的“永不重新审查”规则 |
| 评论内容乱码 | 对 post-comment 使用 --file 模式(适配 Windows PowerShell 编码) |
| 行号错误 | new_line 必须为文件新版本中的行号 |