Skip to content

附录 C 横向对比:n8n / Dify / LangGraph ​

目的:把本书学到的概念放进更大的版图。各项目都在快速迭代,以下是架构层面的比较,具体功能以各自官方文档为准。

定位 ​

n8nDifyLangGraph
形态开源工作流自动化平台开源 LLM 应用平台(可视化 + API)开源代码库(Python / JS)
主要用户运营、自动化工程师、开发者产品、业务、开发者开发者
编排方式画布 DAG,数据沿边传递画布 DAG + 容器节点,共享变量池用代码定义状态图(允许有环)
LLM 原生程度中:AI 节点是几百种节点中的一类高:模型、提示词、RAG、Agent 都是一等公民高
节点生态极广:500+ 集成(SaaS、数据库、文件…)以 LLM 相关为主靠 LangChain 生态

一句话概括三者的性格:n8n 是“什么都能连的自动化平台,顺手把 AI 做成了节点”;Dify 是“专门为 LLM 应用设计的平台”;LangGraph 是“给开发者写 Agent 的库”。

引擎模型 ​

维度n8nDify(graphon)LangGraph
图DAG,数据沿边以 items 数组 传递DAG(循环用容器节点实现)有向图,可以有环;节点通过共享 State 通信
数据传递沿边传递:上游输出即下游输入;跨节点引用用 $('节点名') 表达式共享变量池 + selector共享 State + reducer(定义更新怎样合并)
一个节点处理什么一个 items 数组(天然支持“对每条数据做同样的事”)一次调用一次状态转换
分支IF / Switch 节点分支节点 + 边状态 + 跳过传播条件边函数返回下一个节点
暂停 / 恢复Wait 节点 + 执行数据序列化 + WaitTracker人工输入节点 + 运行时状态序列化Checkpointer 每步保存 State,interrupt() 支持人在回路,可“时间旅行”
执行顺序v1:深度优先(执行栈 unshift)就绪即执行superstep(Pregel / BSP)

几点值得注意:

  • n8n 的“items 数组”是它最鲜明的特征。每个节点天生对一个数组逐条处理,这对 ETL、批量操作特别顺手——“把这 100 行都发一遍邮件”不用写循环。代价是“引用三步之前某一条数据”要靠表达式,没有 Dify 变量池那么直接。
  • LangGraph 允许有环,所以 Agent 循环(模型 ⇄ 工具)可以直接画成图里的环。n8n 和 Dify 都把 Agent 封装成一个节点,外层保持 DAG。这是可控性与表达力的不同取舍:DAG 好懂、好可视化,环更灵活但更难画清楚。
  • 三者的“暂停/恢复”深度不同。LangGraph 每个 superstep 都存 State,所以回放、时间旅行天然支持;n8n 和 Dify 只在需要暂停时才序列化。本书第 7、24 章实现的正是 n8n 这种“按需序列化 + 栈恢复”。

AI Agent 的实现方式 ​

n8nDifyLangGraph
Agent 形态一个 Cluster Node:AI Agent + 模型/记忆/工具子节点一个 Agent 节点或 Agent 应用用图直接表达(create_react_agent 或自定义图)
工具执行引擎执行工具节点(EngineRequest/Response,第 19 章)Agent 节点内部调用ToolNode,图里的一个节点
工具来源专用工具节点、任意节点合成工具、子工作流、MCP内置工具、自定义工具、MCP@tool 装饰的函数、LangChain 工具、MCP 适配器
把 Agent 当工具AI Agent Tool(嵌套 EngineRequest,第 23 章)Agent 作为工具子图作为工具
结构化输出format_final_json_response 工具 + Output Parser结构化输出功能with_structured_output / 工具

n8n 把“工具执行交给引擎”这一步做得很有特色(第 19 章):Agent 只是返回“我要调这些工具”,由引擎像执行普通节点一样执行它们,于是工具的运行记录、重试、错误处理全都复用了引擎已有的机制。本书第 19、20、23 章的大部分篇幅就在讲这件事。

和本书概念的对应 ​

本书概念(n8n)DifyLangGraph
items 沿边传递变量池 VariablePool共享 State
节点就绪 = 上游执行完边状态superstep
生命周期钩子GraphEngineLayercallbacks / checkpointer
EngineRequest(引擎跑工具)Agent 节点内部ToolNode
Cluster Node 子节点容器节点子图
Wait + WaitTracker人工输入节点 + 序列化Checkpointer + interrupt
队列模式 + worker—LangGraph Platform
发布为 Webhook / 开放 APIService APILangGraph Server

该选哪个? ​

不是“哪个更好”,而是“哪个更贴你的问题”:

  • 要把几十个 SaaS、数据库、文件系统串起来,顺带加点 AI:n8n。它的节点生态和“items 数组”模型就是为这个生的。
  • 要做一个以 LLM 为核心的产品(知识库问答、AI 客服),要开箱即用的 RAG 和提示词管理:Dify。
  • 要完全掌控 Agent 的每一步、要环、要时间旅行、能接受写代码:LangGraph。

学完本书你会发现,这些平台共享同一批底层概念——图、节点、执行状态、工具、暂停恢复。换一个平台,换的只是这些概念的包装方式。这也是本书从零实现 mini-n8n 的意义:看清包装之下的东西,换什么平台都不怕。

配套代码:github.com/luxiang0412/mini-n8n