ComfyPilotComfyPilot
文档 / 其他 / Stable Diffusion 1.5:从零搭建文生图工作流

Stable Diffusion 1.5:从零搭建文生图工作流

从空白画布开始,一步步搭建 Stable Diffusion 1.5 文生图工作流:放好模型文件、修复缺失的模型并运行。

其他 first_generation 更新于 2026-11-12

查看官方原文

Stable Diffusion 1.5:从零搭建文生图工作流

从空白画布开始,一步步搭建 Stable Diffusion 1.5 文生图工作流:放好模型文件、修复缺失的模型并运行。

在本教程中,你将在空白画布上构建一个文生图工作流并运行它。你输入一段对画面的描述,ComfyUI 便会使用 Stable Diffusion 1.5 模型据此生成一张 512 × 512 的图像。每个节点都由你自己添加并连接。每一步都会说明该节点做什么,以及如何判断这一步是否成功。

本教程使用你自己电脑上的 ComfyUI:Comfy Desktop、ComfyUI Portable 或手动安装。开始之前,请先安装 ComfyUI 并打开它。

[!TIP] 若想无需安装、直接在浏览器中使用 ComfyUI,请在 Comfy Cloud 中打开 Z-Image-Turbo 文生图模板。

了解工作流的组成部分

工作流是由连线连接的一组节点。每个节点执行一项任务:

  • 输入是节点左侧的圆点。它们从其他节点接收数据。
  • 输出是节点右侧的圆点。它们将数据发送到其他节点。
  • 控件是节点内部的设置,例如文本框、数字或列表。
  • 连线是从某一输出将数据传送到相同类型输入的线,例如从 CLIP 输出到 clip 输入。

本教程中的工作流包含七个节点,共六种类型。最后一列是每个节点在添加节点菜单中的位置;添加节点一节对此进行了说明。

节点功能添加节点路径
Load Checkpoint加载模型文件。其输出为模型(MODEL)、文本编码器(CLIP)和图像解码器(VAE)。模型 > 加载器
CLIP Text Encode (Prompt)将文本提示词转换为引导模型的数据。你需要添加两个:一个用于你希望出现的内容,一个用于你不希望出现的内容。模型 > 条件
Empty Latent Image创建空白的起始图像,并设置其宽度和高度。模型 > Latent
KSampler使用模型和两个提示词,逐步将空白的起始图像变成你的图像。模型 > 采样
VAE Decode将 KSampler 的结果转换为普通图像。模型 > Latent
Save Image显示图像并将其保存到输出文件夹。图像

下载模型

Load Checkpoint 节点需要一个模型文件。本教程使用 v1-5-pruned-emaonly-fp16.safetensors。

v1-5-pruned-emaonly-fp16.safetensors 的 Hugging Face 文件页面,其中下载链接已高亮显示

将模型放入 checkpoints 文件夹

只有当文件位于 ComfyUI 会读取的 checkpoints 文件夹中时,ComfyUI 才会列出该 checkpoint。请将你下载的文件移动到你所安装版本对应的文件夹中。

[tab] Comfy Desktop 默认情况下,每个 Comfy Desktop 实例都会读取共享模型文件夹。Comfy Desktop 会将下载的模型保存在标记为 Downloads 的共享模型文件夹中。 1. 在 Comfy Desktop 的标题栏中,点击菜单,然后选择桌面设置。 2. 选择存储选项卡。 3. 在共享模型下,点击标记为 Downloads 的文件夹路径。该文件夹会在你的文件管理器中打开。 4. 将 v1-5-pruned-emaonly-fp16.safetensors 移动到其中的 checkpoints 文件夹。如果没有 checkpoints 文件夹,请创建一个。
[tab] ComfyUI Portable * 将 v1-5-pruned-emaonly-fp16.safetensors 移动到 ComfyUI_windows_portable\ComfyUI\models\checkpoints。 文件资源管理器打开到 ComfyUI\_windows\_portable\ComfyUI\models\checkpoints,其中包含模型文件
[tab] 手动安装 1. 打开你安装 ComfyUI 的文件夹,即包含 main.py 的那个文件夹。 2. 将 v1-5-pruned-emaonly-fp16.safetensors 移动到其中的 models/checkpoints 文件夹。

