前面,我们介绍了 n8n 的基础用法,包括如何创建工作流、添加节点、配置节点参数等。接下来,我们将介绍一些更高级的用法,帮助您更好地使用 n8n。
- 子工作流
- 错误处理
- 集群节点
- MCP
- Human in the Loop
n8n 子工作流
n8n 支持从一个工作流调用另一个工作流。子工作流可以用于将复杂的任务分解为更小的、可重用的部分。工作流通过 Execute Workflow 来调用子工作流,子工作流通过 Execute Sub-Workflow Trigger 来触发。
我们可以创建独立的子工作流,也可以将子工作流嵌入到主工作流中。下面的例子我们将以一个简单的计算器子工作流为例,演示如何创建和使用子工作流,该计算器子工作流支持加、减、乘、除四种运算。
在新建工作流时,添加节点,选择When Executed by Another Workflow作为触发节点。

在弹出的工作流配置窗口中,我们定义工作流接收的参数。这里我们定义了三个参数,分别是 a
、b
和operator
,分别表示两个操作数和运算符。

后续通过 Switch 节点,根据 operator
的值,分别调用不同的运算节点。如下是完整的子工作流

为了演示,我们可以中同一个工作流添加额外的触发节点来模拟主工作流,在主工作流的中,添加Execute Workflow 节点,将会弹出配置窗口。我们需要选择需要调用的子工作流,这里我们选择From list模式,并在下拉框中选择当前的工作流。选择工作流后,将展示该子工作流的参数列表, 我们从前序节点中拖拽参数到子工作流对应的参数,完成子工作流的参数配置。

触发主工作流,可以看到子工作流被调用,并返回了计算结果。在工作流的执行日志中,可以看到主工作流及子工作流的执行日志。


完整的示例参考下面的工作流
https://tomo.dev/posts/handy-n8n/c04/workflows/n8n_sub_workflow.json
n8n 错误处理
在我们设计的工作流时,考虑容错是非常重要的。n8n 使用Error Trigger节点来触发错误处理逻辑。
错误处理是独立的工作流,以下是配置步骤:
创建新的工作流,选择Error Trigger作为触发节点,Error Trigger节点没有配置项。
添加后续的节点,如发送邮件Email节点,配置邮件内容,如错误信息。保存工作流并命名, 如error notify。如下是Error Trigger节点的数据示例,我们可以在后续的节点中通过表达式来引用这些数据,如触发错误的工作流名称、执行 URL 等。
在需要错误处理的工作流中,点击右上角三点菜单中的Setting菜单项。
在弹出的配置窗口中,在Error Workflow的配置项中选择我们刚刚新建的错误处理工作流,保存配置。
关于通知,示例中使用邮件发送服务,我们需要配置 SMTP,以网易邮箱为例,登录网易邮箱的网页版, 在导航菜单中选择设置,在弹出的页面中选择POP3/SMTP/IMAP,选择开启 IMAP/SMTP 服务,在授权密码管理部分,选择新增授权码,授权码即为三方使用网易邮箱时的密码。网易邮箱的 SMTP 地址为smtp.163.com,端口号为465。

当然我们也可以使用其他通知服务,如飞书、企业微信等。
现在,当工作流中发生错误时,n8n 将自动调用我们配置的错误处理工作流。我们可以在前序的子工作流的示例中通过更改参数值,模拟错误,触发错误处理工作流。最终将收到如下示例的邮件

n8n AI 相关概念
n8n 一大优势就是其内置了 AI 相关的节点和处理方式,可以方便用户构建 AI 相关的应用,包括 AI 聊天机器人、文本总结、AI Agent 等。
Cluster nodes 集群节点
n8n 中,集群节点 (Cluster nodes) 是一组一起工作的节点组,它们由一个根节点 (root node) 和一个或多个扩展节点功能的子节点 (sub-nodes) 组成。AI 相关的功能由集群节点实现。

