用 n8n 实现 GitHub PR 自动 AI 代码审查
PR 创建 → 提取代码差异 → 构建审查提示词 → OpenAI 生成评论 → 回写到 PR 并打标签
- 给谁
- 需要为团队 GitHub 仓库自动化代码审查的开发者或 DevOps 工程师
- 你会得到
- 新 PR 自动触发 AI 审查,审查结果以评论形式发布到 PR,并可选打上 ReviewedByAI 标签
硬约束
前置条件: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
步骤
导入工作流模板
在 n8n 中打开 Workflows → Import from file or JSON,粘贴或上传本模板的工作流 JSON 文件。导入后应看到包含 PR Trigger、HTTP Request、Code、AI Agent、GitHub 等节点的工作流画布。
配置 GitHub 触发器
选中 PR Trigger 节点(GitHub Trigger),配置要监控的仓库(Repository)和事件类型(Events = pull_request)。认证方式选择 GitHub OAuth2,并确保已在 n8n 的 Credentials 中配置好 githubOAuth2Api 凭证。
获取 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用 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() } } ];配置 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)。
发布评论与打标签
GitHub Robot 节点使用 GitHub API 将 AI 生成的审查内容($json.output)作为评论发布到当前 PR。随后 Add Label to PR 节点为该 PR 添加 ReviewedByAI 标签(标签文本可自定义)。两个节点均需配置 githubApi 或 githubOAuth2Api 凭证,仓库和 PR 编号动态引用 PR Trigger。
配置团队代码规范查询(可选)
如需让 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
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。