Neo K采样器 (Forge Neo)
Forge Neo's sampling pipeline, surgically removed and dropped into your graph
- model
- positive
- negative
- latent_image
- turbo
- LATENT
Here's the situation this node was built for. Forge Neo is where a lot of people ended up: the form UI that actually has Anima, Z-Image, Qwen-Image and Wan 2.2 support, while the original Forge repo has been sitting dormant since mid-2025. But ComfyUI is where the ControlNet stacks, the Regional Prompter alternatives and the whole node ecosystem live. So you use both, and you can't reproduce anything between them.
Neo KSampler is the transplant: Neo's samplers, Neo's schedulers and Neo's CFGDenoiser logic, running inside ComfyUI's model execution. The author tested 594 combinations on CPU and reports bit-identical results - which holds until your GPU's attention kernel has an opinion. The pipeline logic, though, is ported rather than reimplemented, and you can feel that.
What it replaces
Drop it where your KSampler was. It takes model, positive, negative, and latent_image - and here's the trap: latent_image must come from Neo Empty Latent, because that's where the RNG state lives. Feed it a stock ComfyUI latent and you get a ValueError, not a wrong image. That's deliberate, and it's a better failure than the alternative.
positive and negative are ordinary CONDITIONING from CLIPTextEncode - but route those through Neo CLIP Converter first, or prompt scheduling and AND won't do anything.
Output is a single LATENT → VAE Decode → Save Image.
The widgets
sampler_name- 21 entries, defaultEuler a. This is Neo's list, in Neo's order, not A1111's full menu and not ComfyUI's 60-odd.DPM++ 2M,DPM++ SDE,DPM++ 2M SDE,DPM++ 3M SDE,DPM++ 2s a RF,Euler a,Euler,ER SDE,LCM,LMS,Heun,DPM2,Res Multistep,Kohaku LoNyu Yog,Restart,UniPC,DDIM,PLMS, and three CFG++ variants. If your muscle memory is reaching for DEIS or DPM fast, they aren't here - that's Neo's fault, not the pack's. People coming from Forge to Forge Neo complained about exactly this, and Panchovix maintains a separate extra-samplers extension for Forge Neo to paper over it.scheduler- 17 entries, defaultAutomatic(Neo's "pick what the sampler was built for").Karras,Exponential,Normal,Simple,SGM Uniform,Beta,Turbo,FlowMatchEulerDiscrete,Flux2and friends. On flow-matching models - Anima, Z-Image, Flux - conservative schedules are the rule and Karras is a trap. On SDXL finetunes Karras is still perfectly good. Know which architecture you're on before you carry a habit across.cfg- default 5, not A1111's 7. Don't set it back out of habit. Second-order samplers (Heun,DPM2,DPM++ SDE) multiply the step count internally - 20 steps is 40 model evaluations, which surprises people watching the progress bar.denoiseanddenoise_mode-denoiseonly applies to img2img and hires; on txt2img it's ignored with a console note, because Neo has no redraw strength on the first pass.denoise_modepicks betweenHires.fix(精确步数)- run the exact step count - and图生图(步数×重绘幅度)- run steps × denoise. Use Hires.fix for second passes.shift- Neo's Shift slider.0means "use the model's built-in value", which is 3.0 for Anima. Only touch it if you're chasing a specific Neo look on a flow-matching model.
Then a wall of optional parameters that map 1:1 to Neo's Settings → Sampler parameters, same names, same defaults: eta, eta_ddim, s_churn, s_tmin, s_tmax, s_noise, sigma_min, sigma_max, rho, always_discard_penultimate_sigma, sgm_noise_multiplier, beta_alpha, beta_beta. Ignore all of them until you're porting a specific Neo recipe.
Two are worth knowing: skip_early_cfg (ignore the negative prompt for the early fraction of steps) and ngms / ngms_all_steps (skip it in the later steps, by sigma). And prompt_lora, on by default, which reads <lora:name:weight> tags out of the positive prompt. If you already applied that LoRA with a LoRA Loader, turn it off - otherwise it's applied twice and the image comes out cooked.
Install
ComfyUI Manager → ComfyUI Neo Sampler, or:
cd ComfyUI/custom_nodes
git clone https://github.com/wangjue520/ComfyUI-Neo-Sampler
Restart. lark, torchsde and scipy install themselves into whatever Python runs ComfyUI; the console prints the manual pip line if that fails. The license is AGPL-3.0 because the sampling code is ported from Forge Neo.
Where it breaks
Beyond the missing-latent-state error above: CFG = 1 makes the sampler drop the negative prompt entirely, by design, and it logs that it did. That's not a bug, and it also means your negative prompt did nothing.
What it genuinely doesn't support yet, straight from the author: Textual Inversion embeddings, inpaint noise masks (a noise_mask is dropped with a warning), and Refiner. Don't use it for inpainting. Impact Pack's face detailer and similar nodes call ComfyUI's own sampler internally, so they run outside Neo logic entirely. And if you run out of VRAM, the sampler falls back to overlapping 1024px tiled evaluation, halving further if it's still short - the source marks that tiling as not part of Neo, so stop expecting bit-identical output once it kicks in.
LoRA, ControlNet and RescaleCFG patches still apply normally, because sampling goes through ComfyUI's model execution. Text encoders, though, are Anima / SD1.5 / SDXL only; anything else encodes the ComfyUI way.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | 必须来自 Neo 空Latent(或它的下游,例如放大后的 latent) | |
| sampler_name | COMBO | Euler a | 21 options: DPM++ 2M, DPM++ SDE, DPM++ 2M SDE, DPM++ 3M SDE, DPM++ 2s a RF, Euler a, +15 |
| scheduler | COMBO | Automatic | 17 options: Automatic, Karras, Exponential, Polyexponential, Normal, Simple, +11 |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 5.00–100 | — |
| denoise | FLOAT | 1.000–1 | 只对图生图/高清修复生效(文生图时 Neo 没有重绘幅度) |
| denoise_mode | COMBO | Neo 的高清修复第二阶段会精确执行设定步数;图生图页面默认只执行 步数×重绘幅度 步 | |
| shift | FLOAT | 0.000–100 | Neo 的 Shift 滑条。0 = 使用模型自带值(Anima 为 3.0) |
| etaopt | FLOAT | 1.000–1 | Eta for k-diffusion samplers |
| eta_ddimopt | FLOAT | 0.000–1 | — |
| s_churnopt | FLOAT | 0.000–100 | — |
| s_tminopt | FLOAT | 0.000–10 | — |
| s_tmaxopt | FLOAT | 0.000–999 | — |
| s_noiseopt | FLOAT | 1.0000–1.1 | — |
| sigma_minopt | FLOAT | 0.0000–1000 | — |
| sigma_maxopt | FLOAT | 0.0000–1000 | — |
| rhoopt | FLOAT | 0.000–100 | — |
| always_discard_penultimate_sigmaopt | BOOLEAN | false | — |
| sgm_noise_multiplieropt | BOOLEAN | false | — |
| beta_alphaopt | FLOAT | 0.600.01–2 | — |
| beta_betaopt | FLOAT | 0.600.01–2 | — |
| skip_early_cfgopt | FLOAT | 0.000–1 | Ignore Negative Prompt during Early Steps |
| ngmsopt | FLOAT | 0.000–8 | Skip Negative Prompt during Later Steps (sigma) |
| ngms_all_stepsopt | BOOLEAN | false | — |
| extra_noiseopt | FLOAT | 0.000–1 | Extra Noise Multiplier for img2img and Hires. fix |
| turboopt | NEO_TURBO | 接「Neo Turbo 加速」。接上并启用时覆盖采样器/调度器/步数/CFG | |
| prompt_loraopt | BOOLEAN | true | 按 Neo 规则加载正面提示词里的 <lora:名称:权重>(同时作用于模型和文本编码器)。已经用 LoRA 加载器加载的话请关闭,否则会叠加两次 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |