Nodes/XB_ToolBox/XB-BOX - 🔗 三连 LoRA 加载
ComfyUI Node

XB-BOX - 🔗 三连 LoRA 加载

A permanent three-slot LoRA rack for your graph

By wjluoxiao·Created 7 months ago·Updated a day ago· 406
XB-BOX - 🔗 三连 LoRA 加载
  • model
  • clip
  • MODEL
  • CLIP
◄lora_01关闭►
◄strength_011.00►
◄lora_02关闭►
◄strength_021.00►
◄lora_03关闭►
◄strength_031.00►

Three LoRAs is not an unusual number anymore

Stacking stopped being a flex and became the default. The most-upvoted realism recipe of 2026 is a three-LoRA stack on Flux 2 Klein 9B - skin plus grain plus a camera/film look, 1.0 each - and the same post is blunt about the ceiling elsewhere: Z-Image Turbo will take about two LoRAs and starts burning above roughly 1.4 strength each, while Klein 9B handles all three at full weight without melting.

So a three-slot loader isn't an edge case, it's the common case. The official Load LoRA node gives you one slot; three of them means six widgets, six wires, and a graph you rearrange every time you want to try a stack in a different order.

XB_TripleLoraLoader is one node holding three slots. Same math, less wiring.

How it works (and the cache detail that makes it not-slow)

Mechanically it's three official Load LoRA nodes chained: model/clip in, slot 01 applies, its output feeds slot 02, then 03, and out come MODEL and CLIP. Each slot is skipped entirely if its dropdown is set to 关闭 - that's Chinese for "off" and it's the default for all three, so a freshly dropped node does nothing at all until you pick a file. Nothing is loaded, nothing is touched.

The detail worth knowing is in the constructor. The node creates three separate internal loader instances, one per slot, and the source comments say why: the official LoRA loader only caches the last file it loaded. Reuse one shared instance for all three slots and each call evicts the previous file from that cache, so you'd re-read the same safetensors off disk on every single run. Three instances means three stable cache entries, and changing your prompt doesn't cost you three hundred megabytes of disk reads. It's the kind of thing that only bites on the second generation, which is precisely when people give up and blame the node.

The inputs that matter

model and clip are the pair you'd normally hand to a single Load LoRA. Then lora_01, lora_02, lora_03 - dropdowns populated from your models/loras folder, with 关闭 prepended so an empty slot is a legal state. Each has a matching strength_01…03, FLOAT, default 1.0, and the range goes from -100 to 100 because negative LoRA weights are a real technique for pushing a concept away rather than toward.

Outputs are MODEL and CLIP. Feed both onward to the sampler and the text encoder respectively.

Slot order is the stacking order, applied 01 → 02 → 03, and the composition is sequential rather than a blend - reordering the same three files at the same strengths can give visibly different results when weights are fighting. If a stack looks wrong, shuffle slots before cutting strengths.

The one thing you give up: strength hits the model and the text encoder at the same value. The official node exposes strength_model and strength_clip separately; this wrapper sets them equal by design. Most LoRAs want that. Some character LoRAs over-bake the CLIP side and want 0.6 there while the UNet stays at 1.0 - for those, use the official node or the model-only variant.

Install

One node out of WJLUOXIAO's XB_ToolBox, a 141-node toolbox aimed at people new to ComfyUI. It shows up as XB-BOX - 🔗 三连 LoRA 加载 under XB_ToolBox/原版优化 - "original-node optimization", this pack's shelf for wrappers that don't change the algorithm.

Manager: search XB_ToolBox and install. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/XB_ToolBox.git

restart ComfyUI, done. This node needs no extra packages - don't run the pack's requirements.txt for it. That file exists for the audio, OCR, local-LLM and ONNX groups, and installing all of it into a healthy env is a great way to break torch.

Troubleshooting

Your new LoRA isn't in the dropdown. The lora list is baked into the node definition the frontend holds. A browser refresh (or a ComfyUI restart) is what re-reads models/loras; dropping in a file mid-session and wondering why 关闭 is still the only sensible option is the classic version of this.

Everything silently looks like the base model. Check the slots aren't still on 关闭 - it's the default, it's in Chinese, and on a subtle stack the difference is easy to miss.

A key-mismatch error on run. The file is for a different architecture than the model you wired in. An SDXL LoRA on Flux doesn't degrade gracefully; the official loader underneath throws.

Nothing in the pack appears at all. Then it's the pack, not the node. XB_ToolBox registers all 141 nodes inside a single try block, so one broken import anywhere prints 🚨 [XB-BOX] FATAL ERROR: XB_ToolBox Loading Failed! and leaves you with a menu containing none of them. The traceback above the banner names the missing package - usually from one of the heavy groups, not this one.

CategoryXB_ToolBox/原版优化

Inputs (8)

NameTypeDefaultDescription
modelMODELThe diffusion model the LoRA will be applied to.
clipCLIPThe CLIP model the LoRA will be applied to.
lora_01COMBO关闭LORA-01:选择「关闭」= 跳过该槽位
strength_01FLOAT1.00-100–100How strongly to modify the diffusion model. This value can be negative.
lora_02COMBO关闭LORA-02:选择「关闭」= 跳过该槽位
strength_02FLOAT1.00-100–100How strongly to modify the diffusion model. This value can be negative.
lora_03COMBO关闭LORA-03:选择「关闭」= 跳过该槽位
strength_03FLOAT1.00-100–100How strongly to modify the diffusion model. This value can be negative.

Outputs (2)

NameTypeDescription
MODELMODEL—
CLIPCLIP—