DIAGNOSTIC TREE // N8N-WORKFLOW-LLM-FAILURE (2 ROOT CAUSES)
n8n 工作流调用本地模型超时、格式漂移与死循环排障
解决批量条目并发压垮本地显卡、模型返回 ```json 代码块导致解析报错及失败重试死循环。
[核心实测结论 / TL;DR]本诊断树针对「n8n 工作流调用本地模型超时、格式漂移与死循环排障」提供 3 个交互节点与 2 套实测验证修复方案(涵盖:修复方案:使用 Loop Over Items 节点控制并发批次(Batch Size = 1~2);修复方案:在请求体显式声明 "format": "json" 并增加兜底清洗),配套完整实测指南《n8n-local-llm-rss-pipeline》。
n8n 工作流调用本地模型超时、格式漂移与死循环排障
第 1 步:n8n 执行记录(Executions)中报了哪类错误?
打开 n8n 中报错的工作流执行记录,查看 HTTP Request 或 AI 节点的具体报错信息。
终端验证命令 (在对应环境执行)
选择你看到的实际输出或症状:
DIAGNOSTIC PROBE SEQUENCE // 完整分步探测命令与症状分支
「n8n 工作流调用本地模型超时、格式漂移与死循环排障」的全部 1 步终端探测命令与分支判据
无需逐层点击交互,以下列出本故障决策树每一层的宿主机只读探测命令、预期基线提示与输出流向。
第 1 步:n8n 执行记录(Executions)中报了哪类错误?step-n8n-error-type
打开 n8n 中报错的工作流执行记录,查看 HTTP Request 或 AI 节点的具体报错信息。
输出症状分支:
- • 前 1–2 条数据成功,后续条目密集报 ETIMEDOUT 超时
→ sol-n8n-split-in-batches - • 模型在 JSON 外层包裹了 ```json 代码块,导致下游节点取不到字段
→ sol-n8n-format-json-enforce
ALL VERIFIED FIXES IN THIS TREE // 本树涵盖的全部根因与修复方案一览
「n8n 工作流调用本地模型超时、格式漂移与死循环排障」包含的 2 类根因、修复代码与验收命令
修复方案:使用 Loop Over Items 节点控制并发批次(Batch Size = 1~2)
sol-n8n-split-in-batches当 RSS 一次拉取 30 条内容时,请求会在本地 Ollama 队列中排队等待;排在后面的请求在轮到推理前就已经触发了客户端超时。
- 在调用本地模型前插入 Loop Over Items 节点,将 Batch Size 设为 1 或与 OLLAMA_NUM_PARALLEL 一致。
- 将 HTTP 节点超时设为 45000 ms,并开启 Retry On Fail(重试 3 次,间隔 3000 ms)。
// Recommended n8n HTTP Request Node Options for Local LLMs
{
"batching": { "batch": { "batchSize": 1, "batchInterval": 500 } },
"timeout": 45000,
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 3000
}[边界说明]让工作流批次大小与 OLLAMA_NUM_PARALLEL 对齐,可彻底消除排队假死。
验证命令:
ollama ps修复方案:在请求体显式声明 "format": "json" 并增加兜底清洗
sol-n8n-format-json-enforce仅靠 Prompt 文字要求“只输出 JSON”并不稳定,7B/8B 量化模型偶尔会附带解释文字或 Markdown 代码块标记。
- 在 Ollama `/api/generate` 请求体顶层加入 `"format": "json"`(或传入 JSON Schema)启用语法采样约束。
- 开启节点的 `continueOnFail: true`,将个别解析失败的条目分流至异常记录分支,避免整批任务中断。
// Ollama grammar-constrained JSON request body
{
"model": "qwen2.5:7b",
"format": "json",
"stream": false,
"options": { "temperature": 0.1 },
"prompt": "Return JSON with keys {category, summary}: ..."
}[边界说明]注意:启用 format: "json" 时,Prompt 文本中也必须包含“JSON”字样,否则模型可能陷入空白生成。
验证命令:
curl -s http://127.0.0.1:11434/api/generate -d '{"model":"qwen2.5:7b","format":"json","stream":false,"prompt":"Return JSON {ok:true}"}'PAIRED REPRODUCIBLE GUIDE // 配套实测指南与硬件环境基线
n8n + 本地模型的 RSS 分类:导入文件、测试输入、去重和重试
拒绝泛泛的官方模板堆积:提供带 URL 去重、Batch 并发节流、语法级 JSON 约束与失败重试分支的完整可导入工作流。
实测硬件与系统
自托管 n8n(Docker 容器)+ 宿主机本地 Ollama(Qwen2.5-7B-Instruct Q4_K_M)
锁定版本栈
n8n 1.76.x · Ollama 0.5.7 · qwen2.5:7b
验证日期 (2026-10-23)
仅拉取 RSS 源联网 · AI 推理 100% 本地完成 — 零云端 API Token 费用;抓取到的文章正文完全在本地显卡/内存内完成分类与摘要。