SenseNova Edit Guider
The Node That Makes SenseNova Edits Actually Controllable
- model
- positive
- image_condition
- negative
- GUIDER
Here's the thing about instruction-editing models: the hard part was never getting them to edit, it's getting them to edit without drifting - the face shifts, the background re-imagines itself, the colors go nuclear. SenseNova's answer lives in this node, and the knob everyone underuses is img_cfg. Think of it as a second CFG that only controls how hard the reference image pulls, separate from how hard your text instruction pulls. That separation is the whole design.
SenseNova Edit Guider is a CFGGuider for ComfyUI's custom-sampling path (SamplerCustomAdvanced). You reach for it whenever you want editing control beyond the simple img_cfg=1 setup - which is most real editing. When img_cfg is exactly 1, a plain KSampler with the reference's image_condition wired into negative works fine and you don't need this node. The moment you want the reference to pull harder or softer than the text, you're here.
The inputs that matter
- cfg - text instruction strength. Start at 4 (the tooltip's own advice). This is normal CFG semantics.
- img_cfg - reference-image guidance strength. Start at 1. It is not the same thing as text CFG - the tooltip is explicit about this, and it's the field people get burned on. Two different dials.
- cfg_norm -
none/global/channel. When results overshoot - oversaturated, over-sharpened, subject drifting off - switch toglobal. It rescales guidance back toward the magnitude of the positive condition, which is a polite way of saying "stop pushing so hard."channeldoes the same normalization per 32×32 pixel token, for localized over-guidance. Ifglobalmakes the edit too timid, go back tonone. - cfg_interval_start / cfg_interval_end - normalized denoising progress, 0 = first step, 1 = final step, both boundaries inclusive. Default
0 → 1means full-time CFG, which matches the official behavior. Narrow the window and CFG switches on only partway through - handy for "guide hard early, let it settle late."
Plus the plumbing: model, positive, image_condition, negative (all conditioning), and one GUIDER output.
How it actually works
The implementation runs a three-branch guidance - the model forward-passes on your instruction (positive), the reference (image_condition), and the empty/negative, then combines them. The essential formula:
guided = negative + cfg × (positive − image_condition) + img_cfg × (image_condition − negative)
Three branches is exactly what makes img_cfg a separate dial instead of an illusion. When cfg_norm is active it's applied in velocity space on the denoised result, which is why global tames overshoot without wrecking the composition.
Wiring - get this exactly right
The most common wiring mistake is splitting the model wrong. The same MODEL output from SenseNova Sampling Options must go to both the guider and BasicScheduler:
SenseNova Sampling Options (MODEL)
├── SenseNova Edit Guider ───────────┐
└── BasicScheduler ──────────────────┤
RandomNoise + KSamplerSelect + Latent├──→ SamplerCustomAdvanced
┘
image_condition comes from SenseNova Reference Image's second output. Reference images go through that node - never into the latent slot.
What to start with
For complex edits, the author's tested starting point is CFG 4, img_cfg 1, cfg_norm global, interval 0→1. That's what the stable multi-reference try-on workflow uses, and it prioritizes keeping the person's identity and original composition over "changing more." If the result is too conservative, back off to cfg_norm: none before you start jacking img_cfg up - the README is explicit that blindly raising img_cfg is how you get drift. Combine it with SenseNova Structured Edit Prompt and you've got the pack's real editing stack. Install is the pack install (Manager search "SenseNova U1.5 (T8)" or git clone), no extra Python deps.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| image_condition | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| cfg | FLOAT | 4.00–20 | Text instruction strength. Start with 4. |
| img_cfg | FLOAT | 1.00–20 | Reference-image guidance strength. Start with 1; this is different from text CFG. |
| cfg_norm | COMBO | none | Limit guidance overshoot. Try global for complex edits or overly saturated results. |
| cfg_interval_start | FLOAT | 0.000–1 | Normalized denoising progress where CFG starts. 0 means the first step. |
| cfg_interval_end | FLOAT | 1.000–1 | Normalized denoising progress where CFG stops. 1 means the final step. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| GUIDER | GUIDER | — |