MiniMax H3 Director Semantic Bridge
An 11 MB nudge to who's doing what
- semantic_bridge
Three widgets, one socket - and it does something subtler than anything else in the pack: it edits the conditioning the video model actually reads.
What it is, and when you'd reach for it
MiniMax H3 Director is a third-party console for MiniMax H3, the 33B omni-modal model that generates video with native stereo audio in a single pass. You give it the official H3 UNET, a Qwen3-VL text encoder (CLIPLoader type minimax) and both VAEs, and it runs the official H3 chain over a timeline of shots.
MiniMax H3 Director Semantic Bridge wires into the Director's semantic_bridge input, which sits above selflift and refine. Unconnected, the Director is identical to stock. Connected, every segment's conditioning tokens get rewritten by a tiny student network before sampling.
It's not a strength slider, and it isn't CFG's job. It's a distilled nudge toward a particular reading of your prompt. The published adapter leans static - layout, spatial relations, counting. The BUNNY adapter leans action ownership and crowded multi-character scenes, the failure mode where your hero's punch lands on the wrong person. If your prompts keep failing on who is doing what to whom, that's the itch.
The mechanism, since it's short
The node takes CONDITIONING[0][0] - the [B, T, 5120] token tensor - and leaves keyframe and reference metadata alone. The student is three linear layers, 5120 → 512 → 512 → 5120 with SiLU, about 11 MB of weights. RMS-norm in, residual blend out:
C = H + alpha * (S' - H)
alpha is how far you slide toward the student's opinion, and 0.15 is the original workflow's calibrated default. Applying it twice would wreck the tokens, so the rewrite stamps the conditioning metadata and skips if it's already been touched.
Inputs and output
adapter- the student weights, listed out ofComfyUI/models/semantic_bridge/. Atalpha=0the mix is literallyC = H, which is a decent way to prove the wiring before judging output.alpha(0.15) - the blend. Nudge in 0.05 steps. Cranked, it mostly replaces H3's own conditioning with the student's guess, and everything else those tokens carried stops mattering.magnitude_match(on) - aligns the student output's norm to the original hidden. Off, the student also changes magnitude, which is a bigger intervention than a blend.
One output, semantic_bridge, into the Director's semantic_bridge input. It samples nothing on its own.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/AIMixer/ComfyUI_MiniMaxH3_Director.git
pip install -r ComfyUI_MiniMaxH3_Director/requirements.txt
Or Manager → Install via Git URL. Needs ComfyUI 0.30.0+ (the official H3 nodes came in PR #15224 / #15228). Requirements pull opencv-python-headless, imageio-ffmpeg, scenedetect and ultralytics; the H3 stack is the usual pruned int8-convrot UNETs (fl2va for t2v/i2v/fl2v, ref2va for r2v/v2v/rv2v), a ~32B Qwen3-VL text encoder, and the video and audio VAEs.
Then the node-specific part: the pack does not ship the bridge weights.
mkdir -p ComfyUI/models/semantic_bridge
# copy your adapter safetensors here, then restart ComfyUI
The pack auto-registers that folder, but the dropdown is built when node definitions register, so a fresh file won't appear until you restart or refresh. Weights come from speach1sdef178/MiniMax-H3-Semantic-Bridge (original) or JOKER141/BUNNY_H3_Conditioning_Bridge (BUNNY). The student math is the original author's; this pack implements it, credits both, and is Apache-2.0 itself.
Where people get burned
r2v, v2v and rv2v are forced-compat territory. The adapter was distilled on FL2VA - t2v, i2v, fl2v. Ref2VA was never distilled; the same full-tensor math runs anyway and the run report appends a warning. It doesn't error, it just isn't vetted, and "it didn't crash" is not evidence it helped. If everything you do is reference-to-video, skip this node.
One bridge, not two. Move between original and BUNNY by swapping adapter. Stacking two bridges slides the same tokens twice.
Failures are silent. Point adapter at the placeholder, an empty folder or a state dict with the wrong keys and you get Semantic Bridge skipped: adapter not found in the log while the original conditioning passes through untouched. Loads are strict - exactly fc1/fc2/fc3 weight plus bias - so a mismatched checkpoint degrades to a no-op. Read the run report.
Changing a widget re-renders your timeline. Adapter, alpha and magnitude_match are part of the pack's first-pass fingerprint, so twiddling alpha invalidates the cached first pass and every segment re-samples. Correct behaviour, but plan for it.
And keep expectations sane. An 11 MB student at 0.15 is a nudge. The point is fewer mangled counts and fewer swapped characters across a shot list, not a new look.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| adapter | COMBO | (将 Semantic Bridge 权重放入 models/semantic_bridge) | Student MLP 权重(约 11MB)。放到 ComfyUI/models/semantic_bridge/。原版蒸馏于 FL2VA;不随本插件分发。 |
| alpha | FLOAT | 0.150–1 | 残差混合强度。C = H + alpha*(S'−H)。原版工作流默认 0.15。 |
| magnitude_match | BOOLEAN | true | 把 student 输出的向量模长对齐到原 hidden。原版默认开。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| semantic_bridge | MMX_DIR_SEMANTIC_BRIDGE | — |