ComfyUI 从零部署指南:节点工作流驱动 AI 视频与漫剧生成
如果你最近在尝试用 AI 生成视频,尤其是那种带点故事感的“漫剧”或动态画面,大概率会听到一个名字:ComfyUI。它不像 Midjourney 那样点几下就出图,也不像 Stable Diffusion WebUI 那样有直观的界面。第一次打开 ComfyUI,满屏的“节点”和连接线,可能会让你觉得这是在搞电路设计,而不是做创意内容。
但恰恰是这种看似复杂的“节点”工作流,成了很多专业创作者和工作室从静态图片迈向可控视频生成的关键一步。它把 AI 生图的“黑盒”过程,拆解成了一个个可拖拽、可连接、可调试的模块。这意味着,你不再只能祈祷一次出图的结果,而是可以精确控制从提示词解析、到模型加载、再到采样器参数、最后到视频合成的每一个环节。这种控制力,对于需要角色一致、场景连贯的“漫剧”生成来说,几乎是刚需。
然而,ComfyUI 的入门门槛也真实存在。从安装部署开始,到理解节点逻辑,再到安装插件扩展功能,每一步都可能让新手卡住。网上教程虽多,但往往针对某个特定版本或场景,信息零散。今天,我们就抛开那些零碎的片段,从零开始,为你梳理一份覆盖Mac 和 Windows 双平台的 ComfyUI 完整部署指南。我们不仅要把它装起来,更要理解如何安装和管理插件,如何部署核心节点,最终目标是让你能跑通一个基础的“视频漫剧生成”工作流。这不是一次简单的软件安装,而是一次对你工作流的底层重构。
1. 理解 ComfyUI:为什么“节点”是可控视频生成的核心
在直接动手安装之前,我们需要先达成一个共识:ComfyUI 不是一个“更好用”的 AI 绘图工具,它是一个可视化编程环境,专门为 Stable Diffusion 这类扩散模型的工作流设计。这个根本性的定位差异,决定了我们使用它的方式和心态。
1.1 从“抽卡”到“流水线”:工作流思维的转变
在 WebUI 里,你填写提示词,调整几个滑块,点击生成,然后等待一个结果。这个过程更像“抽卡”,你调整的是输入参数,但模型内部如何运作、各个组件如何协作,对你是不透明的。而 ComfyUI 将这个过程完全可视化、模块化了。
想象一下工厂的流水线:原材料(你的提示词和初始图像)从流水线起点进入,经过一个个加工站(模型加载、文本编码、潜在空间处理、采样、解码、后处理),最终成为成品(图片或视频)。在 ComfyUI 里,每个“加工站”就是一个节点(Node),节点之间的连线就是数据流。你可以清晰地看到:
- 文本提示词是如何被编码成模型能理解的向量的(CLIP Text Encode 节点)。
- 基础模型和LoRA、ControlNet 等微调模型是在哪个环节被加载和应用的(Load Checkpoint, Load LoRA 节点)。
- 采样器(如 KSampler)是如何一步步去噪,从随机噪声生成图像的。
- VAE 解码器是如何将潜在空间的数据“翻译”回最终像素图的。
对于图片生成,这种控制已经很有用。但对于视频生成,尤其是“漫剧”这种需要多帧连续、角色一致的场景,这种流水线式的控制几乎是必需的。因为你不再处理单张图片,而是处理一个图片序列。你需要确保序列中的每一帧,在风格、角色、构图等方面都保持连贯。在 ComfyUI 中,你可以通过复制和连接节点,构建一个专门处理序列的流水线,例如,将上一帧的输出作为下一帧的部分输入(使用 latent 或 image 的拼接节点),或者使用专门的视频插帧、光流推算节点来平滑过渡。
1.2 核心概念:节点、工作流与自定义
- 节点:功能模块。每个节点有输入槽和输出槽。例如,“Load Checkpoint”节点输入模型文件路径,输出模型、CLIP、VAE 三个对象。
- 工作流:由节点和连接线组成的完整处理图谱。你可以保存(
.json文件)和加载工作流,这意味着你可以将一套复杂的生成方案(例如:特定风格的漫剧生成流程)封装起来,一键复用或分享。 - 自定义:这是 ComfyUI 的威力所在。社区开发了海量插件,每个插件都会带来新的节点。你可以找到专门用于面部修复的节点、背景移除的节点、特定风格转换的节点,当然,还有各种视频生成和处理的节点。通过组合这些节点,你可以构建出极其 specialized 的工作流,这是其他一体化工具难以做到的。
理解了这些,我们再去看安装过程,就会明白:安装 ComfyUI 本体只是搭好了舞台,真正的演出(各种工作流)需要靠插件和节点来丰富。我们的安装目标,就是搭建一个稳定、可扩展的“舞台”。
2. 双平台部署:为 Mac 和 Windows 搭建稳定舞台
ComfyUI 基于 Python 和 PyTorch,因此它的安装本质上是准备一个合适的 Python 环境。对于大多数用户,尤其是希望快速上手、避免环境冲突的新手,我强烈推荐使用整合包。它会将 Python、PyTorch(通常带 CUDA 支持)、ComfyUI 本体以及一些常用依赖打包好,解压即用。
注意:无论使用整合包还是手动安装,请确保系统有足够的磁盘空间(建议预留 20GB 以上),并且路径中不要包含中文或特殊字符,这是避免绝大多数奇怪错误的第一步。
2.1 Windows 平台:秋叶整合包是最佳起点
对于 Windows 用户,目前最成熟、社区支持最广的解决方案是“秋叶大佬”制作的整合包。它极大简化了部署过程。
步骤一:获取整合包
- 通过可靠的渠道(如秋叶的B站主页或相关社群)找到最新版的
ComfyUI整合包下载链接。通常是一个压缩包文件。 - 将其解压到你希望安装的目录,例如
D:\AI_Tools\ComfyUI。
步骤二:启动与初步配置
- 进入解压后的文件夹,找到
run_nvidia_gpu.bat(N卡用户)或run_cpu.bat(仅CPU或无N卡用户)文件。 - 双击运行
run_nvidia_gpu.bat。首次运行会进行一系列初始化,包括下载必要的模型文件(如vae-ft-mse-840000-ema-pruned.safetensors)到models/vae目录。请保持网络通畅。 - 启动完成后,命令行窗口会显示类似
Running on local URL: http://127.0.0.1:8188的信息。 - 打开浏览器,访问
http://127.0.0.1:8188,即可看到 ComfyUI 的界面。
步骤三:放入基础模型整合包通常不包含庞大的基础模型(如SDXL的.safetensors文件)。你需要自行下载这些模型,并将其放入正确的目录:
- Stable Diffusion 检查点模型:放入
ComfyUI/models/checkpoints目录。 - VAE 模型:放入
ComfyUI/models/vae目录。 - LoRA 模型:放入
ComfyUI/models/loras目录。 - ControlNet 模型:放入
ComfyUI/models/controlnet目录。
放置完成后,在 ComfyUI 界面中点击右侧的“刷新”按钮,即可在对应的加载节点中看到新加入的模型。
2.2 macOS 平台:手动部署与社区方案
macOS 的部署相对灵活,虽然没有像秋叶整合包那样“一键到位”的明星方案,但步骤也很清晰。主要分为两种方式:纯手动安装和使用社区脚本。
方案A:使用社区安装脚本(推荐新手)一些社区开发者提供了针对 macOS 的安装脚本,可以自动处理大部分依赖。
- 打开终端(Terminal)。
- 使用 Git 克隆 ComfyUI 官方仓库或包含脚本的仓库。例如:
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI - 寻找并运行社区提供的
install_mac.sh或类似脚本。执行前请务必阅读脚本内容,确认其执行的操作。 - 脚本通常会创建 Python 虚拟环境,安装 PyTorch(macOS 版)和依赖。
- 安装完成后,运行
python main.py启动服务。
方案B:纯手动安装(适合有 Python 经验的用户)
- 安装 Homebrew(如果尚未安装):这是 macOS 的包管理器,能简化很多安装过程。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装 Python 3.10+:
brew install python@3.10 - 克隆 ComfyUI 仓库:
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI - 创建并激活虚拟环境(强烈推荐,避免污染系统环境):
python3.10 -m venv venv source venv/bin/activate - 安装 PyTorch:前往 PyTorch 官网 ,根据你的 macOS 版本和芯片(Intel/Apple Silicon)选择正确的安装命令。对于 Apple Silicon(M系列芯片),通常推荐使用 Nightly 版本以获得更好的性能。
- 安装 ComfyUI 依赖:
pip install -r requirements.txt - 启动 ComfyUI:
python main.py - 同样,访问终端输出的本地 URL(如
http://127.0.0.1:8188)即可。
macOS 模型放置:在 ComfyUI 目录下,创建models文件夹,并在其中创建checkpoints,loras,controlnet,vae等子目录,将对应模型放入即可。
无论哪种方式,首次看到那个布满网格的空白画布时,你的舞台就已经搭好了。接下来,我们要邀请“演员”和“道具”上场,也就是安装插件和节点。
3. 插件生态:扩展能力边界,安装与管理的最佳实践
ComfyUI 本体只是一个框架,它的强大完全依赖于插件带来的海量节点。对于视频漫剧生成,我们尤其需要一些特定插件。
3.1 插件安装的两种核心方式
插件的本质是一个包含自定义节点代码的文件夹,通常托管在 GitHub 上。安装方式主要有两种:
方式一:通过 ComfyUI 管理器安装(最推荐)这是最便捷的方式,但需要先安装一个叫ComfyUI Manager的插件,它是管理插件的插件。
- 进入你的 ComfyUI 安装目录。
- 打开
custom_nodes文件夹。 - 在终端或命令行中,在此路径下执行:
git clone https://github.com/ltdrdata/ComfyUI-Manager.git - 重启 ComfyUI。重启后,界面上会出现一个额外的
Manager按钮。 - 点击
Manager,你可以浏览、搜索、一键安装或更新其他插件。它就像 ComfyUI 的“应用商店”。
方式二:手动 Git Clone对于不在管理器列表中的插件,或者你想指定版本,可以使用此方法。
- 在
custom_nodes文件夹下打开终端。 - 使用
git clone [插件仓库地址]命令。 - 重启 ComfyUI。
重要提醒:安装插件后,必须重启 ComfyUI 服务(关闭命令行窗口再重新运行启动脚本),新的节点才会被加载。
3.2 视频漫剧生成必备插件推荐
要实现标题所说的“视频漫剧生成”,你可能需要以下几类插件。请注意插件生态日新月异,名称可能变化,以下为常见类别和代表性插件(可通过 Manager 搜索):
动画/视频生成插件:
AnimateDiff:这是当前最热门的文本/图像生成视频的插件之一。它通过注入运动模块,让静态图片“动”起来,是生成漫剧片段的核心。ComfyUI-VideoHelperSuite:提供一系列视频加载、合成、帧处理的工具节点,如加载视频、拆帧、合并帧为视频等。SVD或相关插件:Stable Video Diffusion 是 Stability AI 推出的视频生成模型,也有对应的 ComfyUI 节点实现。
工作流与效率插件:
ComfyUI-Custom-Scripts:提供大量实用小节点,如提示词调度、图像缩放、批量处理等。Efficiency Nodes:优化节点,可以提升生成速度或降低显存占用。
图像质量提升插件:
ComfyUI-Impact-Pack:功能极其强大的综合包,包含面部修复、细节提升、分割、检测等众多节点,对于提升漫剧角色质量非常有用。- 各类
Upscale(超分)插件:如UltimateSDUpscale,用于提升生成视频的清晰度。
安装示例(通过 Manager):
- 点击
Manager按钮。 - 切换到
Install Node标签页。 - 在搜索框输入
AnimateDiff。 - 找到对应的插件,点击
Install按钮。 - 等待安装完成,根据提示重启 ComfyUI。
3.3 插件管理的注意事项
- 依赖冲突:不同插件可能依赖同一库的不同版本。如果安装后启动报错,可以查看命令行错误信息,通常是某个 Python 包版本不兼容。可以尝试在 ComfyUI 的 Python 环境中手动调整版本(
pip install 包名==版本号)。 - 节点不显示:安装后重启了但节点没出现?首先确认插件是否安装在
custom_nodes目录下。其次,在 ComfyUI 界面中,按Ctrl+F或点击鼠标中键,打开节点搜索框,输入插件或节点名称的关键词查找。有时节点名称可能与插件名不同。 - 保持更新:插件更新频繁。定期通过
Manager的Update All功能或手动git pull更新插件,可以获取新功能和修复。但更新前最好备份你的重要工作流(.json文件)。
4. 节点部署与视频漫剧工作流初探
插件安装好后,你的节点面板会变得非常丰富。现在,我们尝试搭建一个最简单的、基于 AnimateDiff 的文本生成视频工作流,来理解节点如何协作。
4.1 构建一个基础的文本生成视频流
这个流程的目标是:输入一段提示词,生成一个短视频。我们将使用AnimateDiff插件。
- 添加节点:在空白处右键,选择
Add Node。 - 加载模型:搜索并添加
Load Checkpoint节点,选择你的基础模型(如 SDXL 模型)。 - 编码提示词:添加两个
CLIP Text Encode (Prompt)节点。一个连接Load Checkpoint的CLIP输出,填入正面提示词(如“一个宇航员在太空漫步,电影质感”)。另一个同样连接,填入负面提示词(如“模糊,丑陋”)。 - 设置采样器:添加
KSampler节点。将其model连接到Load Checkpoint的MODEL,将两个CLIP编码器的输出分别连接到positive和negative。 - 引入动画:这是关键步。搜索并添加
AnimateDiff Loader节点。你需要下载对应的运动模块(Motion Module,通常是一个.ckpt或.safetensors文件),并将其放入ComfyUI/models/animatediff目录(没有则新建)。在节点中选择你下载的运动模块。将该节点的model输出连接到KSampler的model输入。注意:这里KSampler的model输入会被替换,这是 AnimateDiff 的工作方式。 - 设置空潜变量:添加
Empty Latent Image节点。这里需要设置视频的尺寸(如 512x512)和批处理大小(batch size)。batch size就是你想要生成的视频帧数(如 16 帧)。 - 连接潜变量:将
Empty Latent Image的LATENT输出连接到KSampler的latent_image。 - 解码图像:添加
VAE Decode节点。将其samples连接到KSampler的LATENT输出,将其vae连接到Load Checkpoint的VAE输出。 - 预览与保存:添加
Preview Image节点连接到VAE Decode的IMAGE输出,用于在界面中预览第一帧。添加Save Image节点也连接到IMAGE输出,用于将生成的帧序列保存为图片。 - 生成视频:生成的是一系列图片。你需要使用
Video Helper Suite的节点(如VHS_VideoCombine)将这些图片合成为一个视频文件(如MP4)。
点击Queue Prompt,ComfyUI 就会开始执行这个工作流。你会在终端看到处理进度,最终在输出目录得到一系列图片和一个视频文件。
4.2 从单视频到“漫剧”:工作流的进阶思路
单一的短视频片段只是开始。“漫剧”意味着多镜头、有叙事。在 ComfyUI 中,你可以通过更复杂的工作流来实现:
- 角色一致性:结合
LoRA节点。先训练一个角色 LoRA,然后在每个视频片段的生成流程中,都通过Load LoRA节点加载该 LoRA,并调整权重,从而保证不同镜头中角色长相一致。 - 场景转换:使用
ControlNet节点(如 OpenPose, Depth)。你可以先绘制或生成关键帧的草图、姿势图或深度图,作为控制条件输入到不同片段的生成中,从而控制场景构图和角色动作的连贯性。 - 串联片段:生成多个短视频片段后,使用视频编辑节点或外部工具将它们按顺序拼接起来。可以在工作流末尾加入音频加载和合成的节点。
- 工作流模板化:将生成一个片段的完整节点组保存为“宏”或“自定义节点”,然后复制多份,分别修改提示词和条件输入,即可批量生成多个镜头。这就是 ComfyUI 工作流可复用性的体现。
4.3 故障排查:当节点工作不正常时
即使按照教程部署,你也可能会遇到问题。以下是经典的排查路径:
- 看报错:永远首先查看命令行/终端窗口的红色报错信息。这是最直接的线索。错误可能关于:缺失模型文件、Python 包导入错误、CUDA 内存不足、节点输入类型不匹配等。
- 查模型:确认所有用到的模型(检查点、VAE、LoRA、ControlNet、Motion Module)都已下载,并放入了正确的目录。路径和文件名不要有中文。
- 查连接:检查节点之间的连线是否正确。鼠标悬停在节点的输入/输出槽上,会显示数据类型(如
MODEL,LATENT,IMAGE)。确保连接的数据类型匹配。 - 查参数:检查关键参数,如采样步数、CFG 值、种子、图像尺寸、批处理大小。不合理的参数会导致生成失败或结果异常。
- 查资源:视频生成对显存要求很高。如果报错
CUDA out of memory,尝试减小图像尺寸、减少批处理大小(帧数)、启用--lowvram模式启动 ComfyUI,或者使用Efficiency Nodes插件中的显存优化节点。 - 隔离测试:如果工作流复杂,先从一个极简的流程开始测试(例如,只用
Load Checkpoint+CLIP Text Encode+KSampler+VAE Decode生成单张图),确保基础功能正常,再逐步添加复杂节点(如 AnimateDiff, ControlNet)。
安装和部署 ComfyUI,尤其是配置好视频生成插件,只是拿到了进入可控 AI 视频生成世界的门票。真正的挑战和乐趣,在于如何像搭积木一样,用这些节点构建出能稳定产出你心中所想画面的自动化流水线。从理解每个节点的输入输出开始,从复用一个简单工作流开始,逐步尝试修改、组合、创造。当你能让一个虚拟角色按照你的脚本,在连贯的场景中演绎故事时,你就会发现,前期所有这些看似繁琐的部署和调试,都是值得的。