返回市场
差异生成器

差异生成器

作者:CLOUDWERX-DEV15 星标更新:2025-04-07

项目介绍

DiffuGen - 高级本地图像生成器,集成MCP

<p align="center"> <img src="diffugen.png" alt="DiffuGen Logo" width="400"/> </p> <p align="center"> <em>嵌入代码中的AI艺术工作室。通过这个强大的MCP服务器,您可以生成、迭代和完善视觉概念,适用于Cursor、Windsurf和其他兼容IDE,利用前沿的Flux和Stable Diffusion模型,而不影响您的开发流程。</em> </p> <p align="center"> <a href="https://github.com/CLOUDWERX-DEV/diffugen/stargazers"><img src="https://img.shields.io/github/stars/CLOUDWERX-DEV/diffugen" alt="Stars Badge"/></a> <a href="https://github.com/CLOUDWERX-DEV/diffugen/network/members"><img src="https://img.shields.io/github/forks/CLOUDWERX-DEV/diffugen" alt="Forks Badge"/></a> <a href="https://github.com/CLOUDWERX-DEV/diffugen/issues"><img src="https://img.shields.io/github/issues/CLOUDWERX-DEV/diffugen" alt="Issues Badge"/></a> <a href="https://github.com/CLOUDWERX-DEV/diffugen/blob/master/LICENSE"><img src="https://img.shields.io/github/license/CLOUDWERX-DEV/diffugen" alt="License Badge"/></a> </p>

新功能:现在包括OpenAPI服务器支持和OpenWebUI OpenAPI工具(需要OWUI版本0.60.0)集成,实现聊天界面中无缝图像生成和显示!OpenAPI与MCP服务器分离,允许您将其整合到自己的项目中!

📃 目录

🚀 简介

DiffuGen是一个基于MCP的强大图像生成系统,它将前沿的AI模型直接带入您的开发工作流。它无缝集成了Flux模型(Flux Schnell,Flux Dev)和Stable Diffusion变种(SDXL,SD3,SD1.5),提供统一的界面,让您能够充分利用每个模型家族的独特优势,而无需切换工具。凭借全面的参数控制和多GPU支持,DiffuGen从在适度硬件上的快速概念草图到高性能系统上的生产质量视觉效果都能胜任。

基于高度优化的stable-diffusion.cpp实现,即使在适度硬件上,DiffuGen也能提供卓越性能并保持高质量输出。

🧠 理解MCP和DiffuGen

什么是MCP?

MCP(模型上下文协议)是一种使大型语言模型(LLMs)能够访问自定义工具和服务的协议。简单来说,一个MCP客户端(如Cursor,Windsurf,Roo Code或Cline)可以向MCP服务器发送请求以访问它们提供的工具。

DiffuGen作为MCP服务器

DiffuGen作为一个MCP服务器,提供了文本到图像生成的能力。它实现了MCP协议,允许兼容的IDE发送生成请求并接收生成的图像。

该服务器暴露了两个主要工具:

  1. generate_stable_diffusion_image:使用Stable Diffusion模型生成
  2. generate_flux_image:使用Flux模型生成

技术架构

DiffuGen由几个关键组件组成:

  • setup-diffugen.sh:完整的安装工具和模型下载管理器
  • diffugen.py:核心Python脚本,实现MCP服务器功能并定义生成工具
  • diffugen.sh:一个shell脚本启动器,设置环境并启动Python服务器
  • diffugen.json:用于MCP集成到各种IDE的模板配置文件(需复制到IDE的MCP配置中)
  • stable-diffusion.cpp:用于实际图像生成的高度优化的C++实现

系统的工作方式如下:

  1. 接收来自MCP客户端的提示和参数数据
  2. 通过Python服务器处理请求
  3. 使用适当的参数调用stable-diffusion.cpp二进制文件
  4. 将生成的图像保存到配置的输出目录
  5. 向客户端返回生成图像的路径和元数据

关于stable-diffusion.cpp

