Endless-Nodes 插件完全入门指南
1. 插件简介
GitHub 原地址: https://github.com/tusharbhutt/Endless-Nodes
Endless-Nodes 是一个专为 ComfyUI 用户设计的基础自定义节点集合,就像给你的 ComfyUI 工具箱添加了一套万能工具。这个插件主要解决以下问题:
- 图片保存更自由:可以把图片和配置文件保存到不同的文件夹,还能自定义文件名格式
- 图片质量打分:自动给生成的图片打美观分数,帮你筛选最好看的图片
- 数据转换更方便:把数字转文字,把文字转数字,就像翻译器一样
- 多选择开关:可以在多个文字或数字之间快速切换选择
- 参数收集器:把常用的参数打包在一起,避免重复设置
简单来说,这个插件就像给你的 ComfyUI 装了一个"效率提升包",让你的工作流程更顺畅。
2. 如何安装
方法一:使用 ComfyUI Manager(推荐)
- 打开 ComfyUI Manager
- 搜索 "Endless-Nodes"
- 点击安装即可
方法二:手动安装
- 进入你的 ComfyUI 安装目录下的
custom_nodes文件夹 - 在文件夹空白处按住 Shift 键,右键选择"在此处打开命令窗口"
- 输入命令:
git clone https://github.com/tusharbhutt/Endless-Nodes - 等待下载完成后重启 ComfyUI
注意事项:这个插件需要安装一些额外的组件(比如 CLIP 和 Pytorch-Lightning),如果遇到问题,插件会自动尝试安装。
3. 节点详细解析
3.1 Endless Nodes Image Saver(图片保存器)
这个节点就像一个超级智能的文件管理器,可以把你的图片和配置文件保存到任何你想要的地方。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE | 必填 | 要保存的图片,就像你要放进相册的照片 | 图像数据输入端口 | 连接生成图片的节点输出 |
| filename_prefix | filename_prefix | 文本 | "ComfyUI" | 文件名前缀,就像给文件起个小名 | 文件名前缀字符串 | 输入 "我的作品" 文件名就变成 "我的作品_001" |
| folder_path | folder_path | 文本 | "" | 保存文件夹路径,就像选择把照片放在哪个相册里 | 文件保存目录路径 | 输入 "D:\AI图片" 就保存到这个文件夹 |
| json_folder_path | json_folder_path | 文本 | "" | 配置文件保存路径,可以和图片分开存放 | JSON元数据文件保存路径 | 输入 "D:\配置文件" 把设置单独保存 |
| save_json | save_json | 布尔值 | True | 是否保存配置文件,就像是否保存拍照的参数设置 | 是否保存工作流元数据 | 选择 True 可以拖拽图片回 ComfyUI 继续编辑 |
3.2 Endless Nodes Aesthetic Scorer(美观评分器)
这个节点就像一个专业的艺术评委,自动给你的图片打美观分数。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE | 必填 | 要评分的图片,就像参赛作品 | 待评估的图像数据 | 连接生成的图片输出 |
| model_path | model_path | 文本 | "chadscorer.pth" | 评分模型路径,就像选择哪个评委来打分 | 美学评分模型文件路径 | 下载 chadscorer.pth 放到 models 文件夹 |
| score | score | FLOAT | 输出 | 美观分数输出,数字越高越好看 | 美学评分数值输出 | 分数范围一般 0-10,7分以上算好看 |
3.3 Endless Nodes Image Reward(图片奖励评分)
这个节点使用另一套评分系统,就像请了另一个评委来给图片打分。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| images | images | IMAGE | 必填 | 要评分的图片,就像送给评委的作品 | 待评估的图像输入 | 连接图片生成节点 |
| reward_score | reward_score | FLOAT | 输出 | 奖励分数,基于人类喜好训练的评分 | 基于人类反馈的奖励分数 | 和美观评分对比,选择更好的图片 |
| normalized_score | normalized_score | FLOAT | 输出 | 标准化分数,转换成 1-10 的分数 | 归一化后的评分结果 | 更直观的 1-10 分数显示 |
3.4 Endless Nodes Parameterizer(参数收集器)
这个节点就像一个工具箱,把常用的参数都放在一起,避免到处找设置。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| base_width | base_width | INT | 1024 | 基础图片宽度,就像画布的宽度 | 基础编码器宽度参数 | 设置 1024 生成标准尺寸图片 |
| base_height | base_height | INT | 1024 | 基础图片高度,就像画布的高度 | 基础编码器高度参数 | 设置 1024 生成正方形图片 |
| base_crop_w | base_crop_w | INT | 0 | 裁剪宽度,就像裁剪照片的宽度 | 基础编码器裁剪宽度 | 通常设置为 0 表示不裁剪 |
| base_crop_h | base_crop_h | INT | 0 | 裁剪高度,就像裁剪照片的高度 | 基础编码器裁剪高度 | 通常设置为 0 表示不裁剪 |
| base_target_width | base_target_width | INT | 1024 | 目标宽度,就像最终想要的照片宽度 | 基础编码器目标宽度 | 设置最终输出图片的宽度 |
| base_target_height | base_target_height | INT | 1024 | 目标高度,就像最终想要的照片高度 | 基础编码器目标高度 | 设置最终输出图片的高度 |
| refiner_width | refiner_width | INT | 2048 | 细化器宽度,就像放大镜的宽度 | 细化器编码器宽度参数 | 通常设置为基础宽度的 2 倍 |
| refiner_height | refiner_height | INT | 2048 | 细化器高度,就像放大镜的高度 | 细化器编码器高度参数 | 通常设置为基础高度的 2 倍 |
| refiner_aesthetic_score | refiner_aesthetic_score | FLOAT | 6.0 | 细化器美观分数,就像设置美观度门槛 | 细化器美学评分阈值 | 设置 6.0 表示中等美观度 |
3.5 Endless Nodes Parameterizer with Text(带文本框的参数收集器)
这个节点在上面的基础上增加了文本输入框,就像给工具箱加了标签。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| text_g | text_g | STRING | "" | 全局文本,就像写在大标签上的内容 | 全局文本编码器输入 | 输入主要的描述文字 |
| text_l | text_l | STRING | "" | 局部文本,就像写在小标签上的内容 | 局部文本编码器输入 | 输入详细的描述文字 |
| [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] |
3.6 Endless Nodes Parameterizer Pos/Neg(正负提示参数收集器)
这个节点专门处理正面和负面提示词,就像有了专门的好话和坏话分类器。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| pos_aesthetic_score | pos_aesthetic_score | FLOAT | 6.0 | 正面提示美观分数,就像好话的美观度 | 正面提示词美学评分 | 设置 6.0 表示中等美观的正面描述 |
| neg_aesthetic_score | neg_aesthetic_score | FLOAT | 2.5 | 负面提示美观分数,就像坏话的美观度 | 负面提示词美学评分 | 设置 2.5 表示要避免的低美观度 |
| [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] | [其他参数同上] |
3.7 Endless Nodes Six Float Inputs(六个浮点数输入)
这个节点就像一个六孔插座,可以同时输入六个小数。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| float1 | float1 | FLOAT | 0.0 | 第一个小数,就像第一个调节钮 | 第一个浮点数参数 | 设置 1.2 用作某个强度参数 |
| float2 | float2 | FLOAT | 0.0 | 第二个小数,就像第二个调节钮 | 第二个浮点数参数 | 设置 0.8 用作另一个强度参数 |
| float3 | float3 | FLOAT | 0.0 | 第三个小数,就像第三个调节钮 | 第三个浮点数参数 | 设置 0.5 用作混合比例 |
| float4 | float4 | FLOAT | 0.0 | 第四个小数,就像第四个调节钮 | 第四个浮点数参数 | 设置 1.0 用作标准参数 |
| float5 | float5 | FLOAT | 0.0 | 第五个小数,就像第五个调节钮 | 第五个浮点数参数 | 设置 0.3 用作微调参数 |
| float6 | float6 | FLOAT | 0.0 | 第六个小数,就像第六个调节钮 | 第六个浮点数参数 | 设置 0.7 用作权重参数 |
3.8 Endless Nodes Text Switch(文本开关)
这个节点就像一个选择器,可以在多个文本之间切换选择。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| select | select | INT | 1 | 选择第几个文本,就像选择第几个频道 | 选择器索引值 | 设置 1 选择第一个文本 |
| text1 | text1 | STRING | "" | 第一个文本选项,就像第一个频道的内容 | 第一个文本输入选项 | 输入 "美丽的风景" 作为选项一 |
| text2 | text2 | STRING | "" | 第二个文本选项,就像第二个频道的内容 | 第二个文本输入选项 | 输入 "可爱的动物" 作为选项二 |
| text3 | text3 | STRING | "" | 第三个文本选项,就像第三个频道的内容 | 第三个文本输入选项 | 输入 "梦幻的城堡" 作为选项三 |
| text4 | text4 | STRING | "" | 第四个文本选项,就像第四个频道的内容 | 第四个文本输入选项 | 输入 "科幻的太空" 作为选项四 |
| text5 | text5 | STRING | "" | 第五个文本选项,就像第五个频道的内容 | 第五个文本输入选项 | 输入 "古典的建筑" 作为选项五 |
| text6 | text6 | STRING | "" | 第六个文本选项,就像第六个频道的内容 | 第六个文本输入选项 | 输入 "现代的都市" 作为选项六 |
3.9 Endless Nodes Text Switch 8(八选一文本开关)
这个节点是上面的升级版,有八个选择,就像有了更多频道的遥控器。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| select | select | INT | 1 | 选择第几个文本,就像选择第几个频道 | 选择器索引值 | 设置 3 选择第三个文本 |
| text1 | text1 | STRING | "" | 第一个文本选项 | 第一个文本输入选项 | 输入不同的描述文字 |
| text2 | text2 | STRING | "" | 第二个文本选项 | 第二个文本输入选项 | 输入不同的描述文字 |
| text3 | text3 | STRING | "" | 第三个文本选项 | 第三个文本输入选项 | 输入不同的描述文字 |
| text4 | text4 | STRING | "" | 第四个文本选项 | 第四个文本输入选项 | 输入不同的描述文字 |
| text5 | text5 | STRING | "" | 第五个文本选项 | 第五个文本输入选项 | 输入不同的描述文字 |
| text6 | text6 | STRING | "" | 第六个文本选项 | 第六个文本输入选项 | 输入不同的描述文字 |
| text7 | text7 | STRING | "" | 第七个文本选项 | 第七个文本输入选项 | 输入不同的描述文字 |
| text8 | text8 | STRING | "" | 第八个文本选项 | 第八个文本输入选项 | 输入不同的描述文字 |
3.10 Endless Nodes Number Switch(数字开关)
这个节点可以在多个数字之间切换,就像一个数字选择器。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| select | select | INT | 1 | 选择第几个数字,就像选择第几个档位 | 选择器索引值 | 设置 2 选择第二个数字 |
| number1 | number1 | FLOAT | 0.0 | 第一个数字选项 | 第一个数值输入选项 | 输入 0.5 作为低强度 |
| number2 | number2 | FLOAT | 0.0 | 第二个数字选项 | 第二个数值输入选项 | 输入 1.0 作为标准强度 |
| number3 | number3 | FLOAT | 0.0 | 第三个数字选项 | 第三个数值输入选项 | 输入 1.5 作为高强度 |
| number4 | number4 | FLOAT | 0.0 | 第四个数字选项 | 第四个数值输入选项 | 输入 2.0 作为最高强度 |
3.11 Endless Nodes Number Switch with Widgets(带控件的数字开关)
这个节点在上面基础上增加了可视化控件,就像给选择器加了显示屏。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| select | select | INT | 1 | 选择第几个数字,就像选择第几个档位 | 选择器索引值 | 设置 1 选择第一个数字 |
| number1 | number1 | FLOAT | 0.0 | 第一个数字选项,带滑块控制 | 第一个数值输入选项 | 用滑块调节到 0.8 |
| number2 | number2 | FLOAT | 0.0 | 第二个数字选项,带滑块控制 | 第二个数值输入选项 | 用滑块调节到 1.2 |
| number3 | number3 | FLOAT | 0.0 | 第三个数字选项,带滑块控制 | 第三个数值输入选项 | 用滑块调节到 1.5 |
| number4 | number4 | FLOAT | 0.0 | 第四个数字选项,带滑块控制 | 第四个数值输入选项 | 用滑块调节到 2.0 |
3.12 Endless Nodes Float to Number(小数转数字)
这个节点就像一个转换器,把小数转换成其他类型的数字。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| float_input | float_input | FLOAT | 0.0 | 输入的小数,就像要转换的原始数字 | 浮点数输入 | 输入 3.14159 |
| int_output | int_output | INT | 输出 | 转换后的整数,就像去掉小数部分 | 整数输出 | 输出 3 |
| number_output | number_output | NUMBER | 输出 | 通用数字输出,就像万能数字 | 数值类型输出 | 输出 3.14159 |
3.13 Endless Nodes Int to Number(整数转数字)
这个节点把整数转换成其他类型的数字。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| int_input | int_input | INT | 0 | 输入的整数,就像要转换的原始数字 | 整数输入 | 输入 42 |
| float_output | float_output | FLOAT | 输出 | 转换后的小数,就像加上小数点 | 浮点数输出 | 输出 42.0 |
| number_output | number_output | NUMBER | 输出 | 通用数字输出,就像万能数字 | 数值类型输出 | 输出 42 |
3.14 Endless Nodes Number to String(数字转文字)
这个节点把数字转换成文字,就像把数字写在纸上。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| number_input | number_input | NUMBER | 0 | 输入的数字,就像要写下来的数字 | 数值输入 | 输入 123.45 |
| string_output | string_output | STRING | 输出 | 转换后的文字,就像写在纸上的数字 | 字符串输出 | 输出 "123.45" |
3.15 Endless Nodes String to Number(文字转数字)
这个节点把文字转换成数字,就像把纸上的数字读出来。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| string_input | string_input | STRING | "0" | 输入的文字,就像纸上写的数字 | 字符串输入 | 输入 "98.6" |
| number_output | number_output | NUMBER | 输出 | 转换后的数字,就像读出来的数字 | 数值输出 | 输出 98.6 |
| int_output | int_output | INT | 输出 | 转换后的整数,就像去掉小数部分 | 整数输出 | 输出 98 |
| float_output | float_output | FLOAT | 输出 | 转换后的小数,就像保留小数部分 | 浮点数输出 | 输出 98.6 |
4. 使用技巧和建议
4.1 图片保存技巧
- 建议把图片和配置文件分开保存,图片放在容易找到的文件夹,配置文件放在专门的文件夹
- 使用时间戳命名可以避免文件名重复,格式如:
%Y-%m-%d_%H-%M-%S - 如果要重复编辑图片,记得开启 JSON 保存功能
4.2 美观评分使用技巧
- 两个评分系统可以同时使用,对比结果选择最好的图片
- 一般来说,7分以上的图片质量较好,可以作为筛选标准
- 评分只是参考,最终还是要看你自己的喜好
4.3 参数收集器使用技巧
- 把常用的参数组合保存在参数收集器中,避免重复设置
- 可以为不同的生图风格创建不同的参数收集器
- 正负提示参数收集器特别适合 SDXL 模型使用
4.4 开关节点使用技巧
- 文本开关适合切换不同的描述词,比如不同的风格、主题
- 数字开关适合切换不同的强度参数,比如不同的采样步数
- 可以把常用的设置预设在开关中,快速切换
5. 常见问题解答
Q1: 安装时提示缺少 CLIP 怎么办?
A1: 这是因为美观评分功能需要 CLIP 组件。按照以下步骤解决:
- 确保 Python 和 Pip 在系统环境变量中
- 在插件文件夹中打开命令行
- 运行:
python -m pip install -r requirements.txt
Q2: 图片保存时找不到文件夹怎么办?
A2: 请检查:
- 文件夹路径是否正确(注意斜杠方向)
- 文件夹是否存在(插件不会自动创建文件夹)
- 是否有写入权限
Q3: 美观评分总是很低怎么办?
A3: 这是正常现象:
- 不同的评分模型标准不同
- 两个评分系统经常给出不同的结果
- 评分只是参考,不要过分依赖
Q4: 数字转换出错怎么办?
A4: 转换功能还在测试阶段:
- 确保输入的文字确实是数字格式
- 避免输入特殊字符
- 如果经常出错,可以暂时不使用转换功