ComfyUI KJNodes 完整上手指南:200+ 工具节点如何给你的图像与视频工作流提速
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
KJNodes(仓库名 ComfyUI-KJNodes)是 ComfyUI 生态里一个"工具箱型"自定义节点包:它不主打某一个模型或某一种玩法,而是把日常调工作流时反复要用的杂活——改图、做遮罩、批量裁剪、盯显存、加速推理、拆 LoRA——做成了一个个即插即用的小节点,同时把第三方依赖压到最低。它的定位可以概括成三句话:图像与视频的数据流水线工具、模型推理的优化开关、以及画布交互的效率插件。如果你是刚用 ComfyUI 不久的新手,可以把它当成"标准件仓库",用到哪个拿哪个,不用一次学会全部。
先看懂 KJNodes 的能力地图:按"活"分类,而不是按文件分类
打开源码目录你会发现节点按功能拆在很多文件里,但对使用者来说,更实用的心智模型是按"它替我干什么活"来分:
- 布线与调试类:Set/Get 跨子图传参、WidgetToString 读取任意节点的参数值、VRAM_Debug 一键清缓存看显存、Timer Node 计时。适合所有"想把工作流理干净"的人。
- 图像/遮罩流水线类:Resize v2 分块缩放、CrossFade/Transition 做转场、BatchCropFromMask 批量裁剪与还原、流体遮罩/沃罗诺伊遮罩/音频遮罩等特效遮罩生成。视频剪辑式工作流的核心就靠它。
- 模型推理优化类:TorchCompile 系列编译加速、Sage/Flash/NABLA 三种注意力替换、WanVideoTeaCacheKJ 时间步缓存、显存历史录制与可视化。这是 KJNodes 里"提速省显存"的主力。
- LoRA 加工类:LoraExtractKJ 从两个模型差值里提取 LoRA,LoraReduceRankKJ 动态降秩压缩体积。
- 曲线与路径类:Spline Editor / Points Editor 在画布上画轨迹,让文字、形状、追踪框沿路径运动,配合 Instance Diffusion 追踪非常顺手。
- 音视频输入类:屏幕录制、摄像头采集、按文件夹批量读视频、音频幅度转遮罩。
注册机制上,init.py 用一个NODE_CONFIG大字典把所有节点类登记进去,再统一生成 ComfyUI 需要的映射表——所以你在菜单里看到的每个节点名,都能在这个文件里找到出处。值得注意的一点是:LTXV、MiniMax、TritonVAE 这几组节点是用try/except包裹加载的,如果缺少对应依赖,启动时会打一条 warning,节点直接静默缺席而不是报错崩溃。这也是后文"节点不见了"排查的根源。
KJNodes 安装教程:三条命令装好(含 portable 版)
按 README.md 的说明,安装只有两步。把仓库放进 ComfyUI 的custom_nodes文件夹,然后装依赖:
cd ComfyUI/custom_nodes git clone https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes pip install -r requirements.txt如果你用的是 Windows 便携版(ComfyUI_windows_portable),把第二条换成:
python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\ComfyUI-KJNodes\requirements.txt
装完重启 ComfyUI 即可。前端 JS 部分(快捷键、右键菜单、虚拟连线)位于 web/js/,随插件自动加载,无需额外配置。
上手第一个实用技巧:Node Insert 与 WidgetToString
装好后最值得立刻体验的是两个"交互小动作",它们不改变出图结果,但会明显改变你连线的体力活:
- Node Insert:按住默认快捷键
D,把一个节点直接拖到连线中间松手,自动完成"断开—插入—接好"三连。对应源码在 web/js/node_insert.js,模式可在设置里选 always / hotkey / disabled。 - Node Swap:快捷键
S,选中一个节点后拖另一个节点过来直接替换并继承连线,见 web/js/nodeswap.js。 - Shake to Disconnect:晃动节点批量断线,默认关闭,需在设置里开启。
再配合WidgetToString节点,你可以"偷看"工作流里任何节点的任何参数:填上目标节点 ID 和参数名,它就把那个值以字符串形式输出。比如想在工作流末尾显示当前加载的 checkpoint 名字,一个 WidgetToString 加一个 Show Text 就够了,不用去翻 prompt JSON。
场景一:KJNodes 视频工作流优化——注意力、缓存与显存三板斧
视频类模型(Wan、LTX2、MiniMax H3 等)是 KJNodes 优化节点最密集的方向,核心思路是三件事:换注意力实现、跳过冗余计算、把显存花在哪看清楚。
第一步:换注意力。nodes/model_optimization_nodes.py 里提供了PathchSageAttentionKJ(量化版注意力,省显存明显)和PatchFlashAttentionKJ(求稳求快);针对长序列还有NABLA_AttentionKJ稀疏注意力。它们的用法一样:把模型接进节点,输出"打过补丁的模型"再送进采样器。选哪个取决于你的瓶颈——显存不够先试 Sage,只想要稳定提速就用 Flash。
第二步:时间步缓存。跑 Wan 系列时加上WanVideoTeaCacheKJ,它利用"相邻时间步的中间结果很相似"这一点跳过部分重复计算,对长视频收益明显,代价是极端参数下可能有轻微画质损失,建议从保守阈值开始试。
第三步:显存可见化。三个节点Start Recording CUDAMemory History/End Recording.../Visualize CUDAMemory History可以录下一段生成过程,然后直接画出显存分配时间线——哪里涨、哪里没释放,一眼定位。日常轻量排查则用VRAM_Debug(强制 gc、清缓存、卸载全部模型)和ModelMemoryUseReportPatch(生成后报告模型显存占用)。
关于 TorchCompile 后端怎么选:TorchCompileModelFluxAdvancedV2、TorchCompileModelWanVideoV2、TorchCompileVAE、TorchCompileControlNet分别对应不同组件的独立编译。后端一般三选一:inductor是综合性能首选,nnc面向部分非 NVIDIA 硬件,aot_eager适合排查问题(不真正优化,方便看报错)。要提醒的是:第一次跑编译会明显变慢,这是正常的"交学费"时间,之后才是收益期。另外 V2 节点里有compile_transformer_blocks_only这类选项,可以在"全图编译失败"时退化为只编译主干块,是排错时的常用退路。旧的TorchCompileModelFluxAdvanced等一代节点已标记弃用,工作流里看到请换成 V2。
场景二:批量图像处理的"分块"思路(Resize v2 的 per_batch)
批量处理几百张大图时,最常见的死法不是算得慢,而是一口气申请不下内存。KJNodes 的图像节点普遍内置了**子批次(sub-batch)**机制。以 nodes/image_nodes.py 里的ImageResizeKJv2为例,它的per_batch参数默认 64:当输入批次超过这个值时,节点会切成一小块一小块地缩放再拼回,节点还会在日志里打印"预计输出约多少 MB、按 64/B 分批"这类信息,让你提前知道这次处理吃不吃得下。显存紧张就把这个值调小,它几乎是这类节点的第一调节旋钮。
围绕批量处理,KJNodes 还凑齐了一条"视频预处理流水线":
ImageBatchMulti/MaskBatchMulti:多路输入合并成一条批次流,中间还能智能过滤空帧;ImageConcatFromBatch、ImageGridtoBatch:批次与拼图网格互相转换,方便做分镜预览;CrossFadeImages/TransitionImagesMulti:多组图片之间做交叉淡入淡出,支持多种缓动曲线;BatchCropFromMask/BatchUncrop:按遮罩把每张图裁成紧贴主体的小图去处理(省算力),处理完再按原始坐标贴回,并带 bbox 平滑参数减少裁剪框抖动——做"只精修人脸/主体"的流水线基本靠这对节点。
遮罩生成方面,nodes/mask_nodes.py 提供的不是画板而是"程序化遮罩":流体遮罩、音频波形遮罩、渐入渐出遮罩、沃罗诺伊细胞遮罩、按颜色抠图、CLIPSeg 批量分割,再配合GrowMaskWithBlur膨胀收缩、SeparateMasks拆分连通域,基本能覆盖视频局部控制的常见需求。
KJNodes Set/Get 节点用法:2026 年 3 月重写后到底强在哪
Set/Get 是 KJNodes 的前端王牌(源码 web/js/setgetnodes.js):用一对"同名字节点"替代物理连线,把参数像变量一样传递。2026 年 3 月的重写把它从"图内小工具"升级成了跨子图的数据总线,关键能力包括:
- 跨子图边界:父图里的 Set 对所有子图可见,Get 会向上逐级查找祖先,跨图连接在执行时自动解析;
- 连线一键互转:右键任意连线的中点即可转成 Set/Get 对,右键 Set/Get 节点又可转回直连,还支持批量"把选中节点的所有输出转成 Set/Get";
- 快捷操作:
Ctrl+Shift+S在选中处加 Set,Ctrl+Shift+G加 Get,Ctrl+Shift+L临时显示全部虚拟连线;双击 Get 节点直接跳到对应的 Set 并选中; - 可视化可控:设置面板里
KJNodes > Set & Get分类下可以控制虚拟连线何时显示(从不 / 仅选中时 / 总是)。
对老用户的意义很直接:复杂工作流可以大胆拆子图归档了,参数传递不再被"子图输入输出端口"卡脖子;反过来,如果你维护的是旧习惯,设置里也有一键"把全部 Set/Get 转回直连"的开关,迁移成本很低。
常见坑与排查清单
- 某些节点菜单里找不到:优先看 ComfyUI 启动日志。LTXV、MiniMax、TritonVAE 三组节点属于"可选模块",依赖缺失时只会打 warning 然后缺席。补装对应依赖后重启即可,这属于设计行为而非 bug。
- 第一次跑编译节点卡很久:正常现象,属于编译耗时;若反复报图编译失败,把节点切到
aot_eager后端跑一遍定位报错,或勾选"只编译主干块"降级。 - 批量处理 OOM:先找节点上的
per_batch类参数调小;仍不够就用VRAM_Debug强制 gc + 清缓存再试;还不行就上显存历史录制看是谁在占内存。 - 预览糊/慢:视频采样阶段可换用
ModelPreviewOverrideKJ控制预览帧率与分辨率,或配合 FastPreview 走轻量解码,把完整 VAE 解码留给最终输出。 - 找不到文档:KJNodes 的官方说明主要写在节点自身的描述和悬停提示里,官方文档见 README.md,工具函数参考 utility/。
下一步建议:按你的工作流类型选路
- 纯图像用户:从 Resize v2、CrossFade、BatchCrop 这对"预处理三件套"入手,再试 WidgetToString 清理工作流,收益立竿见影。
- 视频用户:主线是"注意力替换 + TeaCache + 显存监控"三件套,按瓶颈逐项加,别一次全开。
- 工作流维护者:重点学 Set/Get 子图化改造和 Node Insert/Swap 快捷键,把"连线体力活"变成"拖拽"。
- 适用边界:KJNodes 是工具集而非教程,很多优化节点针对特定模型家族(Wan、LTX2、MiniMax、Ideogram4),换模型前先看节点提示词里的适用范围;也不建议把编译、缓存、稀疏注意力同时叠加——每加一层都单独验证画质,排查问题才有抓手。
【免费下载链接】ComfyUI-KJNodesVarious custom nodes for ComfyUI项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考