Cluster nodes 的根节点一般分 Chian 及 Agent 类型。 Chain 是一种简单的 LLM 集成方式,用来串联工作流中的其他节点,且不支持记忆功能。
以下是 n8n 中内置的 Chain 节点:
Agent 节点则可以访问更多的工具,以及可以根据用户输入和上下文信息执行任务,并通过工具返回的信息做执行的决策。可以认为 Agent 是一种知道如何做出决策的 Chain 节点。
以下是 n8n 中内置的 root node 列表:
https://tomo.dev/posts/handy-n8n/c04/workflows/n8n_root_nodes.json
Memory 记忆
在构建 AI 聊天机器人时,记忆 (Memory) 是一个重要的概念,它允许 AI 模型记住之前对话的内容,以便在后续的对话中使用这些信息。记忆可以帮助 AI 模型更好地理解用户的意图,并生成更准确和相关的回答。
如果没有记忆,AI 将无法记住上下文,如下是一个没有记忆的 AI 聊天示例:

在 Agent 节点上,我们可以添加记忆节点,以便 AI 模型记住之前对话的内容。如下是几种 n8n 支持的常见记忆体
- Simple Memory
- MongoDB Chat Memory
- Redis Chat Memory
- Postgres Chat Memory
在测试的简单场景,我们选择 Simple Memory 即可。如下是添加了记忆之后的 AI 对话

从截图中我们可以看到,一次对话交互,Agent 节点与 Memory 交互了两次,分别是loadMemoryVariables
及saveContext
,其中loadMemoryVariables
用于加载记忆,saveContext
用于保存记忆。
Simple Memory 使用 worker 的内存存储记忆,在 n8n Queue 部署模式中队列分发无法确保每次到相同的节点,所以对于复杂的模式请使用外部的记忆体,如 Redis Chat Memory。
一个简单的带记忆的工作流如下:
https://tomo.dev/posts/handy-n8n/c04/workflows/n8n_chat_with_memory.json
RAG
RAG (Retrieval-Augmented Generation) 是一种结合了检索和生成两种方法的 AI 模型,它能够从大量的文本数据中检索相关信息,并将这些信息与生成模型结合,以生成更准确和相关的回答。
RAG 模型通常由两部分组成:检索模块和生成模块。检索模块负责从大量文本数据中检索相关信息,生成模块则负责根据检索到的信息生成回答。
n8n 中的 RAG 系统通常依赖 vector store 来进行外部数据的存储与检索。vector store 向量存储, 或称 vector database 向量数据库,是一种用于存储 embedding 向量的数据库,它能够根据向量之间的相似度进行检索。
在 n8n 中,RAG 一般包括两个部分,一是内容的上传,二是内容的查询。下面我们通过例子来演示一个简单的 RAG 系统。
内容上传
我们使用 On form submission 作为触发节点来上传文件,通过编辑节点中的表单配置,添加文件类型字段,如下所示:

通过添加 Simple Vector Store 节点,选择 Insert Documents 操作,将表单中的文件上传到 vector store 中,如下所示:

Simple Vector Store 也是一种集群节点,需要关联一个 Embedding Model 节点,
以及一个文档加载节点。Embedding Model节点用于将文档转化为向量,
这里我们使用 Gemini 的 text-embedding-004
模型,文档加载节点我们使用Default Data Loader节点。Default Data Loader 节点中的Input Data Field Name 配置需要与 On form submission
节点中的表单字段名一致。

这样我们就构建了一个文件上传工作流,将用户上传的文件转化为向量并存储到 vector store 中。点击执行,n8n 将弹出一个表达,并展示之前配置的文件选择输入框,如下所示:

选择文件后,点击提交,n8n 将执行工作流,将文件上传到 vector store 中。在本例中,我们使用chat 嬛嬛.txt 作为文档示例。
内容检索
接下来,我们构建一个内容检索工作流,通过用户输入的问题,以及 AI Agent 的大模型, 从 vector store 中检索相关内容并完成回答。
我们使用 On chat message 作为触发节点,并关联 AI Agent 节点,在 AI Agent 节点中的Tool
关联Simple Vector Store作为工具,配置 Retrieve Documents (As Tool for AI Agent)
作为操作,同时需要关联与之前内容上传工作流相同的 Embedding Model 节点。
我们可以断开 AI Agent 节点与 Simple Vector Store 节点的连接,来测试没有 RAG 情况下的对话效果。如下分别是有 RAG 和没有 RAG 的对话效果:


