Comfy web UI——一个用于ComfyUI的模块化、配方驱动的工作流即服务平台

Comfy web UI不仅仅是一个模块化的、移动优先的ComfyUI前端,它还是一个强大的工作流即服务平台。它建立在Gradio之上,通过动态工作流汇编API与ComfyUI后端通信。除了直观的图形界面外,它还公开了更高级的API和MCP功能,因此开发人员可以将复杂的多节点工作流封装成简单的、可调用的功能,以实现自动化和集成。
______________________________________________________________________
⚠️ 重要通知
发展状况
⚠️ 该项目正处于积极的早期开发阶段。 功能、代码结构和API可能会频繁更改。预设模型库目前用于测试。
安全警告
⚠️ 该项目专为在受信任的本地网络上使用而设计,内置安全性有限。 由于潜在的安全风险, 在没有适当加强的情况下,不要将此服务直接暴露给公共互联网。 如果需要远程访问,我们强烈建议采用更安全的方法: - 虚拟局域网工具: 使用以下工具 零层 或 尾标 为您的受信任设备创建安全的专用网络。 - 经过身份验证的反向代理: 使用以下解决方案 Cloudflare 访问 或Nginx代理管理器,以添加身份验证层并保护您的服务。
______________________________________________________________________
✨ 主要特点
该项目将许多流行的AI生成模型和实用程序集成到一个单一的一站式创意套件中。
- 🖥️ 双UI模式
- 一键式紧凑型面板 (ImageEdit、VideoGen、AudioGen、3DGen): 使用最佳实践固定参数以最大限度地提高简单性,并针对移动设备进行了优化。
- 🤖 API和MCP准备就绪 --工作流即服务
- 该项目不仅提供了一个UI,还通过Gradio的API和MCP机制将复杂的工作流配方公开为简单的高级Python函数。 - 这使得Comfy web UI成为“工作流即服务”的强大后端——任何支持Gradio MCP标准的AI客户端或应用程序都可以调用这些函数来自动化和集成生成任务。
- ⚡ 异步任务和历史记录
- 所有生成任务都在服务器上异步运行。即使浏览器关闭或网络连接中断,任务也会继续。 - 历史页面允许您查看所有过去的生成结果。
- 🔗 图像生成:矩阵式动态工作流程
图像生成功能是围绕矩阵式动态工作流组装机制构建的。您可以自由组合“任务维度”和“模型维度”,形成数十种基础生成模式。
- 任务维度(task_type):支持 txt2img, img2img, Inpaint, Outpaint, Hires. fix. - 模型尺寸(model_type):支持多种型号系列,例如 FLUX.2, Z-Image, Qwen-Image, ERNIE-Image, LongCat-Image, Anima, NewBie-Image, Ovis-Image, HunyuanImage, Chroma1-Radiance, Chroma1, Lumina, HiDream, FLUX.1, SD3.5, SDXL, SD1.5等等。
选择基本模式后,您可以使用链式注入器将动态功能堆叠到工作流上:
- 动态LoRA/新手LoRA链: 从Civitai、URL、上传的文件或本地路径加载多个LoRA并将其链接起来;每个LoRA的权重都是独立可控的。 - 动态控制网/DiffSynth控制网/Anima控制网Llite链: 堆叠多个ControlNet,每个ControlNet都有自己的控制映像、类型和模型设置。 - 动态IP适配器链: 构建复杂的多图像IP适配器网络,精细控制每个参考图像的权重和风格影响。 - 动态引用潜在链: (适用于FLUX.2和OmniGen2型号)通过注入多个参考图像,在多模态模型中实现图像编辑和组合工作流程。 - 按地区动态调节: 对图像的不同矩形区域应用独立的提示,以进行精确的构图控制。 - 动态风格注射: (适用于FLUX.1型号)注入多个样式参考图像并独立控制其影响。 - 动态EasyCache链: 通过插入EasyCache节点来加速生成过程。 - 动态VAE链/VAE更换: 在工作流中的任何时候,从Civitai、URL或本地文件交换自定义VAE模型。
这使得构建高度复杂的工作流变得容易。例如:
> SDXL base model + 2 LoRAs + 3 ControlNets + 2 IP-Adapters + 4 regional prompts + 1 style injection + 1 community VAE replacement 为了一个 Inpaint 任务。 > > 您只需配置UI;WebUI自动化了模型下载、加载和工作流链接。
- 🧠 跨模式生成和编辑
- 说明和参考编辑: FLUX.2 - 指令编辑: Qwen-Image-Edit, FireRed-Image-Edit, LongCat-Image-Edit, ChronoEdit, Flux-Kontext-Dev, OmniGen2-Image-Edit 等等 - 参考编辑: ByteDance USO - 视频生成: LTX-2.3, LTX-2, Wan-2.2, Wan-2.1, HunyuanVideo-1.5, HuMo, Kandinsky - 音频生成: ACE-Step 1.5, ACE-Step - 3D生成(浑源3D-2): Image-to-3D, Multi-view-to-3D
- 🛠️ 实用工具箱
- 包括以下工具 Media Info (PNG Info的超集), ControlNet preprocessors, background removal (RMBG), video frame interpolation (RIFE - TensorRT),以及 image/video upscaling (TensorRT).
- 🚀 与社区资源无缝集成(例如Civitai)
Comfy web UI旨在成为浏览Civitai等资源共享网站的完美伴侣。其动态资源加载机制(如动态LoRA链)允许您快速验证和测试社区共享的模型资源:
- 发现: 在Civitai上找到一个或多个有趣的LoRA、文本反转或VAE模型。 - 副本: 直接从网站或其URL复制模型的版本ID。 - 粘贴并运行: 将ID粘贴到WebUI中的相应输入字段中(例如LoRA配置部分),调整权重,然后单击生成。
后端会自动下载、缓存资源,并将其动态注入到您的工作流中。这将测试可变数量的模型资源的过程转化为无缝流畅的交互体验。
- 🔩 架构优势:兼容性、多后端和分布式扩展
- 正向兼容性: 该项目通过以下方式从ComfyUI动态查询可用节点信息 /object_info API启动时。这意味着当ComfyUI或自定义节点更新时,前端会自动适应。 - 多后端和依赖隔离: 您可以为不同的任务类型(例如,3D渲染与视频处理)创建单独的ComfyUI Docker环境,以避免依赖冲突。每个UI模块都可以智能地将任务调度到适当的后端。 - 智能单主机多后端资源管理: 当任务切换时,系统可以使用 /free API指示空闲后端卸载模型并释放GPU内存,确保资源得到有效使用。 - 轻松扩展到分布式物理主机: 通过更新配置,您可以将后端指向不同物理机器上的ComfyUI实例,以构建通过单个Web UI管理的个人AI计算集群。
______________________________________________________________________
🔧 技术核心:配方驱动的动态工作流程
该项目通过ComfyUI的动态工作流程序集API与ComfyUI通信-它不修改ComfyUI核心。
- 解耦和可扩展性: 前端UI(Gradio)与后端生成引擎(ComfyUI)完全分离。通过编写新配方和UI模块,可以支持任何ComfyUI工作流。
- 自动化复杂的工作流构建: 该系统可以以编程方式生成复杂的工作流,这些工作流对于手动构建来说是乏味或容易出错的,例如基于用户提供的参考图像的数量动态构建多层IP适配器网络。
自动化的长上下文工作流
对于支持上下文传递的工作流(例如sound2video、Animate、infinitetalk等),系统可以根据任意长的输入材料在后台自动构建和执行长的分块工作流。
即插即用模块化
得益于基于文件系统的模块发现机制,扩展和管理功能变得非常简单。
- 添加功能: 在下创建新文件夹
frontend/custom/module/并包括_ui.py(接口)和_recipe.yaml(工作流程配方)。重新启动后,新功能会自动出现在UI布局中。 - 删除功能: 从中删除相应的功能文件夹
module或custom/module.
这种即插即用的设计使管理插件等功能变得容易,保持项目整洁,并确保自定义功能不会被更新覆盖。
核心组件
- 功能模块(
frontend/module/):每个模块定义一个独立的功能。
- _ui.py:定义Gradio UI组件和事件。 - _logic.py (可选):封装输入处理和工作流组装逻辑。 - _mcp.py (可选):为外部调用定义高级API/MCP函数。
- **工作流配方(
frontend/module/.../*_recipe.yaml)**:定义工作流程的“蓝图”。 - 工作流组装器(
frontend/core/workflow_assembler.py):读取配方并动态生成最终的ComfyUI工作流。 - 链式喷油器(
frontend/chain_injectors/):像处理多个LoRA一样处理动态输入。
graph TD
subgraph "Inputs"
A["User input via Gradio UI"]
B["Developer calls via API/MCP"]
end
subgraph "Application Layer"
C["UI module (_ui.py)"]
D["Logic module (_logic.py)"]
E["MCP module (_mcp.py)"]
end
subgraph "Core Assembler"
F{"WorkflowAssembler"}
G["YAML Workflow Recipe"]
H["Chain Injectors"]
end
subgraph "Backend Communication"
I["Full ComfyUI Workflow JSON"]
J("core/comfy_api.py")
K["ComfyUI backend"]
end
subgraph "Result Handling"
L("core/job_manager.py")
M["Display results / return API response"]
end
A --> C;
B --> E;
C --> D;
E --> D;
D --> F;
G --> F;
H --> F;
F -- assemble --> I;
I --> J;
J -- API request --> K;
K -- processes and returns results --> L;
L --> M;______________________________________________________________________
💡 面向开发者:探索Comfy web UI核心框架
如果您对此项目的工作流引擎及其“工作流即服务”理念感兴趣,并希望在此基础上构建自己的应用程序,我们提供了一个独立、轻量级、仅限核心的版本: comfy-webui-core.
这个版本去掉了所有特定的UI功能模块(如ImageGen、VideoGen等),只保留了基本的骨架,包括:
- 动态工作流引擎(
WorkflowAssembler) - 可插拔链式喷油器
- API和MCP发生器
- 多后端管理系统
comfy-webui-core 是您的完美选择,如果您是:
- 一位开发者 只需要强大的WaaS(工作流即服务)后端 为AI代理或其他应用程序提供工具,而无需整个UI的开销。
- 一个想要 从头开始构建高度定制的Gradio UI 而不受现有模块的约束。
- 一位需要 干净、轻便的起点 用于快速原型制作和验证。
点击下面的链接,探索无限的可能性 comfy-webui-core:

______________________________________________________________________
🚀 安装与使用
Docker部署(前端+多个后端)
这个项目是完全集装箱化的。建议将Docker Compose用于单命令部署。
- 先决条件:
- 安装 码头工人 - 安装 NVIDIA 容器工具包 以允许从容器访问GPU。
- 配置:
- 这 .env 项目根目录下的文件包含环境变量。 - docker-compose.yml 定义了三种服务: - backend_defalut:默认ComfyUI后端,侦听端口 8188. - backend_3d:用于3D功能的ComfyUI后端,监听端口 8189. - frontend:Gradio Web UI,监听端口 7888. - 模型、输入和输出目录通过Docker共享 volumes 以持久化数据并使其跨服务可用。 - 复制 Dockerfile_Example\Dockerfile_Normal.example 进入 ComfyUI 文件夹并将其重命名为 Dockerfile. - 复制 Dockerfile_Example\Dockerfile_3D.example 进入 ComfyUI_3D 文件夹并将其重命名为 Dockerfile. - 集 auto_download_models 到 true 在 frontend/yaml/config.yaml,它将自动遍历每个模块中的file_list.yaml文件以下载所需的文件。
- 跑:
- 从项目根目录运行 run_on_docker.bat (Windows)或相应的shell脚本。 - 在第一次运行时,Docker将基于 ComfyUI/Dockerfile 和 ComfyUI_3D/Dockerfile这可能需要一些时间。 - 构建完成后,打开 http://127.0.0.1:7888 开始使用UI。
单前端部署
- 先决条件:
- Python 3.10+ - 正在运行的ComfyUI实例。
- 安装依赖项:
- 集 auto_download_models 到 true 在 frontend/yaml/config.yaml 启用自动下载 file_list.yaml. - 从 frontend 文件夹,运行 install.bat --它将创建一个虚拟环境并安装依赖项。 - 或手动安装:
cd frontend
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt- 堆芯配置:
- 复制 frontend/yaml/config.yaml 到 frontend/custom/yaml/config.yaml. - 编辑 frontend/custom/yaml/config.yaml 使用您的本地路径和设置,尤其是 comfyui_path 和 comfyui_backends. - 集 auto_download_models 到 true 在 frontend/yaml/config.yaml,它将自动遍历每个模块中的file_list.yaml文件以下载所需的文件。
- 跑:
- 从 frontend 文件夹,运行 run.bat.
______________________________________________________________________
🏗️ 项目结构
.
├── ComfyUI/ # Docker build context for the default ComfyUI backend
├── ComfyUI_3D/ # Docker build context for the 3D ComfyUI backend
├── frontend/ # Gradio frontend application
│ ├── app.py # Main application entrypoint
│ ├── requirements.txt
│ ├── chain_injectors/ # Dynamic chain injector modules
│ ├── core/ # Core backend logic (workflow assembly, API communication, etc.)
│ ├── custom/ # User-customizable UI and YAML configs
│ ├── module/ # Built-in Gradio UI modules
│ │ ├── image_gen/
│ │ │ └── workflow_recipes/ # Image generation workflow recipes
│ │ └── ...
│ └── yaml/ # Default YAML configuration files
├── .env # Environment variables for Docker Compose
└── docker-compose.yml # Docker Compose configuration______________________________________________________________________
⚙️ 核心配置文件(*.yaml)
该项目的模块化和可扩展性在很大程度上依赖于一组精心设计的YAML配置文件。理解它们是定制和扩展的关键。配置文件分为两类: 全局配置 和 UI模块配置.
所有YAML文件都支持 超控机构:在中创建同名文件 frontend/custom/yaml/ 这些条目将与默认值深度合并 frontend/yaml/ 用于非侵入式定制。
全局配置文件(in frontend/yaml/)
这些文件定义了应用程序范围的行为和基本设置。
config.yaml: 核心应用程序配置.
- comfyui_path: (必填) ComfyUI的本地安装路径。 - comfyui_backends:定义可用的ComfyUI后端API地址;支持多后端设置(例如一个用于常规任务,一个用于3D任务)。 - aria2_path, hf_cache_path:模型自动下载工具和缓存的路径。 - developer_*:开发人员/调试选项。 - server_port, enable_login, share_gradio:Gradio服务器启动参数。 - auto_download_models:是否自动下载中列出的文件 file_list.yaml 在启动时。
injectors.yaml: 动态链式注射器注册表.
- injector_definitions:定义可用的动态链类型(例如。, dynamic_lora_chains)以及它们的Python模块路径。 - injector_order: (重要) 定义喷油器的执行优先级。这对于处理节点依赖关系至关重要(例如,LoRA注入应在ControlNet注入之前发生,以便ControlNet可以对LoRA修改后的模型进行操作)。
ui_layout.yaml: UI布局配置.
- 定义main_tabs和sub_tabs的显示顺序和层次结构。
ui_list.yaml: UI模块加载列表.
- 默认情况下,应用程序加载所有发现的UI模块。您可以在此处限制加载的模块,以加快启动速度并减少资源使用。
______________________________________________________________________
UI模块配置文件(in frontend/module/.../yaml/)
这些文件特定于UI特征组(例如。, image_gen)并为模块定义模型、常数和默认参数。
file_list.yaml: 模型自动下载列表.
- 定义启动时要检查和下载的模型和文件。 - 支持从Hugging Face下载(hf)Civitai(civitai).
model_list.yaml(inmodule/image_gen/yaml/): 图像生成模型定义.
- 列出ImageGen选项卡下可用的大型模型(检查点)。 - 支持单文件模型(path)以及多组件模型(components例如FLUX、HiDream)。 - display_name 用于下拉菜单,并作为默认参数的键。
model_defaults.yaml(inmodule/image_gen/yaml/): 模型默认生成参数.
- 根据模型架构(SDXL、SD1.5)设置默认采样步骤、CFG、提示等,或 display_name. - 当用户在UI中切换模型时,默认值会自动加载。
controlnet_models.yaml&ipadapter.yaml(inmodule/image_gen/yaml/): ControlNet和IP适配器型号/预设定义.
constants.yaml(inmodule/image_gen/yaml/): 图像生成常数.
- 定义模块使用的固定常数,如最大LoRA计数和分辨率预设(RESOLUTION_MAP).
*_recipe.yaml(在模块目录中): 工作流配方.
- (核心) 这些定义了功能如何映射到ComfyUI工作流。 - imports:允许导入配方部分以实现模块化和重用。 - nodes:列出节点及其静态参数。 - connections:静态节点连接。 - ui_map:将UI组件输入映射到工作流节点参数。 - dynamic_*_chains:声明工作流使用哪些动态链式注射器。
______________________________________________________________________
🧩 如何扩展
添加新功能通常需要四个步骤:
- 编写工作流程配方(
.yaml):
- 创建 _recipe.yaml 在功能目录下,例如。 frontend/custom/module/my_feature/. - 定义节点、连接和UI到参数的映射。
- 开发功能模块(
.py):
- 创建 _ui.py 在同一个文件夹中。 - 将其选项卡和配方路径添加到 UI_INFO 字典。 - 使用 create_ui() 定义Gradio UI组件。 - 实施 run_generation() 处理数据并运行工作流。
- 配置UI布局(可选):
- 要控制确切的位置,请将布局合并到 frontend/custom/yaml/ui_layout.yaml.
- 添加到UI列表(可选):
- 如果你不使用 include: [] 自动加载中的所有模块 frontend/custom/yaml/ui_list.yaml,添加您的模块路径(例如。, custom.ui.my_feature.my_feature_ui)到这个名单。
重新启动后,您的新功能将出现在WebUI中。
______________________________________________________________________
🙏 学分
这个项目从ComfyUI社区和许多贡献者那里受益匪浅。特别感谢以下自定义节点项目的作者:
- IP适配器: cubiq/ComfyUI_IPA适配器+
- 3D生成: MrForExample/ComfyUI-3D-Pack
- ControlNet预处理器: Fannovel16/comfyui_controlnet_aux
- 还有更多。..
______________________________________________________________________
📄 许可证
框架代码
此项目自己的代码根据 MIT许可证.
模型和生成的内容
请注意,此许可证 不包括 您可以使用此工具的任何模型、自定义节点(插件)或ComfyUI本身。在创建和使用内容时,您有责任理解并遵守这些组件的许可证。
