节点系统是 n8n 的核心架构,它定义了集成节点在工作流中如何构建、加载和执行。节点是 n8n 工作流的构建块,每个节点代表一个特定的服务或操作(如 HTTP 请求、数据库查询或特定服务操作)。
有关工作流如何处理这些节点执行的信息,请参阅工作流执行引擎。
本质上,n8n 中的每个节点都是实现INodeType 接口的类。此接口定义了组件作为 n8n 工作流中的节点所需的结构和行为。
来源
每个节点包含以下关键组件
| 组件 | 描述 | 示例 |
|---|---|---|
| 节点类 | 实现INodeType接口 | Pipedrive、Asana、GithubTrigger |
| Description 属性 | 定义节点在编辑器 UI 中的外观和行为 | INodeTypeDescription 以及元数据 |
| Execute 方法 | 包含节点执行时运行的业务逻辑 | 标准节点:execute(),触发器节点:webhook() |
| 辅助函数 | 通常分离到 GenericFunctions.ts 文件中 | pipedriveApiRequest(),asanaApiRequest() |
| Webhook 方法 | 仅适用于触发器节点 | webhookMethods.default.checkExists/create/delete |
节点类通常遵循此模式
来源
Description 属性定义了节点在 n8n 编辑器中的显示方式和行为方式
Pipedrive 节点示例
来源
properties 数组定义了在编辑器中配置节点时显示的 UI 元素。这些通常遵循分层模式
来源
execute 方法在节点在工作流中运行时被调用。它通常遵循此模式
标准节点示例 (Pipedrive)
触发器节点示例 (Github)
来源
大多数节点实现使用此文件结构
来源
节点通常使用帮助函数进行 API 请求,这些函数定义在 GenericFunctions.ts 文件中
Pipedrive GenericFunctions 示例
来源
n8n 中的节点通过LoadNodesAndCredentials 类在运行时动态加载和注册。
来源
LoadNodesAndCredentials 类从三个主要来源加载节点
基础包:
n8n-nodes-base - 核心节点(Pipedrive、Asana、HTTP 请求等)@n8n/n8n-nodes-langchain - LangChain 集成节点社区节点:
n8n-nodes-* 或@*/n8n-nodes-*nodesDownloadDir/node_modules 目录中globalConfig.nodes.communityPackages.preventLoading 为 false 时加载自定义目录:
instanceSettings.customExtensionDir 或CUSTOM_EXTENSION_ENV 环境变量指定来源
加载后,节点通过postProcessLoaders() 在系统中注册
注册过程
n8n-nodes-base.pipedrive)known、loaded 和types 集合usableAsTool: true 的节点自动生成 AI 工具变体来源
节点使用凭证系统安全地与外部服务进行身份验证。
凭证实现示例
Header Auth 示例
来源
节点在其描述中引用凭证
并在帮助函数中检索它们
来源
节点系统提供了多种 AI 集成机制
节点可以标记为usableAsTool: true 以自动创建 AI 工具变体
系统在节点加载过程中自动创建工具变体
createNodeAsTool 函数在运行时将节点转换为 LangChain 工具。
来源
节点系统支持开发期间的热重载,允许更改得到反映而无需重新启动服务器。
来源
n8n 节点系统在设计时就考虑了模块化和可扩展性。要点如下:
INodeType 接口的类。description 属性定义其外观和行为。execute 方法包含节点的业务逻辑。这种架构允许 n8n 拥有一个灵活的插件系统,无需修改核心平台代码即可添加新的集成。
来源