Bus In
Pack up to twenty-five wires into one line
- 输入_1
- 输入_2
- 输入_3
- 输入_4
- 输入_5
- 输入_6
- 输入_7
- 输入_8
- 输入_9
- 输入_10
- 输入_11
- 输入_12
- 输入_13
- 输入_14
- 输入_15
- 输入_16
- 输入_17
- 输入_18
- 输入_19
- 输入_20
- 输入_21
- 输入_22
- 输入_23
- 输入_24
- 输入_25
- 总线束
Bus In is the "bundle everything" end of a 25-channel bus: it takes up to twenty-five inputs - any types at all, 输入_1 through 输入_25 - and packs whichever ones are actually connected into a single WCX_BUS object that travels down one wire. Its twin, Bus Out, unpacks that bundle back into twenty-five outputs at the far end. In between, twenty-five wires become one.
This is the context-bundle pattern the node-plumbing doc calls the most important design in the utility layer. When a dozen values - model, clip, latent, conditioning, seeds, widths - all need to travel across a large workflow, dragging each as its own wire produces the spaghetti that everyone hates. A bus collapses them into one line. rgthree's Context is the famous version of this idea; Bus In/Bus Out is this pack's, with two differences that matter: it's strictly a pack and unpack - no merging or updating, you can't push a changed value back onto the line without unpacking and repacking - and it's any-typed, so it'll carry whatever custom types you throw at it.
The mechanics are worth knowing because they're unusually careful:
- Only connected channels get packed. The source iterates the twenty-five slots, skips anything
None, and stores the rest in a dict keyed by slot number. Empty slots cost nothing and don't corrupt the bundle. - It returns a copy, not a reference. The author explicitly guards against ComfyUI's caching/pollution issues by handing back
bus_dict.copy()- a thoughtful touch that keeps multi-output graphs from cross-contaminating. - The labels are Chinese. Inputs are
输入_1…输入_25("input"), the single output is总线束("bus bundle"). Cosmetic, but expect it on an English UI.
The critical caveat, and it's a real one: WCX_BUS is a type only this pack understands. Bus In is written to be unpacked by Bus Out, and vice versa - no other tool can read the bundle. That's lock-in by design: a workflow using the bus is married to this pack, which is the same lock-in cost the KB flags for every pack-specific context type (rgthree's Context doesn't interoperate with Efficiency's pipes, either). It's the right tool when one node pair cleanly replaces forty wires; it's the wrong tool if you might hand the workflow to someone who won't have the pack installed.
Install is pack standard: ComfyUI Manager → search ComfyUI-Practical-Tools → install → restart, or git clone https://github.com/wenchengxiang/ComfyUI-Practical-Tools into ComfyUI/custom_nodes. No dependencies, no models. If an output comes back None on the far side, check that the slot was connected at Bus In - an unconnected slot packs to nothing.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| 输入_1opt | * | — | |
| 输入_2opt | * | — | |
| 输入_3opt | * | — | |
| 输入_4opt | * | — | |
| 输入_5opt | * | — | |
| 输入_6opt | * | — | |
| 输入_7opt | * | — | |
| 输入_8opt | * | — | |
| 输入_9opt | * | — | |
| 输入_10opt | * | — | |
| 输入_11opt | * | — | |
| 输入_12opt | * | — | |
| 输入_13opt | * | — | |
| 输入_14opt | * | — | |
| 输入_15opt | * | — | |
| 输入_16opt | * | — | |
| 输入_17opt | * | — | |
| 输入_18opt | * | — | |
| 输入_19opt | * | — | |
| 输入_20opt | * | — | |
| 输入_21opt | * | — | |
| 输入_22opt | * | — | |
| 输入_23opt | * | — | |
| 输入_24opt | * | — | |
| 输入_25opt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| 总线束 | WCX_BUS | — |