如果 ComfyUI 已经打开,请按 R,让它重新读取模型文件夹。

打开空白工作流

画布是用于放置节点的大面积区域。如果画布上已经显示了一个工作流,请打开一个空白工作流:

  1. 在左侧边栏顶部,点击 ComfyUI 标志(菜单)。
  2. 选择新建。

左侧边栏顶部的 ComfyUI 标志下方展开的 ComfyUI 菜单,其中“新建”位于列表顶部,位于文件、编辑、视图、主题和 Nodes 2.0 开关之上

此时画布为空。

画布为空,左侧边栏显示 ComfyUI 标志,顶栏显示“未保存的工作流”标签页

[!TIP] 在顶栏中,已打开工作流标签页旁边的加号(+)按钮也可用于新建空白工作流。 顶栏中“未保存的工作流”标签页旁的加号按钮,并显示其工具提示

添加节点

添加节点有三种方式。后续步骤会说明使用哪一种。

使用添加节点菜单

  1. 在画布的空白处右键点击。将打开一个菜单。
  2. 选择添加节点,然后按照该节点的添加节点路径依次选择每个类别。节点表 列出了本教程中每个节点的路径。
  3. 选择该节点。它会出现在你右键点击的位置。

画布右键菜单在添加节点 > 模型 > 加载器处展开,其中 Checkpoint加载器(简易) 在加载器节点列表中高亮显示

搜索节点库

  1. 按 N,或点击左侧边栏中的节点。将打开节点库。
  2. 如果节点库显示多个标签页,选择全部节点。
  3. 在\\搜索节点...\\框中输入节点名称。
  4. 在结果中点击该节点,然后在画布上你想要放置它的位置点击。节点会出现在那里。

节点库在左侧边栏中打开,搜索框中输入了 load check,Checkpoint加载器(简易) 在模型 > 加载器下高亮显示,并显示该节点的预览,包含其 ckpt\_name 输入以及 MODEL、CLIP 和 VAE 输出

将连线拖到空白画布

将连线拖到空白画布,可一步完成添加节点并连接。

  1. 从已放置节点的输出圆点开始拖动。
  2. 在画布的空白处释放。默认会在该处打开节点搜索框。
  3. 输入节点名称,然后选择该节点。ComfyUI 会添加该节点,并将它连接到你拖出的输出。

Checkpoint加载器(简易) 的 MODEL 输出连接到新建的 K采样器 节点的 model 输入,画布上打开了节点搜索框并输入了 KSampler

要在释放时打开菜单而不是搜索框,请在释放时按住 Shift。

连接两个节点

连线将数据从一个节点的输出传送到另一个节点的输入。

  1. 从一个节点上的输出圆点开始拖动。
  2. 在另一个节点的输入圆点上释放。两个圆点之间会出现一条连线。

以下规则适用于每一条连线:

  • 一个输出可以供给多个输入。
  • 一个输入只接受一条连线。连接到某个输入的新连线会替换其原有连线。
  • 连线连接的是相同类型的输出和输入。ComfyUI 不会在不同类型之间绘制连线。

添加 Load Checkpoint 节点

Load Checkpoint 节点用于加载模型文件。

  1. 使用添加节点菜单添加 Load Checkpoint 节点:模型 > 加载器 > Load Checkpoint(菜单中显示为 Checkpoint加载器(简易))。
  2. 在该节点中,点击 ckpt_name 控件,然后选择 v1-5-pruned-emaonly-fp16.safetensors。

该节点右侧显示三个输出:MODEL、CLIP 和 VAE。

带 MODEL、CLIP 和 VAE 输出,并在 ckpt\_name 控件中已选择 v1-5-pruned-emaonly 的 Load Checkpoint 节点

如果 ckpt_name 列表中没有显示该文件,请参阅模型不在 Checkpoint 列表中。

添加 KSampler 节点

KSampler 节点负责执行生成。它需要四条连线:模型、两个提示词,以及空白的起始图像。

  1. 通过节点库添加一个 KSampler 节点:搜索 KSampler(菜单中显示为 K采样器)。
  2. 将 Load Checkpoint 上的 MODEL 输出连接到 KSampler 上的 model 输入。

节点库,搜索框中输入了 KSampler,模型 > 采样下的 KSampler 处于高亮状态,并显示其输入与输出的预览,下方的画布上 Load Checkpoint 之下放置了 KSampler 节点

其余三条连线将在接下来的两节中绘制。

将 KSampler 的控件保持为默认值。例如,steps 为 20,cfg 为 8.0。

添加提示词节点

提示词用于描述图像。正向提示词说明你想要看到的内容,负向提示词说明你不想要的内容。

  1. 使用 添加节点 菜单(模型 > 条件)或 节点库 添加一个 CLIP Text Encode (Prompt) 节点(菜单中显示为 CLIP文本编码)。
  2. 点击它的文本框,输入正向提示词,例如 beautiful scenery nature glass bottle landscape, purple galaxy bottle。
  3. 右键点击该节点,然后选择 复制。此时会出现第二个 CLIP Text Encode (Prompt) 节点。
  4. 点击第二个节点的文本框,输入负向提示词,例如 text, watermark。

节点库,搜索框中输入了 CLIP Te,模型 > 条件下方的 CLIP Text Encode (Prompt) 处于高亮状态,旁边是画布上的两个 CLIP Text Encode (Prompt) 节点,一个带有紫色瓶子提示词,另一个带有 text, watermark

连接提示词:

  1. 将 Load Checkpoint 上的 CLIP 输出连接到每个 CLIP Text Encode (Prompt) 节点上的 clip 输入。两个提示词节点共用同一个 CLIP 输出。
  2. 将正向提示词节点上的 CONDITIONING 输出连接到 KSampler 上的 positive 输入。
  3. 将负向提示词节点上的 CONDITIONING 输出连接到 KSampler 上的 negative 输入。

设置图像尺寸

Empty Latent Image 节点用于设置图像尺寸。它的 width 和 height 初始值为 1024。本工作流使用 512,即从图像加载工作流中的示例工作流所用尺寸。

  1. 通过添加节点菜单添加一个 Empty Latent Image 节点:模型 > Latent > Empty Latent Image(菜单中显示为 空Latent图像)。
  2. 将 width 设置为 512。
  3. 将 height 设置为 512。
  4. 将 batch_size 保持为 1。
  5. 连接其 LATENT 输出到 KSampler 上的 latent_image 输入。

Empty Latent Image 节点,width 设置为 512,height 设置为 512,batch\_size 设置为 1,以及其 LATENT 输出

KSampler 的四个输入现在都已具有连线。

Load Checkpoint、两个 CLIP Text Encode (Prompt) 节点和 Empty Latent Image 分别连接到 KSampler 的 model、positive、negative 和 latent\_image 输入

解码并保存图像

KSampler 输出的是 Latent,不是图像。VAE Decode 将其转换为图像,Save Image 则负责存储图像。

  1. 通过节点库添加 VAE Decode 节点:搜索 VAE Decode(菜单中显示为 VAE解码)。
  2. 连接 KSampler 上的 LATENT 输出到 VAE Decode 上的 samples 输入。
  3. 将 Load Checkpoint 上的 VAE 输出连接到 VAE Decode 上的 vae 输入。
  4. 通过将连线拖到空白画布添加 Save Image 节点:从 VAE Decode 上的 IMAGE 输出拖动,在空白画布上释放,然后选择 Save Image(菜单中显示为 保存图像)。其 images 输入已链接到 IMAGE。

节点库中搜索框输入了 vae,VAE Decode 在 model > latent 下高亮显示,并预览了其 samples 和 vae 输入以及 IMAGE 输出,同时 VAE Decode 节点已放置在画布上

VAE Decode 节点的 samples 输入链接自 KSampler 的 LATENT 输出,vae 输入链接自 Load Checkpoint 的 VAE 输出

你的工作流包含七个节点和九条连线。

