节点视觉与执行编组 (Node Groups)
编组节点 (Group) 是一种能够容纳并封装其他算子节点的容器节点。所有编组均能在画布上起到视觉归类与整洁排版的作用,而部分高阶编组类型更进一步接管了其内部节点的底层执行流调度机制——例如将一组节点作为一个复合单体批量运行,或对子节点执行循环迭代。
本文档深入解析各类编组的创建、配置、边界引脚穿透以及运行调度机制。普通节点操作请参阅 算子节点基础操作。
创建编组 (Creating a group)
在画布上框选你想归类的一组节点(也可以什么都不选直接创建空编组,后续再拖入节点):
- 按下快捷键
Cmd/Ctrl+G:直接以当前设置的默认编组类型就地完成创建; - 按下
Shift+Cmd/Ctrl+G(或右键点击选择 Create Group):首先弹出 编组类型选择器 (Group Type Picker)。
编组类型选择器会列出当前已安装算子库中提供的所有可用编组类型。勾选底部的 Make default for Cmd/Ctrl+G 可将选定类型固化为默认热键,下次即可跳过弹窗。在首次指定前,按下 Cmd/Ctrl+G 会默认唤起选择器。
新生成的编组框尺寸会自动以一定的安全外边距包裹当前选中的所有节点。将外部节点拖入编组体内即可自动收纳;将内部子节点拖拽出编组框外即可自动移出解绑。
核心编组类型详解 (Group Types)
官方标准库预置的编组类型清晰划分为两大阵营:
| 编组类型名称 | 是否独立可执行? | 调度行为与应用场景 |
|---|---|---|
| Group (普通视觉编组) | 否 | 纯粹的视觉组织容器。提供标题与描述说明框,不干预节点的拓扑执行顺序,也不作为一个独立单元参与运行。 |
| Subflow Node Group (子流编组) | 是 | 作为单一复合单元并行执行。在底层为子节点创建专属的独立 Sub-Flow 子流,统一触发调度。 |
| ForEach Group (遍历循环编组) | 是 | 按列表或字典项循环迭代。根据输入集合中的每一个元素,将内部子节点重复触发执行一次。 |
| For Loop Group (步长范围循环编组) | 是 | 按数值范围循环迭代。根据给定的数值区间 (Start/End/Step) 与步长执行定次循环。 |
| Retry Group (自动重试容错编组) | 是 | 失败时自动重新执行。当子节点运算抛出异常时自动触发原地重试,支持指定最大重试尝试上限。 |
普通 Group 标题栏上绝不会出现 Run Group 按钮;而表格中的其余所有类型均为 子流编组 (Subflow Groups):它们在引擎内部维护专属的子流图,对外在主流拓扑中表现为一个具备单一执行入口的强类型复合节点。
1. Subflow Node Group (子流节点编组)
最基础的可执行复合编组。触发该编组执行时,其内部包含的所有算子节点将在专有的子流环境中协同运转,运算成果最终汇总投递至编组节点的输出端口上。常用于将复杂的局部子系统抽象为一个黑盒阶段,使上层主流保持极高的可读性。
2. ForEach Group (ForEach 遍历编组)
专门用于对列表 (List) 或字典 (Dict) 执行批量循环: - 将数据集合接入其 items 输入插槽; - 编组会针对每个元素将内部子节点执行一遍,并在内部暴露 current_item(当前元素实体)与 index(当前序号索引)端子供子节点消费; - 另一侧的 new_item_to_add 端口负责将每次循环迭代产生的值收集起来,最终在编组外部汇总为一个完整的 results 输出列表。
在编组设置中,Execution Mode (执行模式) 支持: - One at a time (串行单步模式):顺序一个接一个执行。此模式下支持接入 Skip to Next Iteration(跳至下一轮)与 Break Out of Loop(提前跳出循环)等高级控制流中断引脚; - All at once (全并行并发模式):所有元素同时并发触发计算。此时中断控制引脚会自动隐藏(因为无法对全部并发中的线程说跳过下一步)。
此外,设置面板中的 Testing Mode (调试单步模式) 允许你在排错时仅针对指定的单项 Index 索引跑一次,免去每次调试都要跑完整份大列表的漫长等待。
3. For Loop Group (数值步长循环编组)
与 ForEach 结构高度相似,但它基于数值范围进行迭代:接收 start、end、step 参数,以及控制区间闭合的 Include end value 开关。它完整复用了 ForEach 的执行模式、Results 结果汇集与 Break/Skip 控制流体系。
4. Retry Group (重试容错编组)
针对容易偶发网络超时或偶发抖动的大模型/外部 API 调用提供工业级容错保护: - 将子节点内部的成功分支引脚接入编组的 Succeeded 控制端口,将异常捕获分支接入 Failed 端口; - 若触发了 Failed 且尚有剩余重试配额(通过 Max Iterations 配置,缺省为 3 次),编组将原地清空状态并重新触发执行; - 当最终成功或耗尽重试次数后,执行流继续向下游流转,并通过 was_successful 布尔端口告知下游本次重试是否最终挽救成功; - 开启 Raise on failure 开关可在重试耗尽时强行抛出阻断异常中断全流。
跨越编组边界的穿透接线:穿墙引脚 (Wall Parameters)
任何从子流编组外部向内部子节点连接的数据线(或反向从内部输出至外部),均会自动穿透并路由经过编组节点边界上的 穿墙引脚 (Wall Parameters)——在编组框左边缘呈现传入引脚,在右边缘呈现传出引脚。
创作者无需手动添加穿墙端口:只要直接从内部节点的端子拖出连线接入外部节点(或反向操作),系统会自动在编组边框上即时生成对应的穿墙引脚并完成无缝两跳中继:
flowchart LR
ExternalA[外部节点 A] -->|外部连线| WallIn[编组边界穿墙引脚]
WallIn -->|内部连线| InternalB[编组内部节点 B]
若将该节点拖出编组框,系统会自动拆除中间的穿墙端子,将两侧线路重新缝合为单根直连线缆;若内部有多个节点需要引用同一个外部源数据,它们会智能共享同一个外部穿墙引脚,杜绝边界端口冗余膨胀。
普通的 Group 视觉编组不具备此机制,连线直接裸穿边界框。
编组无限层级嵌套 (Nesting Groups)
编组支持任意深度的层级递归嵌套:将一个编组直接拖入另一个编组框内,或框选一个编组与其他节点按下 Cmd/Ctrl+G,内层编组即刻成为外层编组的子容器。
这是将超大规模工作流解耦为清晰模块的标准工程模式:例如一个 ForEach Group 循环编组,其循环体本身是一个封装完好的 Subflow Node Group,实现高度清晰的面向对象式图编排。
- 级联协同执行:点击外层编组的 Run Group,系统会自动递归调度执行其内部包含的所有子编组;
- 多层穿墙透传:跨越两层嵌套边界的连线会在各层边框上依次生成穿墙引脚,使数据流动链路极其清晰;
- 防呆自包含保护:编辑器严格禁止循环嵌套——将一个父级编组拖入其自身的子编组的操作会被直接拦截。
视图折叠与卷起 (Collapsing and Rolling Up)
- Collapse (折叠):点击编组标题栏的折叠箭头。编组会隐藏全部内部子节点,在视觉上收拢浓缩为一个仅展示其穿墙引脚的极简节点(若无连线则显示为单行 Group collapsed 卡片)。这是在画布上屏蔽局部细节、专注于全局骨架的最佳手段;
- Roll up (卷起):在标题栏双击(需在设置中开启 Node Roll-Up)。编组在保留当前横向宽度的同时,纵向高度高度压缩为仅有一行标题栏,内部排版丝毫未损,再次展开瞬间还原。
自动紧贴包裹与一键解组
- Fit to nodes (自动贴合尺寸):快捷键
Shift+F(或右键点击编组选择 Fit to nodes)。系统会重新计算内部所有子节点的包围盒,并以标准的内外边距紧凑重塑外框尺寸; - Ungroup (解散编组):右键点击选择 Ungroup。移除外层包装框,内部子节点完好停留在原位,局部坐标自动转化为画布绝对坐标。对于子流编组,解散会自动注销底层子流并将所有穿墙连线无缝还原为端到端直连线。直接按 Delete 键删除编组节点同样只会释放子节点,绝对不会误删其中的内容。
编组执行与计算环境配置 (Running a Group)
选中可执行的编组节点时,悬浮工具栏上会明确呈现 Run Group (运行编组) 按钮。点击即可触发该单元及其上游依赖的精准局部运算。
子流编组支持在设置面板中指定 Execution Environment (执行环境): - Local Execution (本地执行):出厂默认模式,直接在当前主引擎进程中调度计算; - 若安装了对应的企业或云端扩展算子库,此处亦可自由指定为远程分布式计算或云端离线运行。
在编组运行期间,标题栏右侧会同步亮起 Running(运行中)、Resolved(计算就绪)或 Unresolved(未就绪)的状态指示药丸胶囊。