展示任意
Peek at anything mid-graph without breaking the wire
- Any
- Any
Debugging a ComfyUI graph normally means interrupting it. You want to know what a latent looks like before the VAE decode, or what string a prompt-rewriting node actually produced, so you bolt on a preview node, run, read, delete the preview, run again. 展示任意 (QG_DisplayAny) is the version of that where you never delete anything.
It has one wildcard input, one wildcard output, and the output is the input, unchanged. That's it. The value of the node is entirely in the panel it draws on itself.
How it works
The card adapts to whatever arrives. Integers, floats, booleans and strings print as text - booleans get red/green colouring so a branch condition is readable at a glance. Images and masks render as thumbnails, with a batch laid out as a grid you can click open and page through with the arrow keys. Audio gets a player, video gets an inline player. Latents and raw tensors get a structural summary: shape, dtype, device.
That last one is the underrated part. Half of ComfyUI debugging is discovering that the tensor you thought was (1, 1024, 1024, 3) is actually (1, 3, 1024, 1024), and a shape readout catches it before the sampler throws a channel mismatch at you twenty nodes later.
It's declared as an output node, which is how it stays honest. Two behaviours fall out of that: with something connected downstream it behaves as a normal dependency and previews along the way; with nothing downstream it still gets executed so the panel refreshes. The pack also strips connected displays out of the partial-execution target list, so a preview hanging off a branch doesn't drag an unrelated subtree into the run.
If a preview conversion fails - odd video container, a type it can't render - the failure is logged and the data passes through anyway. A debug node that breaks the pipeline would be worse than no debug node.
Type resolution is smarter than pure guessing. It looks at what your upstream node actually declares in RETURN_TYPES, and falls back to a type the frontend stashed on the node's properties when the chain runs through another wildcard. So a latent behind two switches still shows up as a latent.
Inputs and outputs
Any (optional, wildcard) is the only input; its socket label follows the upstream type once connected. Any output is the same value, same type, untransformed. Right-click gives text display settings - font size and colour - for the scalar types.
That right-click menu and the copy/save buttons are where it earns its keep in practice: text gets a hover copy button, images and audio and video can be copied to the clipboard or saved to disk. Grabbing the exact string an LLM node emitted, without retyping it, saves real time.
Install
The usual two routes for this pack. Manager → search ComfyUI-QG-Tools (available once it's on the Registry), or:
cd ComfyUI/custom_nodes
git clone https://github.com/live1617/ComfyUI-QG-tools
Then a full ComfyUI restart, not just a page refresh - the console should show [QG-tools] v0.9.2 加载完成 | 节点数 24. No pip installs; the pack deliberately ships a comments-only requirements file. This node was ported from 孤海工具箱 (Goohai's 展示任意), GPL-3.0, and the attribution is kept in the source.
If the node loads but draws nothing, force-refresh the browser with Ctrl+Shift+R. ComfyUI only reads the extension list on page load, so a stale tab is the most common "it's installed but invisible" cause with any custom node pack.
Where people get burned
Don't mistake it for a save node. Nothing here writes to your output folder on its own; it's a viewer with a passthrough. If you need the file, right-click and save, or put a real SaveImage after it.
And don't chain five of them "just in case". Each one is a node on the canvas plus a preview to render, and a graph speckled with debug panels is a graph you stop reading - which is precisely the legibility problem the plumbing layer exists to fight. Wire one where you're actually confused, then leave it.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| Anyopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Any | * | — |