n8n 源码拆解
以本地
n8n-master的 2.33.0 源码快照为对象,按“概念 → 源码 → 运行流程 → 设计取舍”的方式,拆解一个把可视化工作流、HTTP 服务、队列系统、凭证安全和 AI 能力装进同一运行时的工程系统。
这份拆解要回答什么
n8n 表面上是一个拖拽节点的自动化工具,源码里却同时存在三种形态:
- 一个可执行的有向图:工作流由节点和带类型的连接组成,执行器根据输入数据、分支、循环和等待状态推进图。
- 一个长驻的平台服务:CLI 负责 HTTP API、认证、数据库、Webhook、定时触发、执行记录和编辑器资源。
- 一个可横向扩展的运行时:主进程、worker、Redis/Bull、任务运行器、二进制存储和多主实例共同承载生产负载。
因此阅读顺序不能从某个节点的 execute() 开始。应先建立“数据从哪里来、图如何被推进、状态在哪里保存、哪个进程负责执行”的全局模型。
章节地图
| 章节 | 主题 | 读完后应该能解释 |
|---|---|---|
| 01 | 总览 | n8n 的四层架构与一次执行的边界 |
| 02 | Monorepo 与启动 | 包之间如何依赖,CLI 如何把服务装配起来 |
| 03 | Workflow 模型 | 节点、连接、数据 item、表达式和图算法 |
| 04 | 执行引擎 | WorkflowExecute 如何推进栈、分支、循环、等待和取消 |
| 05 | 节点扩展 | 一个节点如何描述参数、加载、取凭证并执行 |
| 06 | 触发入口 | Webhook、Schedule、Poll、事件触发如何进入执行器 |
| 07 | 队列与规模化 | main、worker、Redis、并发限制与 webhook 回传如何协作 |
| 08 | 持久化与安全 | 工作流/执行/凭证如何入库,权限和密钥边界在哪里 |
| 09 | API 与前端 | Vue 编辑器如何与后端 API、实时推送和 workflow store 对齐 |
| 10 | AI 与 MCP | AI 节点为什么使用非 main 连接,工具调用如何回到图中 |
| 11 | Task Runner | Code 节点如何把用户代码放进受控的执行边界 |
| 12 | 工程化 | 测试、边界检查、CI、构建和发布如何守住复杂系统 |
| 13 | 完整链路 | 从点击“执行”到结果落库的源码阅读路线 |
如何使用
- 先读 01–04,建立运行时和执行器模型。
- 需要开发节点时读 05;需要接入外部系统时读 06。
- 需要部署、排障或扩容时读 07–08。
- 需要改编辑器或 AI 时读 09–11。
- 最后用 13 章做一次端到端回放,并用附录索引跳到具体文件。
版本与证据边界
文档中的版本结论来自本地快照的根 package.json(2.33.0)以及对应源码路径。源码链接默认指向 n8n 上游 master,如果上游后续重构,链接仍可定位同名模块,但具体行号和实现细节可能变化。文中把“代码明确表达的事实”和“基于调用关系的架构推断”分开描述,读者可以沿源码链接复核。
许可证提示
n8n 使用 Sustainable Use License 与 Enterprise License。本文是对公开源码的学习性说明,不重新分发 n8n 源码、节点资产或商业功能。