
在 Stable Diffusion 生态中ComfyUI 以其节点式、可编程的工作流设计为高级用户和研究者提供了远超 WebUI 的灵活性与控制力。然而其陡峭的学习曲线和复杂的节点连接逻辑常常让新手望而却步也让许多从 WebUI 迁移过来的用户难以发挥其全部潜力。特别是对于 LoRA、ControlNet 等高级功能的集成与调用ComfyUI 的官方实现方式与社区插件繁多如何正确、高效地使用它们并理解其背后的参数逻辑是提升出图质量和效率的关键。本文将以一个综合性案例为线索系统性地拆解 ComfyUI 中几个核心且强大的功能官方支持的 LoRA 加载、NSFWNot Safe For Work内容控制、风格迁移、深度控制以及双采样放大。我们将从零开始构建一个可运行、可调整的工作流并深入解释每个节点的作用、参数含义以及连接逻辑。无论你是刚刚接触 ComfyUI还是希望深化对工作流设计的理解本文都将提供一个从概念到实践再到问题排查的完整路径。1. 理解 ComfyUI 的核心工作流与节点在开始构建复杂工作流之前必须理解 ComfyUI 的基本运作原理。它不是一个“点选即用”的工具而是一个可视化编程环境。1.1 节点与连接数据流的可视化ComfyUI 中的每个功能单元都是一个“节点”Node。节点有输入端口和输出端口。例如一个“加载模型”节点其输出是模型数据一个“CLIP 文本编码”节点输入是文本和 CLIP 模型输出是文本的条件张量。通过连线将这些端口连接起来就构成了一个数据处理“管道”或“工作流”。所有操作从读取图片、编码提示词、运行模型采样到后期处理都通过节点完成。这种设计的好处是流程完全透明、可定制、可复用。缺点是你需要清楚地知道数据如图片、潜空间、条件、模型是如何在不同节点间流动的。1.2 工作流文件保存与分享你的所有节点和连接关系最终会保存为一个.json或.png文件这就是工作流文件。分享工作流就是分享这个文件。在 ComfyUI 管理器中你可以直接加载他人分享的.png工作流图片系统会自动解析其中的节点结构。对于本文将要构建的工作流理解以下核心数据流至关重要模型/检查点路径-Load Checkpoint节点 - 模型、CLIP、VAE 数据。正面/负面提示词CLIP 模型-CLIP Text Encode节点 - 条件张量。图片-Load Image节点 - 图片张量。图片张量预处理器-ControlNet Apply节点 - 附加条件。模型条件潜空间-KSampler节点 - 生成的潜空间。潜空间VAE-VAE Decode节点 - 最终像素图像。2. 环境准备与基础工作流搭建在进入高级功能之前我们需要一个稳定、可用的 ComfyUI 运行环境并搭建一个最基础的文生图流程作为起点。2.1 环境部署方案选择对于大多数用户推荐以下两种部署方式方案一使用秋叶大佬的整合包推荐新手这是最快捷的方式集成了 ComfyUI、常用插件、依赖和启动器。从可靠来源如秋叶的 GitHub 发布页或 B站视频简介下载最新整合包。解压到不含中文和空格的路径例如D:\ComfyUI_windows_portable。双击运行run_nvidia_gpu.batN卡或相应的启动脚本。启动后在浏览器中打开http://127.0.0.1:8188即可访问界面。方案二从源码安装适合开发者或需要深度定制确保已安装 Python3.10 或 3.11和 Git。打开终端克隆官方仓库git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI安装依赖pip install -r requirements.txt下载必要的模型文件如 Stable Diffusion 1.5 或 SDXL 检查点放入ComfyUI/models/checkpoints目录。启动python main.py2.2 模型文件目录结构无论哪种安装方式模型文件的组织都至关重要。一个清晰的目录结构能避免很多节点找不到模型的错误。ComfyUI/ ├── models/ │ ├── checkpoints/ # 放置大模型 (.safetensors, .ckpt) │ ├── loras/ # 放置 LoRA 模型 (.safetensors) │ ├── controlnet/ # 放置 ControlNet 模型 (.safetensors, .pth) │ ├── vae/ # 放置 VAE 模型 │ ├── clip/ # 放置 CLIP 模型 │ ├── clip_vision/ # 放置 CLIP Vision 模型用于IP-Adapter等 │ └── upscale_models/ # 放置超分模型如ESRGAN ├── output/ # 生成图片的默认输出目录 ├── input/ # 用于放置输入图片的目录 └── ...请将你下载的各类模型文件放入对应的文件夹。例如从 Civitai 下载的 LoRA 文件应放入models/loras/。2.3 构建最简文本生成图像工作流让我们在 ComfyUI 中手动搭建一个基础流程这有助于理解后续复杂功能的添加。添加加载检查点节点在空白处右键 -Add Node-Loaders-Load Checkpoint。这个节点负责载入你的基础大模型如sd_xl_base_1.0.safetensors。添加提示词编码节点右键 -Add Node-Conditioning-CLIP Text Encode (Prompt)。需要添加两个一个用于正面提示词prompt一个用于负面提示词negative prompt。连接 CLIP 模型将Load Checkpoint节点的CLIP输出端口分别连接到两个CLIP Text Encode节点的clip输入端口。添加采样器节点右键 -Add Node-Sampling-KSampler。这是核心生成节点。连接采样器将Load Checkpoint节点的MODEL输出连接到KSampler的model输入。将正面CLIP Text Encode节点的CONDITIONING输出连接到KSampler的positive输入。将负面CLIP Text Encode节点的CONDITIONING输出连接到KSampler的negative输入。添加 VAE 解码节点右键 -Add Node-Latent-VAE Decode。连接 VAE 并输出将Load Checkpoint节点的VAE输出连接到VAE Decode节点的vae输入。将KSampler节点的LATENT输出连接到VAE Decode节点的samples输入。添加保存图像节点右键 -Add Node-Image-Save Image。最终连接将VAE Decode节点的IMAGE输出连接到Save Image节点的images输入。现在你的工作流应该具备完整的生成链条。在CLIP Text Encode节点中输入提示词例如“a photo of a cat”设置好KSampler的参数如 steps20, cfg7, samplereuler, schedulernormal点击“Queue Prompt”即可生成图片并保存到output文件夹。3. 集成官方 LoRA 与 NSFW 控制LoRA 是微调大模型、注入特定风格或概念的高效方式。ComfyUI 官方原生支持 LoRA 加载无需额外插件但需要正确连接。3.1 官方 LoRA 加载节点详解在 ComfyUI 中LoRA 不是直接加载到模型里而是通过一个“应用”节点动态地修改已加载的模型权重。添加 LoRA 加载器节点右键 -Add Node-Loaders-Lora Loader。关键连接这是最容易出错的一步。Lora Loader节点需要“包裹”住你的原始模型和 CLIP。输入将之前Load Checkpoint节点的MODEL输出连接到Lora Loader节点的model输入。同样将CLIP输出连接到lora_loader的clip输入。输出将Lora Loader节点的MODEL输出连接到KSampler的model输入取代之前直接来自Load Checkpoint的连接。将其CLIP输出连接到CLIP Text Encode节点的clip输入同样取代原有连接。参数配置lora_name: 点击输入框会弹出models/loras/目录下的文件列表选择你的 LoRA 文件如sd_xl_offset_example.safetensors。strength_model: 控制 LoRA 对模型权重的强度。通常范围在 0 到 1 之间1 表示完全应用。对于风格类 LoRA常用 0.6-0.8对于人物特征类可能用到 0.8-1.0。strength_clip: 控制 LoRA 对 CLIP 文本编码器的强度。许多 LoRA 只影响模型不影响 CLIP此时可以保持为 1.0 或与strength_model一致。如果 LoRA 专门针对文本编码微调可以调整此值。注意一个工作流中可以串联多个Lora Loader节点以实现多个 LoRA 的混合。连接顺序会影响最终效果后应用的 LoRA 可能会覆盖前者的部分特征。3.2 NSFW 内容的理解与控制NSFW 在 AI 绘图中通常指涉及暴力、成人等不适宜公开场合的内容。控制 NSFW 并非通过一个“开关”而是通过一系列技术手段来引导或限制模型的生成方向。1. 提示词工程最直接有效 在负面提示词negative prompt中明确加入你不希望出现的元素描述。这是最基础且强大的控制方式。通用负面词nsfw, nude, naked, ...(具体词汇取决于你想过滤的内容)。风格强化加入safe, sfw, family friendly, professional等词可以强化“安全”的倾向。使用 LoRA存在专门用于“净化”或导向安全风格的 LoRA 模型加载它们可以显著降低 NSFW 内容的生成概率。2. 采样器与参数调整cfg scale分类器自由引导尺度。较高的值如 10-15会使生成结果更严格地遵循提示词包括负面提示词从而更好地抑制 NSFW 内容。但过高会导致图像过饱和、失真。Sampler某些采样器可能对提示词更敏感。可以尝试不同的采样器观察效果。3. 外部过滤与审查 对于生产环境生成后的图像需要经过一个独立的内容安全审查接口如使用基于 CLIP 或专门训练的 NSFW 分类模型进行过滤。这在 ComfyUI 中可以通过自定义节点或外部 API 调用来实现但这属于更高级的集成范畴。工作流集成示例 假设我们有一个名为pure_style.safetensors的、倾向于生成清新风格的 LoRA同时想避免成人内容。在基础工作流中插入Lora Loader节点加载pure_style.safetensors强度设为 0.7。在负面提示词编码节点中输入nsfw, nude, sexy, blood, gore, deformed, ugly。设置KSampler的cfg scale为 9。 这样我们就组合使用了 LoRA 风格引导、负面提示词排斥和 CFG 强化三种手段来控制输出。4. 实现风格迁移与深度控制风格迁移和深度控制是 ComfyUI 结合 ControlNet 等插件所能实现的强大功能。这里我们以 ControlNet 为例因为它是最成熟、节点支持最完整的方案之一。4.1 安装 ControlNet 预处理器与模型首先确保你有 ControlNet 节点。秋叶整合包通常已内置。如果没有可通过 ComfyUI Manager 安装。点击界面上的 “Manager” 按钮如果有或访问http://127.0.0.1:8188/manager。在 “Install Custom Nodes” 标签页搜索 “ControlNet”找到并安装ComfyUI-Impact-Pack或ComfyUI-ControlNet等包它们通常包含丰富的 ControlNet 节点。然后下载 ControlNet 模型。对于风格迁移常用t2i-adapter系列或control_v11p_sd15_scribble等对于深度控制则需control_v11f1p_sd15_depth或depth-sdxl等。将下载的.safetensors文件放入models/controlnet/目录。4.2 基于 ControlNet 的风格迁移工作流风格迁移的核心是使用一张风格图通过 ControlNet如风格迁移适配器来约束生成图像的风格同时用文本提示词控制内容。添加图像加载节点右键 -Add Node-Loaders-Load Image。加载你的风格参考图。添加 ControlNet 应用节点右键 -Add Node-Conditioning-Apply ControlNet。添加 ControlNet 加载节点右键 -Add Node-Loaders-Load ControlNet Model。选择对应的风格迁移 ControlNet 模型如t2iadapter_style_sd14v1.pth。连接节点将Load Image节点的IMAGE输出连接到Apply ControlNet节点的image输入。将Load ControlNet Model节点的CONTROL_NET输出连接到Apply ControlNet节点的control_net输入。关键步骤将正面CLIP Text Encode节点的CONDITIONING输出连接到Apply ControlNet节点的conditioning输入。然后将Apply ControlNet节点的CONDITIONING输出连接到KSampler节点的positive输入。这样就实现了条件信息的“过桥”。配置参数strength: ControlNet 的强度。对于风格迁移可能需要较高的值如 0.8-1.0来确保风格被充分采纳。start_percent/end_percent: 控制 ControlNet 在生成过程的哪个阶段生效。通常风格迁移需要全程生效所以设为 0.0 和 1.0。现在你的提示词描述内容生成的图像将尽力匹配风格图的色调、笔触、纹理等风格特征。4.3 基于深度图的生成控制深度控制常用于保持输入图像如一张室内设计图的几何结构只替换其内容如将空房间变成有家具的房间。准备深度图你需要一张与目标图像对应的深度图。可以使用MiDaS或Zoe等深度估计算法从原图生成或使用 3D 软件渲染。在 ComfyUI 中可以使用MiDaS或Zoe深度估算节点在Image-Preprocessors下找到来自动生成。添加深度图加载节点使用Load Image节点加载你的深度图黑白或彩色表示深度。添加深度 ControlNet 应用节点流程与风格迁移类似。添加Load ControlNet Model选择深度模型如control_v11f1p_sd15_depth.safetensors。添加Apply ControlNet节点。连接深度图 -Apply ControlNet的image深度 ControlNet 模型 -control_net正面条件 -conditioning输入输出 -KSampler的positive。参数配置strength: 深度控制强度。通常 0.6-0.9太高可能导致图像过于僵化失去创造性。start_percent/end_percent: 深度控制通常在生成早期更重要可以设置end_percent为 0.6-0.8让模型在后期有一定自由度。5. 高级技巧双采样放大与工作流优化在获得满意的构图后低分辨率往往细节不足。双采样放大是一种在生成后提升分辨率并补充细节的有效方法。5.1 双采样放大原理与节点配置双采样Two-Step Upscaling通常指先以较低分辨率生成图像第一步采样然后以该图像为起点在更高分辨率下进行第二次采样第二步采样同时可能加入微调提示词或使用专门的超分模型。在 ComfyUI 中一个常见的双采样工作流如下第一步生成低分辨率潜空间。使用我们之前构建的完整流程含 LoRA、ControlNet等在KSampler中设置一个较小的分辨率如 512x768。将其LATENT输出连接到一个VAE DecodeSave Image用于预览同时将其LATENT输出连接到下一步的输入。第二步潜空间放大。在第一个KSampler之后添加一个Latent-Upscale Latent By节点或使用Latent Upscale节点。将第一个采样器的LATENT输出连接到此节点的samples输入。设置upscale_method如nearest-exact,bilinear,lanczos和width,height目标分辨率如 1024x1536。第三步高分辨率重绘。添加第二个KSampler节点。将放大后的潜空间Upscale Latent By节点的LATENT输出连接到第二个KSampler的latent_image输入。模型、正面/负面条件可以与第一个采样器共享直接连线过来。关键调整降低第二个采样器的denoise值如 0.2-0.4。这表示在第二步中只对放大后图像的部分细节进行重绘而不是完全重新生成从而保持构图一致并增加细节。可以适当降低cfg scale和采样步数steps因为主体已确定。第四步解码并保存。将第二个KSampler的LATENT输出连接到最终的VAE Decode和Save Image。5.2 工作流组织与性能优化当节点越来越多时工作流会变得杂乱。以下技巧可以提升可维护性使用节点组选中多个相关节点按CtrlG将它们编组可以折叠、命名、移动整个功能模块。使用注释右键空白处 -Add Sticky Note可以添加文字注释说明某个区域的功能。利用 Reroute 节点当连线过长或交叉时可以添加Reroute节点在节点搜索框中输入作为中转点让布线更清晰。模型缓存对于大型模型频繁加载会消耗时间。确保你的Load Checkpoint、Load ControlNet Model、Load LoRA节点在流程中只被调用一次其输出被多处复用。分辨率与批次大小在Empty Latent Image节点或KSampler中设置分辨率。增大batch_size可以一次生成多张图但会显存占用翻倍。根据你的 GPU 显存量力而行。6. 常见问题排查与参数调优指南即使按照教程连接也可能会遇到各种问题。下面是一些常见故障及其排查思路。6.1 节点连接与执行错误问题现象可能原因检查与解决点击“Queue Prompt”后无反应或提示错误1. 节点连线类型不匹配如图像连到了潜空间。2. 必需的输入端口未连接。3. 模型文件路径错误或缺失。1. 检查所有连线确保输出/输入数据类型匹配悬停在线上看提示。2. 检查每个节点的输入端口是否都有连接红色表示未连接。3. 检查控制台或浏览器开发者工具F12的 Console 标签页看是否有具体的文件未找到错误。确认模型文件在正确的models/子目录下。生成结果全黑、全灰或扭曲1. VAE 未正确连接或选择错误。2. 使用了不兼容的模型/LoRA如 SD1.5 的 LoRA 用在 SDXL 上。3. CFG Scale 过高或过低。1. 确保VAE Decode节点的vae输入连接正确且来自Load Checkpoint或指定的 VAE 模型。2. 确认基础模型、LoRA、ControlNet 的版本匹配SD1.5 系列互配SDXL 系列互配。3. 尝试将 CFG Scale 调整到 5-9 的常用范围。LoRA 或 ControlNet 效果不明显或过强强度参数 (strength,strength_model,strength_clip) 设置不当。1. LoRA: 从 0.5-0.7 开始尝试strength_model。2. ControlNet: 从 0.6-0.8 开始尝试strength。对于start_percent/end_percent深度/线稿类控制可以全程0.0, 1.0风格类可以尝试0.0, 0.8。3. 进行小范围参数测试每次只调整一个变量。双采样放大后图像模糊或细节怪异第二步采样的denoise值设置不当。denoise控制重绘强度。值太高如 0.8等于几乎重画可能偏离原图值太低如 0.1则细节补充不足。针对高清修复0.2-0.4 是常用区间。需要根据具体模型和内容调整。6.2 参数调优速查表以下参数没有绝对最优值需要根据模型、主题和个人审美反复试验。参数所在节点常用范围影响说明StepsKSampler20-30采样步数。步数越多细节可能越丰富但生成越慢。超过一定阈值如 30后收益递减。CFG ScaleKSampler5-9 (文生图)2-5 (图生图/重绘)提示词跟随程度。值越高越贴近提示词但可能降低图像自然度和多样性。过高会导致颜色过饱和、线条生硬。SamplerKSamplereuler, euler_ancestral, dpmpp_2m, dpmpp_2m_sde不同采样器有不同特性。euler系列速度快dpmpp_2m系列通常细节更好。dpmpp_sde系列随机性更强。SchedulerKSamplernormal, karras, simple调度器影响采样节奏。karras通常能产生更锐利、对比度更高的图像。DenoiseKSampler (用于图生图/重绘)0.2-0.4 (高清修复)0.5-0.8 (强风格迁移)重绘强度。1.0 代表完全忽略输入图像0.0 代表完全保留。LoRA StrengthLora Loader0.5-1.0LoRA 权重应用强度。建议从 0.7 开始测试。多个 LoRA 叠加时总强度可能需降低。ControlNet StrengthApply ControlNet0.6-1.0ControlNet 条件强度。需要根据控制类型调整深度/线稿可高风格/色彩可中。6.3 高级排查使用提示词分析如果效果始终不理想可以暂时剥离复杂控制回归基础。只使用基础模型和简单提示词生成确认模型本身工作正常。逐步添加 LoRA观察变化是否符合预期。再逐步添加 ControlNet每次只加一个确认其单独作用的效果。最后将所有节点组合。这种方法能帮你定位是哪个环节导致了问题。7. 生产环境建议与扩展方向当你熟悉了基本工作流后可以考虑以下优化和扩展以用于更稳定、更高效的创作或生产流程。7.1 工作流模板化与 API 调用对于固定流程可以将其保存为模板。ComfyUI 支持通过 API 进行调用这允许你将其集成到自动化脚本或其他应用中。将调试好的工作流保存为.json文件。研究 ComfyUI 的 API 文档通常位于http://127.0.0.1:8188/docs了解如何通过 HTTP POST 请求传递提示词、种子等参数并触发工作流执行。你可以编写 Python 脚本动态修改工作流.json中的特定节点参数然后通过 API 提交实现批量化、参数化的生成。7.2 性能与资源管理显存优化使用--lowvram或--medvram命令行参数启动 ComfyUI可以在显存不足时尝试优化。但可能会降低速度。模型卸载在KSampler节点后可以添加Model Unloading相关节点如有及时释放显存这在处理多步复杂工作流时有用。使用 TAESD对于快速预览可以使用 TAESD 解码器一种轻量级 VAE它能极大加快潜空间到图像的解码速度虽然会损失一些细节。7.3 探索更多节点与插件ComfyUI 的生态非常活跃。通过 ComfyUI Manager你可以探索和安装无数社区插件实现面部修复与高清修复如FaceDetailer节点。多 ControlNet 融合同时应用深度、线稿、姿态等多个控制条件。区域提示词控制使用Regional Prompter等插件为图像的不同区域指定不同的提示词。工作流条件逻辑实现基于生成结果的判断和分支流程。构建复杂工作流的关键在于耐心和模块化思维。将大目标拆解为“加载模型”、“编码提示词”、“应用控制条件”、“生成”、“后处理”等独立模块逐一实现和测试最后将它们像拼图一样组合起来。每一次成功的生成和每一次对问题的排查都会让你对 Stable Diffusion 的生成机制和 ComfyUI 的强大控制力有更深的理解。