TailSteer Holds Qwen-Image 2.1 Edits Steady Over 20 Turns
TailSteer is a final training stage for Qwen-Image 2.1 that stops drift on long edit chains, shipped as a BF16 transformer with four native ComfyUI workflows.
ComfyUI/models/diffusion_models/, runs on the native Qwen-Image 2.1 nodes, and comes with four ready workflows.
Edit an image ten times in a row and the last frame is no longer the same picture: skin goes plastic, text warps, background detail softens, and none of the instructions asked for that. TailSteer trains the model to survive that loop without losing the first-edit quality it started with.
![]() |
|---|
| Turn 20 of twenty successive edits, base model against TailSteer, from the project's example set |
What it changes
On the project's Add & Preserve benchmark, which adds one small object per turn for ten turns and scores what stayed put, TailSteer keeps the base model's object-completion rate while lifting everything outside the edit box:
| Metric, turn 10 | Base | TailSteer |
|---|---|---|
| COA, object completion (%) ↑ | 67.36 | 66.94 |
| PSNR outside the edit ↑ | 16.93 | 18.15 |
| SSIM outside the edit ↑ | 0.438 | 0.513 |
| LPIPS outside the edit ↓ | 0.270 | 0.239 |
The trade is small: Qwen-IB EN 53.39 → 53.06, GEdit EN 8.11 → 8.04, ImgEdit 4.40 → 4.42. Text-to-image still works from the same checkpoint, and no preservation mask or model switching is needed at inference.
Same prompt and seed: base model against TailSteer.
Run it in ComfyUI
- Update ComfyUI to a build that includes
TextEncodeQwenImage21andQwenImage21Cache, then putqwen_image_2.1_tailsteer_bf16.safetensors(14.23 GB) inmodels/diffusion_models/. - Add the unchanged base components:
qwen3vl_8b_bf16.safetensorsinmodels/text_encoders/(17.53 GB) andqwen_image_2.1_vae_bf16.safetensorsinmodels/vae/, both from Comfy-Org/Qwen-Image-2.1. - Drag in a workflow and run: 40 Euler steps, CFG 1.0, lossless KV cache, reference resolution 1024.
In the three-turn workflow each VAE Decode feeds the next Text Encode Qwen Image 2.1, so duplicating an editing stage extends the chain.
One setting to respect: the sampler uses ManualSigmas built from the released dynamic shift, and ComfyUI's generic simple schedule is not the same curve. If you change output size or step count, regenerate it with the project's comfyui_sigmas.py and paste the result back.
The validated setup is an H100 80 GB with BF16 components; quantized and consumer-GPU configurations have not been verified. The example workflows run at 1280×832, 960×1120 and 1024×1024.
Availability
- Weights: Lyricccco/Qwen-Image-2.1-TailSteer, plus the full Diffusers layout and the ComfyUI guide.
- Same training stage for other backbones: FLUX.2 [klein] Base 9B and SenseNova-U1.5-8B-MoT.
- Code: Lyricccco/tailsteer; paper arXiv 2611.06741.
- Browser demo by akhaliq: endless-edit-tailsteer.
The model card says a stronger version with roughly twice the preservation ability is in training.

Comments
Sign in with GitHub to join the discussion.