n8n 是一个源可用(fair-code)的工作流自动化平台,通过可视化节点连线,把触发器、API、数据库、AI 模型和 400 多个第三方服务编排成自动化流程。它解决的核心问题是:跨系统数据搬运、业务逻辑编排、以及 AI 应用(RAG 问答、智能体)落地时的管道搭建,都能在一个可视化编辑器中完成配置,同时保留用 JavaScript/Python 写代码的扩展口子。n8n 可自托管(Docker、npm、桌面端)也可使用官方云托管,生产环境可通过 PostgreSQL + Redis 队列模式扩展。2024 年 6 月发布 1.0 后,n8n 将 LangChain 能力封装为可视化节点,成为 AI 工作流编排的高频选择。本篇按「速览 → 安装 → 上手 → 核心能力 → 生产部署 → 选型对比 → 应用场景 → 误区 → 面试题 → 学习资源」组织,覆盖从安装到运维的完整路径。
掌握 n8n 等于同时获得「低代码自动化 + AI 编排 + 自托管部署」三项技能,是 AI 工程师与 DevOps 团队对接业务流时最高频的工具之一。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 n8n:跨系统流程要么写胶水代码,要么靠手工搬运
传统做法里,企业业务流程散落在多个 SaaS 与自建系统:表单数据要录入 CRM,订单要同步到财务系统,运营每天从后台导出报表再粘贴到群聊。手工搬运效率低且容易出错;用脚本串联又面临另一堆问题——每个 API 都要写鉴权、重试、超时处理,接口一变整个脚本报废,这类胶水代码很难复用,也几乎没有可视化追踪手段。
n8n 的解法是把流程拆成「节点」和「连接」:Webhook 触发器接收请求,HTTP/数据库节点读写数据,IF/Switch 做分支,Code 节点处理复杂逻辑,最终用邮件、IM、Slack 通知收尾。每个节点的输入输出都能在执行历史里逐条查看,失败时还能挂 Error Workflow 自动告警。它同时支持自托管,数据不需要离开内网,这对金融、医疗等有合规要求的团队是关键优势。
与同类工具相比,n8n 的气质更偏工程师向:它不追求「纯业务人员零代码」,而是承认复杂流程需要 JSON 数据结构和表达式知识,把大量样板代码图形化。对比 Zapier 和 Make 的纯 SaaS 模式,n8n 的源可用许可证和自托管能力让它能深度嵌入到已有的技术栈中,也正因如此它成为 AI 应用编排(RAG、智能体)时团队更愿意使用的底座工具。
安装与环境配置:3 步就绪
步骤一·安装。两种主流方式任选其一。Docker 方式最省心,一条命令即可启动完整服务;npm 方式适合已在服务器上管理 Node.js 环境的团队。
步骤二·初始化。首次启动后,用浏览器打开 http://localhost:5678,创建第一个管理员账号(邮箱 + 密码即可)。本地数据默认写入 ~/.n8n 目录(Docker 方式下对应你挂载的卷),此目录中的加密凭据和设置后续需要备份。
步骤三·验证。检查健康接口返回 ok,并在编辑器中新建一个空白工作流,确认可以保存,即代表环境就绪。
# 方式一:Docker(推荐,自带运行时)docker run -it --rm --name n8n \ -p 5678:5678 \ -v n8n_data:/home/node/.n8n \ docker.n8n.io/n8nio/n8n # 方式二:npm(需 Node.js 18+,建议 20 LTS)npm install n8n -gn8n --version # 启动n8n start # 验证curl http://localhost:5678/healthz
快速上手:15 分钟跑通「Webhook 接收 → 数据清洗 → 发通知」
最小可用流程的思路是:用一个 Webhook 节点作为触发器接收外部请求,用一个 Code 节点做字段提取,再用一个通知节点把结果推送出去。这四条节点连线覆盖了 n8n 的核心使用方式——触发、转换、输出。
1. 新建工作流,添加一个 Webhook 节点(触发器类型,方法选 POST,Body 选 JSON Query),勾选「Respond」让工作流可返回数据给调用方;点击 Test URL 旁的「Listen for test event」开始监听。
2. 用 curl 向测试地址发送一条 JSON(见下方命令),注意路径是 /webhook-test/ 前缀,只对当前编辑会话生效。
3. 回到编辑器,确认 Webhook 节点已收到数据;添加 Code 节点,粘贴转换逻辑——把 email 字段拆出域名。
4. 添加一个 IM 或邮件通知节点(如 HTTP Request 调用企业微信/钉钉机器人),字段引用 {{ $json.domain }};点击「Test workflow」查看完整链路。
5. 保存并点击「Activate」激活工作流,此时浏览器地址会显示 Production URL,正式流量走 /webhook/ 前缀,与测试流量彻底隔离。
进阶技巧:把常用的「接收-清洗-通知」流程保存为模板(工作流右下角 Save as Template),后续创建新流程直接复用;复杂字段提取优先用表达式 {{ $json.字段 }} 而不是硬编码,可读性更好。
curl -X POST http://127.0.0.1:5678/webhook-test/你的回调路径 \ -H "Content-Type: application/json" \ -d '{"name":"张三","email":"zhang@example.com"}'
// Code 节点(JavaScript)内的转换逻辑return items.map(item => ({ json: { name: item.json.name, domain: item.json.email.split('@')[1] }}));
核心能力详解:5 大支柱
支柱一·节点编排与触发器体系。n8n 的工作流由节点和连线构成,节点分两类:触发器节点(Webhook、cron 定时、手动、以及各应用的业务事件)和动作节点(读写 API、数据库、发消息)。官方提供 400+ 集成节点,配合 IF/Switch 分支、Merge 合并、Loop Over Items 循环、子工作流(Call Workflow)可以组织出复杂的业务拓扑。
支柱二·表达式与数据转换。n8n 的数据以「items」数组在节点间流动,每个 item 包含 json 字段与可选的 binary 二进制字段。表达式用 {{ }} 包裹,{{ $json.字段 }} 取当前节点的输入,{{ $node["节点名"].json.字段 }} 取指定节点的输出,日期处理内置 Luxon 库。更复杂的变换用 Code 节点完成——支持 JavaScript 与 Python,是处理嵌套 JSON、去重、聚合的主力。
支柱三·AI 与 RAG 编排。从 2024 年起,n8n 把 LangChain 的组合方式封装成了可视化节点:AI Agent 节点负责智能体循环(工具调用),Chat 触发器提供对话界面与记忆,文档加载/切分节点处理知识库原始材料,向量数据库节点(pgvector、Pinecone、Qdrant 等)负责检索,LLM 节点可对接 OpenAI、Anthropic、Google Gemini 以及本地 Ollama。这意味着搭建一个 RAG 问答机器人不再需要手写 LangChain 代码管道。
支柱四·Webhook 与对外接口。每个工作流可以对外暴露 Webhook 作为接口入口,Test 与 Production 两套 URL 分离,避免测试流量误触发真实业务。Webhook 节点支持多种 HTTP 方法、鉴权(Header、Basic Auth、JWT)、CORS 配置和自定义响应内容,适合承担系统间回调、表单提交入口等职责。
支柱五·扩展与开发接口。n8n 提供 REST API 管理用户、工作流和执行记录;CLI 支持 n8n export:workflow --all --output=backup/ 与 n8n import:workflow --input=backup/ 做工作流备份迁移;自定义节点可用 n8n-node-dev 工具开发发布到社区。部署配置全部通过 N8N_* 系列环境变量控制,方便纳入基础设施即代码流程。
生产部署与监控:从上线到运维
部署方式一·Docker Compose 单机生产化。默认 SQLite 只适合开发测试,生产环境第一步是切换到外部 PostgreSQL 并用固定加密密钥,否则容器重建后所有凭据(API Key、密码)将无法解密。下方案例同时开启了队列执行模式(queue),为后续多 worker 扩展打基础。上线时用 Nginx/Caddy 做 TLS 反向代理,并定期备份 Postgres 与 n8n_data 卷。
部署方式二·高可用扩展。在 queue 模式下,n8n start 运行主进程(负责 UI 与 Webhook 入口),执行任务由 Redis 派发给独立进程 n8n worker 消费。扩容时只需增加 worker 实例并设置并发数(如 n8n worker --concurrency=10),主进程重启期间任务不会丢失。Kubernetes 环境可使用官方 Helm chart 管理多副本与滚动更新。
可观测性。每个工作流的执行历史里记录了各节点的输入输出、耗时与报错堆栈,是排查问题的第一入口;N8N_LOG_LEVEL=debug 可输出更细的运行时日志。建议为每个生产工作流配置 Error Workflow:主流程节点失败且未开启「Continue On Fail」时,错误工作流被触发,向 IM/邮箱推送告警并记录结构化日志到数据库,形成闭环。升级前查阅官方 Release Notes 中的 Breaking Changes,小版本一般保持向后兼容。
<p class="para-label">避坑清单:</p>
<ul class="dash-list"><li>忘记固定 N8N_ENCRYPTION_KEY:容器重建或迁移后所有凭据无法解密,部署前必须生成随机串并持久化;<li>用默认 SQLite 上生产:并发高时 SQLite 会锁库,切换到外部 PostgreSQL 并定时备份;<li>单主进程重启丢执行:高可用必须 queue 模式 + Redis,让 worker 在主进程重启期间继续消费任务;<li>忽略工作流幂等性:第三方接口失败后重试可能导致重复下单,关键节点要设计去重与补偿逻辑,不能只靠无脑重试。</ul>
services: n8n: image: docker.n8n.io/n8nio/n8n restart: unless-stopped ports: ["5678:5678"] volumes: ["n8n_data:/home/node/.n8n"] environment: - N8N_ENCRYPTION_KEY=替换为 openssl rand -hex 16 的输出 - N8N_DATABASE_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=替换为强密码 - EXECUTIONS_MODE=queue - QUEUE_BULL_REDIS_HOST=redis postgres: image: postgres:16 environment: - POSTGRES_USER=n8n - POSTGRES_PASSWORD=替换为强密码 - POSTGRES_DB=n8n volumes: ["postgres_data:/var/lib/postgresql/data"] redis: image: redis:7-alpinevolumes: n8n_data: postgres_data:
| 维度 | n8n | Zapier | Make | Activepieces |
|---|---|---|---|---|
| 定位 | 可自托管的通用自动化 + AI 编排平台 | 面向非技术用户的 SaaS 无代码自动化 | 可视化程度高的 SaaS 自动化平台 | 源可用(fair-code)的自动化工作流平台 |
| 编排范式 | 节点连线、分支/合并、子工作流、代码节点 | 触发器-动作线性链,多步串联 | 场景画布多分支可视化编排 | Flow 步骤式 + 分支条件 |
| 类型约束 | 表达式基于 JSON items;Code 节点支持 JS/Python | 低代码为主,Code by Zapier 用 JS | 内建函数与 Webhook,代码能力较弱 | 支持 JavaScript 代码步与表达式 |
| 学习曲线 | 中(需懂 JSON 与表达式语法) | 低 | 低-中 | 中 |
| 生态集成 | 400+ 官方节点,可自研自定义节点 | 6000+ 应用 | 2000+ 应用 | 200+ 节点,社区贡献 |
| 生产部署 | 自托管 Docker/K8s + Postgres + Redis 队列 | 纯 SaaS,无自托管 | 纯 SaaS(企业版亦为云上) | 可自托管(Docker) |
| License | Sustainable Use(fair-code) | 闭源专有 | 闭源专有 | 源可用(fair-code) |
| 适合谁 | AI/DevOps 工程师、中小企业全栈团队 | 市场/运营等非技术业务人员 | 运营与设计师为主的混合团队 | 开源偏好、需自托管的团队 |
选型建议:团队有工程师、需要数据不出内网或深度定制与 AI 编排,选 n8n 性价比最高;纯业务人员、追求最快上线且愿意用 SaaS,选 Zapier;没有工程师但流程分支复杂、重视图形化体验,选 Make;偏好源可用且主要跑轻量 AI 流程,可以评估 Activepieces(注意其生态更小)。
版本迭代
n8n 的演进主线是从「IT 自动化工具」转向「AI 自动化平台」。2024 年 6 月 1.0 发布前,项目长期处于 0.x 高频迭代;1.0 移除了旧凭据与旧版节点体系并更新画布;此后以约每 2-3 周一个小版本的节奏发布,AI 相关节点(AI Agent、向量库、Chat)在 1.2x-1.4x 期间逐步稳定为企业级能力,企业权限与部署体验也在持续补强。(截至训练数据,可能已有更新版本)
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| 0.236.0 | 2024-03 | 0.x 系列收官 | 界面与节点体系趋于稳定,为 1.0 重写铺路 |
| 1.0.0 | 2024-06 | 1.0 正式发布 | 移除旧版凭据与旧节点,新线性画布,节点 API 与表达式统一 |
| 1.20.0 | 2024-10 | AI 编排与模板生态迭代 | AI Agent、向量库、Chat 相关节点稳定可用,模板库扩充 |
| 1.35.0 | 2024-12 | 年底集成整合 | Webhook 与队列执行稳定性提升,新增多个官方集成节点 |
| 1.44.0 | 2025-01 | 企业级能力补强 | 权限管理、部署体验与运行性能优化 |
n8n 是工具而非模型,没有 MMLU 一类公开评测分数,选型时更应看节点数量、部署模式与社区活跃度。1.0 前后最明显的实测差异是旧教程大面积失效(节点参数与凭据体系变更),以及 AI 节点从「实验性」转为「官方主推」。1.0 之后的小版本整体保持向后兼容,升级风险低,但务必核对官方 Breaking Changes。
AI 应用场景
客户支持工单的 AI 分诊与回复
阶段:RAG 管道构建 / AI Agent 编排
解决的问题:客服工单量大、重复问题多,人工逐条回复耗时;传统方案要单独开发「检索 + 调模型 + 回写工单系统」的代码管道,胶水代码难以维护。n8n 用 AI Agent 节点接 LLM、向量库节点注入企业知识库、工具节点调用工单 API,一条工作流完成「读取工单 → 检索知识 → 生成草稿 → 更新工单 → 通知负责人」。
具体案例:在 n8n 官方模板库的 AI 客服类模板基础上,可把工单分诊做成夜间自动执行:重复问题由 AI 直接给答复草稿,复杂问题转人工并附检索摘要。参考执行效果:单条工单的初步处理时间由 15-30 分钟降到几分钟(具体取决于知识库覆盖率),人工只做复核与兜底,示例数据仅供参考,实际效果依数据质量而定。
跨系统客户数据同步与通知
阶段:业务自动化 / 系统集成
解决的问题:表单提交、CRM 录入、IM 通知分属不同系统,手工搬运易错且延迟高;n8n 用 Webhook 节点接收表单提交,Code/Set 节点清洗字段,CRM 或数据库节点落库,再通过 HTTP 或 IM 节点推送通知,全程执行历史可追踪。
具体案例:用表单工具收集销售线索,n8n 清洗后按邮箱字段去重写入自建 Postgres,再根据地区字段分发给对应销售群。实际部署中,同步延迟从人工的小时级降到秒级,按邮箱去重避免重复跟进;失败记录进入 Error Workflow 告警队列,运营无需盯盘。
定时数据聚合与报表推送
阶段:数据管道 / 定时任务编排
解决的问题:每日多系统数据靠脚本 + cron 维护成本高,脚本一坏无人知;n8n 的 Schedule Trigger 定时拉取多源 API 或数据库,合并去重后聚合计算,再推送到邮件、钉钉或企业微信群,失败时自动告警。
具体案例:财务日报工作流每天 08:30 从订单数据库与支付 API 拉取昨日流水,按渠道聚合后生成摘要推送到财务群,同时写入报表数据库归档参考执行效果:报表产出时间从人工约 1 小时降到 5 分钟内,且每次执行都有留痕,满足审计要求(示例数值,实际依数据量而定)。
常见误区
误区n8n 既然 GitHub 有那么多 star、又能自己部署,那它肯定和 Apache 之类一样是完全开源,想怎么用都行。
正解n8n 采用 Sustainable Use License(fair-code),源码公开可查看、可自托管、内部商用免费,但它不是 OSI 定义的开源许可证:你不能把 n8n 作为竞品托管服务直接卖给第三方,且 SSO、审计日志等企业功能需要订阅。商用前应阅读许可证原文,区分「自由使用」与「自由再分发」。
为何常见:GitHub 上的「开源」惯例容易让人默认采用 OSI 协议,而 n8n 官方宣传用的是 fair-code 而非 open source,非专业人士容易混淆概念。
误区网上 2023 年以前的 n8n 教程一大把,直接照抄节点配置应该没问题。
正解1.0 移除了旧版凭据认证方式和大量旧版节点,新节点用 typeVersion 管理,字段名与表达式规则可能完全不同。升级前必须核对官方 Release Notes 中的 Breaking Changes,老教程要对照 1.x 文档改写后再用。
为何常见:n8n 在 0.x 时代积累了最多资料,搜索引擎优先展示老内容,教程的发布时间很少被注意,导致过期配置被反复传播。
误区可视化拖拽的工作流,业务人员不写代码也能搞定所有场景。
正解基础流程确实免代码,但 n8n 表达式本身就是 JavaScript 语法(如 {{ $json.字段 }}),复杂数据清洗要写 Code 节点,调试时要读 JSON 数据结构和错误堆栈。把它理解为「大量样板代码被图形化」比「编程消失了」更准确,工程师上手速度显著快于纯业务人员。
为何常见:产品主视觉全是节点拖拽,弱化了表达式与 Code 节点的存在感,容易给初学者造成零代码的错觉。
误区官方文档里看到的功能,我自托管之后应该全都能用。
正解自托管社区版与 n8n Cloud/Enterprise 在功能上明确分层:SSO、细粒度 RBAC、审计日志、官方 SLA 支持等属于商业版功能;自托管还需要自己负责升级补丁、备份、高可用与安全加固。「托管」本身也是 Cloud 定价的一部分,两者不是单纯的部署地点差异。
为何常见:官网免费下载入口与 self-hosted 宣传容易让人以为只有部署位置的区别,忽略了商业功能边界与运维成本。
面试题
Q1. n8n 采用哪种许可证?
- A.MIT 宽松许可证
- B.Sustainable Use License(fair-code)← 正确答案
- C.Apache License 2.0
- D.GNU GPL v3 许可证
答案:B。n8n 是 fair-code 模式,源码公开可查看、可自托管、内部商用免费,但以 SaaS 形式向外提供竞品性服务受限,且部分企业功能为商业授权。它不是 OSI 定义的开源许可证。
Q2. n8n 自托管默认的 Web 端口是多少?
- A.3000 端口
- B.5678 端口← 正确答案
- C.8080 端口
- D.8888 端口
答案:B。n8n 默认监听 5678 端口,Docker 部署时用 -p 5678:5678 映射。3000/8080/8888 常被其他开发服务占用,所以 n8n 选择了 5678 作为固定默认端口。
Q3. 自托管 n8n 时,凭据(密码、API Key)如何存储?
- A.明文存在工作流 JSON 文件里
- B.用 N8N_ENCRYPTION_KEY 加密后存数据库← 正确答案
- C.只保存在浏览器本地存储
- D.不保存,每次手动输入
答案:B。n8n 用加密密钥对凭据加密后存入数据库,密钥来自 N8N_ENCRYPTION_KEY。密钥一旦丢失或更换,已有凭据将无法解密,因此部署时必须生成并持久化该密钥。
Q4. n8n 表达式中,按节点名取某节点输出字段的写法是?
- A.取当前节点输入项字段($json)
- B.按节点名取其输出字段($node)← 正确答案
- C.取全局环境变量字段($env)
- D.取上一个输出项字段($prev)
答案:B。{{ $node["节点名"].json.字段 }} 用于引用指定节点的输出,而 {{ $json.字段 }} 只指当前节点正在处理的输入项。n8n 没有内置 $prev/$env 这类全局便捷变量。
Q5. Webhook 节点为何同时提供 Test 和 Production 两套 URL?
- A.Test 网速更快,仅限内网使用
- B.测试时避免触发真实生产流程,部署后 Production URL 才稳定生效← 正确答案
- C.Production URL 仅企业版可用
- D.两者功能相同,只是命名不同
答案:B。Test URL 只在编辑器开启监听时有效,用于本地演练;工作流保存并激活(Activate)后,Production URL 才对线上请求稳定开放。两套 URL 隔离了开发与生产流量,避免测试请求误触发真实业务。
Q6. n8n 的 Error Workflow(错误工作流)主要解决什么问题?
- A.减少工作流本身的执行报错次数
- B.捕获主流程失败并执行通知或补偿逻辑← 正确答案
- C.自动重试所有失败的第三方 API 请求
- D.替代 Code 节点完成异常处理
答案:B。Error Workflow 是独立的工作流,当主流程节点失败且未开启「Continue On Fail」时被调用,用于发送告警、记录日志或执行补偿操作。它不减少报错,重试由节点级 Settings 配置,两者职责不同。
Q7. n8n 中节点间传递的数据格式是什么?
- A.每个节点只传递一个 JSON 对象
- B.每个节点传递 items 列表(含 json/binary),逐条处理← 正确答案
- C.只能传递字符串文本
- D.只能传递文件二进制流
答案:B。n8n 传递的是 items 数组,每个 item 结构为 { json, binary? },表达式中的 $json 指向当前处理的 item.json。这决定了节点会「循环」处理多条输入,Code 节点也常需要对 items 做 map/filter。
Q8. 生产环境自托管 n8n 的高可用部署通常需要哪些措施?
- A.使用外部 PostgreSQL 而非默认 SQLite← 正确答案
- B.用 N8N_ENCRYPTION_KEY 持久化凭据加密密钥← 正确答案
- C.EXECUTIONS_MODE=queue 并接入 Redis,多 worker 并发执行← 正确答案
- D.关闭所有执行日志以提升性能
答案:ABC。默认 SQLite 并发能力差,生产需换 Postgres;加密密钥不固定,容器重建后凭据无法解密;队列模式才能把执行任务分发给多 worker 并在主进程重启时继续消费。关闭日志会丢失排障依据,不属于高可用手段。
Q9. 下列哪些属于 n8n 官方提供的 AI 编排能力?
- A.AI Agent 节点与多工具调用← 正确答案
- B.向量数据库节点与文档切分节点← 正确答案
- C.Chat 触发器与对话记忆← 正确答案
- D.内置大模型训练与微调流水线
答案:ABC。n8n 将 LangChain 的 Agent、向量检索、文档加载/切分、记忆等包装为可视化节点,可对接 OpenAI、Anthropic、Ollama 等模型;它不提供大模型训练或微调能力,这类需求需依赖外部平台。
Q10. 关于 n8n 的 fair-code 许可,以下说法正确的是?
- A.源码公开可查看,社区版可自托管← 正确答案
- B.允许内部商用与一般商业项目使用← 正确答案
- C.以托管服务形式向第三方转售受限,部分功能需商业订阅← 正确答案
- D.与 OSI 开源定义完全一致,可自由再分发
答案:ABC。Sustainable Use License 属于源可用(fair-code)而非 OSI 开源:可自托管、内部商用、修改自用,但对外提供与 n8n 构成竞争的托管服务需要授权,SSO、审计日志等企业功能需订阅。选项 D 混淆了源可用与开源定义。
参考来源
- webpagen8n 官网产品主页、定价与 Cloud 入口