ComfyUI Extension: RUI-Nodes

Authored by rui40000

Created

Updated

17 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Rui's workflow-specific custom node, written using GPT.

README

Rui-Node🐶 - ComfyUI 图像处理节点集

Rui-Node🐶 是一个功能丰富的 ComfyUI 节点集合,提供图像处理、文本处理、AI 模型集成和遮罩处理等多种功能。

📦 安装方法

  1. 将此文件夹复制到 ComfyUI 的 custom_nodes 目录中
  2. 安装依赖:pip install -r requirements.txt
  3. 重启 ComfyUI

📋 节点目录

🎨 图像调节类

📁 文件存储与加载类

🤖 AI模型类

📝 文本处理类

🎭 遮罩处理类


📖 节点详细说明

1. 调整饱和度 / Saturation Adjustment

分类: Rui-Node🐶/图像调节🎨

功能描述:
调整图像的色彩饱和度,可以创建黑白图像或增强色彩鲜艳度。

输入参数:

  • image (IMAGE): 输入图像
  • saturation (FLOAT): 饱和度调整系数
    • 默认值: 1.0
    • 范围: 0.0 ~ 5.0
    • 步长: 0.1
    • 说明:
      • 0.0 = 完全无饱和度(黑白图像)
      • 1.0 = 原始饱和度(不变)
      • 1.0 = 增加饱和度

输出:

  • IMAGE: 调整后的图像

使用场景:

  • 将彩色图像转换为黑白
  • 增强图像色彩表现力
  • 降低过于鲜艳的色彩

2. 图像翻转 / Image Flip

分类: Rui-Node🐶/图像调节🎨

功能描述:
对图像进行水平或垂直翻转操作。

输入参数:

  • image (IMAGE): 输入图像
  • flip_direction (选择): 翻转方向
    • 选项: "水平" 或 "垂直"
    • 默认值: "水平"

输出:

  • IMAGE: 翻转后的图像

使用场景:

  • 镜像翻转图像
  • 创建对称效果
  • 调整图像方向

3. 按路径加载图像 / Load Image By Path

分类: Rui-Node🐶/文件存储与加载📁

功能描述:
从指定的文件路径加载图像文件,支持绝对路径输入。

输入参数:

  • image_path (STRING): 图像文件的完整路径
    • 默认值: "E:\ComfyUIModels\input\10\1.png"
    • 支持格式: PNG、JPG、JPEG 等常见图像格式

输出:

  • IMAGE: 加载的图像

特殊处理:

  • 如果文件不存在,返回 512x512 的黑色默认图像
  • 自动将非 RGB 图像转换为 RGB 模式

使用场景:

  • 从外部路径加载特定图像
  • 批量处理指定目录的图像
  • 加载非 ComfyUI 默认输入目录的图像

4. 千问编辑图像生成 / Qwen Edit Image Generation

分类: Rui-Node🐶/AI模型🤖

功能描述:
使用阿里云千问(Qwen)编辑模型 API 进行 AI 图像生成,支持多种控制模式。

输入参数:

  • image1 ~ image4 (IMAGE): 最多 4 张输入图像作为参考
  • api_key (STRING): 阿里云 API 密钥
  • base_url (STRING): API 基础 URL
    • 默认值: "https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image-generation/generation"
  • seed (INT): 随机种子
    • 默认值: -1(随机生成)
    • 范围: -1 ~ 2147483647
  • control_mode (选择): 控制模式
    • 选项: reference, sketch, scribble, pose, canny, depth, hed, mlsd, normal, seg
    • 默认值: "reference"
  • width (INT): 输出图像宽度
    • 默认值: 1024
    • 范围: 512 ~ 2048
    • 步长: 8
  • height (INT): 输出图像高度
    • 默认值: 1024
    • 范围: 512 ~ 2048
    • 步长: 8

输出:

  • IMAGE: AI 生成的图像

使用场景:

  • AI 辅助图像创作
  • 基于参考图生成新图像
  • 多模态图像控制生成

5. 镜头分词器 / Shot Splitter

分类: Rui-Node🐶/文本处理📝

功能描述:
将包含多个分镜描述的脚本文本拆分成独立的分镜列表,支持按范围筛选导出。

