RUM FLUX.2 Native Match Text Encode
The one text-encode node that does all of RUM's conditioning
- qwen_clip
- sdxl_clip
- positive
- negative
- status
If you open a shipped RUM workflow and wonder which node is actually doing the prompt magic, it's this one. RUMFlux2NativeMatchTextEncode is the diffusers-match text encoder: it takes your prompt, runs it through both text streams RUM needs - the FLUX.2 model's Qwen3 4B encoder and the SDXL teacher CLIP - combines them, and hands back the positive and negative conditionings your CFG guider wants. One node, the whole conditioning story.
It exists because RUM isn't a plain LoRA on FLUX.2-Klein. It's RimoChan's cross-architecture distillation: the SDXL anime knowledge (the waiNSFWIllustrious teacher) got transferred into the 4B Klein weights, and reproducing that means conditioning the model the same way it was trained - Qwen base tokens plus teacher CLIP tokens, sliced at very specific lengths.
The inputs that matter
qwen_clip- the Qwen3 4B text encoder (qwen_3_4b.safetensorsinmodels/text_encoders/), loaded with a Qwen CLIP loader.sdxl_clip- the waiNSFWIllustrious teacher CLIP pair. Genericclip_l/clip_gwon't reproduce RUM.prompt/negative_prompt- yes, the negative gets the exact same treatment as the positive: Qwen 200 tokens at layers 10,20,30 plus SDXL teacher 77 tokens. This is a real-CFG model, not a guidance-distilled one, so negative prompts genuinely work here - a deliberate difference from the distilled Klein weights everyone warns about burning at CFG 1.base_text_tokens(200) - must matchRUMFlux2LoadNativeModelandRUMFlux2DiffusersMatchModelPatch, or you get corrupted conditioning.extra_text_tokens(77) - the SDXL chunk length.guidance/use_guidance_embedding- optionally embed guidance into the conditioning.qwen_layers("10,20,30") - which Qwen hidden-state layers feed the embedding. Exactly three integers; this is a trained-in part of RUM, not a free knob.
Outputs: positive and negative CONDITIONING (into RUMFlux2DiffusersCFGuider), plus a status string showing the token counts. It encodes both prompts on every run, so this node is the chunky one in the graph - that's expected.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip
Restart, then confirm qwen_3_4b.safetensors, both teacher CLIP files, and the RUM checkpoint are visible.
Where people get burned
base_text_tokensdrift. The 200/200/200 agreement across loader, this node, and the match patch is the single most common failure. Later pack versions validate it and raise instead of corrupting, but old habits die hard.- Wrong teacher CLIP. Same seed, different picture than the reference - check that the DualCLIP is the waiNSFW pair.
- Weighting syntax. Qwen is an LLM encoder;
(tag:1.2)and embeddings are inert or worse. Write sentences, not tag soup - the KB's guidance on 2026-era LLM-encoded models applies fully here.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| qwen_clip | CLIP | — | |
| sdxl_clip | CLIP | — | |
| prompt | STRING | 1girl, kisaki (blue archive), eating baozi, sitting, indoors | — |
| negative_prompt | STRING | — | |
| guidance | FLOAT | 5.00–100 | — |
| use_guidance_embedding | BOOLEAN | false | — |
| base_text_tokens | INT | 2001–4096 | 必须与 RUMFlux2LoadNativeModel 和 RUMFlux2DiffusersMatchModelPatch 的 base_text_tokens 一致。 |
| extra_text_tokens | INT | 771–512 | — |
| sdxl_clip_width | INT | 20481–8192 | — |
| qwen_layers | STRING | 10,20,30 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| status | STRING | — |