如何利用扣子和GitLab API实现对合并请求的代码自动审查

星晨姑娘_6922

星晨姑娘_6922

2026-07-30

599人浏览

原创

扣子机器人可自动审查gitlab mr代码:配置https webhook接收事件,用personal access token调用api获取diff和源码,结构化输入大模型生成json格式审查意见,再以评论形式提交至mr页面。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如何利用扣子和gitlab api实现对合并请求的代码自动审查

你需要让扣子(Coze)机器人自动读取 GitLab 合并请求(MR)中的代码变更,并基于预设规则给出审查意见,而不是人工逐行查看。这要求扣子能实时接收 GitLab 的 MR 创建/更新事件,调用 GitLab API 获取 diff 和源码上下文,并将结构化数据送入大模型推理链路。

在 GitLab 中配置 Webhook 接收 MR 事件

进入目标项目的 Settings → Webhooks 页面,填写扣子 Bot 的 HTTPS 回调地址(如 https://bot.coze.com/webhook/gitlab-mr),勾选 Merge request events,取消勾选其他事件类型。

点击 Add webhook 保存。GitLab 会立即发送测试请求,若扣子服务未就绪,该测试将失败——此时不要反复重试,先完成后续 API 权限配置。

注意:Webhook URL 必须以 HTTPS 开头,HTTP 地址会被 GitLab 拒绝;【回调地址必须能被公网访问,且已配置有效 TLS 证书】。

为扣子获取 GitLab API 访问权限

在 GitLab 用户设置中打开 Access Tokens 页面,创建一个 Personal Access Token。

Token 名称填 coze-code-review,有效期建议设为 1 年,权限至少勾选:api 和 read_api —— 缺少 read_api 将无法获取 MR 的 changes、diffs 或源文件内容。

生成后立即复制 Token 字符串,【该字符串仅显示一次,关闭页面即永久丢失】。把它安全存入扣子 Bot 的环境变量中,变量名建议为 GITLAB_API_TOKEN。

在扣子 Bot 中解析 MR Webhook 并提取关键信息

在扣子 Bot 的「Bot」→「工作流」中新建一个 HTTP 触发节点,路径设为 /webhook/gitlab-mr,方法为 POST。

添加「JSON 解析」节点,从请求体中提取以下字段:object_attributes.id(MR ID)、project.id(项目 ID)、object_attributes.source_branch、object_attributes.target_branch、object_attributes.last_commit.id(用于定位变更快照)。

若 Webhook 中 changes 字段为空(常见于 MR 初始创建时),则跳过 diff 提取,直接调用 GitLab API 获取最新 MR 变更详情——因为 GitLab 的初始事件不包含完整变更列表。

Github Auto
Github Auto

管PR、盯Issue、跑CI、发Release——GitHub仓库日常运维扔给它。少开几个Chrome标签页。

下载

调用 GitLab API 获取 MR 的文件级 diff 和上下文代码

使用「HTTP 请求」节点发起 GET 请求:
URL 拼接为:https://gitlab.example.com/api/v4/projects/{project_id}/merge_requests/{mr_id}/changes,Headers 中加入 Authorization: Bearer {GITLAB_API_TOKEN}。

成功响应后,遍历 changes 数组,对每个变更文件提取:old_path、new_path、diff(原始 diff 文本)、added_lines 和 removed_lines(用于快速判断修改密度)。

对每个新增或修改的 .py/.js/.java 文件,再发一次请求获取其当前版本完整内容:GET /projects/{project_id}/repository/files/{encoded_file_path}?ref={source_branch},其中 file_path 需做 URL 编码(空格→%20,/→%2F)——【未编码的路径会导致 404,且错误不提示具体原因】。

构造审查提示词并调用大模型分析代码风险

将每个文件的 diff 内容 + 前后 3 行上下文代码 + 文件路径拼成一段结构化输入,格式如下:

[FILE] src/utils/auth.js<br>[DIFF]@@ -12,5 +12,6 @@ function verifyToken(token) {<br>   if (!token) return false;<br>–  return jwt.verify(token, process.env.SECRET);<br>+  return jwt.verify(token, process.env.SECRET || 'dev-key');<br>[CONTEXT]// ⬆️ 上下文:token 校验入口<br>// ⬇️ 下文:错误处理分支<br>try {

把所有文件块合并为单个 prompt,传给「大模型」节点。系统提示词需明确限定输出格式:仅返回 JSON 数组,每项含 file、line、severity(high/medium/low)、message、suggestion 字段,禁止任何解释性文字或 markdown 符号。

这一步若返回非 JSON 内容,后续解析节点将中断流程——因此必须在大模型节点设置「强制 JSON 输出」开关,并启用「失败重试」(最多 2 次)。

将审查结果以评论形式提交回 GitLab MR 页面

遍历大模型输出的 JSON 数组,对每个 high 级别问题,构造一条评论内容,例如:

⚠️ 安全风险:硬编码密钥 fallback 值(line 14)<br>建议移除 <code>'dev-key'</code>
,改用环境变量校验或抛出明确错误。

调用 GitLab API 提交评论:
POST /projects/{project_id}/merge_requests/{mr_id}/notes,Body 为 {"body": "⚠️ 安全风险……"},Headers 同前。

每条评论独立发起请求,避免批量合并——GitLab 对单次请求的 body 长度有限制,超长会返回 413 错误;【单条评论超过 1000 字符时,应自动截断并在末尾添加「(内容过长,已省略)」】。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

扣子 gitlab git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
扣子智能体开发实操指南
扣子智能体开发实操指南

本专题面向开发者与产品同学,完整讲解扣子智能体Bot从零到一的搭建流程,包括Bot创建、提示词编写、插件接入、变量与记忆配置、调试与多渠道发布,帮助你打造属于自己的AI助手。

2026.06.05

494

14

扣子工作流全功能使用教程
扣子工作流全功能使用教程

本专题系统讲解扣子工作流的搭建逻辑与节点使用,覆盖LLM节点、代码节点、条件分支、循环节点与子工作流等核心能力,配合15个实战案例,帮助你用工作流把复杂业务流程自动化。

2026.06.05

394

15

扣子知识库零基础入门
扣子知识库零基础入门

本专题围绕扣子知识库与记忆系统,详细讲解知识库创建、文档上传、切片策略、向量召回、问答调优以及变量记忆与数据库的使用方法,帮助你打造高准确率的私有知识问答能力。

2026.06.05

487

15

MiMo Code AI 编程助手入门与智能开发实战专题
MiMo Code AI 编程助手入门与智能开发实战专题

PHP中文网为您提供MiMo Code AI编程助手入门与智能开发实战专题。作为小米MiMo团队推出的新一代终端原生AI编码代理,我们为您整理了通过官方脚本一键部署(支持Mac/Linux/Windows)及零配置接入MiMo-V2.5免费大模型的核心指南。同时,详细梳理了MiMo Code的三大核心工作模式(Build构建、Plan只读分析、Compose全流程编排)与独创的持久化记忆系统,深度解析其动态上下文压缩与双Agent协同架

2026.06.25

196

7

MiMo Code Agent开发与AI编程工作流专题
MiMo Code Agent开发与AI编程工作流专题

PHP中文网为您提供MiMo Code Agent开发与AI编程工作流专题。作为小米MiMo团队基于OpenCode二次开发并采用MIT协议开源的终端AI编程助手,我们为您深度拆解了MiMo Code的核心架构与实战工作流。专题详细梳理了其独创的“项目记忆、会话检查点、任务进度”三重持久化记忆系统,以及通过独立子Agent自动保存状态与动态上下文压缩技术,彻底解决长程任务“失忆”痛点。

2026.06.25

77

7

MiMo Code 模型能力优化与高级开发应用专题
MiMo Code 模型能力优化与高级开发应用专题

PHP中文网为您提供MiMo Code模型能力优化与高级开发应用专题。作为小米MiMo团队重磅推出的终端原生AI编程助手,我们为您深度拆解了其在底层计算与模型协同上的硬核优化。专题详细梳理了Max Mode(并行采样选优)机制,通过独立裁判模型在SWE-Bench Pro上提升10-20%的复杂任务完成率,以及基于SGLang HiCache技术的KVCache成本优化,实现百万级Token上下文的高效处理。

2026.06.25

109

7

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
扣子入门级教程
扣子入门级教程

共0课时 | 277人学习

扣子官方文档
扣子官方文档

共0课时 | 0人学习