Nodes/闲兔 Qwen Image 2.1 工作台/闲兔|故事模型与 LoRA
ComfyUI Node

闲兔|故事模型与 LoRA

Point the storyboard writer at your own GGUF

By xiantuhenlan·Created 21 days ago·Updated a day ago· 5
闲兔|故事模型与 LoRA
    • 模型接口
    ◄model_name▾►
    ◄context_length32768►
    ◄gpu_layers99►
    ◄lora_catalog▾►
    ◄lora_stack[]►

    This node does no inference. It builds a validated config - which GGUF, how much context, how many layers on the GPU, which LoRA adapters at what strength - and outputs it on a 模型接口 socket that you feed to the storyboard director's optional input. The model itself is launched elsewhere, by the pack's backend, as a llama-server process.

    So why does it exist as a node instead of a dropdown in a panel? Because the config travels with the graph. Hand this socket to the director and the board-generation button uses your local model with your adapters, offline and free per call, instead of an online provider. That's the whole argument for local LLM work in ComfyUI - uncensored, offline, no per-call cost - and it's the reason to bother.

    The two directories, which are not the same directory

    model_name is an enum scanned from ComfyUI/models/llm, recursively, .gguf only. If the folder doesn't exist or is empty the only choice is the literal string 未检测到 GGUF 主模型, which is what you'll see on a fresh install. Dump a Q4_K_M quant of a mid-size instruct model in there and it appears. If two files share a filename in different subfolders, validation makes you specify the full relative path rather than guessing.

    The LoRA side is separate: ComfyUI/models/llm_loras, accepting .gguf and .bin. lora_catalog is the enum that lists what's there - and it's a browse-only widget, discarded at build time. The thing that actually does something is lora_stack, a JSON string holding entries like:

    [{"name": "style-helper.gguf", "strength": 0.7, "note": "shot framing", "enabled": true}]
    

    Up to 32 entries, each name resolved against models/llm_loras, strength clamped to ±4, and names that don't exist fail validation immediately. The enabled flag and the note field are there for the panel's UI; the straight-JSON user can mostly ignore them.

    Fair warning before you copy a tutorial: this is not a diffusion LoRA directory, nothing here affects your image model, and models/LLM/Qwen3.8 - the folder the digital-human auto-optimize scans, via a different node pack - is a third place GGUF files live. Three LLM-related model folders in one install is a genuinely confusing thing to inherit.

    The knobs that matter

    context_length defaults to 32768 and clamps between 4096 and 131072. Long stories eat context fast, and the story-side route accepts up to 300k characters of input, so raise this if you're feeding a novella and want the model to see the whole thing rather than a tail. gpu_layers defaults to 99, i.e. all of them - that's the right default until it doesn't fit, in which case drop it and accept the speed hit, since a partially offloaded model still works, just slowly.

    What actually happens when you press generate

    The pack spawns the runtime with --model <path> --ctx-size <context> --n-gpu-layers <layers> --alias <name> --jinja --no-webui on a free local port, plus a --lora-scaled argument listing each adapter's path with its strength when the stack isn't empty. It waits up to ten minutes for the server to answer, and if it never does you get 故事模型加载超过 10 分钟,请检查主模型、LoRA 与显存 - which in practice means a model too big for the card, or an adapter the build won't accept. After each generation the server is stopped, so your VRAM comes back; that unload-every-job behaviour is the correct pattern for sharing a card between an LLM and a diffusion model, and it's better than most local-LLM nodes manage.

    The runtime is looked up under custom_nodes/XiantuAIToolkit/runtime/llama.cpp/.../llama-server.exe. That .exe is not a typo: this path is Windows-only as shipped, and it belongs to a different pack by the same author. Without XiantuAIToolkit installed you'll get 未找到闲兔本地语言组件的 llama-server.exe. Multi-adapter support also depends on that bundled build understanding the combined argument - with a stock llama.cpp binary, how many LoRAs you can stack varies by version, so treat "32 adapters" as a config limit, not a capability claim.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/xiantuhenlan/ComfyUI-Xiantu-QwenImage21-Workbench.git
    pip install -r ComfyUI-Xiantu-QwenImage21-Workbench/requirements.txt
    

    Then restart and hard-refresh the browser, as with everything in this pack. There's one more honest note: if you only want the storyboard director and the digital-human tools, skip this node - they work without it, and you can point the generator at an OpenAI-compatible endpoint instead. This node is the on-ramp to a local-LLM story pipeline, and it's the least self-contained piece of the pack. Given the ecosystem's history with LLM-flavoured node packs, reading the launch code before pointing it at a 40GB model isn't paranoia; it's homework you can finish in ten minutes, because the source here is plain readable Python.

    Category闲兔/故事分镜

    Inputs (5)

    NameTypeDefaultDescription
    model_nameCOMBO1 options: 未检测到 GGUF 主模型
    context_lengthINT327684096–131072—
    gpu_layersINT990–999—
    lora_catalogCOMBO1 options: 未检测到 llama LoRA
    lora_stackSTRING[]—

    Outputs (1)

    NameTypeDescription
    模型接口STORY_MODEL_CONFIG—