用途:把 n8n 中可复用的逻辑抽成子工作流(sub-workflow)。子工作流相当于函数:Execute Workflow Trigger 声明带类型的输入,主体执行逻辑,最后一个节点返回输出;调用方通过 Execute Workflow 节点像普通步骤一样调用。它是 n8n 主要的复用机制,可减少逻辑复制粘贴导致的修复遗漏与副本漂移。
判断是否该抽取:可能被其他工作流复用、属于通用关注点(鉴权、重试、解析、格式化、ID 生成)、或节点数超过 5 且概念上是单一职责时,倾向抽取;单个无逻辑包裹的 HTTP 调用不必抽取;与某一调用方数据结构强耦合时先修正数据形状。抽取的收益还包括可读性、可测试性与可替换性。
输入输出契约:优先用 Define Below 声明类型化字段(string、number、boolean、array、object),让调用方和 AI 智能体有可填的 schema;仅两种例外可用 passthrough:二进制输入,或零输入。字段名、类型、用途与关键词要写进工作流描述。返回自然形状而非存储形状;预期失败返回 { ok: false, error: "..." },不总是抛出。有调用方后契约即冻结,改字段名需同步迁移全部调用方。可用末尾 Set/Edit Fields 节点命名为 Return 以显式暴露返回契约。
调用方式:mode 取 all(默认,一次运行处理全部条目)或 each(运行 N 次,每次一条)。若主体假定只处理单条,应选 each,比在内部放 Loop Over Items 更简单。waitForSubWorkflow 默认 true,调用方阻塞等待结果;设为 false 则发后即忘。mode: each 加 waitForSubWorkflow: false 可实现并行执行,但需另配完成追踪(如 Data Table 轮询)。当输入契约确有多种形态时,采用 N+1 模式:每种契约一个外层子工作流,统一调用共享内核。
智能体工具:带类型化 Define Below 触发器的子工作流可直接作为智能体工具,智能体通过 $fromAI 填字段;零输入场景也可作工具;二进制输入无法直接作为工具。
发现与命名:社区 MCP 不支持按标签过滤,发现依赖名称,因此用动词开头的统一前缀,并先搜索:n8n_list_workflows() 扫描、n8n_get_workflow({ id: "<candidate>" }) 查看输入输出与主体。MCP 可构建与调用子工作流、发现、校验、隔离测试(n8n_test_workflow 的 prepare/pinned,需 N8N_MCP_ACCESS_TOKEN 与工作流「Available in MCP」设置)、查看运行与激活。限制:无法按标签发现,n8n 对未识别输入字段不报错,输入模式须由触发器节点自身声明。