Nodes/Easycontrol KSampler Compatible/Anima EasyEdit Instruction (add / remove)
ComfyUI Node

Anima EasyEdit Instruction (add / remove)

Two boxes, one edit instruction — the easy way to talk to Anima EasyEdit

By sorryhyun·Created 3 months ago·Updated 5 days ago· 3
Anima EasyEdit Instruction (add / remove)
    • instruction
    additions
    removals
    underscores_to_spacestrue

    If you already know exactly what you want to change, this is the node for you. Type what should be added in one box, what should be removed in the other, and Anima EasyEdit Instruction builds the tag-delta prompt the subject_edit EasyControl adapter was trained on. It's the simplest node in the sorryhyun EasyControl KSampler pack - a CPU-only string formatter, zero dependencies - and it's the one you'll reach for first once you've decided on the edit.

    Here's the setup. Anima is Circlestone Labs' 2B anime DiT (Cosmos-Predict2 backbone, Qwen3 text encoder) whose standout gap is ControlNet - which is where EasyControl comes in. EasyControl is a reference-image adapter: it feeds a conditioning image into the frozen DiT's self-attention, and the subject_edit checkpoint turns that into an instruction editor. Give it a character plus an edit instruction, get that character re-rendered with the changes applied - one generation, no inversion, no mask. The instruction is a tag delta: additions first as bare tags, then removals prefixed with -. That string is easy to hand-type wrong, and this node exists to make it impossible to mangle the format.

    How it works

    Both fields accept comma- or newline-separated tags. The node strips whitespace, de-duplicates (first occurrence wins), normalizes underscores to spaces, then emits additions as bare tags followed by removals with the - prefix added for you. Two details worth knowing:

    • Write removals without the - prefix - the node adds it.
    • If a tag ends up in both boxes, the node treats it as an addition only. An "add X and remove X" instruction is contradictory, and since the adapter follows additions far more reliably, that's the safe reading.

    The inputs that matter

    • additions - what should be true of the result but isn't true of the reference: wading in water, twintails, night. Use Anima's comma-separated tag vocabulary.
    • removals - tags that describe the reference image and should go, written without the - prefix. If a tag describes something that isn't actually in the image, it's just wasted prompt space.
    • underscores_to_spaces (optional, default on) - blue_eyesblue eyes. Short emoticons like ^_^ survive untouched.

    Output: a single instruction string. Wire it into your positive text encode, feed the reference image into the Anima EasyControl (KSampler) node's image socket, and run one KSampler pass.

    The convention, compressed:

    • Instruction, never a caption. Only what changes goes in the prompt - including leaving out the character's name, since identity comes from the reference image.
    • No quality tags (masterpiece, best quality) - training saw deltas only. Quality negatives on the negative prompt are fine.
    • Rating tags are ordinary tags. nsfw / -safe converts the rating, so an accidental rating tag in your additions will move the output.

    Installing it

    Shared with the pack - ComfyUI Manager (search "Easycontrol KSampler Compatible"), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/sorryhyun/ComfyUI-EasyControl-KSamplerCompat
    

    Restart ComfyUI, then drop anima_subject_edit_alpha.safetensors from sorryhyun/anima-easycontrol-adapters into ComfyUI/models/loras/. There are no Python dependencies beyond ComfyUI itself, and the repo ships a ready-made workflows/easyedit.json. The pack's defaults are its validated operating point - strength 1.0, euler/simple, 28 steps at CFG 4.0.

    Where people get burned

    • Removing an object that's physically present is the adapter's weakest case. -ramune on a bottle-holding character mostly fails, because the text encoder reads -ramune as "ramune" - a weak adapter response leaves an attractor, not a removal. Rephrase as a state change or addition where you can.
    • If the edit isn't landing, change the instruction, not the settings. This node feeds the EasyControl path, which deliberately has no gate knob (equivalent to b_offset 0); the engaged band is narrow and centered there. Raising it pulls output back toward the reference's composition, not toward a better edit.
    • Expect a new pose and framing. EasyEdit preserves identity and appearance, not composition. If you need the original pixels intact, that's DirectEdit's job, not this path's.
    Categoryutils

    Inputs (3)

    NameTypeDefaultDescription
    additionsSTRINGTags to ADD, comma- or newline-separated. What should be true of the result but is not true of the reference image: 'wading in water, twintails, night'. Anima tag vocabulary.
    removalsSTRINGTags to REMOVE, comma- or newline-separated, written WITHOUT the '-' prefix (the node adds it). These must be tags that describe the REFERENCE image. Note: removing an object that is physically present in the reference is the adapter's weakest case — see the README.
    underscores_to_spacesoptBOOLEANtrueConvert underscored tags to the space-separated form Anima's vocabulary uses (blue_eyes -> blue eyes). Short emoticon tags (^_^, x_x) are left alone. Turn off if you are pasting tags that are already normalized.

    Outputs (1)

    NameTypeDescription
    instructionSTRING