讲师中心 微信公众号
AI工具推荐 视频效率加速

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

星晨姑娘_6922

星晨姑娘_6922

发布时间:2026-07-30 16:40:33

|

599人浏览过

|

来源于php中文网

原创

扣子机器人可自动审查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 的初始事件不包含完整变更列表。

YiHui GITHUB MONITOR
YiHui GITHUB MONITOR

监控多个 GitHub 仓库,配置发布、PR 与安全告警策略,通过定时 cron 任务推送低噪声通知。

下载

调用 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'
,改用环境变量校验或抛出明确错误。

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

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

热门AI工具

更多
Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

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

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

494

2026.06.05

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

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

394

2026.06.05

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

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

487

2026.06.05

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

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

196

2026.06.25

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

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

77

2026.06.25

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

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

109

2026.06.25

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

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

0

2026.10.16

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

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

0

2026.10.16

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

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

0

2026.10.16

热门下载

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

精品课程

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

共0课时 | 277人学习

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

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn