ComfyUI-YJNodes
ComfyUI 插件合集:模型匹配、工作流辅助和自定义节点。
ComfyUI-YJNodes
一组面向 ComfyUI 的实用节点与工作流增强工具,提供缺失模型匹配、Set/Get 物理连线转换、动态图片批次合并和工作流完成提示音。
功能概览
| 功能 | 说明 | | --- | --- | | 缺失模型匹配 | 扫描选中节点或整个工作流,为缺失模型推荐本地候选并批量替换 | | Set/Get 转物理连线 | 将 KJNodes 的 Set Node / Get Node 逻辑连接展开为真实连线 | | 去重复帧图像批次合并 | 动态添加最多 20 个图片输入,并在合并时移除后续批次开头的重复帧 | | 工作流完成提示音 | 支持自定义音效、音量以及“队列完成”或“每个任务完成”两种触发方式 |
环境要求
- ComfyUI
- Python 3.10 或更高版本
- “打开音效文件夹”和“打开模型目录”仅支持 Windows;其余核心功能不依赖这两个快捷入口
安装
- 下载或克隆本仓库到 ComfyUI 的
custom_nodes目录。 - 重启 ComfyUI。
本插件当前没有需要单独安装的 Python 依赖。
缺失模型匹配
在打开其他人分享的工作流但本地模型名称或目录不一致时,可使用该工具查找替代模型。
使用方法:
- 可选:先选中需要检查的节点;未选中节点时会扫描整个工作流。
- 在画布空白处右键,选择“⚡ 选择缺失模型”。
- 在结果窗口中检查状态、原始模型名、候选模型、匹配度和匹配原因。
- 可手动更换候选、勾选“不调整”,或用
HF、C、G分别打开 Hugging Face、Civitai、Google 搜索。 - 点击“应用更改”。只有真实存在且可写的节点控件会被修改。
匹配规则:
| 情况 | 匹配度 | 自动候选 | | --- | ---: | --- | | 主体名、精度和参数量一致 | 100% | 是 | | 主体名一致,精度不同 | 95% | 是 | | 主体名一致,参数量不同 | 90% | 是 | | 主体名不同 | 最高 89% | 否 |
说明:
- 目录不同不会单独降分,但会显示为匹配原因。
- 候选分数达到 90% 才可能自动选择;最高分并列且无法可靠消歧时不会自动选择。
- 每个模型引用最多展示 8 个候选。
- 模型索引来自 ComfyUI 的
models目录、extra_model_paths.yaml以及当前folder_paths注册的模型类型。 - 外部搜索只负责打开搜索页面,不会下载或安装模型。
UNKNOWN 节点
未安装的自定义节点可能显示为 UNKNOWN。插件会尝试从工作流序列化数据的 widgets_values 中提取能够可靠识别为模型的文件名,并标记为“UNKNOWN 节点原始值”。
由于 UNKNOWN 节点没有真实可写控件,这些结果只用于查看候选和外部搜索,不参与“应用更改”。无法可靠判断模型类型的值会被跳过,避免把普通文件误判为模型。
Set/Get 转物理连线
该功能用于展开 KJNodes 的 Set Node / Get Node 逻辑连接,便于移除中间节点或导出更直观的工作流。
- 在画布空白处右键,选择“⚡ 将 Set/Get 替换为连线”。
- 插件按变量名匹配 Set/Get,并将 Set 的上游直接连接到对应 Get 的全部下游。
- 选择“仅连线”保留原节点;选择“连线并删除”同时删除已匹配的 Set/Get;选择“取消”不修改工作流。
安全处理:
- 没有 Set/Get、变量名不匹配或 Set 没有上游连线时,不会修改工作流。
- 存在多个已连接且同名的 Set 时,插件不会猜测来源;有歧义的变量会被跳过,其他无歧义连接仍可转换。
- 检测到子图时,为避免破坏跨子图引用,只允许建立连线,不提供删除选项。
去重复帧图像批次合并
节点路径:YJNodes/Image → 去重复帧图像批次合并
- 连接
image2后会自动出现下一个图片输入,最多支持image1至image20。 - 所有输入按编号顺序沿 batch 维度合并。
- “减去重复帧数”为
N时,保留image1完整批次,并从每个后续输入的开头移除N帧后再合并。 - 被裁剪为空的后续输入会被忽略。
- 所有参与合并的图片必须具有相同的高度、宽度和通道数,否则节点会报出尺寸不匹配。
此功能按指定数量裁剪批次开头,并不会逐帧计算内容是否真的重复。
工作流完成提示音
- 打开 ComfyUI 设置,进入
YJNodes → 工作流完成提示音。 - 启用提示音,并选择触发方式:
- 队列完成:整个队列清空后播放一次。
- 每个任务:每完成一个工作流任务播放一次。
- 点击“打开音效文件夹”,将音效复制到插件的
sounds目录。 - 点击“刷新音效列表”,选择音效并调整音量。
- 点击“测试当前音效”试听。
支持扩展名:.wav、.mp3、.ogg、.m4a、.aac、.flac、.webm。实际能否解码取决于浏览器或 ComfyUI Desktop 的音频支持。
界面语言
缺失模型匹配器和 Set/Get 转换器支持中文与英文,会跟随 ComfyUI 的语言设置;无法读取语言设置时默认使用中文。动态合并节点和提示音设置目前使用中文标签。
当前限制
- 不会在导入工作流时自动打开模型匹配器,需要从画布右键菜单手动触发。
- UNKNOWN 节点的模型值是只读参考,不能直接替换。
- 模型匹配结果窗口的列宽调整不会持久化。
- 子图中的 Set/Get 只转换连线,不自动删除节点。
开发与测试
在 Windows PowerShell 中:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -U pip
.\.venv\Scripts\python.exe -m pip install pytest
.\.venv\Scripts\python.exe -m pytest -q
node --test tests\js\yj_canvas_menu.test.mjs tests\js\yj_execution_sound_core.test.mjs tests\js\yj_model_matcher_core.test.mjs tests\js\yj_set_get_resolver_core.test.mjs
Python 测试需要隔离环境;JavaScript 测试需要本机已安装 Node.js。
许可证
项目元数据声明本项目使用 MIT 许可证。