stable-diffusion.cpp是Stable Diffusion算法的高度优化的C++实现。与Python参考实现相比,它提供了:

  • 显著更快的推理速度(快3-4倍)
  • 更低的内存使用(在具有最少4GB VRAM的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艺术logo和视觉增强

💻 系统需求

最低需求:

  • CPU:4核处理器(Intel i5/AMD Ryzen 5 或同等)
  • RAM:8GB系统内存
  • 存储:5GB空闲磁盘空间(推荐SSD,以便更快加载模型)
  • Python:3.8或更高版本
  • 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的方法是使用提供的设置脚本:

git clone https://github.com/CLOUDWERX-DEV/diffugen.git
cd DiffuGen
chmod +x diffugen.sh
chmod +x setup_diffugen.sh
./setup_diffugen.sh

按照交互式提示完成安装。

设置脚本将:

  • 安装必要的依赖项
  • 克隆并构建stable-diffusion.cpp
  • 设置Python虚拟环境
  • 下载选定的模型(注意:某些模型还需要Clip/VAE模型)
  • 配置系统文件路径

手动安装

如果您希望手动安装,请遵循以下步骤:

  1. 克隆仓库:
git clone https://github.com/CLOUDWERX-DEV/diffugen.git
cd DiffuGen
git clone --recursive https://github.com/leejet/stable-diffusion.cpp
  1. 构建stable-diffusion.cpp:
cd stable-diffusion.cpp
mkdir -p build && cd build

使用CUDA:

cmake .. -DCMAKE_BUILD_TYPE=Release -DSD_CUDA=ON
make -j$(nproc)
cd ../..

不使用CUDA:

cmake .. -DCMAKE_BUILD_TYPE=
make -j$(nproc)
cd ../..
  1. 创建并激活Python虚拟环境:
python3 -m venv diffugen_env
source diffugen_env/bin/activate  # 在Windows上:diffugen_env\Scripts\activate
pip install -r requirements.txt
  1. 下载所需模型(结构如下所示):
stable-diffusion.cpp/models/
├── ae.sft                           # VAE模型
├── clip_l.safetensors               # CLIP模型
├── flux/
│   ├── flux1-schnell-q8_0.gguf     # Flux Schnell模型(默认)
│   └── flux1-dev-q8_0.gguf          # Flux Dev模型
├── sd3-medium.safetensors           # SD3模型
├── sdxl-1.0-base.safetensors        # SDXL模型
├── sdxl_vae-fp16-fix.safetensors    # SDXL VAE
├── t5xxl_fp16.safetensors           # T5模型
└── v1-5-pruned-emaonly.safetensors  # SD1.5模型

可以从以下来源下载模型:

# 创建模型目录
mkdir -p stable-diffusion.cpp/models/flux

# Flux模型
# Flux Schnell - 快速生成模型(Q8量化,需要t5xxl,clip-l,vae)
curl -L https://huggingface.co/leejet/FLUX.1-schnell-gguf/resolve/main/flux1-schnell-q8_0.gguf -o stable-diffusion.cpp/models/flux/flux1-schnell-q8_0.gguf

# Flux Dev - 开发模型,质量更好(Q8量化,需要t5xxl,clip-l,vae)
curl -L https://huggingface.co/leejet/FLUX.1-dev-gguf/resolve/main/flux1-dev-q8_0.gguf -o stable-diffusion.cpp/models/flux/flux1-dev-q8_0.gguf

# Flux所需的模型
# T5XXL文本编码器
curl -L https://huggingface.co/Sanami/flux1-dev-gguf/resolve/main/t5xxl_fp16.safetensors -o stable-diffusion.cpp/models/t5xxl_fp16.safetensors

# CLIP-L文本编码器
curl -L https://huggingface.co/Sanami/flux1-dev-gguf/resolve/main/clip_l.safetensors -o stable-diffusion.cpp/models/clip_l.safetensors

# 图像解码的VAE
curl -L https://huggingface.co/pretentioushorsefly/flux-models/resolve/main/models/vae/ae.safetensors -o stable-diffusion.cpp/models/ae.sft

# Stable Diffusion模型
# SDXL 1.0基础模型(需要sdxl-vae)
curl -L https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_base_1.0.safetensors -o stable-diffusion.cpp/models/sd_xl_base_1.0.safetensors

# SDXL VAE(SDXL需要)
curl -L https://huggingface.co/madebyollin/sdxl-vae-fp16-fix/resolve/main/sdxl_vae-fp16-fix.safetensors -o stable-diffusion.cpp/models/sdxl_vae-fp16-fix.safetensors

# Stable Diffusion 1.5(独立)
curl -L https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors -o stable-diffusion.cpp/models/v1-5-pruned-emaonly.safetensors

# Stable Diffusion 3 Medium(独立)
curl -L https://huggingface.co/leo009/stable-diffusion-3-medium/resolve/main/sd3_medium_incl_clips_t5xxlfp16.safetensors -o stable-diffusion.cpp/models/sd3_medium_incl_clips_t5xxlfp16.safetensors

注意:根据您的互联网连接情况,模型下载可能需要很长时间。SDXL模型大约6GB,SD3约13GB,SD1.5约4GB,每个Flux模型8-13GB。

  1. 更新配置文件中的路径:

设置shell脚本为可执行:

chmod +x diffugen.sh

配置方法: DiffuGen使用单个配置文件(diffugen.json)作为所有设置的事实来源。工作流程如下:

  1. 编辑DiffuGen根目录下的diffugen.json文件,设置您想要的设置
  2. 运行setup_diffugen.sh中的选项5,自动更新此文件中的路径
  3. diffugen.json的内容复制到IDE的MCP配置文件中

该文件包含所有必要的设置:

  • 文件路径(command,SD_CPP_PATH,models_dir,output_dir)
  • 默认模型参数(steps,cfg_scale,sampling_method)
  • VRAM使用设置
  • IDE集成的元数据
{
  "mcpServers": {
    "diffugen": {
      "command": "/home/cloudwerxlab/Desktop/Servers/MCP/Tools/DiffuGen/diffugen.sh",
      "args": [],
      "env": {
        "CUDA_VISIBLE_DEVICES": "0",
        "SD_CPP_PATH": "path/to/stable-diffusion.cpp",
        "default_model": "flux-schnell"
      },
      "resources": {
        "models_dir": "path/to/stable-diffusion.cpp/models",
        "output_dir": "path/to/outputs",
        "vram_usage": "adaptive"
      },
      "metadata": {
        "name": "DiffuGen",
        "version": "1.0",
        "description": "嵌入代码中的AI艺术工作室。通过这个强大的MCP服务器,您可以生成、迭代和完善视觉概念,适用于Cursor,Windsurf和其他兼容IDE,利用前沿的Flux和Stable Diffusion模型,而不影响您的开发流程。",
        "author": "CLOUDWERX LAB",
        "homepage": "https://github.com/CLOUDWERX-DEV/diffugen",
        "usage": "使用两种主要方法生成图像:\n1. 标准生成:'生成[描述]的图像',带有可选参数:\n   - 模型:从flux-schnell(默认)、flux-dev、sdxl、sd3、sd15中选择\n   - 尺寸:宽度和高度(默认:512x512)\n   - 步骤:扩散步数(默认:20,较低值可加快生成速度)\n   - cfg_scale:指导比例(默认:7.0,较低值可增加创意自由度)\n   - 种子:用于可重复结果(-1表示随机)\n   - 采样方法:euler,euler_a(默认),heun,dpm2,dpm++2s_a,dpm++2m,dpm++2mv2,lcm\n   - 负面提示:指定要避免的图像元素\n2. 快速Flux生成:'生成[描述]的Flux图像',以较少的步骤(默认:4)获得更快的结果"
      },
      "cursorOptions": {
        "autoApprove": true,
        "category": "图像生成",
        "icon": "🖼️",
        "displayName": "DiffuGen"
      },
      "windsurfOptions": {
        "displayName": "DiffuGen",
        "icon": "🖼️",
        "category": "创意工具"
      },
      "default_params": {
        "steps": {
          "flux-schnell": 8,
          "flux-dev": 20,
          "sdxl": 20,
          "sd3": 20,
          "sd15": 20
        },
        "cfg_scale": {
          "flux-schnell": 1.0,
          "flux-dev": 1.0,
          "sdxl": 7.0,
          "sd3": 7.0, 
          "sd15": 7.0
        },
        "sampling_method": {
          "flux-schnell": "euler",
          "flux-dev": "euler",
          "sdxl": "euler",
          "sd