输入参数:

  • input_text (STRING): 输入的多分镜描述脚本(多行文本)
    • 格式要求: 使用 <SHOT_XXX>...</SHOT_XXX> 标签包裹每个分镜
  • start_shot_num (INT, 可选): 开始导出的分镜编号
    • 默认值: 0(从第一个开始)
    • 范围: 0 ~ 100
  • shot_count (INT, 可选): 导出的分镜数量
    • 默认值: 0(导出全部)
    • 范围: 0 ~ 100

输出:

  • shot_descriptions (LIST): 拆分后的分镜描述列表
  • summary (STRING): 总结信息

文本格式示例:

<SHOT_1>
第一个镜头的描述内容
</SHOT_1>
<SHOT_2>
第二个镜头的描述内容
</SHOT_2>

使用场景:

  • 分镜脚本拆分
  • 批量处理分镜描述
  • 选择性导出特定范围的分镜

6. 对白提取器 / Dialogue Extractor

分类: Rui-Node🐶/文本处理📝

功能描述:
从分镜描述文本中自动提取旁白/对白内容。

输入参数:

  • input_text (STRING): 输入的分镜描述文本(多行文本)

输出:

  • dialogues (LIST): 提取的旁白/对白列表
  • summary (STRING): 总结信息

识别模式:

  • 支持格式 1: 旁白:[对白内容]
  • 支持格式 2: 旁白:对白内容
  • 自动识别 <SHOT_XXX> 标签中的旁白

使用场景:

  • 从分镜脚本中提取对白
  • 批量收集旁白文本
  • 准备配音文本

7. 页面旁白删除器 / Page Narration Remover

分类: Rui-Node🐶/文本处理📝

功能描述:
删除文本中所有以"页面旁白:"或"页面旁白:"开头的整行内容。

输入参数:

  • input_text (STRING): 原始文本(多行文本)

输出:

  • clean_text (STRING): 移除页面旁白行后的文本

处理规则:

  • 自动识别并删除以"页面旁白:"或"页面旁白:"开头的行
  • 忽略行首行尾的空白字符
  • 保留其他所有内容

使用场景:

  • 清理脚本中的页面旁白
  • 文本预处理
  • 提取纯净对白内容

8. 文本列表制作器 / Text List Creator

分类: Rui-Node🐶/文本处理📝

功能描述:
将多个独立的文本段落组织成列表形式输出。

输入参数:

  • text1 (STRING, 必需): 第一段文本(多行文本)
  • text2 ~ text5 (STRING, 可选): 第 2~5 段文本(多行文本)

输出:

  • text_list (LIST): 文本列表(Python 列表格式)
  • summary (STRING): 总结信息

处理规则:

  • 自动过滤空文本
  • 去除每段文本首尾的空白字符
  • 保留内部段落结构

使用场景:

  • 组织多段文本为列表
  • 批量文本处理准备
  • 文本分组管理

9. 遮罩筛选 / Mask Selector

分类: Rui-Node🐶/遮罩处理🎭

功能描述:
对输入的多个遮罩进行排序并选择特定遮罩,同时输出剩余遮罩的合并结果。

输入参数:

  • masks (MASK): 输入的遮罩(可包含多个遮罩)
  • sort_method (选择): 排序方法
    • 选项:
      • "按面积排序 / By Area": 按遮罩面积从大到小排序
      • "从左到右 / Left to Right": 按遮罩质心 X 坐标升序排序
      • "从上到下 / Top to Bottom": 按遮罩质心 Y 坐标升序排序
    • 默认值: "按面积排序 / By Area"
  • index (INT): 选择的遮罩编号(1-based 索引)
    • 默认值: 1
    • 最小值: 1
    • 说明: 如果超出范围会自动夹取到有效范围

输出:

  • 选中遮罩 / Selected (MASK): 选中的单个遮罩
  • 剩余遮罩 / Remaining (MASK): 其他遮罩的合并结果
  • 信息 / Info (STRING): JSON 格式的详细信息
    • total_masks: 遮罩总数
    • selected_index: 选中编号
    • sort_method: 排序方式
    • selected_area: 选中遮罩的像素面积
    • selected_center: 选中遮罩的质心坐标 [x, y]
    • index_clamped: 编号是否越界被修正

