模型加载器
Stop Pasting Three Loader Nodes Into Every Workflow
- MODEL
- CLIP
- VAE
Somewhere around 2024, loading a model stopped being one node. SD1.5 and SDXL gave you a checkpoint and you were done; Flux and everything after ships as three separate files - diffusion weights, a text encoder, a VAE - and stock ComfyUI makes you wire three loaders to get all three into the graph. Multiply that by every workflow you've ever saved.
QG_TripleLoader (displayed as 模型加载器, "model loader") is one node that picks all three files and hands you standard MODEL, CLIP and VAE. That's it. Not clever, just the obvious thing nobody in core has shipped yet.
Why it's worth a node slot
The split isn't cosmetic. On the 2026 LLM-encoded generation - Qwen-Image, Flux 2, Z-Image, Wan - the encoder is often what decides whether a model fits your card: Flux 2 Dev pairs a 32B transformer with an 18GB Mistral encoder. Three picks and three quant decisions in one panel beats hunting across the canvas. And the classic "missing CLIP / missing VAE" error is usually someone grabbing the diffusion weights and skipping the companions the model card lists. Here it's one glance.
How it actually works
This is what makes it more than a UI wrapper: it doesn't reimplement loading. It instantiates ComfyUI's own UNETLoader, CLIPLoader and VAELoader and calls their load_unet / load_clip / load_vae methods - so you get exactly the loaders core gives you, and a new clip_type or dtype shows up here without the author shipping anything.
Two details worth knowing:
- The file lists are re-read on every request, not cached at import - so a freshly downloaded model shows up on a plain refresh (
R), same as the stock loaders. - The short names are front-end only. Dropdowns list full paths so you can tell two identically-named files apart; the node shows just the basename so it doesn't stretch your canvas. The stored value stays the full path, so saving, undo and API calls are unaffected.
The six fields, and the three outputs
unet_name is your diffusion model. weight_dtype is its precision; drop to fp8_e4m3fn when VRAM is tight, which is the sane default on 12–24GB anyway - fp8 is half of fp16 with a quality cost consensus has treated as invisible since Flux. fp8_e4m3fn_fast needs --fast and an Ada-or-newer card, otherwise it's fp8_e4m3fn with extra steps.
clip_name is the text encoder, and clip_type is the field people get wrong. It has to match the architecture - the README calls out qwen_image for Qwen-Image - and a wrong choice doesn't always crash; sometimes you just get mush. device set to cpu parks the encoder in system RAM and frees a big chunk of VRAM at the cost of speed - standard practice on small cards now, and this node just exposes it.
vae_name is the VAE. If pixel_space is the only entry, that's the no-op VAE for pixel-space models - it means your models/vae folder is empty.
Outputs are MODEL, CLIP and VAE: MODEL into your LoRA loader or the sampler, CLIP into CLIP Text Encode, VAE into VAE Decode (plus VAE Encode for img2img or inpainting).
Installing it
No pip step, deliberately: the pack's requirements.txt is comments only, which is how Manager is told there's nothing to install.
cd ComfyUI/custom_nodes
git clone https://github.com/live1617/ComfyUI-QG-tools
Then fully restart ComfyUI, not just the tab. You should see:
[QG-tools] v0.9.2 加载完成 | 节点数 24
Manager search for ComfyUI-QG-Tools only works once the pack is on the Comfy Registry, and the README says so itself. Empty search? Use the clone.
Where people get burned
"找不到模型文件 - can't find model file X." Values resolve by exact path, then basename, then basename without extension, so moving a file into a subfolder is survivable. Renaming it isn't - and the node stops before sampling and names the file rather than silently loading half a model. Right call for unattended runs.
Nothing in the dropdown you expected. That's folder layout, not the node: diffusion models in models/diffusion_models (older alias models/unet), encoders in models/text_encoders (older: models/clip), VAEs in models/vae. It reads whatever core reads - if stock UNETLoader can't see your file, this won't either.
GGUF doesn't belong here. The loaders this node wraps are safetensors loaders. GGUF quants need ComfyUI-GGUF's own nodes - fine, they drop straight into the MODEL slot, you just won't pick them from this panel.
New front-end code, old page. The short-name display is JS. Still seeing full paths? Ctrl+Shift+R.
One honest caveat: the pack is young and has essentially no community footprint yet - zero threads across the whole indexed corpus. The triple loader is also the one node here the author wrote himself rather than ported from another pack. It does what it says; there's just no crowd behind it yet.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| unet_name | COMBO | UNET / 扩散模型(列表显示完整路径,节点上显示短文件名) | |
| weight_dtype | COMBO | default | UNET 权重数据类型,显存紧张可选 fp8_e4m3fn |
| clip_name | COMBO | CLIP / 文本编码器(列表显示完整路径,节点上显示短文件名) | |
| clip_type | COMBO | stable_diffusion | 文本编码器类型,按模型选择(默认与 ComfyUI 原生 CLIPLoader 一致,取列表第一项) |
| device | COMBO | default | 文本编码器加载设备,选 cpu 可省显存(速度变慢) |
| vae_name | COMBO | VAE(列表显示完整路径,节点上显示短文件名) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |