ComfyUI工作流入门:从零搭建Stable Diffusion文生图流程
ComfyUI 这个工具第一次打开的时候绝大多数人的反应都是一样的满屏的框框和线左边一堆看不懂的英文节点右边一片空白画布完全不知道从哪里下手。我见过太多人在这一步就放弃了转头回去继续用 WebUI 那种填提示词、点生成的傻瓜模式。但只要你熬过最初那半小时的迷茫期把第一个工作流跑通就会发现这东西的逻辑其实比想象中简单得多——它无非就是把加载模型、写提示词、采样、解码、保存这几件事从隐藏的后台逻辑变成了你可以亲手拖拽、连线、调整的积木块。这篇内容就是写给那些想从零搭起第一个 ComfyUI 工作流的人。不管你是刚装好秋叶整合包的新手还是用了一段时间 WebUI 想进阶的老玩家我都会把从界面认知、节点连线、参数配置到出图验证的完整链路拆开讲清楚。核心关键词就几个ComfyUI、工作流、Stable Diffusion、节点、WebUI。读完你应该能独立搭出一个能出图的文生图流程并且知道每个节点为什么这么连、参数为什么这么设。1. 先搞清楚 ComfyUI 和 WebUI 到底差在哪1.1 一个把逻辑藏起来一个把逻辑摊开给你看WebUI 的设计哲学是你不需要知道背后发生了什么。你打开界面看到的是提示词输入框、采样步数滑块、CFG 数值、尺寸选择点一下生成图片就出来了。整个 Stable Diffusion 的推理流程——文本编码、潜空间采样、VAE 解码——全部被封装在一个黑盒里。这对快速出图很友好但一旦你想改点非标准的东西比如换一种采样调度、在采样中途插入 ControlNet、或者对潜空间做特殊处理就会发现自己被界面限制死了。ComfyUI 反过来它把整个推理流程拆成了一个个独立的节点。文本编码是一个节点采样是一个节点VAE 解码是一个节点保存图片又是一个节点。这些节点之间用连线表示数据流向。你看到的不是一个生成按钮而是数据从哪来、经过什么处理、到哪去的完整地图。这就是工作流workflow的本质——它是一张可执行的计算图。我个人的判断是如果你只是偶尔生成几张图玩玩WebUI 够用但如果你想做批量生产、想精确控制每一个环节、想复现别人的效果、想把流程固化下来反复使用那 ComfyUI 的工作流模式是绕不过去的。它前期学习成本高但后期效率提升是指数级的。1.2 节点式工作流为什么值得你花时间学节点式编程这个概念其实不新鲜影视后期的 Nuke、三维软件的材质节点、甚至音频处理的模块化合成器都是这个思路。它的好处在于三点。第一是透明。每个节点的输入输出都摆在明面上你出图效果不对可以逐节点排查——是模型加载错了还是提示词编码有问题还是采样器参数不对。WebUI 里你只能猜ComfyUI 里你能看。第二是可复用。一个调好的工作流可以保存成 JSON 文件分享给别人别人导入后只要模型路径对得上就能得到几乎一样的效果。这就是为什么现在网上那么多人在分享 ComfyUI 工作流——它把经验变成了文件。第三是可扩展。ComfyUI 支持自定义节点社区里已经有人写了成千上万个插件节点从 ControlNet、IPAdapter 到各种后处理你需要的功能大概率已经有人做好了拖进来连上就行。提示不要把 ComfyUI 当成更复杂的 WebUI。它的思维模式是搭流程不是调参数。心态转过来学习曲线会平缓很多。2. 装好之后先别急着连线把界面认全2.1 秋叶整合包和官方版的取舍国内用户接触 ComfyUI大概率第一个遇到的就是秋叶整合包。这个东西的价值在于它把 Python 环境、依赖库、常用模型、启动脚本全部打包好了解压即用省去了手动配环境的痛苦。对于没有 Python 基础的人来说这是最省事的入门方式。但我要提醒一点整合包方便代价是版本可能滞后而且有些自定义节点的安装会因为环境被改动过而出现依赖冲突。我的建议是新手阶段用整合包快速跑通流程等你对 ComfyUI 的目录结构、节点管理、模型存放位置都熟悉了再考虑迁移到官方版或者用便携版自己管理环境。官方版也就是从代码仓库直接拉取的那种的优势是版本最新、插件兼容性好、出问题容易查。缺点是安装需要一点命令行基础。两条路都行关键是先跑起来别卡在安装环节。2.2 画布、节点面板、队列这三块区域打开 ComfyUI 后界面大致分三块。中间最大的区域是画布你所有的节点都摆在这里可以拖动、缩放、框选。左侧或者右键菜单里是节点面板按类别列出了所有可用节点比如 loaders加载器、conditioning条件、samplers采样器、latent潜空间、image图像等等。右侧通常有一个队列面板显示当前排队和正在执行的任务。画布的操作逻辑和大多数图形软件类似滚轮缩放按住空格或者中键拖动平移框选可以选中多个节点Delete 删除。节点之间的连线叫 link从输出端口右侧的小圆点拖到输入端口左侧的小圆点就能建立连接。端口有颜色区分比如模型是紫色、潜空间是粉色、图像是蓝色颜色对不上通常连不上这是 ComfyUI 在帮你做类型检查。2.3 默认工作流其实已经能出图很多人不知道ComfyUI 启动后默认加载的那个工作流本身就是一个完整的文生图流程。它包含了一个 Checkpoint Loader、两个 CLIP Text Encode正负提示词、一个 KSampler、一个 VAE Decode、一个 Save Image。你只要在 Loader 里选好模型在正向提示词里写点东西点一下队列就能出图。所以第一个工作流其实不用你从零搭先拿默认的跑一遍观察数据是怎么流动的然后再尝试删掉某个节点、重新连上感受一下断链和接通的区别。这种破坏性学习比看十篇教程都管用。3. 从零搭一个文生图工作流节点逐个拆解3.1 Checkpoint Loader一切的起点工作流的第一个节点永远是模型加载器。在节点面板里搜 Load Checkpoint 或者 Checkpoint Loader拖到画布上。这个节点的作用是把一个 Stable Diffusion 大模型通常是 .safetensors 或 .ckpt 文件加载进显存并且把它拆成三个部分输出MODELUNet 主体、CLIP文本编码器、VAE图像解码器。这三个输出端口很关键。MODEL 要连给采样器CLIP 要连给文本编码节点VAE 要连给解码节点。很多人第一次搭的时候会把这三个搞混记住一个口诀模型给采样CLIP 给文字VAE 给解码。模型文件放在ComfyUI/models/checkpoints/目录下。如果你用的是秋叶整合包这个路径通常在整合包根目录的models文件夹里。放进去之后在 Loader 节点的下拉菜单里刷新一下就能看到。注意模型文件名不要用中文也不要有特殊字符否则某些情况下会加载失败。这是个很隐蔽的坑我踩过。3.2 CLIP Text Encode正负提示词怎么接从 Loader 的 CLIP 输出拉两条线分别连到两个 CLIP Text Encode 节点。一个用来写正向提示词你想要什么一个用来写负向提示词你不想要什么。这两个节点的输出都是 CONDITIONING 类型分别连到采样器的 positive 和 negative 输入。这里有个细节CLIP Text Encode 节点里的文本是支持权重的语法是(关键词:权重值)比如(masterpiece:1.3)表示加强这个词的影响。权重范围一般在 0.5 到 1.5 之间超过这个范围容易出问题。负向提示词里常用的有worst quality, low quality, blurry, bad anatomy这类具体写什么取决于你的模型和需求。我个人的习惯是正向提示词按质量词 主体描述 风格词 细节词的顺序组织负向提示词保持精简不要堆太多否则会压制模型的发挥空间。3.3 KSampler核心中的核心KSampler 是整个工作流的心脏。它的输入有四个MODEL来自 Loader、positive来自正向编码、negative来自负向编码、latent_image来自一个 Empty Latent Image 节点。输出是一个 LATENT也就是采样后的潜空间表示。KSampler 的参数比较多逐个说。seed是随机种子固定它就能复现同一张图。steps是采样步数一般 20 到 30 就够太高收益递减。cfg是提示词引导强度7 到 8 是常见值太高会过饱和太低会不听话。sampler_name是采样算法新手用euler或dpmpp_2m都行。scheduler是调度器normal或karras常用。denoise是去噪强度文生图保持 1.0图生图才需要调低。Empty Latent Image 节点负责定义出图尺寸。它的 width 和 height 必须是 8 的倍数因为 VAE 的下采样倍率是 8。常见的 512x512、512x768、768x512 都符合。batch_size 控制一次生成几张。3.4 VAE Decode 和 Save Image把潜空间变回图片采样器输出的是 LATENT人眼是看不懂的必须经过 VAE Decode 节点转换成 IMAGE 类型。这个节点的输入是 samples来自 KSampler 的 LATENT和 vae来自 Loader 的 VAE 输出。转换出来的 IMAGE 连到 Save Image 节点就能保存到ComfyUI/output/目录下。Save Image 节点有一个 filename_prefix 参数可以给输出文件加前缀方便分类管理。比如你设成txt2img_test出来的文件就是txt2img_test_00001_.png这种格式。到这里一个最小的文生图工作流就搭完了。节点清单如下节点作用关键输入关键输出Checkpoint Loader加载大模型模型文件MODEL, CLIP, VAECLIP Text Encode (正)编码正向提示词CLIP, 文本CONDITIONINGCLIP Text Encode (负)编码负向提示词CLIP, 文本CONDITIONINGEmpty Latent Image定义出图尺寸宽高、批次LATENTKSampler采样生成MODEL, 正负条件, LATENTLATENTVAE Decode潜空间转图像LATENT, VAEIMAGESave Image保存图片IMAGE文件4. 连线连不上、出图报错这些坑我替你踩过了4.1 端口颜色对不上就是连不上ComfyUI 的端口是有类型系统的。MODEL 是紫色CLIP 是黄色VAE 是红色CONDITIONING 是橙色LATENT 是粉色IMAGE 是蓝色。你从 LATENT 输出往 IMAGE 输入上拖是连不上的因为类型不匹配。这不是 bug是设计。新手最常见的错误是把 KSampler 的 LATENT 输出直接连到 Save Image然后发现连不上以为是软件坏了。其实中间必须经过 VAE Decode。理解了这个类型系统排查连线问题就快多了。4.2 模型加载失败的两个典型原因第一个原因是模型文件放错目录。ComfyUI 只认models/checkpoints/下的模型你放在models/根目录或者别的地方它都看不到。第二个原因是模型文件损坏或者格式不对。有些从网上下载的模型是分片的需要合并有些是 .ckpt 格式但缺少配套的配置文件。遇到加载失败先检查路径再检查文件完整性。还有一个隐蔽的坑显存不够。大模型加载需要几个 G 的显存如果你的显卡显存比较小加载大模型时会直接报错或者卡死。这时候可以试试用 fp16 精度加载或者换小一点的模型。4.3 出图全黑或者全灰是怎么回事出图全黑最常见的原因是 VAE 不匹配。有些模型自带 VAE有些需要外挂 VAE。如果你用的模型没有内置 VAE而 Loader 又没有正确加载 VAE解码出来的图就会是黑的或者灰的。解决办法是在 Loader 里确认 VAE 输出正常或者单独加一个 VAE Loader 节点手动指定 VAE 文件。另一个原因是 CFG 设得太低比如设成 1.0模型几乎不响应提示词出来的图就是噪声。检查一下 KSampler 的 cfg 值正常应该在 6 到 9 之间。4.4 工作流保存和导入的注意事项调好的工作流一定要保存。ComfyUI 支持把工作流导出成 JSON 文件也可以直接保存成图片把工作流信息嵌入 PNG 的元数据里。导入的时候如果工作流里用到的模型或者自定义节点你没有会报错或者显示成红色节点。所以分享工作流的时候最好附上模型清单和插件清单。自己保存工作流的时候也建议在文件名里标注清楚用的什么模型、什么插件方便以后回溯。5. 跑通之后怎么把这个工作流用起来5.1 固定种子做对比测试工作流跑通之后第一件值得做的事是固定 seed然后只改一个参数观察输出变化。比如固定 seed 和提示词只改 steps从 10 到 30 各跑一张你就能直观看到步数对画质的影响。这种控制变量法比看任何教程都有效因为它建立的是你自己的直觉。5.2 把常用配置存成模板如果你经常用某几个模型、某几组参数可以把它们存成不同的工作流模板。比如写实人像模板二次元模板风景模板每个模板里预设好模型、提示词框架、采样参数。用的时候直接加载改改提示词就能出图效率提升非常明显。5.3 从文生图扩展到图生图文生图工作流是基础理解了它之后扩展到图生图只需要改两个地方把 Empty Latent Image 换成 Load Image 加 VAE Encode把 KSampler 的 denoise 调低到 0.5 到 0.8 之间。这样输入就变成了一张参考图 提示词输出是基于参考图的新图。再往后你可以往工作流里加 ControlNet 节点控制构图加 IPAdapter 节点控制风格加 Upscale 节点提升分辨率。每加一个节点工作流的能力就扩展一层。但前提是你得先把最基础的那个文生图流程彻底搞明白。我在实际使用中最大的体会是ComfyUI 的学习曲线陡峭但回报丰厚。第一个工作流搭通的那一刻你会突然理解 Stable Diffusion 到底在干什么——它不再是一个魔法黑盒而是一条你可以亲手调整的生产线。这种掌控感是 WebUI 给不了的。