Nodes/SeeCoder [WIP]/ConcatConditioning
ComfyUI Node

ConcatConditioning

The conditioning-staple node you might not need at all

By BlenderNeko·Created 3 years ago·Updated 2 years ago· 40
ConcatConditioning
  • conditioning_to
  • conditioning_from
  • CONDITIONING

ConcatConditioning does one boring thing: it glues two CONDITIONING tensors together along the token dimension so both can condition the sampler at once. In this pack its job is the SeeCoder trick - take the image embedding from SEECoderImageEncode and staple it onto a regular CLIP text embedding, so the model sees your words and your reference picture at the same time. That combined 768-dim run is exactly what Prompt-Free Diffusion's "text + image conditioning" approach wants.

Here's the honest take, and the reason this article is short: ComfyUI already ships a core node called ConditioningConcat that does this identical concat. The built-in one is right there in the Add Node menu under conditioning, no pack required. This node exists mostly so a SeeCoder workflow can stay self-contained in one repo. If you're reaching for ConcatConditioning for any reason other than following a SeeCoder template, you can swap in the core ConditioningConcat and nothing changes about the result.

How it works

Mechanically it's a torch.cat along the sequence dimension: every conditioning entry in conditioning_to gets conditioning_from's embedding appended to it, and the pooled conditioning metadata from the first input is carried through unchanged. One quirk worth knowing: if conditioning_from contains more than one conditioning (say, a batch), it silently only applies the first one and prints a warning to the console telling you so. It won't crash - it'll just ignore the extras.

The inputs

  • conditioning_to - the conditioning you're appending onto (typically your CLIP text conditioning from CLIPTextEncode).
  • conditioning_from - the conditioning appended on the end (typically the SeeCoder image encoding).

Output is a single CONDITIONING that goes straight into your sampler's positive or negative. Order matters: the model reads the concatenated tokens in sequence, so put the text first and the image second for the same arrangement the original Prompt-Free Diffusion code used.

Installing

It ships in the same pack as SEECoderImageEncode, so one install gets you both. Via ComfyUI Manager, search "SeeCoder"; or:

cd ComfyUI/custom_nodes
git clone https://github.com/BlenderNeko/ComfyUI_SeeCoder

Restart ComfyUI and that's it. This particular node needs no model files at all - it only shuffles conditioning tensors around. The SeeCoder .safetensors files from shi-labs/prompt-free-diffusion on HuggingFace are only required if you're also running SEECoderImageEncode (they go in ComfyUI/models/seecoders).

Troubleshooting

The only failure mode you're likely to hit is the console warning about conditioning_from containing more than one cond - that's the node working as written, not a bug. If you get a dimension mismatch, it's not this node's fault: concat only works when both inputs have the same per-token width (768 for SD 1.5), so a mismatched encoder or a non-SD1.5 model is the real culprit. And if a downloaded workflow won't load because this node is missing, remember the built-in ConditioningConcat is a drop-in substitute for whatever the workflow was actually doing.

Category_for_testing

Inputs (2)

NameTypeDefaultDescription
conditioning_toCONDITIONING
conditioning_fromCONDITIONING

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING