首页 教程 ComfyUI保姆级零基础教程 Subgraph子工作流创建详解
Tutorial Lesson

Subgraph子工作流创建详解

工作流中的‌Subgraph(子图)‌是指将一组内部节点与逻辑封装为‌单一可复用模块‌,在父级工作流中表现为一个具有明确输入/输出接口的“黑盒”节点,用于实现复杂流程的‌模块化、分层管理与状态隔离‌。‌‌

ComfyUI保姆级零基础教程 62 浏览 2026-07-07 更新 免费阅读

一、什么是 Subgraph子工作流

工作流中的‌Subgraph(子图)‌是指将一组内部节点与逻辑封装为‌单一可复用模块‌,在父级工作流中表现为一个具有明确输入/输出接口的“黑盒”节点,用于实现复杂流程的‌模块化、分层管理与状态隔离‌。‌‌

二、为什么需要 Subgraph子工作流?

工作流变复杂时,常见痛点:

-- 同样的「CLIP 正负 + 基础采样」重复出现多次;

-- 画布节点上百,滚动找线困难;

-- 改一处逻辑要复制粘贴多份,容易漏改。

Subgraph一组节点打包成一个「超级节点」

-- 对外暴露必要的输入/输出;

-- 内部逻辑折叠隐藏;

-- 主画布更简洁,维护集中在子图内部。

类比:编程里的 函数 — 把常用代码块封装,主程序只调函数名。


三、Subgraph子工作流 与「保存 JSON 再加载」的区别

方式

特点

保存整份工作流 JSON

整图替换,不适合局部复用

复制粘贴节点

可行但同步修改麻烦

Subgraph

同一文件内模块化,改子图处处生效

自定义节点(Python)

最强大,需编程;Subgraph 零代码

Subgraph 适合 不会写 Python、但想模块化 的用户。

四、创建 Subgraph 的基本流程

不同 ComfyUI 版本菜单文案可能略有差异(如 Convert to SubgraphCollapse to Subgraph),以你当前版本为准。

4.1 准备一段可封装的节点

示例:将 「双 CLIP Text Encode + 连到 KSampler 的正负 conditioning 准备」 封装(更常见的是封装「带 VAE Decode 的采样块」)。

更典型的封装单元:

Empty Latent → KSampler → VAE Decode
(MODEL / CONDITIONING / VAE 作为外部输入)

4.2 框选并转换

  1. 框选 要打包的所有节点(含它们之间的连线);

  2. 右键 → Convert to Subgraph / Group to Subgraph

  3. 系统生成一个 Subgraph 节点,原节点折叠其内。

4.3 定义对外接口

Subgraph 需要明确 哪些线要穿到外部

  • 输入:如 modelpositivenegativelatentvae

  • 输出:如 IMAGELATENT

在 Subgraph 编辑界面中,通常通过 Input / Output 节点 或拖拽边界定义暴露的插槽。

4.4 命名 Subgraph

双击 Subgraph 节点 Title,例如:

  • 采样块_T2I_v1

  • SDXL_VAE解码输出

与 4-2 命名规范一致。


五、编辑与进入 Subgraph

  • 双击 Subgraph 节点 → 进入 子图内部编辑

  • 修改内部节点后 返回主图,对外接口保持不变(除非主动增删接口);

  • 可嵌套 Subgraph,但 不宜过深,否则调试困难。


六、实战示例:封装「文生图采样输出块」

6.1 内部节点(Subgraph 内)

[输入: model, positive, negative, latent, vae]
        ↓
   [KSampler]
        ↓
   [VAE Decode]
        ↓
[输出: IMAGE]

6.2 主工作流(Subgraph 外)

[Load Checkpoint] ── model / vae ──→ [Subgraph: 采样输出块]
[CLIP+] ── positive ───────────────→
[CLIP-] ── negative ───────────────→
[Empty Latent] ── latent ──────────→
                                      ↓ IMAGE
                               [Save Image]

效果:主图只剩约 6–8 个「大块」,阅读成本明显下降。


七、使用 Subgraph 的最佳实践

7.1 适合封装的模块

模块

说明

采样 + 解码

最常用

高清放大双采样

第二遍 KSampler 固定时

ControlNet 应用块

同一套预处理器 + Apply

人物一致 InstantID 块

身份应用重复使用时

7.2 不适合封装的情况

  • 仅出现一次、且常改线的一次性实验;

  • 接口经常变(今天 3 输入明天 5 输入)的探索阶段;

  • 封装后比原来还难懂(过度抽象)。

7.3 版本与文档

在 Subgraph 外 Note 中注明:

Subgraph「采样输出块_v1」
  输入:model, positive, negative, latent, vae
  输出:IMAGE
  内部 steps 默认 28,进子图修改

八、Subgraph vs 模板 JSON

 

Subgraph

模板 JSON

位置

单文件内

多个文件

同步修改

改一处全局生效

每个文件分别改

分享

随主 JSON 导出

可单独分发

适合

个人/团队大型工作流

入门模板、社区下载

社区工作流多为 整 JSON,导入后可 选中一段转为 Subgraph 做二次整理。


九、常见问题

问题

处理

转换后缺输入

进 Subgraph 补 Input 节点并连到边界

外部类型不匹配

检查暴露接口类型名与主线一致

子图内改完主图仍报错

返回主图刷新,必要时重新 Queue

找不到 Convert 菜单

升级 ComfyUI;查阅当前版本 Release Note

推荐教程

继续学习相关章节