使用场景:

  • 从多个检测结果中选择特定目标
  • 分离主体和背景遮罩
  • 基于大小或位置筛选遮罩

10. 遮罩预览 / Mask Preview

分类: Rui-Node🐶/遮罩处理🎭

功能描述:
将遮罩以半透明彩色形式叠加显示在图像上,方便直观查看遮罩覆盖区域。节点自带预览功能,同时输出合成后的图像。

输入参数:

  • image (IMAGE): 作为底图的原始图像
  • mask (MASK): 需要可视化的遮罩
  • mask_color (选择): 遮罩显示颜色
    • 默认值: 红色 / Red
    • 选项: 红色、绿色、蓝色、黄色、青色、品红、白色
  • opacity (FLOAT, 可选): 不透明度
    • 默认值: 0.5
    • 范围: 0.0 ~ 1.0
    • 步长: 0.05

输出:

  • 图像 / Image (IMAGE): 合成了半透明彩色遮罩的图像

特性:

  • 自动处理遮罩与图像的尺寸差异
  • 节点界面直接显示预览效果
  • 支持批量处理
  • 7种预设颜色可选
  • 可调节不透明度

使用场景:

  • 检查分割结果的准确性
  • 调试遮罩处理流程
  • 多遮罩对比(使用不同颜色)
  • 制作遮罩可视化图

11. 转化为utf-8编码 / Convert to UTF-8

分类: Rui-Node🐶/文本处理📝

功能描述:
删除输入字符串中所有非 UTF-8 编码字符(如孤立的代理对),确保输出的字符串符合 UTF-8 编码规范。

输入参数:

  • input_text (STRING): 需要处理的原始字符串(支持多行)

输出:

  • filtered_text (STRING): 过滤后的符合 UTF-8 规范的字符串
  • log (STRING): 处理日志,包含移除字符的详细信息和统计总结

使用场景:

  • 清理可能包含非法字符的文本数据
  • 确保文本在保存或传输时的编码安全性
  • 调试文本编码问题

12. OpenAI API 连接 / OpenAI API Connector

分类: Rui-Node🐶/AI模型🤖

功能描述:
连接 OpenAI 或兼容 API(如 DeepSeek、Moonshot 等),进行文本生成或多模态图像理解,支持最多 6 张图像同时输入。

输入参数:

  • api_url (STRING): API 接口地址
    • 默认值: "https://api.openai.com/v1/chat/completions"
  • api_key (STRING): API 密钥
  • model (STRING): 模型名称
    • 默认值: "gpt-4o"
  • system_prompt (STRING): 系统提示词
  • user_prompt (STRING): 用户提示词
  • seed (INT): 随机种子,用于控制生成的随机性
  • image_1 ~ image_6 (IMAGE, 可选): 最多 6 张输入图像
    • 说明: 用户有几张图就连接几个输入口,无需手动 Batch
    • 规则: 节点内部会自动逐张处理每个输入图像,分别编码后发送到 API
    • 优势: 不要求所有图像尺寸一致,512×512 和 511×768 之类的混合输入也可直接使用
  • temperature (FLOAT, 可选): 采样温度
    • 默认值: 0.3
    • 范围: 0.0 ~ 2.0
  • max_tokens (INT, 可选): 最大输出 token 数
    • 默认值: 500
    • 范围: 1 ~ 8192
  • detail (选择, 可选): 图像分析细节等级
    • 选项: low, high, auto
    • 默认值: auto
  • image_max_size (INT, 可选): 单张图像最长边缩放上限
    • 默认值: 1024
    • 范围: 256 ~ 4096
    • 说明: 超过该尺寸的图像会在发送前按比例缩小,以减少 token 消耗与请求体积
  • proxy_url (STRING, 可选): HTTP/HTTPS 代理地址
    • 示例: http://127.0.0.1:7890

输出:

  • text (STRING): 模型生成的文本内容

使用场景:

  • 调用 LLM 进行文本生成
  • 使用 Vision 模型进行单图或多图联合理解
  • 连接本地或第三方兼容 OpenAI 协议的 API
  • 对多张参考图做综合分析、比对与总结

13. 颜色匹配器 / Color Matcher

分类: Rui-Node🐶/图像调节🎨

