SenseNova Thinking Preview
What SenseNova 'thought' before it drew
- clip
- conditioning
- samples
- thinking
Enable "thinking" on a SenseNova prompt and the model goes quiet for a while, plans the image out in hidden reasoning tokens, and only then starts sampling. That planning is invisible by default - you wait, you get an image, you have no idea what it decided. This node is the window into that gap. It decodes the reasoning tokens a thinking-enabled run actually produced and shows them to you as plain text, after the image has finished.
If you've ever run a "thinking" image model and wondered whether the hidden pass was doing real work or just burning VRAM, this is the node that answers the question. 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. The thinking step is its headline feature, and this little output node is how you inspect it.
Wiring it up
Three inputs, all of which you already have lying around in a thinking workflow:
- clip - the SenseNova CLIP from the pack's Loader. It's the component that can decode the reasoning token IDs back into text.
- conditioning - the same conditioning you fed the KSampler. This matters: the reasoning tokens get parked in that conditioning's metadata during sampling, so this node reads them out of there.
- samples - the
samplesoutput of the KSampler that used that conditioning. Its real purpose is ordering: it forces this preview node to run after sampling completes, so the thinking text exists by the time you look. The tooltip on the port says exactly this.
Connect those three and you're done - it's an output node, so it dangles at the end of the graph and shows its result in the UI.
What you get back
One thinking (STRING) output containing the model's actual reasoning. Expect something like a brief plan - "an overhead shot of a plate of fried chicken, warm golden lighting, a card in the corner with the recipe steps" - rather than a chat-style monologue. Because it's decoded from real tokens with special tokens stripped, empty or near-empty text can legitimately happen; the node reports that honestly instead of inventing content.
It also talks back in two honest edge cases: if the conditioning you connected never had thinking enabled, you get "SenseNova thinking is disabled for this conditioning." If sampling hasn't run yet, it tells you to connect the KSampler's samples. No silent failures - which is more than most ComfyUI nodes bother with.
Installing
It ships with the rest of the pack, so install is identical to the other nodes. ComfyUI Manager: search "SenseNova U1.5 (T8)" (registry sensenova-u15-t8) and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-SenseNova-U1.5-Wrapper-T8.git
Hand-rolled clones may need pip install "gguf>=0.13.0" if you plan on GGUF weights; Manager handles that dependency for you. The node itself holds no model - you need the SenseNova U1.5 checkpoint loaded upstream (Final or SFT safetensors in models/diffusion_models/, or a verified GGUF in models/gguf/), on a CUDA + BF16 setup. The author's test rig is 24 GB VRAM with 64 GB RAM; this is not a light model. ComfyUI 0.31 or newer.
The practical bit
This node is a debug tool, and a good one. Use it to tell whether your complex prompt is being understood or just pattern-matched, and to tune max_think_tokens on SenseNova 1.x Text Encode - if the visible reasoning keeps getting cut off mid-plan, you've found your cap. Remember thinking only runs when you enabled it on the positive conditioning via the Text Encode node (thinking = true), and the README's suggestion of starting max_think_tokens at 512 is sensible. The thinking-first image also costs noticeably more time and KV memory than plain generation - that's the trade for seeing the plan.
The pack's example thinking_t2i_workflow.json (in the repo's examples/ folder) shows the exact intended graph, with this node already wired to the KSampler's samples.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| conditioning | CONDITIONING | — | |
| samples | LATENT | Ensures this preview runs after the connected KSampler. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| thinking | STRING | — |