ComfyFusion Engine - 智能化 ComfyUI 工作流执行引擎
Project description
ComfyFusion Engine - 智能化 ComfyUI 工作流执行引擎
🌟 项目概览
ComfyFusion Engine 是针对 ComfyUI 工作流管理难题的智能执行引擎。ComfyUI 作为基于节点的 AI 工作流编辑器,其核心优势在于允许用户通过可视化编程自由组合工作流节点(如 Stable Diffusion 模型、ControlNet 控制模块、图像后处理节点等)。然而这也带来了两个主要挑战:
- 工作流碎片化:用户常为不同任务创建多个变体工作流(如文生图/图生图/视频生成)
- 参数管理复杂:每个工作流可能有数十个可调参数(提示词、采样步数、ControlNet 权重等)
ComfyFusion Engine 通过创新设计解决这些问题:
🧩 通用工作流适配器
- 即插即用:用户只需将 ComfyUI 工作流保存为
.json文件并添加轻量级模板(_tp.json) - 智能参数映射:自动识别工作流中的可配置节点(如 CLIP 文本编码器、KSampler 等)
- 模板系统:通过
{参数}占位符将技术参数转化为用户友好配置项
graph TD
A[用户自定义Workflow] --> B{模板注解}
B -->|添加参数占位符| C[标准化工作流]
C --> D[MCP Server]
D -->|动态参数注入| E[原始ComfyUI执行]
💡 核心价值
-
降低使用门槛:
- 将复杂节点网络抽象为简单API参数
- 用户无需理解底层节点连接逻辑
- 保留ComfyUI全部灵活性的同时提供标准化接口
-
提升协作效率:
- 开发者可封装技术细节,暴露业务相关参数
- 支持团队间工作流版本管理和模板共享
- 通过MCP协议与各类IDE/编辑器深度集成
-
生产环境就绪:
- 流式执行状态监控
- 自动错误重试机制
- 资源用量控制(GPU内存/执行时间)
🌟 核心特性
三工具协作架构
- 工具1 (
list_workflows):工作流枚举器,提供可用工作流清单 - 工具2 (
analyze_and_execute):智能分析器,分析用户需求并生成工作流补丁 - 工具3 (
execute_workflow):纯执行引擎,执行两级融合和ComfyUI调用
LLM引导的工具链协作
- 工具2不直接调用工具3,而是通过返回引导信息让Client LLM自动调用工具3
- 实现真正的MCP协议合规的工具链协作
- 符合FastMCP最佳实践
流式协议支持
- 所有工具函数支持
AsyncGenerator流式返回 - 提供实时执行反馈和进度跟踪
- 支持流式错误处理和状态更新
两级融合架构
graph TD
A[用户补丁] --> C(第一级融合)
B[模板补丁] --> C
C --> D[统一补丁]
E[基础工作流] --> F(第二级融合)
D --> F
F --> G[最终工作流]
🛠️ 技术栈
- FastMCP >= 2.0.0 - MCP服务器框架
- Pydantic >= 2.0.0 - 数据验证
- HTTPX >= 0.24.0 - 异步HTTP客户端
- aiofiles >= 23.0.0 - 异步文件操作
- deepmerge >= 1.1.0 - 深度合并
- watchdog >= 3.0.0 - 文件系统监控
⚙️ 配置
基础配置 (config/settings.json)
项目默认配置存储在 config/settings.json 中。您可以复制此文件并进行修改,或通过命令行参数覆盖特定设置。
{
"comfyui": {
"host": "127.0.0.1",
"port": 8188,
"timeout": 300
},
"mcp": {
"server_name": "comfyfusion-engine",
"description": "ComfyUI 智能工作流执行引擎",
"version": "1.0.0",
"protocol": "streaming",
"enable_streams": true,
"host": "127.0.0.1",
"port": 8000
},
"paths": {
"workflows": "./workflows"
},
"logging": {
"level": "INFO"
}
}
命令行参数覆盖
启动时可通过命令行参数覆盖配置文件中的任何设置。参数命名遵循 --<section>-<key> 格式。
| 参数 | 描述 | 示例 |
|---|---|---|
--comfyui-host |
ComfyUI 服务地址 | --comfyui-host 192.168.1.100 |
--comfyui-port |
ComfyUI 服务端口 | --comfyui-port 8188 |
--mcp-protocol |
MCP 服务器协议 (stdio 或 streaming) |
--mcp-protocol streaming |
--mcp-host |
MCP 服务器监听地址 | --mcp-host 0.0.0.0 |
--mcp-port |
MCP 服务器监听端口 | --mcp-port 8000 |
--workflows-path |
工作流文件目录路径 | --workflows-path /custom/workflows |
示例:
comfyfusion-mcp \
--comfyui-host 192.168.1.100 \
--mcp-port 9000 \
--workflows-path /custom/workflows
🚀 启动方式
ComfyFusion Engine 支持以下两种启动方式:
方式一:通过 run_server.py 和 config/settings.json 启动
这种方式适用于本地开发和调试,您可以通过修改配置文件来调整服务行为。
-
环境准备:
- 确保您已安装 Python 3.9 或更高版本。
- 确保 ComfyUI 正在运行(默认地址:
http://127.0.0.1:8188)。 - 安装项目依赖:
pip install -e .
-
配置修改:
- 打开
config/settings.json文件。 - 根据您的需求修改
comfyui和mcp部分的配置,例如 ComfyUI 的主机和端口,或 MCP 服务器的监听地址和端口。
- 打开
-
启动服务器:
- 在项目根目录下运行:
python run_server.py - 服务器启动后,您将看到相应的日志输出。
- 在项目根目录下运行:
方式二:使用 uvx 命令行参数启动
这种方式适用于快速启动和临时配置覆盖,无需修改配置文件。
-
环境准备:
- 确保您已安装
uv。如果未安装,请运行:pip install uv
- 确保 ComfyUI 正在运行(默认地址:
http://127.0.0.1:8188)。 - 安装
comfyfusion-engine:uv pip install comfyfusion-engine
- 确保您已安装
-
启动服务器:
- 使用默认配置启动:
comfyfusion-mcp
- 使用命令行参数覆盖配置启动(例如,更改 ComfyUI 主机、MCP 端口和工作流路径):
comfyfusion-mcp \ --comfyui-host 192.168.1.100 \ --mcp-port 9000 \ --workflows-path /custom/workflows
- 您可以通过
comfyfusion-mcp --help查看所有可用的命令行参数。
- 使用默认配置启动:
📁 项目结构
mcp-comfyui-anything/
├── src/
│ └── comfyfusion/
│ ├── __init__.py
│ ├── server.py # FastMCP 服务器主文件
│ ├── fusion/
│ │ ├── __init__.py
│ │ ├── engine.py # 两级融合引擎
│ │ └── mapping.py # 参数映射配置
│ ├── api/
│ │ ├── __init__.py
│ │ └── comfyui_client.py # ComfyUI API 客户端
│ └── utils/
│ ├── __init__.py
│ ├── config.py # 配置管理
│ ├── logger.py # 日志系统
│ ├── types.py # 类型定义
│ └── workflow_discovery.py # 工作流发现
├── workflows/ # 工作流和模板存储
│ ├── text2image_v1.json # 基础工作流
│ ├── text2image_v1_tp.json # 对应模板
│ └── ...
├── config/
│ └── settings.json # 配置文件
├── pyproject.toml # 项目配置
├── run_server.py # 启动脚本
└── README.md
🔧 工作流管理
添加新工作流完整流程
-
从 ComfyUI 导出完整工作流:
# 在 ComfyUI 界面操作 1. 加载或创建您的工作流 2. 点击右上角 "Save" 按钮 3. 保存为 JSON 文件到 workflows/ 目录 示例文件名: fluximage.json
-
创建最小参数模板: 新建
{工作流名称}_tp.json文件(如fluximage_tp.json),只需包含需要暴露的参数:{ "description": "Flux 图像生成 - 支持自定义提示词", "nodes": { "6": { "inputs": { "text": "{prompt}" } }, "31": { "inputs": { "seed": "{seed}" } } } }
█ 原则说明:
- 仅保留核心用户参数(通常 2-5 个)
- 保持 JSON 结构扁平化
- 使用英文小写参数名(prompt/seed)
-
文件存放规范:
workflows/ ├── your_workflow.json # 原始工作流 └── your_workflow_tp.json # 参数模板
-
重启服务生效:
# 如果使用 run_server.py pkill -f run_server.py && python run_server.py # 如果使用 uvx 启动 comfyfusion-mcp --workflows-path ./workflows
技术细节说明
- 模板文件会自动与基础工作流匹配(通过文件名前缀)
- 新增/修改模板文件后需要重启服务
- 参数替换仅修改现有节点字段,不会新增节点
- prompt:控制图像生成的核心描述
- seed:控制生成结果的随机性
- 其他技术参数(采样器配置、模型选择等)保持默认
🌊 流式特性
实时进度反馈
async for update in client.call_tool_stream("execute_workflow", args):
print(f"进度: {update.get('progress', 0)}%")
print(f"状态: {update.get('status', 'processing')}")
错误流式处理
- 异常和错误信息通过流式协议实时反馈
- 支持优雅降级和自动重试
- 详细的错误追踪和调试信息
🔄 工具协作流程
graph TD
A[用户请求] --> B[工具2: 智能分析]
B --> C[生成工作流补丁]
C --> D[返回引导信息]
D --> E[Client LLM 理解]
E --> F[自动调用工具3]
F --> G[执行两级融合]
G --> H[调用ComfyUI API]
H --> I[返回结果URL]
🛡️ 错误处理
监控与日志
- 流式监控:实时状态和性能指标
- 审计日志:完整的操作记录
- 错误追踪:详细的异常信息
资源管理
- 并发控制:合理的任务队列管理
- 资源限制:CPU、内存和执行时间限制
- 自动清理:临时文件和缓存管理
🔧 开发
开发环境设置
# 安装开发依赖
pip install -e .[dev]
# 代码格式化
black src/
isort src/
# 类型检查
mypy src/
运行测试
pytest tests/
🚀 部署
Docker 部署
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -e .
EXPOSE 8000
CMD ["python", "run_server.py"]
生产配置
- 使用环境变量覆盖配置
- 配置日志轮转和监控
- 设置健康检查端点
📄 许可证
本项目采用 Apache License 2.0 许可。详见 LICENSE 文件。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file comfyfusion_engine-1.0.1.tar.gz.
File metadata
- Download URL: comfyfusion_engine-1.0.1.tar.gz
- Upload date:
- Size: 34.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86703ca20a96aaab0a9dfcfe87b970d18c9f66a0c514f7ee8cc98f021bfaab87
|
|
| MD5 |
ed97d48aebae8c953786186cfbf2066e
|
|
| BLAKE2b-256 |
847e2e5a1445bab969b038e72ef1cb53791cf9cf6fe1b4b6b45cb963673eced8
|
File details
Details for the file comfyfusion_engine-1.0.1-py3-none-any.whl.
File metadata
- Download URL: comfyfusion_engine-1.0.1-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-httpx/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8753b7f2641450cbcdc33ec233856a70a022f467e8e443e63a63ed7e9f5ebc6b
|
|
| MD5 |
93582446901ca8900f73310ee299c2d1
|
|
| BLAKE2b-256 |
2cf54cb202c1a0fc3853faefb455744405f332e29ef37511ab0bca48bdf8079b
|