已完成的文生图工作流:Load Checkpoint、两个 CLIP Text Encode (Prompt) 节点、Empty Latent Image、KSampler、VAE Decode 和 Save Image 由九条连线连接,Save Image 节点中显示一张 512 × 512 的星系瓶子图像

[!TIP] 在未选中任何节点时,按 . 可使整个工作流适应屏幕。

运行工作流

运行工作流会将其加入队列,随后 ComfyUI 生成图像。

  • 点击 运行,或按 Ctrl+Enter(macOS 上为 Cmd+Enter)。

高亮显示了 Checkpoint加载器(简易)节点和运行按钮的 ComfyUI 文生图工作流

如果 ComfyUI 显示 缺少必需输入,请参阅缺少必需输入。

找到生成的图像

运行结束后,图像会出现在 Save Image 节点中。要从左侧边栏打开它:

  • 点击资产,然后选择已生成选项卡。

在 Save Image 节点和资产面板中显示的已生成银河瓶子图像

Save Image 还会将图像以 PNG 文件的形式写入输出文件夹,文件名为 ComfyUI_00001_.png。每生成一张新图像,编号就会递增。在 ComfyUI Portable 和手动安装版本中,输出文件夹为 ComfyUI/output。

从图像加载工作流

默认情况下,Save Image 写出的每个 PNG 文件都包含生成该图像的工作流。加载下面的示例图像,将其工作流与你构建的工作流进行对比。

  1. 将此图像保存到你的计算机:

ComfyUI 文生图示例图像:一个紫色的星系瓶子,文件中保存了该工作流

  1. 将 PNG 文件拖到画布上。你也可以点击左侧边栏中的 ComfyUI 标志(菜单),选择 文件 > 打开,然后选择该文件。

图像中的工作流会打开。如果出现的是 Load Image 节点,说明你拖入的文件中没有保存工作流。

修复缺失的模型

当你加载的工作流所用的模型文件不在你的模型文件夹中时,ComfyUI 会显示一条提示,指出缺失的模型,例如 v1-5-pruned-emaonly-fp16.safetensors is missing。

  1. 点击查看详情。右侧面板会打开问题标签页,并在缺失模型下列出该文件。文件应放入的文件夹(例如 checkpoints)会显示在文件名下方。
  2. 如果该行有下载按钮,请点击它。
  3. Comfy Desktop:Comfy Desktop 会将文件下载到你DOWNLOADS 模型文件夹中的 checkpoints 文件夹。
  4. ComfyUI Portable 和手动安装:浏览器会下载该文件。请将其移动到 checkpoints 文件夹,参见将模型放入 checkpoints 文件夹。
  5. 如果该行没有下载按钮,请自行获取文件:
  6. 点击文件名旁的链接图标。该链接图标会复制下载链接(复制链接);当工作流没有链接时,则复制文件名(复制模型名称)。
  7. 下载该文件。本教程使用的模型请参见下载模型。
  8. 将文件移动到文件名下方标注的文件夹中,例如 checkpoints。
  9. 点击缺失模型标题栏中的刷新(圆形箭头),或按 R,让 ComfyUI 重新检查模型文件夹。

只要满足以下任一条件,缺失模型的行就不会显示下载按钮:

  • 工作流没有该模型的下载链接。从图像加载工作流中的示例图像就属于这类工作流。
  • 下载链接不是 Hugging Face 或 Civitai 链接。
  • 文件名不以 .safetensors、.sft、.ckpt、.pth 或 .pt 结尾。
  • 工作流未说明该文件应放入哪个模型文件夹。
[!NOTE] Comfy Cloud 对缺失模型从不显示下载,而是显示导入,以便你将模型导入 Comfy Cloud。由不支持导入模型的节点所使用的模型会列在不支持导入下。

故障排除

当运行失败或模型文件无法加载时,请参考以下条目。

缺少必需输入

某个输入没有连线。提示消息会指明节点和输入的名称,例如 KSampler is missing a required input: latent_image。请连接消息中提到的输入,然后再次运行工作流。

模型不在 checkpoint 列表中

该文件不在 ComfyUI 读取的 checkpoints 文件夹中。请将其移动到该文件夹,具体操作参见将模型放入 checkpoints 文件夹,然后按下 R。