菜单

节点系统

相关源文件

节点系统是 n8n 的核心架构,它定义了集成节点在工作流中如何构建、加载和执行。节点是 n8n 工作流的构建块,每个节点代表一个特定的服务或操作(如 HTTP 请求、数据库查询或特定服务操作)。

有关工作流如何处理这些节点执行的信息,请参阅工作流执行引擎

节点架构概述

本质上,n8n 中的每个节点都是实现INodeType 接口的类。此接口定义了组件作为 n8n 工作流中的节点所需的结构和行为。

节点组件架构

来源

节点实现结构

每个节点包含以下关键组件

组件描述示例
节点类实现INodeType接口PipedriveAsanaGithubTrigger
Description 属性定义节点在编辑器 UI 中的外观和行为INodeTypeDescription 以及元数据
Execute 方法包含节点执行时运行的业务逻辑标准节点:execute(),触发器节点:webhook()
辅助函数通常分离到 GenericFunctions.ts 文件中pipedriveApiRequest()asanaApiRequest()
Webhook 方法仅适用于触发器节点webhookMethods.default.checkExists/create/delete

节点类实现

节点类通常遵循此模式

来源

Description 属性

Description 属性定义了节点在 n8n 编辑器中的显示方式和行为方式

Pipedrive 节点示例

来源

节点属性

properties 数组定义了在编辑器中配置节点时显示的 UI 元素。这些通常遵循分层模式

  1. 资源选择:节点操作的对象(例如,文件、文件夹、用户)
  2. 操作选择:执行什么操作(例如,创建、更新、删除)
  3. 操作参数:所选操作所需的必需和可选字段

来源

Execute 方法

execute 方法在节点在工作流中运行时被调用。它通常遵循此模式

标准节点示例 (Pipedrive)

触发器节点示例 (Github)

来源

节点文件组织

大多数节点实现使用此文件结构

来源

  • 仓库中的节点文件结构

辅助函数

节点通常使用帮助函数进行 API 请求,这些函数定义在 GenericFunctions.ts 文件中

Pipedrive GenericFunctions 示例

来源

节点加载系统

n8n 中的节点通过LoadNodesAndCredentials 类在运行时动态加载和注册。

节点加载过程

来源

节点加载来源

LoadNodesAndCredentials 类从三个主要来源加载节点

  1. 基础包:

    • n8n-nodes-base - 核心节点(Pipedrive、Asana、HTTP 请求等)
    • @n8n/n8n-nodes-langchain - LangChain 集成节点
  2. 社区节点:

    • 从 npm 安装,命名模式为n8n-nodes-*@*/n8n-nodes-*
    • 位于nodesDownloadDir/node_modules 目录中
    • 仅在globalConfig.nodes.communityPackages.preventLoading 为 false 时加载
  3. 自定义目录:

    • 包含自定义节点实现的本地目录
    • 通过instanceSettings.customExtensionDirCUSTOM_EXTENSION_ENV 环境变量指定

来源

节点注册

加载后,节点通过postProcessLoaders() 在系统中注册

注册过程

  1. 前缀节点名称:添加包前缀(例如,n8n-nodes-base.pipedrive
  2. 构建注册表:创建knownloadedtypes 集合
  3. 创建 AI 工具:为标记为usableAsTool: true 的节点自动生成 AI 工具变体
  4. 注入 API 选项:为支持代理身份验证的节点添加自定义 API 调用选项
  5. 后处理:运行任何已注册的后处理器

来源

凭证系统集成

节点使用凭证系统安全地与外部服务进行身份验证。

凭证类型实现

凭证实现示例

Header Auth 示例

来源

在节点中使用凭证

节点在其描述中引用凭证

并在帮助函数中检索它们

来源

高级节点功能

AI 工具集成

节点系统提供了多种 AI 集成机制

1. 节点到工具的转换

节点可以标记为usableAsTool: true 以自动创建 AI 工具变体

2. LoadNodesAndCredentials AI 工具创建

系统在节点加载过程中自动创建工具变体

3. 使用 $fromAI 进行运行时工具创建

createNodeAsTool 函数在运行时将节点转换为 LangChain 工具。

4. AI 辅助函数

来源

热重载

节点系统支持开发期间的热重载,允许更改得到反映而无需重新启动服务器。

来源

总结

n8n 节点系统在设计时就考虑了模块化和可扩展性。要点如下:

  1. 节点被实现为遵循 INodeType 接口的类。
  2. 每个节点通过 description 属性定义其外观和行为。
  3. execute 方法包含节点的业务逻辑。
  4. 节点集成凭证系统以实现安全认证。
  5. 节点加载系统动态发现并注册节点。
  6. 诸如 AI 工具转换等高级功能可扩展节点的功能。

这种架构允许 n8n 拥有一个灵活的插件系统,无需修改核心平台代码即可添加新的集成。

来源

  • 上面引用的所有文件