
在实际的 AI 图像生成与视频创作领域从 Stable Diffusion WebUI 转向 ComfyUI 正成为一种趋势。ComfyUI 以其节点式、可编程、高可控性的工作流设计为专业创作者和开发者提供了前所未有的灵活性与效率。然而其陡峭的学习曲线、复杂的依赖管理以及“工作流”这一核心概念的抽象性常常让初学者望而却步。本文将以一个综合性项目“RunningHub”为背景深入解析如何构建一个集成了 RHTV、故事板、VibeX 等高级功能的全功能地图式工作流。我们将从 ComfyUI 的核心概念讲起逐步完成环境部署、基础工作流搭建、高级功能集成并最终实现一个可运行、可复现的完整项目。无论你是希望从零开始掌握 ComfyUI还是想将现有项目升级为更强大的自动化流程本文都将提供一条清晰的实践路径。1. 理解 ComfyUI 的核心节点、工作流与执行图在开始动手之前必须摒弃传统 GUI 工具的线性操作思维。ComfyUI 的核心是有向无环图。你的创作过程从加载模型、输入提示词到生成图像、后期处理都被拆解为一个个独立的“节点”。节点之间通过“连接”传递数据如图像、潜变量、条件信息最终形成一个完整的执行图即“工作流”。1.1 为什么选择节点式工作流传统工具如 Stable Diffusion WebUI其流程是固化的文生图 - 图生图 - 后期处理。每一步的输入输出相对固定。而 ComfyUI 的节点式设计带来了几个关键优势极高的灵活性你可以任意组合节点例如将 ControlNet 的输出同时送入两个不同的采样器再合并结果这在传统工具中难以实现。流程的可视化与可复用整个生成逻辑一目了然。成功的工作流可以保存为.json文件在任何兼容的 ComfyUI 环境中一键加载完美复现结果这对于团队协作和项目存档至关重要。资源利用更高效节点只在需要时执行并且可以清晰地看到数据流向便于优化和排查瓶颈。例如你可以重复使用同一个加载的模型节点而无需反复载入。易于扩展和编程通过自定义节点可以集成任何 Python 库或外部 API将 AI 生成无缝嵌入到更大的自动化流程中。1.2 核心节点类型与数据流理解数据流是构建工作流的基础。主要的数据类型包括MODEL和CLIP大模型和文本编码器。CONDITIONING条件信息通常是经过 CLIP 处理后的文本提示词正面/负面。LATENT潜空间表示是采样器处理的核心数据。IMAGE像素图像。MASK遮罩用于局部重绘等操作。一个最简单的文生图工作流其数据流大致如下Load Checkpoint(MODEL, CLIP) -CLIP Text Encode(CONDITIONING) -KSampler(LATENT) -VAE Decode(IMAGE) -Save Image。“RunningHub”项目所提及的 RHTV、故事板、VibeX 等功能本质上都是基于这个基础数据流通过引入更复杂的节点组合如循环、条件判断、视频帧处理、风格迁移来实现的。2. 环境准备从零部署一个稳定的 ComfyUI网络上存在大量整合包如“秋叶整合包”它们预装了常用节点和模型适合快速上手。但对于严肃的项目开发和生产环境从官方源码部署能提供更好的可控性和可维护性。以下我们将以 Windows 系统为例介绍两种主流的部署方式。2.1 方案一使用官方仓库手动部署推荐用于开发这种方式最干净也最利于理解 ComfyUI 的组成。安装 Python确保系统已安装 Python 3.10 或 3.11。不建议使用 3.12 及以上版本可能存在库兼容性问题。可以通过命令python --version验证。安装 Git用于克隆代码仓库。克隆仓库与安装依赖# 克隆官方仓库 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 创建并激活虚拟环境可选但强烈推荐 python -m venv venv # Windows venv\Scripts\activate # Linux/macOS # source venv/bin/activate # 安装 PyTorch根据你的CUDA版本选择以CUDA 11.8为例 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装 ComfyUI 核心依赖 pip install -r requirements.txt放置模型文件ComfyUI 默认从ComfyUI/models/下的子目录读取模型。大模型 (.safetensors, .ckpt) 放入models/checkpoints/VAE 放入models/vae/LoRA 放入models/loras/ControlNet 放入models/controlnet/其他如 Upscale 模型放入models/upscale_models/你可以通过修改extra_model_paths.yaml文件来链接到已有的 Stable Diffusion WebUI 模型目录避免重复下载。启动 ComfyUIpython main.py启动后在浏览器中访问http://127.0.0.1:8188即可看到界面。2.2 方案二使用秋叶整合包适合快速体验与学习整合包集成了大量第三方节点、管理器以及常用模型开箱即用。下载整合包从可信来源获取“秋叶 ComfyUI 整合包”。解决虚拟内存问题对于内存小于16GB的电脑生成高分辨率图像时可能爆内存。需要增加系统虚拟内存。打开“系统属性” - “高级” - “性能设置” - “高级” - “虚拟内存更改”。取消“自动管理”选择系统盘通常是C盘选择“自定义大小”。初始大小和最大值建议设置为物理内存的1.5到2倍例如16GB内存可设置为24576 MB。设置后重启电脑生效。启动与更新运行整合包内的启动脚本如run_nvidia_gpu.bat。整合包通常内置了ComfyUI Manager可以在界面内一键更新核心和节点。2.3 关键目录结构与配置文件了解目录结构有助于故障排查和自定义配置。ComfyUI/ ├── models/ # 所有模型文件 │ ├── checkpoints/ │ ├── loras/ │ ├── controlnet/ │ └── ... ├── output/ # 默认输出图像目录 ├── input/ # 默认输入图像目录 ├── custom_nodes/ # 第三方自定义节点存放处 ├── comfy/ # 核心源代码 ├── extra_model_paths.yaml # 额外模型路径配置文件 └── main.py # 启动入口extra_model_paths.yaml示例# 将 Stable Diffusion WebUI 的模型目录链接过来 a111: base_path: D:/sd-webui/stable-diffusion-webui/ checkpoints: models/Stable-diffusion vae: models/VAE loras: models/Lora upscale_models: models/ESRGAN embeddings: embeddings hypernetworks: models/hypernetworks配置后重启 ComfyUI即可在节点中直接使用 WebUI 目录下的模型。3. 构建基础工作流从文生图到可控生成让我们先搭建一个可运行的基础工作流这是后续所有高级功能的地基。3.1 创建最小文生图工作流在 ComfyUI 网页界面中右键点击空白处选择Add Node。依次添加以下节点并连接Load Checkpoint 加载你的大模型。CLIP Text Encode (Prompt) 连接Load Checkpoint的CLIP输出。在text框中输入正面提示词。CLIP Text Encode (Prompt) 另一个连接同一个CLIP。输入负面提示词。Empty Latent Image 设置生成图像的宽高和批大小。KSampler 这是核心采样器。连接Load Checkpoint的MODEL。连接正面CLIP Text Encode的CONDITIONING到positive。连接负面CLIP Text Encode的CONDITIONING到negative。连接Empty Latent Image的LATENT到latent_image。设置seed,steps,cfg,sampler_name,scheduler等参数。VAE Decode 连接KSampler的LATENT和Load Checkpoint的VAE。Save Image 连接VAE Decode的IMAGE。点击Queue Prompt生成图像。成功后界面应类似下图此处为文字描述实际为节点连接图。3.2 引入 ControlNet 进行精确控制ControlNet 允许我们使用边缘、深度、姿态等图作为条件精确控制生成内容。在原有工作流基础上添加一个Load Image节点上传你的控制图如一张人物姿势草图。添加对应的ControlNet Apply节点例如Canny或OpenPose。在ControlNet Apply节点中需要加载对应的 ControlNet 模型如control_v11p_sd15_canny.pth。将该节点的control输出连接到KSampler的positive输入。注意KSampler的positive可以接收多个输入你需要使用Conditioning (Combine)节点将文本条件来自 CLIP Text Encode和 ControlNet 条件合并再将合并后的结果输入KSampler。3.3 使用 LoRA 进行风格微调LoRA 是一种轻量化的模型用于修改生成风格或主题。添加Lora Loader节点。连接Load Checkpoint的MODEL和CLIP到Lora Loader的对应输入。在Lora Loader中指定 LoRA 模型文件位于models/loras/和强度 (strength_model,strength_clip)。将Lora Loader输出的MODEL和CLIP连接到后续的CLIP Text Encode和KSampler。至此你已经拥有了一个支持基础文生图、ControlNet 控制和 LoRA 风格化的工作流。你可以通过界面右上角的Save按钮将其保存为.json文件。4. 实现“RunningHub”高级功能工作流进阶“RunningHub”所代表的全功能地图意味着将多个复杂流程串联起来。下面我们分解其提到的功能模块。4.1 RHTV可能指 Rigging/Animation/Video构建动画或视频工作流在 ComfyUI 中制作动画或处理视频核心是使用Video Linear CFG等自定义节点或者利用Batch处理多帧。安装视频节点通过 ComfyUI Manager 搜索并安装ComfyUI-VideoHelperSuite或WAS Node Suite等节点包。加载视频并拆帧使用Load Video节点加载视频文件并用VHS_VideoCombine或类似节点拆解为图像帧列表。逐帧处理将帧列表输入到一个循环或批处理流程中。这里需要一个关键概念将你的单图生成工作流封装成一个“函数”。你可以通过使用Primitive节点如String、Int、Float作为输入然后连接你的采样管线最后将输出连接到Preview Image等节点。更高级的做法是使用efficiency节点包中的Script节点或自定义 Python 节点来编写循环逻辑。帧间一致性简单的视频生成会导致闪烁。需要引入帧间一致性技术使用 IP-Adapter将上一帧作为图像提示输入到下一帧的生成中。使用 ControlNet 的 TemporalNet专门为视频设计的 ControlNet考虑时间维度的一致性。调整 CFG Scale 和 Denoise降低去噪强度让新帧更依赖于初始潜变量。合成视频处理完所有帧后使用VHS_VideoCombine节点将图像帧列表重新编码为视频。4.2 故事板Storyboard多镜头/多条件串联生成故事板功能通常指按照预定的脚本不同的提示词、构图、角色生成一系列关联图像。定义故事节点创建一个 JSON 或 CSV 文件定义每个镜头的参数例如[ {scene: 1, prompt: a man stands in a forest, morning light, controlnet_image: scene1_pose.png, width: 512, height: 768}, {scene: 2, prompt: the man finds a key on the ground, close-up, controlnet_image: scene2_depth.png, width: 768, height: 512} ]使用脚本节点读取通过自定义节点或efficiency包中的Load Data节点读取该文件。循环工作流构建一个工作流其输入是故事节点数据提示词、控制图路径等。使用Loop节点如来自Impact Pack遍历所有故事节点每次循环将当前节点的数据注入到你的核心生成管线中。批量输出与命名确保Save Image节点能根据故事节点 ID如scene动态命名输出文件例如output/scene_1.png。4.3 VibeX 与风格融合“VibeX”可能指一种特定的风格模型、LoRA 或者是一种风格融合技术。在 ComfyUI 中实现风格融合有多种方式多 LoRA 混合串联多个Lora Loader节点每个加载不同的风格 LoRA可以混合多种风格。需要注意加载顺序和强度叠加的影响。使用 Style Models有些特定风格的大模型直接作为 Checkpoint 加载。通过提示词工程和采样参数调整这是最基础但有效的方法。在提示词中加入特定的风格艺术家或美学描述词并配合适当的sampler和scheduler。使用 IP-Adapter 进行风格参考IP-Adapter 允许你使用一张参考图来定义整体风格。添加IPAdapter节点连接风格参考图并将其输出与文本条件合并再输入采样器。4.4 集成 ComfyUI Labs 或其他自定义节点“Labs”可能指社区实验性节点或特定功能包。集成方法如下通过 ComfyUI Manager 安装这是最简便的方式。在 ComfyUI 界面中点击Manager-Install Custom Nodes搜索节点名称如ComfyUI-Impact-Pack,ComfyUI-Detailer等进行安装。手动安装在custom_nodes目录下使用git clone命令克隆节点的 GitHub 仓库然后重启 ComfyUI。使用自定义节点安装后新的节点类别会出现在右键菜单中。阅读节点的文档或源码了解其输入输出接口然后像搭积木一样将其接入你的工作流。5. 组装“全功能地图”工作流优化与调试将上述模块组合成一个稳定、高效的工作流需要解决流程编排、资源管理和错误处理问题。5.1 工作流模块化与复用一个庞大的工作流会非常混乱。最佳实践是将其模块化使用节点分组选中一组相关的节点按CtrlG创建组。可以为组命名、设置颜色并暴露关键的输入输出参数。这样一个复杂的 ControlNet 处理链可以被折叠成一个整洁的“ControlNet Module”组。保存子工作流将完成特定功能如“人脸修复”、“高清放大”的节点组保存为单独的.json文件。在主工作流中可以通过Load Workflow节点某些自定义节点提供或直接复制粘贴来导入。5.2 性能优化与参数调试使用KSamplerAdvanced它提供了更多控制选项如add_noise可以关闭以避免在 img2img 时重复添加噪声。合理设置分辨率与批大小高分辨率如 1024x1024会消耗大量显存。可以使用“潜变量放大”策略先用低分辨率512x512生成再用Latent Upscale节点放大潜变量最后进行二次精采样。这比直接生成高分辨率图像更快、更省显存。优化 VAE 选择有些 VAE 解码速度更快或效果更好。可以尝试taesd或sdxl-vae-fp16-fix等优化版 VAE。利用缓存Load Checkpoint节点在每次执行时都会重新加载模型极其耗时。在工作流开头加载一次模型并将其输出连接到所有需要的地方。对于需要切换模型的情况考虑使用Checkpoint Loader Simple节点配合条件逻辑。5.3 常见问题排查清单当工作流无法运行或产出异常结果时按此清单排查问题现象可能原因检查与解决方式点击Queue Prompt无反应控制台报错节点连接类型不匹配缺少自定义节点Python 包缺失1. 检查所有连线确保输出端口的数据类型与输入端口匹配如IMAGE不能连LATENT。2. 查看终端错误信息确认是否缺少某个自定义节点通过 Manager 安装。3. 错误信息若提示ModuleNotFoundError在虚拟环境中用pip install安装对应包。生成图像全黑、全灰或扭曲VAE 不匹配模型损坏采样参数极端1. 尝试切换不同的 VAE 模型。2. 检查模型文件是否下载完整可尝试重新下载。3. 调整cfg scale(通常 7-12)检查steps(至少20)更换sampler和scheduler。工作流加载后节点显示为红色或“Unknown Node”工作流使用了未安装的自定义节点1. 根据缺失的节点名称如ImpactPack中的节点通过 ComfyUI Manager 搜索并安装对应节点包。2. 安装后重启 ComfyUI。生成速度极慢显存溢出分辨率过高同时加载多个大模型使用了高分辨率修复节点1. 降低生成分辨率或采用潜变量放大策略。2. 检查工作流中是否无意中加载了多个 Checkpoint确保模型节点被复用。3. 对于高清修复使用UltimateSDUpscale等节点进行分块渲染。ControlNet/LoRA 效果不明显或无效模型未正确加载强度设置不当连接错误1. 确认 ControlNet/LoRA 模型文件已放入正确目录且被节点成功读取节点名称会显示模型名。2. 调整 ControlNet 的strength或 LoRA 的strength_model/strength_clip。3. 确认 ControlNet 的条件输出正确合并到了KSampler的positive输入中。自定义节点功能异常或报错节点版本与 ComfyUI 核心版本不兼容1. 通过 ComfyUI Manager 更新所有自定义节点到最新版。2. 如果问题依旧可在该节点的 GitHub 仓库的 Issues 中搜索类似问题。6. 从学习到生产工程化实践建议当你掌握了工作流构建并希望将其用于实际项目或团队协作时需要考虑以下工程化问题。6.1 工作流版本管理与分享保存工作流始终保存你的.json工作流文件。这是复现结果的唯一可靠方式。嵌入预览图在保存时勾选Save with preview image这样.json文件中会包含一张工作流缩略图便于识别。文档化为复杂的工作流创建简短的README说明其功能、所需模型、关键参数含义。使用 Git将工作流.json文件、自定义节点的安装脚本、模型清单 (requirements.txt的模型版) 纳入版本控制。6.2 通过 API 实现自动化ComfyUI 提供了强大的 API允许你从外部程序如 Python 脚本、Web 应用驱动工作流执行。启用 API启动时添加参数--listen或确保配置正确。获取工作流 API 格式在 Web 界面中构建好工作流后点击Save (API Format)会得到一个包含所有节点和连接信息的 JSON。这个 JSON 就是 API 调用的 payload。Python 调用示例import requests import json def queue_prompt(prompt_workflow): # ComfyUI 服务器地址 server_address 127.0.0.1:8188 # 发送 POST 请求到 /prompt 端点 response requests.post(fhttp://{server_address}/prompt, json{prompt: prompt_workflow}) return response.json() # 加载你保存的 API 格式工作流 JSON 文件 with open(my_workflow_api.json, r) as f: workflow_api json.load(f) # 在发送前可以动态修改工作流中的参数例如提示词 # workflow_api[6][inputs][text] new prompt text # 其中 6 是 CLIP Text Encode 节点的 ID需要在工作流 JSON 中查找 # 执行工作流 result queue_prompt(workflow_api) print(result)通过 API你可以实现批量生成、参数搜索、集成到其他系统等自动化任务。6.3 资源、监控与稳定性显存监控在长时间运行批量任务时使用nvidia-smi或gpustat监控显存使用防止溢出导致进程崩溃。错误重试机制在调用 API 的脚本中加入异常捕获和重试逻辑处理偶发的生成失败。输出管理规划好输出目录避免单次运行产生大量文件。可以在Save Image节点中使用动态文件名如%date:yyyy-MM-dd%/output_%seed%.png。模型管理建立团队的模型仓库使用符号链接或配置文件统一模型路径确保所有成员和服务器环境一致。从零散的功能节点到“RunningHub”这样的全功能地图ComfyUI 的魅力在于它将创意流程变成了可编程、可复用、可扩展的工程。核心难点不在于点击哪个按钮而在于如何将你的创作意图准确地翻译成节点与数据流的语言。最好的学习方式不是寻找一个万能的工作流 JSON而是从一个简单流程开始亲手添加每一个节点理解每一根连线观察每一次参数变化带来的结果。当你能够自如地拆解一个复杂效果如一段风格化动画并用自己的工作流实现它时你就真正掌握了这门视觉编程的语言。