标签 ComfyUI 下的文章

上个帖子已经分享了如何在润云进入ComfyUI界面。

下面我来具体分享ComfyUI的使用方法

一、文生图

界面上的节点和整个画布都可以拖动,也可以放大缩小。

ComfyUI 为我们提供了一个默认的文生图工作流。直接点击右边的 Queue Prompt 就能够触发生图流程,你可以看到有个绿色的边框会随着流程的进展在不同的节点上显示。

整个工作流由两个基本的部分组成:节点(Nodes)和边(Edges)。

• 每一个矩形块就是一个节点,比如 Load Checkpoint CLIP Text Encoder 等。可以把每个节点看成是函数,它们都具有输入、输出和参数三个属性。

• 连接每个节点的输入和输出的线就是边。

其他还有很多的细节和概念,我将会在接下来的内容中逐步解释。

我们直接从这个默认工作流开始,它包含了下面这些步骤。

1.1 选择模型

首先需要在 Load Checkpoint 这个节点中选择一个模型,这里的模型选项就是在上文中下载的那些模型文件。比如我这里就放置了多个可选的模型,我可以根据自己的需求选择我想要使用的模型。

1.2 构造提示词

选择完模型,下一步就是构造提示语了。

在界面上,有两个 CLIP Text Encode (Prompt) 节点,这两个节点都是用来构造我们的提示语的。

其中,上面一个节点用来输入正向提示语(Positive Prompt),即告诉模型做什么,而下面一个节点则用来输入负面提示语(Negative Prompt),即告诉模型不要做什么。

如果觉得容易混淆,可以像我这样直接双击节点名称改成它对应的功能的名称,就像下面这样。

下面的节点也可以看出哪个是正向哪个是负向

CLIP Text Encode 节点的作用是将提示语转换为标记,然后通过文本编码器将它们处理为嵌入(Embeddings)。

你可以使用 (关键词:权重) 的这样的语法来控制关键词的权重。

比如,使用 (keyword:1.4) 来增强效果,或 (keyword:0.9) 来减弱效果。

1.3 生成图像

点击下方的 Run,等待一会儿就能够看到有一张图像生成完成了。

二、ComfyUI 的工作机制

ComfyUI 的强大之处就在于它的高度可配置性。熟悉每个节点的功能之后可以让我们轻易地根据需求来定制化操作。

在介绍图生图工作流之前,我需要先向你详细介绍一下 ComfyUI 的工作机制。

Stable Diffusion 的生图过程可以总结为以下三个主要步骤:

  • 文本编码:用户输入的提示语通过一个称为文本编码器(Text Encoder) 的组件编译成各个单词的特征向量。这一步将文本转换为模型可以理解和处理的格式;
  • 潜在空间(Latent space)转换:来自文本编码器的特征向量与一个随机噪声图像一起被转换到潜在空间。在这个空间中,随机图像根据特征向量进行去噪处理,得到一个中间产物。这一步生图过程的是关键所在,因为模型会在这里学习将文本特征与视觉表现相联系。
  • 图像解码:最后,潜在空间中的中间产物由图像解码器(Image Decoder) 进行解码,转换为我们可以看到的实际图像。

了解了 Stable Diffusion 层面的生图流程之后,接下来我们深入了解一下 ComfyUI 在实现这个过程中的关键组件和节点。

2.1 Load Checkpoint 节点

Load Checkpoint 节点会加载一个模型,一个 Stable Diffusion 模型主要包含以下三个部分:

  • MODEL

MODEL 组件是一个在潜在空间(Latent Space)中运行的噪声预测模型。

这句话的意思是 Stable Diffusion 模型在潜在空间中对图像的生成过程进行建模,并通过预测和去除噪声逐渐还原图像的过程。

具体来说就是,在 Stable Diffusion 中,图像生成首先在潜在空间中引入随机噪声,然后模型通过一系列步骤逐渐去除这些噪声,生成符合提示语的图像。

这种逐步去噪的过程由噪声预测模型来完成。潜在空间是图像的一个简化、高度抽象化的表示,可以降低模型的计算复杂度,可以让模型在生成图像时更高效。

在 ComfyUI 中,Load Checkpoint 节点的 MODEL 输出连接到 KSampler 节点,KSampler 节点执行反向扩散过程。

KSampler 节点利用 MODEL 在潜在表示中进行迭代去噪,逐步优化图像,直到它符合给定的提示语。

  • CLIP (Contrastive Language-Image Pre-training)

CLIP 其实是一个负责预处理用户提供的正向和负面提示语的语言模型。它将文本提示转换为 MODEL 可以理解的格式,指导图像生成过程。

