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

用 n8n 实现 GitHub PR 自动 AI 代码审查

PR 创建 → 提取代码差异 → 构建审查提示词 → OpenAI 生成评论 → 回写到 PR 并打标签

经验丰富步骤流程提示词贴士
给谁
需要为团队 GitHub 仓库自动化代码审查的开发者或 DevOps 工程师
你会得到
新 PR 自动触发 AI 审查,审查结果以评论形式发布到 PR,并可选打上 ReviewedByAI 标签
你需要
n8n · github

硬约束

前置条件:n8n 实例(自托管或云版)、启用了 PR 活动的 GitHub 仓库、OpenAI API Key、GitHub OAuth2 或 PAT 凭证。可选:Google Sheets OAuth2 凭证用于读取团队代码规范。费用取决于 OpenAI API 调用量,具体以 OpenAI 定价为准。

他们做了什么

作者 jiheneme 在 n8n 官方模板库发布了一个工作流模板,用于在 GitHub 仓库中实现自动化的 PR 代码审查。该模板通过 GitHub Trigger 监听 pull_request 事件,利用 HTTP Request 节点调用 GitHub REST API 获取 PR 的 diff,再经 Code 节点将 diff 格式化为结构化提示词,交由连接 OpenAI 的 AI Agent 生成审查意见,最后通过 GitHub 节点将审查评论写回 PR 并可选打上 ReviewedByAI 标签。模板还提供了可选的 Google Sheets 节点,用于向 AI 提供团队代码规范。

效果如何

来源未提供该模板在实际项目中的运行数据或效果报告。模板在 n8n 官方平台的浏览量为 14654 次(截至采集日)。

值得知道

