SenseNova Interleave Preview
The interleave output viewer
- interleave_result
- images
- markdown
This is the quiet one at the end of an interleave workflow, and it does a job nobody else in ComfyUI can: it puts the text back between the pictures in the order the model actually produced them. Run SenseNova 1.x Interleave without it and you're left staring at two disconnected outputs - a wall of prose on one side, a pile of images on the other, no idea which paragraph goes with which frame. This output node reads the session's interleave_result, decodes it into Markdown, and splices the decoded images in at exactly the right spots.
It's part of T8mars' Comfyui-SenseNova-U1.5-Wrapper-T8 pack, the local (no API, no key) wrapper for the open 8B SenseNova U1.5 model. Think of it as the human-readable transcript of a conversation the model had with itself.
What it takes in
Only one input is truly required:
- interleave_result - the custom-typed output from
SenseNova 1.x Interleave. Nothing else produces this type, so the wiring is unambiguous.
Two more, and here's the part people miss:
- images (IMAGE, optional) - this is where you connect the
VAE Decodeoutput of the interleave node'ssamples. The preview indexes those images in generation order and embeds them inline. Skip it and you still get the text transcript, but images show up as missing placeholders instead of actual pictures. - include_think (BOOLEAN, default false) - the interleave session's reasoning can be captured too. Flip it on if you want the hidden thought blocks shown between the text and images.
What comes out
A single markdown (STRING) that renders the whole run - text, thinking (if enabled), and images - in the original sequence. Because it's an output node with an is_output_node flag, you just leave it dangling at the end of the graph; the preview appears in the UI. You're not meant to pipe its output into anything else.
The mechanics, briefly
Interleave sessions store their results as an ordered list of "parts": text chunks, thinking blocks, and image events, where the text often contains inline image references. This node walks that list, resolves each <imageN> reference against the decoded images you fed in, and reassembles everything into Markdown. The reason it needs the decoded images input separately is purely practical: the sampling node hands out latents, and this viewer wants pixels to show you.
Installing
Same as the rest of the pack - it ships inside the one repo. ComfyUI Manager: search "SenseNova U1.5 (T8)" (registry sensenova-u15-t8) and restart, or clone manually:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-SenseNova-U1.5-Wrapper-T8.git
No model goes into this node - the checkpoint lives upstream with the Loader. But the pack as a whole needs the ~35 GB SenseNova U1.5 Final safetensors (or a GGUF) plus a CUDA/BF16 GPU with real VRAM headroom (24 GB is what the author tests on). Version floor: ComfyUI 0.31.
Things that trip people up
- Forgotten
imageswire. The most common complaint is "preview shows no pictures." It's almost always that theVAE Decodeoutput wasn't connected to the optionalimagesport. Wire it, rerun, done. - Order matters. Feed the decode of this session's
samples, not some earlier run's - the node matches images to image events by index, and a stale batch makes the layout look scrambled. - The text output of the interleave node marks image positions; don't try to eyeball that raw string. This viewer exists so you don't have to.
If you're new to the pack, grab examples/interleave_workflow.json from the repo - it already has this node wired correctly, including the images connection people forget.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| interleave_result | SENSENOVA_INTERLEAVE_RESULT | — | |
| include_think | BOOLEAN | false | — |
| imagesopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| markdown | STRING | — |