ARTIFACT // N8N-LOCAL-PR-REVIEWER.JSON (JSON)
n8n + 本地 Qwen2.5-Coder 代码 PR 自动审查工作流(含密钥正则脱敏) (n8n-local-pr-reviewer.json)
在送入大模型前先用正则过滤代码 Diff 中的意外私钥/Token,再调用本地 Qwen2.5-Coder 输出结构化缺陷报告。
[核心实测结论 / TL;DR]本配置包「n8n + 本地 Qwen2.5-Coder 代码 PR 自动审查工作流(含密钥正则脱敏)」(文件名:n8n-local-pr-reviewer.json,格式:JSON)是 Tinker AI 实测工坊配套指南《n8n-github-pr-security-review-bot》的参数化生产模板。支持在本地浏览器实时定制 本地代码审查模型 (CODER_MODEL=qwen2.5-coder:14b)、Ollama 接口地址 (OLLAMA_HOST_URL=http://host.docker.internal:11434) 等 2 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
02 // WORKFLOW无代码工作流· 验证日期:2026-10-23
查看全部 42 套配置附件 →n8n-local-pr-reviewer.json
查看配套实测指南 →n8n + 本地 Qwen2.5-Coder 代码 PR 自动审查工作流(含密钥正则脱敏)
在送入大模型前先用正则过滤代码 Diff 中的意外私钥/Token,再调用本地 Qwen2.5-Coder 输出结构化缺陷报告。
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
{
"name": "Tinker AI — Local Git Diff Security & Bug Reviewer",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "git-pr-review",
"responseMode": "lastNode"
},
"name": "PR Diff Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [200, 300]
},
{
"parameters": {
"jsCode": "const rawDiff = String($input.first().json.body?.diff || '').slice(0, 12000);\nconst sanitizedDiff = rawDiff.replace(/(sk-[a-zA-Z0-9]{20,}|ghp_[a-zA-Z0-9]{20,}|AKIA[0-9A-Z]{16})/g, '[REDACTED_SECRET]');\nreturn [{ json: { sanitizedDiff } }];"
},
"name": "Sanitize Secrets & Cap Diff Length",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [440, 300]
},
{
"parameters": {
"method": "POST",
"url": "http://host.docker.internal:11434/api/generate",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify({ model: 'qwen2.5-coder:14b', format: 'json', stream: false, options: { temperature: 0.1, num_ctx: 16384 }, prompt: 'Review this git diff for security bugs, race conditions, or unhandled errors. Return JSON {summary, issues: [{severity, lineHint, suggestion}]}: \n' + $json.sanitizedDiff }) }}",
"options": { "timeout": 60000 }
},
"name": "Qwen2.5-Coder Diff Review",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"retryOnFail": true,
"maxTries": 2,
"continueOnFail": true,
"position": [680, 300]
}
],
"connections": {
"PR Diff Webhook": {
"main": [[{ "node": "Sanitize Secrets & Cap Diff Length", "type": "main", "index": 0 }]]
},
"Sanitize Secrets & Cap Diff Length": {
"main": [[{ "node": "Qwen2.5-Coder Diff Review", "type": "main", "index": 0 }]]
}
}
}
PARAMETER SPECIFICATION // 参数化变量规范说明表
「n8n-local-pr-reviewer.json」可定制环境变量与默认值说明
本配置模板(JSON 格式)支持 2 项运行时参数注入,所有替换均在本地浏览器内完成。
| 模板占位符 | 参数用途说明 | 安全默认值 | 填写示例 |
|---|---|---|---|
{{CODER_MODEL}} | 本地代码审查模型 | qwen2.5-coder:14b | qwen2.5-coder:14b |
{{OLLAMA_HOST_URL}} | Ollama 接口地址 | http://host.docker.internal:11434 | http://host.docker.internal:11434 |
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录
配套指南《基于 n8n 与本地 Qwen2.5-Coder 的代码 PR 自动审查:密钥脱敏、Diff 截断与最小权限》验证基线
实测硬件与操作系统 (Hardware & OS)
自托管 n8n + 本地 Ollama(`qwen2.5-coder:14b`,运行于 16GB+ 独显或 24GB+ Mac)
锁定软件栈与模型版本 (Pinned Versions)
n8n 1.76.xOllama 0.5.7qwen2.5-coder:14b-instruct-q4_K_M
离线与安全边界 (代码分析 100% 本地完成 · 仅接收 Git Webhook)
配合内网自建 GitLab / Gitea 时,从代码提交到评论回写全链路不出企业内网。
已知限制与失败边界 (Known Limits)
- 包含 `package-lock.json` 或构建产物的原始 Git Diff 动辄超过数万 Token;必须在预处理节点剔除锁文件并将单次审查 Diff 限制在 12,000 字符以内。
- 开发者偶发在 PR 中误提交真实私钥或密码;在进入日志或送往模型前,必须先经由正则脱敏节点替换为 `[REDACTED_SECRET]`。
DEPLOYMENT CHECKLIST // 配置落地核验步骤
部署 n8n-local-pr-reviewer.json 后的 3 步验收清单
- 确认正则密钥脱敏节点位于大模型调用之前,避免执行记录留存明文凭证。
- 已使用仅具备“读取 PR 与发表评论”最小权限的专用 Token。
- 已过滤 `package-lock.json` 等噪音文件并将单次 Diff 负载限制在 12,000 字符以内。