在 ComfyUI 中,Load Checkpoint 节点的 CLIP 输出连接到 CLIP Text Encode 节点。CLIP Text Encode 节点获取用户提供的提示语,并将它们输入到 CLIP 语言模型中,转换为向量嵌入。

这些向量嵌入可以捕捉单词的语义,为 MODEL 生成符合提示语的图像提供更多的指导。

  • VAE (Variational AutoEncoder)

它包含一个编码器和一个解码器,其中,编码器用于将图像压缩为低维的潜在表示,而解码器用于从潜在表示中重建图像。

在文生图的过程中,VAE 仅在最后一步使用,它的作用就是将生成的图像从潜在空间转换回像素空间。

ComfyUI 中的 VAE Decode 节点获取 KSampler 节点的输出,并利用 VAE 的解码器部分将潜在表示转换为最终的像素空间图像。

VAE 与 CLIP 语言模型是独立的组件。CLIP 主要处理文本提示语,而 VAE 负责在像素空间和潜在空间之间进行转换。

2.2 CLIP Text Encode 节点

在上文中有提到,在 CLIP Text Encode 节点中我们可以输入生成图像的提示语,而这个节点的作用就是获取我们提供的提示语,并将其输入到 CLIP 语言模型中。

CLIP 是一个强大的语言模型,能够理解单词的语义并将其与视觉概念相关联。当提示语输入到 CLIP Text Encode 节点后,它会将每个单词转换为向量嵌入。向量嵌入是高维的数字表示,包含了单词的语义信息,模型能够根据这些信息生成符合提示语的图像。

2.3 Empty Latent Image 节点

在 ComfyUI 的文生图的过程中,它首先会在潜在空间中生成一个随机图像,这个图像会作为模型处理的初始状态,它的大小与实际像素空间中的图像尺寸成比例。

在 ComfyUI 中,我们可以调整潜在图像的高度和宽度来控制生成图像的大小。此外,我们还可以设置批处理大小来确定每次运行生成的图像数量(batch_size)。

潜在图像的最佳尺寸取决于所使用的 Stable Diffusion 模型版本。

对于 v1.5 模型,推荐的尺寸是 512x512 或 768x768;对于 SDXL 模型,最佳尺寸是 1024x1024。ComfyUI 提供了多种常见的宽高比可供选择,但是需要注意的是,潜在图像的宽度和高度必须是 8 的倍数,这样才能确保与模型架构的兼容性。

2.4 VAE 节点

在界面中我们能看到 Load Checkpoint 节点的 VAE 属性就直接连接到了 VAE 节点。所以,这里的 VAE 节点其实就是上文中所提到的负责在像素空间和潜在空间之间转换图像的 VAE。

2.5 KSampler 节点

在 ComfyUI 中,生图过程的核心节点就是 KSampler 节点。它负责在潜在空间中对随机图像进行去噪,让生成的图像符合我们提供的提示语。KSampler 使用的是一种称为反向扩散的技术,可以迭代地去除噪声,并根据 CLIP 向量嵌入添加有意义的细节。

KSampler 节点提供了多个参数,让我们可以微调图像的生成过程:

  • Seed

    Seed 值控制了初始噪声和最终图像的构图。设置特定的 Seed 值,我们可以获得可重复的结果,可以保持多次生成的一致性。

  • Control_after_generate

    这个参数决定了每次生成后 Seed 值的变化方式,可以设置为随机化(每次运行生成新的随机 Seed)、递增、递减或者固定不变。

  • Step

    采样步数决定了优化过程的强度。如果设置步数较大,则会产生更少的伪影和更精细的图像,但也会增加生成时间。

  • Sampler_name

    这个参数用于选择 KSampler 所使用的特定采样算法。不同的采样算法可能会产生略有不同的结果,且生成速度也会有所不同。

  • Scheduler

    这个参数用于控制在去噪过程中的每一步中噪声水平的变化速率,它决定了从潜在表示中去除噪声的速度。

  • Denoise

    这个参数用于设置去噪过程应消除的初始噪声量。值为 1 表示去除所有噪声,从而生成干净且细节丰富的图像。

通过调整这些参数,我们可以微调图像的生成过程,从而获得理想的图像。

至此,我花了大量篇幅向你介绍了 ComfyUI 中的所有节点以及其对应的功能,希望到目前为止能够帮助你对 ComfyUI 有一个较为全面的认知和理解。

后续我会使用图生图、图片扩展等流程的教学。点点关注,之后会持续更新哦~~~

