ChatGPT软件代码评审AI 评分 · 待评分AI 辅助编辑·未发现明显提示词注入风险n8n.io

GitLab MR +0 触发 ChatGPT 自动代码审查

GitLab 评论 → n8n Webhook → 获取 MR 变更 → GPT 评审 → 回写讨论

有一点经验步骤流程提示词
给谁
需要在 GitLab 上为 Merge Request 获取 AI 第二意见的工程师
你会得到
在 MR 评论输入 +0 后,自动获取代码变更并由 GPT 生成审查意见,作为讨论回复发布到对应行
你需要
n8n · gitlab

硬约束

前置条件:可访问的 n8n 实例;GitLab 仓库的 Maintainer 或 Owner 权限以配置 Webhook;GitLab Private Token;OpenAI API 密钥(凭证类型 openAiApi)。模板默认使用 gpt-4o-mini,可在 OpenAI Chat Model 节点切换为 gpt-4o。触发词 +0 可在 Need Review 节点自定义为其他关键词。

他们做了什么

作者 assert 在 n8n 官方模板库发布了该工作流模板。模板通过 GitLab note_events Webhook 监听 MR 评论,当检测到 +0 评论时,自动调用 GitLab API 获取 MR changes,逐文件筛选有效 diff,解析新旧代码后交由 GPT 模型审查,最终将审查结果作为精确定位的讨论回复写回 MR。

效果如何

模板在 n8n 官方平台展示,截至采集时累计浏览量 33,553 次(author_report via n8n-2167-api.json)。未提供具体运行成功率或 ROI 数据。

值得知道

触发词 +0 可在 Need Review 节点自由修改;默认模型为 gpt-4o-mini,支持在 OpenAI Chat Model 节点切换为 gpt-4o;Post Discussions 和 Get Changes 均需 GitLab Private Token,且模板中 URL 硬编码为 gitlab.com,私有化 GitLab 实例需替换域名;diff 解析逻辑对特定格式敏感,异常 diff 可能导致 lastOldLine/lastNewLine 返回 -1 或 null,评论定位将回退;本站未实际运行该模板(reproduction=not_tested)。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • OpenAI Chat Model 节点:绑定OpenAI API 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #2167(约 14 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-24

步骤

  1. 配置 Webhook 与凭证

    在 GitLab 项目设置中创建 Webhook,选择 note_events,URL 填入 n8n Webhook 节点的测试或生产 URL。在 n8n 中配置 OpenAI API 凭证(类型 openAiApi)。在 Need Review 节点中确认触发条件为评论内容等于 +0(可修改为其他关键词)。

  2. 获取并筛选变更文件

    Webhook 触发后,Get Changes 节点调用 GitLab API 获取 MR 的 changes 列表。Split Out 节点将 changes 数组拆分为逐条处理。Skip File Changes 节点过滤掉 renamed_file=true、deleted_file=true 或 diff 不以 @@ 开头的条目,仅保留有效代码变更。

  3. 解析 diff 并提取新旧代码

    Parse Last Diff Line 节点运行 JavaScript 解析 diff 最后一行,计算 lastOldLine 与 lastNewLine 用于后续定位。Code 节点将 diff 按行拆分:以 - 开头的归入 originalCode,以 + 开头的归入 newCode,其余行两边都保留。

  4. LLM 审查变更

    Basic LLM Chain 节点将文件路径、原始代码和新代码组装为提示词,调用 OpenAI Chat Model(默认 gpt-4o-mini)生成审查意见。系统消息要求模型以资深编程专家身份给出接受/拒绝决定、0-100 分评分、问题指出及修改建议,输出严格 Markdown 格式。

    运行提示词 · 来源原文。Basic LLM Chain 节点的 text 参数(用户消息模板)

    =File path:{{ $('Skip File Changes').item.json.new_path }}
    
    ```Original code
     {{ $json.originalCode }}
    ```
    change to
    ```New code
     {{ $json.newCode }}
    ```
    Please review the code changes in this section:

    运行提示词 · 来源原文。Basic LLM Chain 节点的 messages.messageValues[0].message(系统消息)

    # Overview:| You are a senior programming expert Bot, responsible for reviewing code changes and providing review recommendations. At the beginning of the suggestion, it is necessary to clearly make a decision to "reject" or "accept" the code change, and rate the change in the format "Change Score: Actual Score", with a score range of 0-100 points. Then, point out the existing problems in concise language and a stern tone. If you feel it is necessary, you can directly provide the modified content. Your review proposal must use rigorous Markdown format.
  5. 回写审查意见到 MR 讨论

    Post Discussions 节点以 POST multipart-form-data 调用 GitLab API,在 MR 中创建讨论。body 为 LLM 生成的审查文本;position 参数包含 old_path、new_path、start_sha、head_sha、base_sha 及解析出的 new_line/old_line,使评论精确定位到代码变更处。需在 headerParameters 中填入 PRIVATE-TOKEN。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限,再指导导入模板与替换凭证

这一段是提示词,页面不会在这里插入广告。

你正在搭建一个 n8n 工作流:当 GitLab Merge Request 收到 +0 评论时,自动获取该 MR 的代码变更,调用 GPT 进行审查,并将审查意见作为讨论回复发布到对应代码行。请先确认你已具备:1) 可访问的 n8n 实例;2) GitLab 项目的 Webhook 配置权限;3) GitLab Private Token;4) OpenAI API 密钥。然后按步骤导入模板并替换凭证与 URL。

替换 YOUR_GITLAB_TOKEN、YOUR_OPENAI_KEY 及 gitlab.com 为实际值后再测试

来源

ChatGPT Automatic Code Review in Gitlab MR · assert · n8n.io · 2024-03-07

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例