ComfyUI Node

Scheduled Cfg Guider

Schedule your guidance instead of locking it

By GiusTex·Created 9 months ago·Updated 2 days ago· 4
Scheduled Cfg Guider
  • model
  • positive
  • negative
  • guider
cfg1.0
start_sampler_step0

In ComfyUI's custom-sampler graph, the "guider" is the piece of machinery that decides how much your prompt steers each denoising step - it's what replaces the CFG widget on a normal KSampler. The stock guider takes one fixed scale and applies it to every step. ScheduledCfgGuider is the version that doesn't. Give it a scalar and it behaves like the normal one; give it a list of floats and it uses a different CFG value at each step. That's the entire point: "higher cfg values at the first steps," then let it ride down, which is the recipe that video models like Wan respond to.

When you need this

Anytime "one CFG for the whole run" is wrong for your model. On Wan 2.x, CFG in the 3.5-7 range early establishes structure and prompt adherence, while the last steps benefit from CFG at or near 1.0 - and if you're stacking a speed LoRA (LightX and friends), the later steps basically require CFG 1.0. This guider is how you get that curve instead of a flat line. It's also the piece that makes the pack's CFGFloatListScheduler useful at all: that node produces a list of per-step CFG values, and this guider is what consumes them. Alone, either node is pointless; together they're a CFG schedule.

How it works

Mechanically it's a subclass of ComfyUI's guider with one extra trick: at every step it finds where it is in the sigma list and pulls cfg[i] for the current index, then runs the normal prediction with that per-step scale. Feed it a plain number and it just replicates the list of that value steps + 1 times, so it's a drop-in for a normal CFG guider too. The code is adapted from Kijai's WanVideo-Wrapper, and the author originally built it for their Wan-TimeToMove port - this is battle-tested in real video workflows, not a weekend experiment.

Inputs and output

  • model, positive, negative - the usual suspects. Unlike the pack's main sampler node, there's no CFG-1 shortcut here: this is a real guider and needs both conditionings.
  • cfg - the interesting one. A FLOAT widget with a tooltip that says it plainly: "Works with a list of floats too (one cfg float per step)." Plug the float_list output of CFGFloatListScheduler in here and you've got a schedule.
  • start_sampler_step - tells the guider how many sigmas were already skipped before sampling started. If your sampler has a start_step option and you changed it, set the same number here; the tooltip spells this out, and it exists so the CFG list lines up with the steps actually being run.

The single output, guider, plugs into the custom_guider slot of SamplerCustomAdvancedEfficient - or into the guider input of ComfyUI's native SamplerCustomAdvanced, since it's just a standard GUIDER.

Install

Same as the rest of the pack: ComfyUI Manager (search "ComfyUI-MoreEfficientSamplers"), or

cd ComfyUI/custom_nodes
git clone https://github.com/GiusTex/ComfyUI-MoreEfficientSamplers.git

Restart ComfyUI. No extra dependencies, no model files.

The gotchas

List length mismatch is handled gracefully - if the guider gets more CFG values than steps it slices the list, if fewer it pads with the last value, and it prints what it's doing to the console so you can sanity-check. The real trap is forgetting start_sampler_step: if your sampler skips the first sigmas but the guider doesn't know, the CFG values misalign with the steps. Also keep in mind this changes CFG only; it won't fix a bad sigma schedule, and on flow-matching models the "high CFG early" habit can backfire if you overshoot into saturation. Start with a gentle ramp (say 6 down to 2) and judge for yourself.

CategoryMore Efficient Samplers

Inputs (5)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
cfgFLOAT1.00–100Works with a list of floats too (one cfg float per step)
start_sampler_stepINT00–1000Start step of the whole sampling process. It will automatically skip the selected number of sigmas (starting from the first ones); if the sampler has a start_step option and you changed its value, set the same here

Outputs (1)

NameTypeDescription
guiderGUIDER