功能描述:
将目标图像的颜色分布匹配到参考图像的颜色分布,支持多种匹配算法和混合调节。

输入参数:

  • reference_image (IMAGE): 作为颜色参考的图像
  • moving_image (IMAGE): 需要改变颜色的目标图像
  • match_method (选择): 匹配算法
    • 选项: "histogram" (直方图匹配), "mean_std" (均值标准差匹配), "none" (无匹配)
    • 默认值: "histogram"
  • blend_factor (FLOAT): 混合系数
    • 默认值: 1.0
    • 范围: 0.0 ~ 1.0
    • 步长: 0.01
    • 说明: 控制原图和匹配后图像的混合比例,1.0为完全使用匹配后图像

输出:

  • 颜色匹配后图像 (IMAGE): 颜色调整后的图像
  • 匹配信息 (STRING): 记录了使用的匹配方式以及混合系数的日志信息

使用场景:

  • 统一多张图像的色调风格
  • 将素材无缝融合进背景
  • 图像色彩风格迁移

14. 素材拆分 / Sprite Splitter

分类: Rui-Node🐶/图像调节🎨

功能描述:
从白色/浅色背景的合图(Sprite Sheet)中自动拆分出每个独立的美术元素,通过连通区域检测进行裁剪,并将每个独立元素作为图像列表输出。

输入参数:

  • 图像 (IMAGE): 输入的带有透明通道的合图图像(RGBA格式)
  • 最小面积过滤(像素数) (INT): 最小面积过滤
    • 默认值: 100
    • 范围: 1 ~ 50000
    • 说明: 面积小于此值(像素数)的连通区域将被过滤,避免拆分出噪点碎片。
  • 裁剪边距 (INT): 裁剪边距
    • 默认值: 2
    • 范围: 0 ~ 50
    • 说明: 每个元素裁剪时在包围盒外额外保留的像素边距。
  • 排序方式 (选择): 排序方式
    • 选项: "从左到右-从上到下", "从上到下-从左到右", "面积从大到小", "面积从小到大"
    • 默认值: "从左到右-从上到下"
  • seed (INT): 随机种子
    • 默认值: 0
    • 说明: 仅用于强制重新执行节点,不影响实际拆分结果。适用于线上部署时强制刷新缓存。

输出:

  • 图像列表 (IMAGE): 拆分后的多张图像列表,透明区域会用白色填充输出。

使用场景:

  • 游戏素材合图切分
  • 批量图标提取
  • 白底素材自动裁剪

15. 素材拆分(带透明通道) / Sprite Splitter RGBA

分类: Rui-Node🐶/图像调节🎨

功能描述:
与标准素材拆分节点功能相同,但保留并额外输出 Alpha 透明通道,适用于需要透明背景的美术素材提取。

输入参数:

输出:

  • 图像列表 (IMAGE): 拆分后的多张 RGB 图像列表
  • 遮罩列表 (MASK): 对应的多张 Alpha 透明通道遮罩列表,1.0代表不透明,0.0代表透明

使用场景:

  • 提取带透明背景的游戏角色、道具素材
  • 搭配 JoinImageWithAlpha 等节点生成透明 PNG 图像

16. 加载图像(带文件名) / Load Image With Name

分类: Rui-Node🐶/文件存储与加载📁

功能描述:
基础功能与 ComfyUI 原生的 "Load Image" 节点完全一致,支持从 ComfyUI 的 input 目录中选择图像,并支持拖拽上传。区别在于本节点额外提供了一个字符串输出端口,用于输出图像的文件名。

输入参数:

  • image (下拉选择): 从 input 目录中选择图像文件,或通过按钮上传