可以看到在有 RAG 的情况下,AI Agent 能够根据用户的问题,从 vector store 中检索相关内容,并生成更准确和相关的回答。
参考
如下是上述示例的完整的工作流
官方文档参考https://docs.n8n.io/advanced-ai/rag-in-n8n/
Tools 工具
在上述示例中,我们使用 Simple Vector Store 作为 AI Agent 节点的工具。在 AI 场景中, 工具有着特殊的意义,它能够帮助 AI Agent 补充额外的 LLM 不支持的能力,如搜索引擎搜索、数据库查询、天气信息查询等。
一个 AI Agent 可以关联多个工具,如下所示我们添加了两个工具,Date & Time Tool 和Calculator,分别用于查询日期和时间,以及计算器。

完整的工作流如下:
https://tomo.dev/posts/handy-n8n/c04/workflows/n8n_tools.json
MCP
n8n 支持 MCP (Model Context Protocol) 协议,在 n8n 中可以将 MCP 看作一种特殊的工具。
MCP (Model Context Protocol) 是一种开放协议,标准化了应用程序如何为 LLM 提供上下文。可以把 MCP 看作是 AI 应用的 USB-C 端口。

Source: https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/
MCP 的通讯主要包括两个部分,一个是作为工具供 AI Agent 调用的 Client,另外是作为服务端的 Server 提供实际的服务。MCP 协议定义了两种 Client 与 Server 之间的通讯机制:
- stdio - 标准输入和标准输出之间的通信
- Streamable HTTP - 流式 HTTP 请求和响应
n8n 中主要通过 Streamable HTTP 进行通讯,其中 MCP Client 作为 AI Agent 节点的工具, MCP Server 为单独的 MCP Server Trigger 节点,将 n8n 中集成的工具转成 MCP Server 服务供 MCP Client 调用。
本节我们使用 GitHub 工具为例,展示 n8n 中 MCP 的使用。
首先我们申请一个 GitHub 的 access token,用于 GitHub API 的调用:
- 访问开发者设置页面 https://github.com/settings/tokens
- 点击右上角的 Generate new token 按钮,选择 classic
- 在 Note 中输入一个名称,如 n8n-github
- 出于安全考虑,我们只访问公开的仓库信息,所以不选择任何权限,点击 Generate token 按钮
- 复制生成的 token,保存到安全的地方
接下来,我们构建一个工作流,将 GitHub API 转成 MCP Server 服务,供 AI Agent 调用。
添加 MCP Server Trigger 节点,获取其生产地址,格式类似https://n8n.example.com/mcp/UUID
在 MCP Server Trigger 工具选项中,选择 GitHub 作为工具,打开 GitHub 节点的配置项,我们选择新建 Credential,并输入之前申请的 GitHub access token。资源 Resource 选择 Repository,操作 Operation 选择 Get。Repository Owner
出于测试目的,固定为 datawhalechina
,Repository Name 我们使用 n8n 的Let the model define this parameter
功能,
让 AI Agent 填充参数。具体完整的配置如下

然后我们添加 On chat message 节点,并关联 AI Agent 节点,在 AI Agent 节点中的工具选项中,选择 MCP Client,在弹出的配置窗口中,将之前获取的 MCP Server Trigger 生产地址填入 SSE Endpoint 配置项。
最终我们保存工作流并将其状态设置为 active。在工作流的聊天测试框,输入问题,可以看到完整的调用过程,并得到关于问题中 GitHub 仓库信息的回答,如下所示:

完整的工作流如下:
总结
本节我们介绍了 n8n 中 集群节点、记忆、RAG、Tools 和 MCP 的使用,通过这些功能,我们可以构建一个完整的 AI 应用。如果上述的场景不能满足需求,n8n 还提供了LangChain Code Node
,
可以编写自定义的 LangChain 代码,实现更复杂的 AI 应用。