如何用 ComfyUI-KJNodes 快速优化 AI 工作流:安装、避坑与进阶指南
如何用 ComfyUI-KJNodes 快速优化 AI 工作流:安装、避坑与进阶指南
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
"一条工作流从 20 个节点膨胀到 60 个,连线像蜘蛛网,子图里的参数改一处要翻遍整张画布"——如果你的 ComfyUI 日常正是如此,那 ComfyUI-KJNodes 就是为你准备的答案。它是一套覆盖常量管理、Set/Get 跨图传参、遮罩生成、模型优化与画布交互的自定义节点集合,装好之后等于给 ComfyUI 配了个"外挂工具箱",专门解决复杂工作流里最磨人的那几件事。
三分钟上手:装好它只需要四步
不用纠结选哪个分支、配什么依赖,这个插件的依赖轻到只有 pillow、opencv、matplotlib 这几样,很多机器上早就装过了。照抄下面三步:
# 进入 ComfyUI 的 custom_nodes 目录后执行 git clone https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes custom_nodes/ComfyUI-KJNodes cd custom_nodes/ComfyUI-KJNodes pip install -r requirements.txt如果你用的是 Windows 便携版,注意第二行要换成python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt,别装进系统 Python 里,否则重启后节点死活不出现。
验证是否成功:重启 ComfyUI,在节点搜索框输入KJ,能看到 "KJNodes/constants"、"KJNodes/text" 等一串分类,就说明装好了。然后再搜 "Set Node" 和 "Get Node",这两个就是接下来的主角。
亮点快览:四个最值得先上手的功能
先别急着把每个节点都拖出来试一遍,下面这 4 个功能是最先能让你工作流"变轻"的:
| 功能 | 什么时候用 | 解决什么问题 |
|---|---|---|
| Set/Get 节点 | 子图之间要共享模型、数值时 | 不用拖长线,跨子图直接传值 |
| WidgetToString | 想动态展示或复用某个节点的参数时 | 把任意控件值实时变成字符串 |
| 常量节点(INT/Float/String) | 批处理时统一管理数字与文本 | 避免在多个节点里重复手填 |
| 遮罩生成系列 | 做转场、粒子、音频驱动的动画时 | 流体/音频/渐变一键生成 mask |
其中最惊喜的是 Set/Get:你可以在父图里放一个Set(name="MODEL_CONFIG"),任意子图里放同名的Get就能取到值,跨子图边界的数据传递在运行时自动解析,画布上多一条虚拟线都不用拉。
图:左侧是 SDXL 高效加载器,右侧 Get Model Name 节点实时抓取其 base_ckpt_name 参数,输出给 Show Text 展示,全程无需手抄模型名。
避坑实录:这些坑你大概率会踩
下面这几条,基本是你装上后的第一周就会撞上的,先打预防针:
- WidgetToString 的 id 会"漂移"。它靠节点 ID 定位目标,而节点一旦被重建或重新加载,ID 就变了,你拿到的不再是想要的参数。解法:给目标节点右键改一个固定的 Title,然后在 WidgetToString 里用
node_title定位;或者把它的any_input接到目标节点的任意输出上,让系统自动追踪。 - Set/Get 的名称是大小写敏感的。
MODEL和model会被当成两个变量,Get 端永远取不到值且不报错。粘贴复制 Set/Get 对时系统会自动加_0、_1后缀,重命名后记得检查 Get 侧是否同步。 any_input不是摆设。它除了帮你定位节点,还保证目标节点真实存在于当前工作流中。不接它能跑,但一旦删掉目标节点,你只会默默拿到空值,连个报错提示都没有,排查起来相当迷惑。- 摇动断线默认是关的。
shake_to_disconnect.js这个手势功能需要在 设置 → KJNodes 里手动开启;节点插入(默认键 D)和节点交换(默认键 S)的热键也可以在设置里自定义。
进阶彩蛋一:跨子图传参的正确姿势
如果你做过模板化工作流,一定经历过这种尴尬:主流程的参数要下发给三四个子图,每次更新都要逐个手动同步。Set/Get 就是为这个场景设计的:
# 父图中定义共享变量 Set(name="MODEL_CONFIG", value=model_settings) # 任意子图中同名读取,自动向上查找父图 Get(name="MODEL_CONFIG") -> Apply Model Settings几个能立刻提升效率的操作细节:
- Ctrl+Shift+S在选中节点或光标处直接添加 Set 节点,Ctrl+Shift+G添加 Get 节点,不用去搜索框翻半天;
- 双击任意 Get 节点会自动居中并选中它对应的 Set 节点,改参数不用再满画布找线;
- 右键任意连线中点选 "Convert link to Set/Get",一条线瞬间变成节点对;反过来右键 Set/Get 节点也能还原成直线;
- 画布太乱时,在设置里把 Show links 调成
selected,只有选中的 Set/Get 才显示虚拟连线,其余时候眼不见心不烦。
进阶彩蛋二:WidgetToString 让参数"活"起来
参数写死在工作流里,是很多翻车事故的源头。WidgetToString 帮你把任意节点的控件值实时转成字符串,再喂给提示词、判断逻辑或批量脚本:
# 以 Load Checkpoint 为例:提取它的模型文件名 id = 2 # 目标节点 ID(设置里开启 Node ID Badge 可见) widget_name = "ckpt_name" # 要提取的控件名 return_all = False # 只取第一个值 # 输出字符串:"1_5\photon_v1.safetensors"这段配置做的事很简单:运行时读取目标节点指定控件的当前值,转成字符串输出。注意widget_name支持逗号分隔的列表,一次可以抓多个参数。配合它有个隐藏细节——把目标节点的某个输出接进any_input,即使节点 ID 变了也能自动找回目标,这是最稳妥的接法。
图:WidgetToString 节点(#13)与 Load Checkpoint(#2)配合,把 ckpt_name 控件值实时输出为字符串并交给 Show Text 展示,验证模型路径是否正确。
资源地图:把剩下的探索时间省下来
- 安装与更新日志:都在仓库根目录的 README.md,Set/Get 的重写说明和快捷键清单写得很全;
- 节点说明:作者把绝大多数文档写进了节点 tooltip,鼠标悬停即可查看,遇到不懂的节点先看它;
- 示例工作流:example_workflows/leapfusion_hunyuuanvideo_i2v_native_testing.json,展示了 KJNodes 与视频生成节点的组合用法;
- 前端交互源码:想魔改快捷键或交互逻辑,看 web/js/ 下的 setgetnodes.js、node_insert.js、shake_to_disconnect.js;
- 一键安装:
git clone https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes custom_nodes/ComfyUI-KJNodes然后安装依赖即可。
最后一句
工作流变乱不是你的问题,是工具不够顺手。装上 ComfyUI-KJNodes 的这一天,就是你开始把时间还给创作的那一天——现在就把第一条蜘蛛网连线右键转成 Set/Get 试试,你会回来感谢这个决定的。
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