输出:

  • IMAGE: 图像数据
  • MASK: 图像的 Alpha 通道遮罩
  • filename (STRING): 图像的文件名(不包含后缀,例如上传了 test_image.png,则输出 test_image

使用场景:

  • 批量处理图像时,希望以原文件名保存处理后的结果
  • 需要将当前图像的文件名作为提示词或其他参数传递给下游节点
  • 建立更规范的自动化工作流

🔧 依赖库

主要依赖库包括:

  • torch: PyTorch 深度学习框架
  • numpy: 数值计算
  • Pillow (PIL): 图像处理
  • requests: HTTP 请求(用于 API 调用)

完整依赖请查看 requirements.txt

📝 注意事项

  1. 所有节点都兼容 ComfyUI 的标准图像处理流程
  2. 图像格式统一为 BHWC(批次、高度、宽度、通道)
  3. 图像值范围为 0.0 ~ 1.0 的浮点数
  4. 使用 AI 模型节点需要配置有效的 API 密钥
  5. 文本处理节点支持多行文本输入
  6. 所有节点名称采用中英双语显示
  7. 遮罩处理节点自动处理尺寸不匹配问题

17. SDMatte 精细抠图 / SDMatte Interactive Matting

基于 SDMatte(vivo 相机研究院,ICCV 2025)的交互式抠图节点。 擅长发丝、绒毛、玻璃、烟雾等常规抠图模型处理不好的边缘。

包含两个节点:

| 节点 | 作用 | |---|---| | SDMatte 加载器 | 载入权重,构建网络并常驻显存 | | SDMatte 精细抠图 | 用视觉提示(框/掩码/点)驱动模型输出 alpha |

模型准备

把权重放到 ComfyUI/models/SDMatte/ 下即可,两种格式任选其一:

这两个文件的模型权重逐比特完全相同,不必纠结选哪个。 已实测比对全部 1316 个张量:键名、形状、精度(均为 F32)、数值全部一致,无一例外。 官方 pth 是 detectron2 的训练检查点,顶层为 {"model", "trainer", "iteration"}, 多出的约 6.9GB 是 trainer 里的优化器状态与梯度缩放器,推理不参与。 换用 pth 不会带来任何质量提升。本节点两种格式都支持,读 pth 时只解析 model 段, 内存占用与 safetensors 相当。

不需要下载 Stable Diffusion 2.1 的权重。 SDMatte 虽以 SD 2.1 为骨架,但官方推理配置 (configs/SDMatte.pyload_weight=False)只用配置文件搭出网络结构,全部权重随后由 SDMatte 检查点覆盖。官方 HuggingFace 仓库本身也只发布 .pth 加若干 config.json, 不含任何 SD 权重。所需配置已随本节点一起分发,开箱即用、无需联网。

参数说明

SDMatte 加载器

| 参数 | 说明 | |---|---| | ckpt_name | models/SDMatte/ 下的权重文件 | | precision | fp32(默认,与官方测试配置一致)/ fp16(省显存,但 SD 2.1 的 VAE 半精度下易溢出) | | device | auto / cpu | | attention_slicing | 默认开启。1024 下显存峰值从约 15.5GB 降到 9.1GB,实测速度反而略快,输出差异仅 1e-6 量级 |

显存参考(fp32 @ 1024,实测于 RTX 5090):开分片约 9.1GB,关分片约 15.5GB。 12GB 显存的卡请保持分片开启。

SDMatte 精细抠图

| 参数 | 说明 | |---|---| | mask | 指示抠哪个目标的提示掩码,不必精确,粗略覆盖主体即可 | | prompt_type | 视觉提示类型,见下表 | | inference_size | 默认 1024,与官方测试一致 | | is_transparent | 玻璃、纱、烟雾等透明物体务必打开 | | caption | 目标物体的英文描述。SDMatte.pth 有效,SDMatte_plus.pth 请留空,见下文 | | point_radius | 仅 point_mask 生效。每个点晕开的高斯 sigma,默认 35 | | seed | 仅 point_mask 生效(10 个点是随机取的) |

prompt_type 选择:

| 取值 | 含义 | 适用 | |---|---|---| | bbox_mask | 取掩码外接框作为提示 | 默认,官方测试脚本的主路径,通常最稳 | | mask | 直接用掩码本身 | 已有较准的粗分割时 | | point_mask | 在掩码内随机取 10 个点 | SDMatte.pth 支持,见下文 | | auto_mask | 不给定位信息 | 画面只有单一主体 |

⚠ 两个权重的能力不同(实测)

官方 README 里,SDMatteSDMatte*(即 SDMatte_plus)的训练集不同: 前者含 RefMatte(指代表达式抠图数据集,点提示与文本提示的来源), 后者用 COCO-Matte 替换了它。这导致 plus 版不具备点提示与文本指代能力

| | SDMatte.pth | SDMatte_plus.pth | |---|---|---| | bbox_mask / mask / auto_mask | ✅ | ✅ | | point_mask | ✅ MAD 0.0135 | ❌ 输出全黑(max 仅 0.079) | | caption 语义 | ✅ 填对小幅提升 | ❌ 无作用,填了反而更差 |

caption 实测(羊驼图,MAD 越低越好):

| caption | SDMatte | SDMatte_plus | |---|---|---| | ""(留空) | 0.01120 | 0.01135 ← 最好 | | "alpaca"(语义正确) | 0.01072 ← 最好 | 0.01160 ← 最差 | | "tree"(语义错误) | 0.01111 | 0.01119 |

SDMatte 上,语义正确的描述确实更准;在 plus 上语义完全失效甚至反向, 说明它只是给 cross-attention 注入了噪声扰动,并非在理解文本。

结论:用 SDMatte_plus.pth 时保持 caption 留空、prompt_typebbox_mask; 想用点提示或文本指代,请换 SDMatte.pth。节点在 point_mask 输出接近全黑时会打印警告。

典型接法

加载图像 ──────────────┬──> SDMatte 精细抠图 ──> alpha (MASK)
                       │         ▲                 └──> cutout (IMAGE)
任意分割节点 ──> mask ──┘         │
SDMatte 加载器 ───────────────────┘

mask 可以来自任何粗分割来源(SAM、rembg、手绘遮罩皆可)——SDMatte 的职责正是把粗糙边缘细化。

实测数据

用官方效果图中的羊驼原图(绒毛边缘)跑本节点,与官方给出的 GT alpha 对比:

| 指标 | 数值 | |---|---| | MAD(平均绝对误差) | 0.0113 | | MSE | 0.0026 | | SAD | 0.807 千像素 |

(GT 取自官方效果图截图,含有损压缩与水印,故存在固有误差下限。)

各配置对输出的实际影响(透明玻璃杯,差异像素指偏差 > 0.05 的占比):

| 对照项 | 平均差 | 差异像素占比 | |---|---|---| | inference_size 1024 vs 512 | 0.082 | 32.4% | | is_transparent 关 vs 开 | 0.059 | 25.0% | | 官方 [F,T,F] vs 误用 [T,T,T] 条件分配 | 0.026 | 18.8% |

结论:分辨率影响最大,建议保持 1024;抠透明物体时 is_transparent 必须打开。

与 ComfyUI-SDMatte 的横向实测

同一张图、同一份权重、同一台机器,对跑 ComfyUI-SDMatte 与本节点,以官方公布的 alpha 为参照:

| 实现 | 配置 | MAD ↓ | |---|---|---| | 本节点 | 官方 configs/SDMatte.py,bbox 提示,fp32 | 0.0113 | | ComfyUI-SDMatte | 默认(trimap 提示 + mask_refine) | 0.0884 | | ComfyUI-SDMatte | 关闭 mask_refine | 0.0885 |

相差 7.8 倍,且其输出肉眼可见地发灰、边缘晕开。

主因是视觉提示类型:官方 configs/SDMatte.py 固定 aux_input="bbox_mask", 而其 aux_input_list 只含 point_mask / bbox_mask / mask —— trimap 从未作为视觉提示参与训练。 ComfyUI-SDMatte 传 aux_input="trimap",把模型推到了没训练过的输入模式上, 且该分支的 trimap_coords 恒为 [0,0,1,1],定位信息全部丢失。 开不开它的 mask_refine 几乎不影响这一结论(0.0884 vs 0.0885),说明问题不在后处理。

实现要点

若与其它 SDMatte 实现效果对不上,按影响从大到小排查:

  1. 视觉提示类型(影响最大)。必须用官方训练过的 bbox_mask / mask / point_mask, 并传入真实的归一化坐标。用 trimap 当视觉提示是模型没见过的用法。

  2. UNet 配置来源。SDMatte 在标准 SD 2.1 的 UNet 配置上额外定义了 bbox_time_embed_dim / point_embeddings_input_dim / bbox_embeddings_input_dim 三个字段。 误用原版 SD 2.1 的 config.json 会缺这些字段,只能猜默认值,猜错则相应权重被 strict=False 静默丢弃。本节点直接分发官方配置,并在缺字段时直接报错而非猜测

  3. transformers 版本。官方权重用 transformers 4.x 保存,CLIPTextModel 内部裹了一层 text_model;transformers 5.x 起该层被移除,导致 text_encoder 的 372 个权重键名对不上、 被整体静默丢弃、停留在随机初始化。本节点会按当前环境自动增删该前缀。

  4. 条件分配。官方 use_encoder_hidden_states_list=[False, True, False] 决定 UNet 下采样/中间/上采样三段各接收哪种条件,漏传会退化成 [True, True, True]。 实测单独影响不大(羊驼 MAD 0.01135 → 0.01148),透明物体上更明显。

  5. 权重对齐校验。本节点在加载后校验键的完整性,一旦有权重未被覆盖或未被使用就中止并报错。 这类问题不会让模型崩溃,只会让输出质量悄悄下降,是最难排查的一类,因此宁可停下也不放行。

  6. 全程 fp32、1024 分辨率,且不做任何启发式后处理(不做阈值裁剪、对比度拉伸之类的"优化"), 输出即模型原始 alpha。


18. ZenMux API 连接 / ZenMux API Connector

分类: Rui-Node🐶/AI模型🤖

功能描述:
连接 ZenMux 聚合平台(OpenAI 兼容协议),一个节点即可调用其收录的所有文本类模型(Anthropic、OpenAI、Google、DeepSeek、Qwen 等 20 家厂商、130+ 模型)。支持文本生成与多模态图像理解(最多 6 张图)。

特色功能:

  • 价格直接标在选项上: 每个模型后缀形如 [入$0.2/M 出$1.25/M],即输入/输出每百万 token 的美元价格,选型时一目了然
  • 快速筛选: 模型列表按「厂商/模型名」排序聚类,同厂商模型天然相邻;在下拉的搜索框输入厂商前缀(如 qwen/anthropic/)即可只看该厂商的模型
  • 离线可用的模型清单: 模型与价格来自随包分发的 zenmux/models_snapshot.json;价格有变动时运行 python zenmux/build_snapshot.py 即可重新拉取更新
  • 旧工作流兼容: 价格快照更新后,旧工作流里保存的带旧价格标签仍能正确解析出模型 id,不会失效

输入参数:

  • api_key (STRING): ZenMux 平台的 API Key(在 zenmux.ai 控制台获取)
  • model (选择): 模型(带价格标注),默认 openai/gpt-5.4-nano
  • system_prompt (STRING): 系统提示词
  • user_prompt (STRING): 用户提示词
  • seed (INT): 随机种子
  • temperature (FLOAT, 可选): 采样温度,默认 0.7,范围 0.0 ~ 2.0
  • top_p (FLOAT, 可选): 核采样阈值,默认 1.0
  • max_tokens (INT, 可选): 最大输出 token 数,默认 1024
  • image_1 ~ image_6 (IMAGE, 可选): 多模态图像输入(所选模型需支持 image 输入)
  • detail (选择, 可选): 图像分析细节等级,auto/low/high
  • image_max_size (INT, 可选): 发送前图像最长边缩放上限,默认 1024
  • base_url (STRING, 可选): API 地址,默认 zenmux.ai/api/v1(无需写 https://,节点会自动补全)
  • proxy_url (STRING, 可选): HTTP/HTTPS 代理地址,如 127.0.0.1:7890

输出:

  • text (STRING): 模型生成的文本内容
  • model_id (STRING): 实际调用的模型 id(如 openai/gpt-5.4-nano),便于下游记录

使用场景:

  • 一个 Key 试遍多家厂商的模型,横向对比效果与成本
  • 按预算选型:价格就写在下拉列表里,直接挑便宜的
  • 调用 Claude / GPT / Gemini / DeepSeek 等做文本生成或图像理解

🐕 关于 Rui-Node🐶

Rui-Node🐶 致力于为 ComfyUI 用户提供实用、高效的节点工具集。🐶 是我们的项目标志,代表着忠诚、友好和可靠。

📄 许可证

本项目遵循开源协议,欢迎使用和贡献。


Happy Creating with Rui-Node🐶! 🎨✨

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more