1) Code 节点中的系统提示词默认设定为「You are a senior iOS developer」,若用于其他技术栈需手动修改该角色描述。2) 提示词正文包含法语注释(Fichier、Pas de patch disponible),不影响功能但需注意。3) 反引号转义逻辑将 ``` 替换为 '',可能改变 Markdown 代码块显示,需根据实际审查场景评估。4) Google Sheets 节点为可选,但启用时需自行准备规范格式(描述 + 正反例)。5) 本用例未经过本站实测,实际 OpenAI 费用、GitHub API 限流及审查质量需用户自行验证。6) 来源 workflow.json 中部分节点参数值为空(如 owner、repository 的 value 字段),导入后必须在 n8n 界面中补全。7) HTTP Request「Get file's Diffs from PR」在原文中无认证配置;且 URL 以 sender.login 充当 owner,存在组织仓/fork 场景失效的模板缺陷,不能写成可靠操作——见 steps 中适用边界说明。

n8n 工作流模板

结构已检查 · 未实际运行

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

配置与测试清单

需要绑定的凭证

  • lmChatOpenAi 节点:绑定OpenAI API 凭证。
  • githubTrigger 节点:绑定GitHub OAuth / PAT。
  • httpRequest 节点:绑定相关 HTTP / API 密钥(按节点 Header 或 Query 配置)。
  • github 节点:绑定GitHub OAuth / PAT。
  • googleSheetsTool 节点:绑定Google Sheets OAuth2 凭证。

需要替换的配置

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

测试输入与预期结果

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

模板处理说明

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

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

步骤

  1. 导入工作流模板

    在 n8n 中打开 Workflows → Import from file or JSON,粘贴或上传本模板的工作流 JSON 文件。导入后应看到包含 PR Trigger、HTTP Request、Code、AI Agent、GitHub 等节点的工作流画布。

  2. 配置 GitHub 触发器

    选中 PR Trigger 节点(GitHub Trigger),配置要监控的仓库(Repository)和事件类型(Events = pull_request)。认证方式选择 GitHub OAuth2,并确保已在 n8n 的 Credentials 中配置好 githubOAuth2Api 凭证。

  3. 获取 PR 文件差异

    模板中的 HTTP Request 节点「Get file's Diffs from PR」从上游 PR Trigger 载荷动态拼 URL,拉取该 PR 的变更文件列表与 diff:`https://api.github.com/repos/{{$json.body.sender.login}}/{{$json.body.repository.name}}/pulls/{{$json.body.number}}/files`。核对原文(workflow.json):该节点 **credentials 为空、authentication 未配置**,模板本身未挂 GitHub token/OAuth。这不等于「生产上无需认证」——对私有仓库会直接失败;对公有仓库也受 GitHub 未认证 API 更严限流约束。适用边界:仅当目标仓库公开、且调用量在未认证限额内时,模板现状才可能碰巧可用。潜在缺陷:URL 使用 `body.sender.login` 作为 owner;sender 是事件触发者(PR 作者/操作者),不一定是仓库 owner(组织仓、fork PR 场景易错)。更稳妥的字段通常是 `body.repository.owner.login`(仍须对照你的 webhook 载荷验证)。建议:为该 HTTP Request 增加 GitHub 凭证(Header Authorization: Bearer <token> 或 n8n GitHub cred),并修正 owner 表达式后再用于真实仓库。

    运行提示词 · 来源原文。HTTP Request 节点的 URL 字段(Get file's Diffs from PR)

    =https://api.github.com/repos/{{$json.body.sender.login}}/{{$json.body.repository.name}}/pulls/{{$json.body.number}}/files
  4. 用 Code 节点构建审查提示词

    Code 节点(Create target Prompt from PR Diffs)运行 JavaScript,解析上游的 diff 数据,按文件名格式化,并拼接成给 AI Agent 的结构化提示词。输出字段为 user_message。

    运行提示词 · 来源原文。Code 节点的 JS Code 字段(Create target Prompt from PR Diffs)

    const files = $input.all().map(item => item.json);
    
    let diffs = '';
    
    for (const file of files) {
      diffs += `### Fichier : ${file.filename}\n\n`;
    
      if (file.patch) {
        // IMPORTANT : On remplace tous les triple backticks par simple (ou échappement)
        const safePatch = file.patch.replace(/```/g, "''");
    
        diffs += "```diff\n";
        diffs += safePatch;
        diffs += "\n```\n";
      } else {
        diffs += "_Pas de patch disponible (probablement fichier binaire)._";
      }
    
      diffs += "\n---\n\n";
    }
    
    const userMessage = `
    You are a senior iOS developer. 
    Please review the following code changes in these files :
    
    ${diffs}
    
    ---
    
    Your mission:
    
    - Review the proposed code changes file by file and by significant modification.
    
    - Generate inline comments on the relevant lines of code.
    
    - Ignore files without patches.
    
    - Do not repeat the code snippet or the filename.
    
    - Write the comments directly, without introducing the context.
    `;
    
    return [
      {
        json: {
          user_message: userMessage.trim()
        }
      }
    ];
  5. 配置 OpenAI 模型与审查 Agent

    OpenAI Chat Model 节点选择模型(如 gpt-4o-mini、gpt-4o、gpt-4-turbo 或 gpt-4),并配置 openAiApi 凭证。Code Review Agent 节点(AI Agent)的 promptType 设为 define,text 字段引用上游 Code 节点的 user_message。Agent 通过 ai_languageModel 连接 OpenAI,通过 ai_tool 可选连接 Code Best Practices(Google Sheets)。

  6. 发布评论与打标签

    GitHub Robot 节点使用 GitHub API 将 AI 生成的审查内容($json.output)作为评论发布到当前 PR。随后 Add Label to PR 节点为该 PR 添加 ReviewedByAI 标签(标签文本可自定义)。两个节点均需配置 githubApi 或 githubOAuth2Api 凭证,仓库和 PR 编号动态引用 PR Trigger。

  7. 配置团队代码规范查询(可选)

    如需让 AI 参考团队代码规范,启用 Code Best Practices 节点(Google Sheets Tool)。在 Google Sheet 中准备好规范描述与正反例,然后在节点中配置:OAuth2 凭证、文档 URL、工作表名称。该节点作为工具连接到 Code Review Agent,可被 AI 在生成审查时调用查询。也可用其他数据库或工具替代 Google Sheets。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,协助用户按来源模板完成导入与配置

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

你是一个 n8n 工作流搭建助手。用户想要复现「GitHub PR 自动 AI 代码审查」模板。请按以下顺序协助:
1) 确认用户已有 n8n 实例、GitHub 仓库管理权限、OpenAI API Key;
2) 指导用户导入 workflow.json 并检查节点是否完整;
3) 逐个确认凭证配置(openAiApi、githubOAuth2Api、githubApi、可选 googleSheetsOAuth2Api);
4) 提醒用户 Code 节点中的提示词角色默认为 senior iOS developer,若审查其他语言需自行修改;
5) 建议先用测试 PR 验证触发、diff 获取、评论发布和标签添加是否正常。

先确认凭证和权限,再导入 JSON,最后测试 PR 触发

来源

Automated PR code reviews with GitHub, GPT-4, and Google Sheets best practices · jiheneme · n8n.io · 2025-04-30

留言与反馈

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

正在加载…

    相关用例