local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Powers the optimized Stable Diffusion backend through the stable-diffusion.cpp implementation
Package manager used for installing dependencies on Windows systems during the setup process
Desktop environment used during the development of DiffuGen on Linux Mint
DiffuGen - 集成 MCP 的高级本地图像生成器
⭐新增:现已包含 OpenAPI 服务器支持和 OpenWebUI OpenAPI 工具(需要 OWUI 0.60.0 版本)集成,可在聊天界面中无缝生成和显示图像!OpenAPI 与 MCP 服务器分离,可将其初始化到您自己的项目中!
📃 目录
🚀 简介
DiffuGen 是一款基于 MCP 的强大图像生成系统,可将尖端的 AI 模型直接引入您的开发工作流程。它将 Flux 模型(Flux Schnell、Flux Dev)和稳定的 Diffusion 变体(SDXL、SD3、SD1.5)无缝集成到统一的界面中,让您无需切换工具即可充分利用每个模型系列的独特优势。凭借全面的参数控制和多 GPU 支持,DiffuGen 能够从中等硬件上的快速概念草图扩展到高性能系统上的生产级视觉效果。
DiffuGen 建立在高度优化的stable-diffusion.cpp实现之上,即使在普通硬件上也能提供卓越的性能,同时保持高质量的输出。
🧠 理解 MCP 和 DiffuGen
什么是 MCP?
MCP(模型上下文协议)是一种允许 LLM(大型语言模型)访问自定义工具和服务的协议。简单来说,MCP 客户端(例如 Cursor、Windsurf、Roo Code 或 Cline)可以向 MCP 服务器发出请求,以访问其提供的工具。
DiffuGen 作为 MCP 服务器
DiffuGen 是一个 MCP 服务器,提供文本转图片的功能。它实现了 MCP 协议,允许兼容的 IDE 发送生成请求并接收生成的图片。
该服务器公开两个主要工具:
generate_stable_diffusion_image
:使用稳定扩散模型生成generate_flux_image
:使用 Flux 模型生成
技术架构
DiffuGen 由几个关键组件组成:
- setup-diffugen.sh :完整的安装实用程序和模型下载器和管理器
- diffugen.py :实现 MCP 服务器功能并定义生成工具的核心 Python 脚本
- diffugen.sh :一个 shell 脚本启动器,用于设置环境并启动 Python 服务器
- diffugen.json :MCP 与各种 IDE 集成的模板配置文件(复制到 IDE 的 MCP 配置中)
- stable-diffusion.cpp :用于实际图像生成的稳定扩散的优化 C++ 实现
该系统的工作原理是:
- 从 MCP 客户端接收提示和参数数据
- 通过 Python 服务器处理请求
- 使用适当的参数调用 stable-diffusion.cpp 二进制文件
- 将生成的图像保存到配置的输出目录
- 将生成的图像的路径和元数据返回给客户端
关于 stable-diffusion.cpp
stable-diffusion.cpp是高度优化的稳定扩散算法的 C++ 实现。与 Python 参考实现相比,它提供以下功能:
- 推理速度显著加快(最高可提高 3-4 倍)
- 更低的内存使用率(适用于 VRAM 低至 4GB 的 GPU)
- 针对 NVIDIA GPU 优化的 CUDA 内核
- 支持多种采样方法和模型格式
- 支持模型量化以获得更好的性能
- 核心生成过程无需 Python 依赖
这使得 DiffuGen 即使在适度的硬件设置下也能提供具有卓越性能的高质量图像生成。
✨ 特点
- 多模型支持:使用各种模型生成图像,包括 Flux Schnell、Flux Dev、SDXL、SD3 和 SD1.5
- MCP 集成:与支持 MCP 的 IDE(Cursor、Windsurf、Roo Code、Cline 等)无缝集成
- OpenAPI 服务器:附加 REST API 接口,用于直接通过 HTTP 访问图像生成功能
- 跨平台:适用于 Linux、macOS 和 Windows(通过本机或 WSL)
- 参数控制:通过以下控制来微调您的生成:
- 图像尺寸(宽度/高度)
- 采样步骤
- CFG尺度
- 种子值
- 负面提示(仅适用于 SD 型号,Flux 不支持负面提示。)
- 采样方法
- CUDA 加速:利用 GPU 加速更快地生成图像
- 自然语言界面:使用简单的自然语言命令生成图像
- 智能错误恢复:通过操作感知恢复程序实现强大的错误处理
- 用户友好设置:具有改进中断处理的交互式设置脚本
- 资源跟踪:会话感知资源管理,实现高效清理
- 可定制界面:支持自定义 ANSI 艺术标识和视觉增强
💻系统要求
最低要求:
- CPU :4 核处理器(Intel i5/AMD Ryzen 5 或同等级别)
- RAM :8GB 系统内存
- 存储空间:5GB 可用磁盘空间(最好使用 SSD,以便更快地加载模型)
- Python :3.8 或更高版本
- GPU :集成显卡或入门级专用GPU(可选)
- 网络:宽带连接用于模型下载(5+ Mbps)
建议要求:
- CPU :8+核处理器(Intel i7/i9 或 AMD Ryzen 7/9)
- RAM :16GB+系统内存
- GPU :配备 6GB+ VRAM 的 NVIDIA GPU(RTX 2060 或更高版本可获得最佳性能)
- 存储空间:20GB+可用SSD空间
- Python :3.10 或更新版本(3.11 提供最佳性能)
- 网络:高速连接(20+ Mbps),高效下载模型
📥 安装
自动安装(推荐)
安装 DiffuGen 最简单的方法是使用提供的安装脚本:
按照交互式提示完成安装。
安装脚本将:
- 安装必要的依赖项
- 克隆并构建 stable-diffusion.cpp
- 设置 Python 虚拟环境
- 下载选定的模型(注意:某些模型也需要 Clip\VAE 模型)
- 为您的系统配置文件路径
手动安装
如果您希望手动安装,请按照以下步骤操作:
- 克隆存储库:
- 构建 stable-diffusion.cpp:
使用 CUDA:
没有 CUDA:
- 创建并激活Python虚拟环境:
- 下载所需模型(结构如下图所示):
您可以从以下来源下载模型:
注意:模型下载可能需要较长时间,具体取决于您的网络连接。SDXL 模型约 6GB,SD3 模型约 13GB,SD1.5 模型约 4GB,Flux 模型各约 8-13GB。
- 更新配置中的文件路径:
将 shell 脚本设置为可执行文件
配置方法:DiffuGen 使用单个配置文件 ( diffugen.json
) 作为所有设置的真实来源。工作流程如下:
- 使用您想要的设置编辑 DiffuGen 根目录中的
diffugen.json
- 运行
setup_diffugen.sh
中的选项 5 以自动更新此文件中的路径 - 将
diffugen.json
的内容复制到 IDE 的 MCP 配置文件中
该文件包含所有必要的设置:
- 文件路径(命令、SD_CPP_PATH、models_dir、output_dir)
- 默认模型参数(steps、cfg_scale、sampling_method)
- VRAM 使用设置
- IDE 集成的元数据
🔧 IDE 设置说明
使用光标设置
- 下载并安装Cursor
- 前往“光标设置”>“MCP”,然后点击“添加新的全局 MCP 服务器”
- 复制 DiffuGen 的
diffugen.json
文件的内容并将其粘贴到~/.cursor/mcp.json
中 - 在“设置”>“MCP”中刷新 MCP 服务器
- 通过打开 AI 聊天面板(Ctrl+K 或 Cmd+K)并请求生成图像来使用 DiffuGen
使用 Windsurf 设置
- 下载并安装Windsurf
- 导航至 Windsurf > 设置 > 高级设置或命令面板 > 打开 Windsurf 设置页面
- 向下滚动到 Cascade 部分并单击“添加服务器”>“添加自定义服务器 +”
- 复制 DiffuGen 的
diffugen.json
文件的内容并粘贴到~/.codeium/windsurf/mcp_config.json
- 通过 Cascade 聊天界面使用 DiffuGen
使用 Roo Code 进行设置
- 下载并安装Roo Code
- 找到 Roo Code 的 MCP 配置文件
- 将 DiffuGen 的
diffugen.json
文件的内容复制到 Roo Code 的 MCP 配置中 - 通过 AI 助手功能使用 DiffuGen
使用 Cline 进行设置
- 下载并安装Cline
- 将 DiffuGen 的
diffugen.json
文件的内容复制到 Cline 的 MCP 设置中 - 通过 AI 聊天或命令界面使用 DiffuGen
在 Anthropic Console 中使用 Claude 进行设置
如果您已将 DiffuGen 设置为系统上的 MCP 服务器,Claude 便可以使用它。当您要求 Claude 生成图像时,请明确指定要使用的 DiffuGen,并提供您想要使用的参数。
🎮 使用方法
要手动启动 DiffuGen 服务器:
或者直接使用 Python:
当服务器成功启动时,您应该看到: DiffuGen ready
。
OpenAPI 服务器使用
OpenAPI 服务器提供了一个 REST API 接口,可以通过 HTTP 直接访问 DiffuGen 的图像生成功能。这是对 MCP 集成的补充,可用于:
- 直接 HTTP API 访问
- 与其他不支持 MCP 的工具集成
- 需要编程访问的自定义应用程序
有关详细的设置说明和高级配置选项,请参阅OpenAPI 集成指南。
要启动 OpenAPI 服务器:
如果需要,可以将服务器配置为使用其他主机或端口。默认情况下,它运行在:
- 主机:0.0.0.0
- 端口:8080
服务器将在http://0.0.0.0:8080上可用,交互式文档将在http://0.0.0.0:8080/docs上可用。
生成的图像默认保存到/output
目录。如果此目录无法访问,服务器将自动在当前工作目录中创建一个output
目录。图像通过/images
端点提供。
OpenWebUI 集成
- 打开 OpenWebUI 设置(齿轮图标)
- 导航至“工具”部分
- 点击“+”按钮添加新的工具服务器
- 输入以下详细信息:
- 网址: http://0.0.0.0: 5199
- API 密钥:(留空)
- 点击“保存”
添加后,点击聊天界面的工具图标即可在可用工具列表中看到 DiffuGen。以下端点可用:
generate_stable_image_generate_stable_post
:通过稳定扩散生成generate_flux_image_endpoint_generate_flux_post
:使用 Flux 模型生成list_models_models_get
:列出可用模型
使用 curl 的示例:
使用 Python 请求的示例:
按模型划分的默认参数
每个模型都有为获得最佳结果而优化的特定默认参数:
模型 | 默认步骤 | 默认 CFG 比例 | 最适合 |
---|---|---|---|
通量流 | 8 | 1.0 | 快速草稿、概念图像 |
flux-dev | 20 | 1.0 | 更高质量的助焊剂生成 |
sdxl | 20 | 7.0 | 高质量细节图像 |
sd3 | 20 | 7.0 | 最新一代,品质优良 |
sd15 | 20 | 7.0 | 经典基线模型 |
可以通过向 IDE 的 MCP 配置文件添加default_params
部分来定制这些默认参数:
您只需指定要覆盖的参数 - 任何未指定的值都将使用内置默认值。
注意:有关特定于模型的命令行示例和建议,请参阅特定于模型的参数建议部分。
要求法学硕士生成图像
以下是如何要求 AI 助手使用 DiffuGen 生成图像的示例:
基本要求:
附型号规格:
使用高级参数:
参数参考
DiffuGen 可以从命令行使用,基本语法如下:
例子:
此命令使用默认参数(flux-schnell 模型、512x512 分辨率等)生成图像并将其保存到配置的输出目录。
以下是可以与 DiffuGen 一起使用的参数(适用于 MCP 界面和命令行):
范围 | 描述 | 默认 | 有效值 | 命令行标志 |
---|---|---|---|---|
模型 | 用于生成的模型 | 通量-schnell/sd15 | 通量施奈尔、通量开发、sdxl、sd3、sd15 | - 模型 |
宽度 | 图像宽度(以像素为单位) | 512 | 256-2048 | - 宽度 |
高度 | 图像高度(以像素为单位) | 512 | 256-2048 | - 高度 |
步骤 | 扩散步骤数 | 特定模型 | 1-100 | --步骤 |
cfg_scale | 无分类器指导量表 | 特定模型 | 0.1-30.0 | --cfg-scale |
种子 | 随机种子用于重复性 | -1(随机) | -1 或任何整数 | - 种子 |
采样方法 | 扩散采样法 | 欧拉 | 欧拉,euler_a,heun,dpm2,dpm++2s_a,dpm++2m,dpm++2mv2,lcm | --采样方法 |
负面提示 | 图像中应避免的元素 | ““ (空的) | 任意文本字符串 | --negative-prompt |
输出目录 | 保存图像的目录 | 配置定义 | 有效路径 | --输出目录 |
在要求AI助手生成图像或使用命令行界面时,可以指定这些参数。参数传递的格式根据界面不同而不同:
- 在 MCP/AI 助手中:
parameter=value
(例如,model=sdxl, width=768, height=512
) - 在命令行中:
--parameter value
(例如,--model sdxl --width 768 --height 512
)
选择默认值是为了在最短的等待时间内提供良好的开箱即用结果。为了获得更高质量的图像,请考虑增加步数或切换到 sdxl 等模型。
特定模型的参数建议
注意:这些建议基于模型默认参数部分并提供了实际示例。
为了通过命令行使用特定模型时获得最佳效果:
Flux 模型(flux-schnell、flux-dev)
标准 SD 型号(sdxl、sd3、sd15)
默认参数更改
如果配置中未另行指定,DiffuGen 的命令行界面将使用以下默认值:
- 默认模型:如果未指定,则使用适合功能的模型(Flux 功能使用 flux-schnell,SD 功能使用 sd15)
- 默认采样方法:
euler
(最适合 Flux 模型) - 默认 CFG 比例:Flux 模型为
1.0
,标准 SD 模型为7.0
- 默认步数:flux-schnell 为
8
,其他型号为20
- 默认尺寸:512x512像素
使用命令行时,除非要覆盖默认值,否则无需指定这些参数。如果您经常使用特定参数,请考虑将它们添加到配置文件中,而不是在每个命令行上都指定它们。
命令行使用说明
- 生成的图像将保存到配置的输出目录中,文件名基于时间戳和参数
- 您可以通过多次运行命令来按顺序生成多个图像
- 对于批处理,考虑创建一个使用不同参数调用 DiffuGen 的 shell 脚本
- 要查看所有可用的命令行选项,请运行
./diffugen.sh --help
- 同一引擎为 MCP 界面和命令行工具提供动力,因此质量和功能相同
⚙️ 配置
配置方法
DiffuGen 使用以diffugen.json
文件为中心的单一配置方法:
- 主要配置文件:DiffuGen 根目录中的
diffugen.json
是所有设置的唯一真实来源 - IDE 集成:将
diffugen.json
的内容复制到 IDE 的 MCP 配置文件中 - 环境变量:对于高级用法,您可以使用环境变量覆盖设置
环境变量覆盖
对于高级用法,您可以使用环境变量覆盖设置:
SD_CPP_PATH
:覆盖 stable-diffusion.cpp 的路径DIFFUGEN_OUTPUT_DIR
:覆盖输出目录DIFFUGEN_DEFAULT_MODEL
:覆盖默认模型DIFFUGEN_VRAM_USAGE
:覆盖 VRAM 使用设置CUDA_VISIBLE_DEVICES
:控制使用哪些 GPU 进行生成
设置 IDE 特定的配置
DiffuGen 允许您通过在每个 IDE 的 MCP 配置中使用环境变量来为不同的 IDE 进行不同的配置。这样,您就可以在维护单个基础diffugen.json
文件的同时,自定义每个 IDE 的参数。
配置优先级的工作原理如下:
- 环境变量(最高优先级)
- 来自本地
diffugen.json
文件的设置(基本配置)
示例:不同 IDE 的不同输出目录
对于 Cursor (在~/.cursor/mcp.json
中):
对于 Windsurf (在~/.codeium/windsurf/mcp_config.json
中):
示例:不同的默认模型和 VRAM 设置
这种方法允许您根据 IDE 定制 DiffuGen 的行为,同时仍然使用相同的底层安装。
关键配置元素
命令和参数
- 命令:
diffugen.sh
脚本的完整路径(必须是绝对路径) - args :传递给脚本的附加命令行参数(通常留空)
环境变量
- CUDA_VISIBLE_DEVICES :控制使用哪些 GPU 进行生成
"0"
:仅使用第一个 GPU"1"
:仅使用第二个 GPU"0,1"
:同时使用第一和第二个 GPU"-1"
: 禁用 CUDA 并仅使用 CPU
- SD_CPP_PATH :stable-diffusion.cpp 安装目录的路径
- 这用于定位 stable-diffusion.cpp 二进制文件和模型
- default_model :未指定时使用的默认模型
资源配置
- models_dir :包含模型文件的目录
- 应该指向 stable-diffusion.cpp 安装中的
models
目录
- 应该指向 stable-diffusion.cpp 安装中的
- output_dir :生成的图像的保存目录
- 必须对运行 DiffuGen 的用户具有写入权限
- vram_usage :控制 VRAM 使用策略
"adaptive"
:根据可用的 VRAM 自动调整内存使用情况"minimal"
:使用最小 VRAM,但牺牲速度"balanced"
:平衡内存使用和速度(默认)"maximum"
:使用最大可用 VRAM 以获得最佳性能
IDE 特定选项
每个 IDE 都有您可以在diffugen.json
文件中自定义的特定选项:
光标选项
风帆冲浪选项
自定义默认参数
您可以在default_params
部分中自定义每个模型的默认参数:
更新配置文件
使用自动安装脚本时,运行选项 5 时,将创建一个正确配置的diffugen.json
文件,其中包含系统的正确路径。要将 DiffuGen 与您的 IDE 集成:
- 运行
setup_diffugen.sh
中的选项 5 来更新diffugen.json
中的路径 - 复制生成的
diffugen.json
文件的全部内容 - 将其粘贴到 IDE 的 MCP 配置文件中(例如
~/.cursor/mcp.json
) - 重新启动 IDE 以应用更改
这种方法的主要优点是配置的单一真实来源,使得维护和更新 DiffuGen 设置变得更加容易。
📃 高级用法
DiffuGen Python 模块可以在您自己的 Python 脚本中以编程方式导入和使用:
使用 OpenAPI 服务器
您还可以在应用程序中以编程方式使用 OpenAPI 服务器:
🔍 故障排除
常见问题和解决方案
- 缺少模型或路径不正确
- 确保所有模型文件都已下载并放置在正确的目录中
- 检查配置文件中的路径是否正确设置
- 验证文件权限是否允许对模型文件进行读取访问
- CUDA/GPU 问题
- 确保您的 NVIDIA 驱动程序是最新的
- 设置
CUDA_VISIBLE_DEVICES
以针对特定的 GPU - 如果 VRAM 不足,请尝试使用较小的模型或减小尺寸
- 图像质量问题
- 增加步骤以获得更好的质量(以生成时间为代价)
- 调整 CFG 比例:越高,遵守越迅速,越低,创造力越强
- 尝试不同的采样方法(dpm++2m 通常能提供良好的结果)
- 使用更详细的提示和具体的风格描述
- 文件权限错误
- 确保运行 DiffuGen 的用户可写入输出目录
- 检查所有脚本是否具有执行权限(
chmod +x diffugen.sh
)
获取帮助
如果您遇到此处未涵盖的问题,您可以:
- 检查 GitHub 存储库中的问题和解决方案
- 启用调试日志记录运行:
DEBUG=1 ./diffugen.sh "your prompt"
- 通过 GitHub 问题联系开发人员
🌟 贡献
欢迎为 DiffuGen 做出贡献!贡献方式:
- 分叉存储库
- 创建功能分支
- 进行更改
- 提交拉取请求
请确保您的代码遵循项目的编码标准并包含适当的测试。
📄 许可证
该项目根据 Apache 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
- 所有模型均根据其各自的发行版获得许可,并且不以任何方式由 CLOUDWERX.DEV 授权或提供。
- HuggingFace.co 用于下载模型,与 CLOUDWERX.DEV 没有任何关联
🙏 致谢
- stable-diffusion.cpp用于优化的 C++ 实现
- 稳定扩散模型的稳定性人工智能
- Black Forest Labs的 Flux 模型
- Hugging Face的下载链接
- MCP 协议的所有贡献者
📬 联系方式
- GitHub: CLOUDWERX-DEV
- 网站: cloudwerx.dev
- 邮箱: sysop@cloudwerx.dev
- Discord:加入我们的服务器
This server cannot be installed
强大的图像生成系统利用多种稳定扩散模型(flux-schnell、flux-dev、sdxl、sd3、sd15)来创建具有精确定制的高质量 AI 生成图像。