从零开始使用ComfyUI:镜像部署与工作流操作全指南

本文基于实际Linux云实例操作场景,详细讲解从ComfyUI镜像环境到成功进入工作流的完整流程,涵盖环境排查、服务启动、访问验证等核心步骤,适配润云平台ComfyUI镜像及类似环境。

一、什么是comfyui

ComfyUI就像拥有一支神奇魔杖,可以轻松创造出令人惊叹的AI生成艺术。从本质上讲,ComfyUI是构建在Stable Diffusion之上的基于节点的图形用户界面(GUI),而Stable Diffusion是一种最先进的深度学习模型,可以根据文本描述生成图像。 但ComfyUI真正特别之处在于,它如何让像你这样的艺术家释放创造力,将你最疯狂的想法变为现实。

想象一下有一块数字画布,你可以通过连接不同的节点来构建自己独特的图像生成工作流,每个节点代表一个特定的功能或操作。 就像为你的AI生成杰作构建一个视觉食谱!

二、ComfyUI的准备

2.1 前置准备

进入润云平台,创建实例时选择ComfyUI镜像

创建实例成功之后,进入刚创建的实例Jupyter页面,并打开终端

2.2 确认ComfyUI安装路径

首先定位ComfyUI核心启动文件main.py,执行以下命令全局查找:


find / -name "main.py" 2>/dev/null | grep -i comfy

示例输出(本文实操路径):


/home/ComfyUI/main.py

若输出为空(镜像未预装ComfyUI),手动安装:


cd /root/workspace
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
pip install -r requirements.txt

2.3 查看实例公网IP

访问ComfyUI需实例公网IP,执行命令快速获取:


curl ifconfig.me

示例输出(本文实操IP):


221.5.60.2

2.4 检查端口占用

ComfyUI默认端口为8188,本文实操使用8888/8889端口,先检查端口是否被占用:


# 检查8888端口
netstat -tuln | grep 8888
# 检查8889端口
netstat -tuln | grep 8889

若输出包含LISTEN,说明端口被占用,需更换端口。

三、启动ComfyUI服务

3.1 基础启动命令(前台运行)

进入ComfyUI主目录,启动服务并指定外网访问权限及端口:


# 进入ComfyUI目录(根据实际路径调整)
cd /home/ComfyUI
# 启动服务(使用8889端口,避开占用)
python main.py --listen 0.0.0.0 --port 8889

启动成功标志:终端最后输出以下内容,说明服务已正常运行:


Starting server
To see the GUI go to: http://0.0.0.0:8889

3.2 后台运行(推荐)

避免关闭终端导致服务停止,使用nohup命令后台启动,同时记录日志:


