TinkerLab
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:14bqwen2.5-coder:14b
{{OLLAMA_HOST_URL}}Ollama 接口地址http://host.docker.internal:11434http://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 步验收清单

  1. 确认正则密钥脱敏节点位于大模型调用之前,避免执行记录留存明文凭证。
  2. 已使用仅具备“读取 PR 与发表评论”最小权限的专用 Token。
  3. 已过滤 `package-lock.json` 等噪音文件并将单次 Diff 负载限制在 12,000 字符以内。