Nodes/ComfyUI_StoryDiffusion/EasyFunction_Lite
ComfyUI Node

EasyFunction_Lite

It doesn't load models — it packs their paths

By smthemex·Created 2 years ago·Updated 11 months ago· 514
EasyFunction_Lite
    • model
    • clip
    • info
    repo1
    repo2
    unet
    gguf
    clip1
    clip2
    clip_vision1
    clip_vision2
    lora1
    lora2
    controlnet
    special_mode
    tag_temperature0.7

    The name is doing a lot of work, and "Lite" is honest: EasyFunction_Lite doesn't load any big model. It's a path collector. You tell it where your diffusers-format repos, GGUF files, CLIPs, LoRAs and ControlNets live, it bundles all those paths into a single info dict, and StoryDiffusion_Apply reads that dict when you pick one of the Flux-family or repo-based infer_modes. That info output is the whole point of the node - it's what makes modes like infiniteyou, realcustom, instant_character, dreamo, bagel_edit and flux_omi work at all.

    Why does this node exist? Because several methods in this pack load checkpoints in HuggingFace diffusers repo format - a folder with config.json plus sharded safetensors - which ComfyUI's normal model loaders can't see. EasyFunction_Lite is the pack's back door for those. You type or paste a path like any_path/FLUX.1-dev/transformer into repo1, and the pack's loaders find it there.

    What to fill in

    The important ones, in order of how often you'll touch them:

    • repo1 / repo2 - STRING paths to repo-format checkpoints. This is where the Kolors folder, the Flux transformer repo, the Bagel folder, and the BEN2_Base.pth file for DreamO go. The README gives an exact folder layout per mode (3.3, 3.6.1, 3.12...), and it matters - kolor_face specifically scans repo1/repo2 for a path containing "kolor".
    • gguf - dropdown over models/gguf. The pack registers that folder itself at load time. Drop city96's FLUX.1-dev GGUFs (Q6/Q8) here for the quantized InfiniteYou path.
    • unet, clip1, clip2, clip_vision1, clip_vision2, lora1, lora2, controlnet - dropdowns over the normal ComfyUI folders. Most modes only need one or two of these; realcustom is the greedy one and wants six checkpoints including two CLIPs and two clip_vision repos.
    • special_mode - the interesting one. none is the default. tag turns on an automatic prompt/tag generator: it loads pzc163/MiniCPMv2_6-prompt-generator (auto-downloaded from HuggingFace) - or, if a repo path contains "flor", a Florence-2-style caption model (which needs pip install flash_attn) - and reverse-engineers captions from the reference images you connect in StoryDiffusion_CLIPTextEncode. glm loads the ChatGLM text encoder that Kolors face mode needs.
    • tag_temperature (0.1–1.0, default 0.7) - only matters when special_mode is tag; it tunes how creative the captioning gets.

    Outputs

    • info (type STORY_CONDITIONING_1) - the payload. Wire it into StoryDiffusion_Apply's optional info input.
    • model and clip - don't build your graph around these. The model output is a placeholder (the source returns None there - loading happens later in Apply), and clip only carries anything in glm mode. The paths flow through info, not through the model socket.

    So the mental model is: EasyFunction_Lite is configuration, StoryDiffusion_Apply is execution. If a workflow you downloaded has this node sitting half-empty and Apply errors with "you need to provide extra_info", this is the node you forgot to fill.

    Install

    Same pack install as everything else in ComfyUI_StoryDiffusion:

    cd ComfyUI/custom_nodes
    git clone https://github.com/smthemex/ComfyUI_StoryDiffusion.git
    cd ComfyUI_StoryDiffusion
    pip install -r requirements.txt   # spaces, peft, diffusers, opencv-python, omegaconf
    

    The tag mode pulls a model from HuggingFace on first use (a few hundred MB), and glm mode expects Kijai's chatglm3 clip in models/clip.

    Where people get burned: treating the dropdowns as if the node is loading models, and expecting a model to come out the model socket. It won't. And tag mode demands at least one reference image per scene prompt - fewer images and it raises "The number of input condition images is less than the number of scene prompts". If you're only running the SDXL story mode, you can skip this node entirely; it only becomes mandatory once you step into the repo-based and Flux modes.

    CategoryStorydiffusion

    Inputs (13)

    NameTypeDefaultDescription
    repo1STRING
    repo2STRING
    unetCOMBO1 options: none
    ggufCOMBO1 options: none
    clip1COMBO1 options: none
    clip2COMBO1 options: none
    clip_vision1COMBO1 options: none
    clip_vision2COMBO1 options: none
    lora1COMBO1 options: none
    lora2COMBO1 options: none
    controlnetCOMBO1 options: none
    special_modeCOMBO3 options: none, tag, glm
    tag_temperatureFLOAT0.70.1–1

    Outputs (3)

    NameTypeDescription
    modelMODEL
    clipCLIP
    infoSTORY_CONDITIONING_1