cd /home/ComfyUI
nohup python main.py --listen 0.0.0.0 --port 8889 > /root/workspace/comfyui.log 2>&1 
  • 日志查看tail -f /root/workspace/comfyui.log 实时监控启动状态
  • 停止服务

      `# 查找ComfyUI进程ID

    ps aux | grep comfy

    3.3 常见启动报错解决

报错类型解决命令
python: command not foundapt update && apt install -y python3 python3-pip && ln -s /usr/bin/python3 /usr/bin/python
No module named xxx(缺少依赖)cd /home/ComfyUI && pip install -r requirements.txt
address already in use(端口占用)更换端口(如8889)重新启动服务
xformers依赖报错(TypeError: JITCallable._set_src()pip uninstall -y xformers && pip install xformers==0.0.27.post2 --force-reinstall

四、访问ComfyUI工作流界面

进入实例详情页增加上面的开启的端口,复制访问地址至浏览器即可看到ComfyUI可视化工作流编辑界面(左侧为节点面板,中间为画布,右侧为控制栏)。

五、首次使用工作流

5.1 加载内置工作流

  1. 进入界面后,点击左上角 LoadLoad WorkflowFrom Examples
  2. 选择 basic_text_to_image.json(基础文生图工作流),画布将自动加载预设节点;
  3. Checkpoint Loader 节点下拉选择模型(如SD 1.5,需提前放入模型文件至/home/ComfyUI/models/Stable-diffusion目录);
  4. CLIP Text Encode 节点输入正向提示词(如“a cute cat, 4k, detailed”)和反向提示词(如“low quality, blurry”);
  5. 点击右上角 Queue Prompt 运行工作流,生成的图片将在 Preview Image 节点实时显示。

5.2 保存与复用工作流

工作流调试完成后,点击顶部 SaveSave Workflow,将工作流保存为JSON文件,后续可通过 Load Workflow → From File 上传复用。

5.3 核心界面与节点详解

ComfyUI界面分为三大区域,掌握各区域功能是灵活使用的基础:

  • 左侧节点面板:按功能分类存放所有节点,可通过顶部搜索框快速查找(如输入“Lora”定位Lora加载节点)。核心分类包括:
    模型加载类(Checkpoint Loader、Lora Loader、VAE Loader):用于加载基础模型、微调模型及解码模型;
  • 提示词处理类(CLIP Text Encode、CLIP Text Encode (Advanced)):用于解析正向/反向提示词,控制生成内容;
  • 采样生成类(KSampler、EulerSampler):核心生成节点,控制采样步数、CFG值、生成尺寸等关键参数;
  • 后处理类(Preview Image、Save Image):用于预览生成结果及保存图片到本地。

中间画布区域:工作流编辑核心区,可拖拽节点、连接端口、调整节点位置。操作技巧:

连接节点:点击一个节点的输出端口(右侧小圆点),拖拽到目标节点的输入端口(左侧小圆点),松开即可建立连接;

删除节点:选中节点后按Delete键,或右键节点选择Remove

清空画布:右键画布空白处,选择Clear Workflow

右侧控制栏:包含工作流队列、历史记录、设置等功能。队列面板可查看当前生成任务进度,历史记录可回溯之前的生成结果及对应工作流配置。

5.4 自定义工作流搭建(以图生图为例)

除了加载内置工作流,也可手动搭建自定义流程,以图生图为例,步骤如下:

  1. 加载基础模型:从节点面板拖拽Checkpoint Loader到画布,选择SD 1.5或SDXL模型,同时拖拽VAE Loader加载对应VAE模型(优化图像质量);
  2. 导入参考图:拖拽Load Image节点,点击节点上的Upload按钮上传本地图片,作为生成参考;
  3. 图片预处理:拖拽Image Scale节点,连接Load Image的输出端口,设置目标生成尺寸(如512×512),勾选cropresize调整图片适配尺寸;
  4. 提示词配置:拖拽两个CLIP Text Encode节点,分别输入正向提示词(如“a beautiful landscape, oil painting style”)和反向提示词(如“ugly, distorted, low resolution”);
  5. 采样生成:拖拽KSampler节点,依次连接以下端口:
    model端口:连接Checkpoint Loader的model输出;
  6. positive端口:连接正向提示词节点的输出;
  7. negative端口:连接反向提示词节点的输出;
  8. latent_image端口:连接Image Scale的输出(需先拖拽VAEDecode节点转换图像格式);
  9. 结果预览与保存:拖拽Preview ImageSave Image节点,均连接KSampler的输出端口,设置保存路径(默认保存在/home/ComfyUI/output);
  10. 运行工作流:点击右上角Queue Prompt,等待生成完成,在Preview Image节点查看结果。

5.5 常用功能拓展(插件与模型管理)

ComfyUI支持通过插件拓展功能,核心拓展方式如下:

5.5.1 插件安装(以ComfyUI-Manager为例)

ComfyUI-Manager已预装在当前镜像中,可通过它快速安装插件:

  1. 进入ComfyUI界面,点击左侧节点面板顶部的ComfyUI-Manager按钮;
  2. 在弹出的窗口中选择Install Custom Nodes,搜索需要的插件(如“ControlNet”“UltimateSDUpscale”);
  3. 点击插件右侧的Install,安装完成后重启ComfyUI服务,插件节点将自动显示在左侧面板。
5.5.2 模型管理与加载

不同类型的模型需放在对应目录,否则无法加载:

模型类型存放目录加载节点
基础模型(.ckpt/.safetensors)/home/ComfyUI/models/Stable-diffusionCheckpoint Loader
Lora模型(.safetensors)/home/ComfyUI/models/LoraLora Loader
ControlNet模型(.pth)/home/ComfyUI/models/ControlNetControlNet Loader
VAE模型(.ckpt/.safetensors)/home/ComfyUI/models/VAEVAE Loader
模型上传方式:通过云实例文件管理工具,将本地模型上传至对应目录,重启ComfyUI后即可在节点中选择加载。

六、关键注意事项

  1. 核心路径:本文实操中ComfyUI主目录为/home/ComfyUI,启动文件为main.py,实际路径需根据查找结果调整;
  2. 端口选择:优先使用未被占用的端口,避免与Jupyter、Nginx等服务冲突;
  3. 报错处理depthanythingv2nodes_audio.py等扩展节点报错仅影响小众功能,文生图、图生图、ControlNet等核心工作流不受影响,可后续按需修复;
  4. 后台运行:生产环境建议使用nohup后台启动,同时定期清理日志文件,避免占用过多存储空间。

七、常见问题排查

问题现象排查方向
浏览器无法访问界面1. 公网IP是否正确;2. 端口是否放行;3. ComfyUI服务是否正常运行;4. 实例是否处于运行状态
启动后无界面提示1. 启动命令是否包含--listen 0.0.0.0(允许外网访问);2. 端口是否被占用;3. 查看日志定位报错原因
运行工作流生成图片失败1. 模型文件是否存在且路径正确;2. GPU显存是否充足(建议RTX 3060及以上);3. 节点连接是否完整;4. 提示词是否合规

引言

在上一篇文章中,我们探讨了 AI 绘画看似神奇的“魔法”背后的真相:它并非凭空创造,而是一个从混沌的噪点中,通过无数次“观察-脑补-修正”的循环,逐步建立秩序、生成图像的过程。理解了这一核心原理,一个自然的问题随之产生:我们该如何操控这个过程?是需要编写晦涩难懂的代码,还是有更直观、更易上手的方法?

答案是肯定的。今天,我们将介绍一位强大的幕后英雄——ComfyUI。作为一款基于节点流程的 Stable Diffusion 用户界面,ComfyUI 就像是一个透明的 AI 魔法工坊。它将复杂的 AI 生成过程拆解为一个个独立的模块,让使用者能够像搭积木一样,直观地构建和掌控自己的 AI 绘画工作流。本文将带领读者走进这个工坊,通过拆解一个最基础的文生图工作流,揭示每一个“积木”是如何分工协作,最终完成那场精彩的“脑补”大戏的。

第一部分:初识 ComfyUI —— AI 的可视化乐高

如果将传统的、集成度高的 AI 绘画 WebUI 比作一个功能齐全的“黑盒子”微波炉,用户只需放入食材、按下按钮即可得到成品,那么 ComfyUI 就更像是一套透明的乐高积木,或者一个开放式的中央厨房。

ComfyUI 的核心特点在于其“节点化 (Node-based)”的设计理念。在这里,每一个功能——无论是加载模型、处理文本,还是执行采样、解码图像——都被封装成了一个个独立的方块,称为“节点”。用户通过线缆将这些节点连接起来,定义数据的流向。

这种可视化流向的设计,使得 AI 的工作过程不再神秘。使用者看到了什么连接,AI 后台就执行了什么操作。数据从哪里来,到哪里去,经过了怎样的处理,一切都一目了然。更重要的是,这种极致的灵活性赋予了用户无限的创造空间。使用者可以根据自己的需求,像搭积木一样自由组合各种节点,构建出从简单到无比复杂的个性化创意工作流。

第二部分:解剖一只麻雀 —— 最基础的文生图工作流拆解

面对 ComfyUI 的界面,初学者可能会对满屏的节点和连线感到困惑。但无需担心,万丈高楼平地起。理解了最基础的工作流,就掌握了通往复杂应用的钥匙。下面展示的是一个最典型的 ComfyUI 文生图(Text-to-Image)工作流界面,我们将逐一拆解其中的核心角色。

1. 大管家:加载器 (Checkpoint Loader Simple)

一切工作的起点,是这个被称为“加载器”的节点。它就像是整个魔法工坊的物料仓库大管家。

它的作用是加载预先训练好的模型文件,通常称为 Checkpoint。这个文件至关重要,因为它打包了 AI 的核心能力:负责图像生成的“大脑”(UNet 网络)、负责理解文本的“眼睛”(CLIP 模型)以及负责图像数据转换的“翻译器”(VAE)。选择不同的 Checkpoint 文件,就决定了 AI 的“阅历”和基础“画风”,是擅长二次元动漫,还是写实摄影,全赖于此。它是所有后续工作的基石。

2. 翻译官与指挥棒:CLIP 文本编码器 (CLIP Text Encode)

人类使用自然语言描述画面,而 AI 的核心模型只能理解数学化的向量。这就需要“CLIP 文本编码器”充当人类与 AI 之间的沟通桥梁。

这个节点的作用是将用户输入的文本提示词(Prompt),“翻译”成 AI 能懂的数学指令,在技术上称为“条件 (Conditioning)”

在基础工作流中,通常会看到两个这样的节点。一个负责翻译正向提示词,生成“正向条件”,告诉 AI “画面里必须出现什么”(如:一只猫、高质量、阳光);另一个负责翻译反向提示词,生成“反向条件”,告诉 AI “画面里绝对不能出现什么”(如:低质量、变形、水印)。这两个条件就像是两根指挥棒,将在后续的生成过程中,严格引导和约束 AI 的创作方向。

3. 魔术师与沙盘:K 采样器 (KSampler)

“K 采样器”是整个工坊的核心车间,是奇迹真正发生的地方。它负责执行我们之前提到的“从噪点到清晰图像”的去噪循环。

为了高效地处理图像生成这一庞大的计算工程,AI 极其聪明地选择了一个策略:不在巨大的像素级画布上直接作画,而是在一个被称为“潜在空间 (Latent Space)”的沙盘上搭建一个精巧的“小模型”(潜在图像)。KSampler 就是在这个沙盘上进行精细化作业的魔术师。因为它处理的是高度浓缩的信息,而非海量的像素数据,所以效率极高。

这位魔术师在沙盘上工作时,并非随心所欲。它需要三种原料:从加载器获取的“模型”能力、一个初始的“空白画布”(通常是一个纯噪声的潜在图像),以及最重要的——从文本编码器传来的两根“指挥棒”。

在设定的步数内,KSampler 执行着“观察-脑补-修正”的循环。在每一步操作中,它都会严格参照“正向条件”的指南和“反向条件”的禁令,努力将沙盘上混沌的噪声,逐步转化为符合人类要求的、有意义的“小模型”。

4. 神奇打印机:VAE 解码 (VAE Decode)

当 KSampler 在沙盘上完成了创作,我们得到的是一个“潜在图像”。它虽然包含了画面的所有核心信息,但却是一团人类肉眼无法辨识的压缩数据。

这时就需要“VAE 解码”节点出场了。它就像是一台神奇的建筑打印机。它接过沙盘上那个抽象的“小模型”,利用大管家提供的 VAE 工具(图像数据转换的翻译器),按照特定的规则将这份压缩数据“解压”,并最终“打印”成我们眼前这座宏伟、清晰、色彩斑斓的像素大图。

5. 展示台:保存/预览图像 (Save/Preview Image)

工作流的终点是“保存/预览图像”节点。它的任务非常直观:将 VAE 解码器输出的最终像素图像展示在界面上供用户检阅,并将其保存到计算机的硬盘中,完成整个创作流程。

第三部分:连线——让数据流动起来

在 ComfyUI 中,节点之间的连线不仅仅是视觉上的连接,它们代表了数据显性的流动路径。理解了连线,就理解了 AI 工作的逻辑。

就像不同形状的积木插口一样,ComfyUI 中只有相同类型的数据端口才能连接,这保证了流程的正确性。

  • 模型连模型 (MODEL):将加载器中的绘画能力传递给采样器。
  • 条件连条件 (CONDITIONING):将文本编码器生成的“指挥棒”传递给采样器,指引创作方向。
  • 潜在图像连潜在图像 (LATENT):在采样器和解码器之间传递那个核心的沙盘“小模型”。
  • VAE 连 VAE (VAE):将加载器中的翻译规则传递给解码器,用于最终图像的还原。

整个流程可以总结为一条清晰的主线:加载模型备物料 -> 输入文字变指挥棒 -> 准备沙盘造噪声 -> 采样核心搞创作(受指挥棒引导) -> VAE 解码打印出图像。

结语

ComfyUI 以其独特的节点化设计,看似复杂,实则提供了一种最直观、最透彻的方式来理解和掌控 AI 绘画。它将深奥的 AI 生成原理拆解为一个个清晰可见的步骤,让我们不仅能“知其然”(看到最终的精美图像),更能“知其所以然”(理解图像是如何一步步生成的)。

通过理解“潜在空间”这个高效运作的沙盘,以及“条件”这两根强有力的指挥棒,我们揭开了 AI 绘画魔法的一角。掌握基础工作流只是第一步,ComfyUI 的魅力在于其无限的扩展性。鼓励每一位使用者去探索更多的高级节点,如 ControlNet、LoRA 等,搭建属于自己的、独一无二的 AI 绘画流水线,释放无限的创造潜能。

本文由mdnice多平台发布

来 L 站的第二次发帖,前天下载了一个 comfyui,发现 ai 绘图进化速度真快。以前用 webui,现在都是拉工作流了。

玩了一天发现 sdxl 和 sd 模型依然需要管理一些标签,网上公开的魔导书用起来总是差点意思,不方便自定义标签,开源的也没有找到好用的。

于是自己动手丰衣足食,下面介绍一下自己的开源项目 AI2IMG_Tag

AI Tag Manager 是一个专为 Stable Diffusion、NovelAI、Midjourney、ComfyUI 等 AI 图像生成工具设计的综合性 Web 应用。集成了大模型服务,可以利用AI管理标签和生成用户需要的标签,比如用AI指令更换人物动作。

核心功能介绍:

1. 支持一键导入

导入一次性多个 tag,并用 ai 针对自己设定的类别进行分别识别 (方便从 c 站抄别人的一组词,然后选择想要的某些特征标签导入)

2.AI 许愿机

基于已选中的 tag 进行动作调整或者风格编辑,输入指令后,ai 自动从 tag 中挑选合适的标签。也可以直接根据用户质量挑选 tag 生成。

3. 批量编辑

比如:可以选择移除所有动作相关的词汇,或者让 AI 分析哪些词汇与选择类别相关,然后高亮相关词汇,用户自己决定删除哪些 tag,可以及其方便的修改人物动作,衣服或背景等。

4. 一键优化

点击魔法按钮一键优化提示词顺序,当你挑选了一大堆提示词后,顺序混乱,可以让 AI 一件优化顺序,让模型更好的理解提示词。

5. tag 转化自然语言

当你使用的是 flux 类型的模型,依然可以使用 tag 组合,然后 ai 将 tag 组合成句子

6. 支持画廊

当你创建过一些优秀作品,可以上传到画廊,连同其提示词一起上传,方便后续复现或迭代修改 (谁不想收藏一下自己的优秀作品呢? )

7. 支持多种类型 llm 供应商

by the way, 感谢站内各位大佬提供的公益站和某些富可敌国的免费额度(fox code )

地址如下:


📌 转载信息
转载时间:
2026/1/18 09:34:58

最近发现 ComfyUI 终于支持 AMD 显卡了,之前都是在 Debian 用 ROCm 跑这个,但是双系统有点麻烦,发现 ComfyUI 支持之后,就赶紧体验了一下,下载了 ComfyUI Desktop

结果跑了好几个模板工作流都不行,表现为:点击运行后,提示 disconnect,再点击运行就提示 TypeError: Failed to Fetch,日志也无法查看,此时就推测是后端崩溃了,但是 Desktop 版本不够灵活,好像没办法直接看 ComfyUI 后端,于是切换了 GitHub 上构建的 Portable 版本。

切换到 Portable 版本后,发现问题还是一样,点击运行后,确定后端崩溃,但是没有任何报错,就像程序被正常退出一样,此时就感觉有点迷惑,不知道怎么定位问题,然后就去问了下 Gemini , Gemini 的回答是 Python 是 静默崩溃 (Silent Crash)底层 C++ 库(PyTorch/ROCm)崩溃或者显卡驱动触发了保护机制(TDR)强制杀死了进程 ,要嘛是显存爆了,要嘛就是 bf16 兼容性问题,然后给了一些没啥用的解决方案。

没办法,只能老办法,去 GitHub 上看 issue ,看看有没有相同情况的人,幸运的是正好找到了差不多情况的,Confyuai AMD GPU crash - AMD Radeon RX 6650 XT: failed to run amdgpu-arch binary not found. · Issue #11524 · Comfy-Org/ComfyUI · GitHub , 看到下面有个回复说到他的 RX6600XT 用了别人构建的 ROCm 运行的很好,于是我就想到了极有可能是 Python 的 cuda 模块并不能正常运行,我就用 Portable 内嵌的 Python 环境(也就是 ComfyUI 使用的 Python 环境)进行了测试:

#ComfyUI_windows_portable\python_embeded>python.exe print(torch.cuda.is_available()) # True print(torch.cuda.get_device_name(0)) # AMD Radeon RX 6600 XT 

这么一看,好像 cuda 没有什么问题?但是当我换另外一种方法测试,就发现问题所在了:

x = torch.rand(50000, 30000).cuda() 
print(x) # 崩溃了! 

这下可以确定是 cuda 的问题了,直接用 GitHub - guinmoon/rocm7_builds: My own ROCm windows builds from TheRock repository for various architectures such as 680m, 780m, rx6600, etc. 重装 ROCm 和 torch。

#注意用 ComfyUI 内嵌的 Python 环境去安装依赖
ComfyUI_windows_portable\python_embeded\python.exe -m pip install "rocm-7.2.0.tar.gz" "rocm_sdk_libraries_custom-7.2.0-py3-none-win_amd64.whl" "rocm_sdk_devel-7.2.0-py3-none-win_amd64.whl" "rocm_sdk_core-7.2.0-py3-none-win_amd64.whl"

ComfyUI_windows_portable\python_embeded\python.exe -m pip install "torch-2.9.1+rocmsdk20251203-cp312-cp312-win_amd64.whl" "torchaudio-2.9.0+rocmsdk20251203-cp312-cp312-win_amd64.whl" "torchvision-0.24.0+rocmsdk20251203-cp312-cp312-win_amd64.whl"

安装完之后,重试一下

x = torch.rand(50000, 30000).cuda() 
print(x) # 正常输出 

完美解决,ComfyUI 也能正常生图了,不会再出现静默崩溃的情况了。


📌 转载信息
转载时间:
2026/1/14 18:31:29


一、前言

1.1、组件信息

ComfyUI-Manager 是一个旨在提升 ComfyUI 可用性的扩展。它提供管理功能,用于安装、移除、禁用和启用 ComfyUI 的各种自定义节点。此外,该扩展还提供了枢纽功能和便捷功能,方便访问 ComfyUI 内的各种信息。

1.2、影响版本

ComfyUI-Manager < 3.39.2

ComfyUI-Manager < 4.0.5 

二、漏洞分析

2.1、RCE链分析

2.1.1、环境搭建

python3 -mpip installvirtualenv
git clone https:
cdComfyUI/custom_nodes
git clone -b3.39.1 https:
cd ..
python -mvenv venv
source venv/bin/activate
python -mpip installtorch torchvisiontorchaudio --extra-index-urlhttps:
python -mpip install -rrequirements.txt
python -mpip install -rcustom_nodes/comfyui-manager/requirements.txt
cd ..
pythonmain.py --preview-methodauto --cpu

2.2.2、CRLF分析



漏洞commit

https://github.com/Comfy-Org/ComfyUI-Manager/commit/f4fa394e0f03b013f1068c96cff168ad10bd0410

a、sink分析

根据漏洞commit,我们很快就能确定出漏洞函数(write_config)。如图所示,很经典的CRLF漏洞修复处理(处理掉\r、\n、\x00字符),然后再安全写入到文件到中去。



b、data flolw & souce分析

这里的数据流分析很简单,所以跟source一起分析了。

api server服务基本都集中在:ComfyUI-Manager/glob/manager_server.py文件中,所以我们基本上分析这个python文件souce即可。

在该文件中/manager/policy/component这个api接口就使用了write_config函数。



其中通过set_component_policy函数进行改动core.config的配置



c、完整链路 & PoC

api接口manager/policy/component(component_policy) -> 通过set_component_policy赋值带入CRLF -> core.write_config写入值造成CRLF注入。

这里构造构造注入ini配置文件需要注意一下。



这里需要注意'\r'作为换行,而不是\n作为换行(使用了python的ConfigParser),因为会替换\n为\n\t导致CRLF后的属性注入失败。


并且这里有多个注入点我们使用manager/db_mode就是为了注入在原有配置的security_level后面,我们使用PoC如下:



完成注入



2.2.3、RCE链分析

上面仅仅完成了配置文件的注入,可以配置文件的修改有什么作用呢?并且服务ComfyUI-Manager是否会自动更新配置呢?

a、sink点1 - 重启服务

发现/manager/reboot接口不需要任何身份验证,即可执行重启服务,也就是可以直接加载配置文件了。



这里的身份验证比较简单,查询配置中的security_level等级,如果配置中的等级低于接口的等级接口就允许(配置文件中默认是normal),也就是/manager/reboot接口默认有权限。



b、sink点2 - 执行远程python文件

前面做了那么多的铺垫,其实就是为了进行权限绕过使用/customnode/install/git_url接口:我们通过配置文件覆盖,重启服务,成功将安全等级降级为weak也就是可以使用该接口。



分析这个接口时候,发现core.gitclone_install(url)函数后端会再使用execute_install_script函数,最终调用[sys.executable, "install.py"]命令。





我们在github上创建一个空的项目,新建一个install.py文件

最终进行加载即可



三、总结

3.1、漏洞总结

1、修改配置文件,为了降低程序运行的等级

2、重启系统,为了重启加载配置生效

3、运行敏感函数,能够进行RCE

3.2、最后

python的ini-format居然是\r进行分割,纠结了很久。

阿里云的 无影云电脑

注册就可以领取 200 核时 可以一键部署 ai 绘画


每天签到可以获得 10 核时
点兑换功能 去 B 站搜索找兑换码 再领 200 核时
用 16g 显存部署 每小时消耗 30 核时 领取的 410 核时 可以玩 10 个小时
然后每天签到还可以用 20 分钟左右 可以用 api 调用 如果安全的话可以弄个共享 api 站 集合大家的核时 岂不是可以长期使用?


📌 转载信息
转载时间:
2026/1/6 12:17:28