Nodes/ComfyUI-FunPack/FunPack Studio
ComfyUI Node

FunPack Studio

The Refiner, the LoRA pipeline, the samplers, and the rating — in one node

By digital-garbage·Created about a year ago·Updated 2 days ago· 18
FunPack Studio
  • model
  • clip
  • advisor_clip
  • positive_conditioning
  • negative_conditioning
  • clip_vision_output
  • source_image
  • lora_stack
  • latent
  • model
  • modified_positive
  • negative
  • seed
  • high_pass_sampler
  • high_pass_sigmas
  • low_pass_sampler
  • low_pass_sigmas
  • loss_graph
  • status
  • training_info
  • encoded_prompts
  • video_latent
ratingMissing action
studio_settings{}
adjustments[]
positive_prompt
negative_prompt
user_intent_prompt
feedback_prompt
refinement_key_input

FunPack Studio is the whole pack in one node. Where a classic graph wires together Refinement Key Loader → Apply LoRA Weights → LoRA Loader → Video Refiner V2 → Conditioning Adjust as five nodes, Studio does all of it internally behind a tabbed popup editor. On the node face you see exactly one widget - rating - and an "Open Studio" button. Everything else lives in the popup, and everything else is a lot.

What the popup holds

The tabs map one-to-one onto the standalone nodes, which remain fully functional if you prefer them:

  • Session - the refinement key linking all memory to a named file on disk.
  • Shortcuts - global prompt expansions (activation phrases → replacement phrases), shared with the Refiner and stored outside keys.
  • Refiner - all Refiner V2 settings: mode, advisor mode, prompt repair, I'm Feeling Lucky, negative prompt, feedback, split-by-transitions.
  • Advisor - the internal HuggingFace CausalLM advisor (same model cache as the standalone Advisor LLM node).
  • LoRA - the full Apply Weights + Loader chain run internally, with model type (ltx2/wan), per-block, and a LoRA list.
  • Sampler - two independent sampler outputs, High Pass and Low Pass, each picking its own sampler type (Hybrid Euler 2S, Distilled Flow, or plain KSampler) and sigma schedule.
  • Batch Training - the RLHF cycle: run N variants with everything frozen except per-variant noise seed, rate them all, train the value function on the batch.
  • Vision - with a Gemma3-12B CLIP loaded via DualCLIPLoader, Studio fuses the source image's SigLIP vision tokens into the conditioning so the model sees the actual reference pixels.
  • Adjustments - the phrase-direction blending of FunPack Conditioning Adjust.

That's a small control room, not a node.

The inputs that matter

The optional inputs are where the wiring happens: model and clip (the base model + text encoder), positive_prompt/negative_prompt (text, encoded via CLIP), advisor_clip (overrides the internal advisor LLM), source_image (for vision conditioning and change detection), clip_vision_output, lora_stack (external stack bypasses the LoRA tab entirely), refinement_key_input, latent (creativity masking), feedback_prompt, and user_intent_prompt.

Outputs: model (patched), modified_positive (refined conditioning - one entry per scene when split), negative, seed (wire it to your sampler; connected, Studio learns successful seeds for the key), high_pass_sampler/high_pass_sigmas and low_pass_sampler/low_pass_sigmas, loss_graph, video_latent, plus status, training_info, encoded_prompts.

There's also a genuine value-function system underneath: every rated run trains a small MLP that predicts reward from conditioning, and value guidance (on by default) moves the conditioning by gradient ascent toward higher predicted reward before sampling, displacement-capped against reward hacking.

Install

It's part of ComfyUI-FunPack:

cd ComfyUI/custom_nodes
git clone https://github.com/olivv-cs/ComfyUI-FunPack
pip install -r requirements.txt

or ComfyUI Manager → search "ComfyUI-FunPack". Needs transformers >= 5.0; skip hpsv3.

The honest take

Studio is the intended hub of the graph-based pipeline - in 3.x the Cutting Room browser editor is the flagship surface, and the classic nodes (Studio included) get bugfix-only attention. If you live in graphs, Studio is the cleanest way to run the whole learning loop: one node, one rating widget, two sampler outputs, and the batch-training panel when you want variance-reduced RLHF without hand-wiring. It auto-saves every field to the node widget, so your config survives a browser refresh. If you ever feel Studio is a lot, you're right - but it's the same machinery as five separate nodes, with less to get wrong.

CategoryFunPack

Inputs (17)

NameTypeDefaultDescription
ratingCOMBOMissing action25 options: -Just forget it-, Perfect, Nailed it, Missing details, Missing action, Missing quality, +19
studio_settingsSTRING{}JSON managed by the Studio popup editor. Do not edit manually.
adjustmentsSTRING[]Conditioning adjustment phrase list. Managed by the Studio popup.
modeloptMODEL
clipoptCLIP
advisor_clipoptCLIPPre-loaded text generator for advisor. Overrides the LLM configured inside Studio.
positive_conditioningoptCONDITIONING
negative_conditioningoptCONDITIONINGNegative conditioning passed through unchanged to the output.
clip_vision_outputoptCLIP_VISION_OUTPUT
source_imageoptIMAGE
lora_stackoptFUNPACK_LORA_STACKExternal LoRA stack. Bypasses Studio's internal LoRA management entirely when connected.
positive_promptoptSTRINGPositive prompt. Ignored when Scene Builder mode is not Pass-through.
negative_promptoptSTRINGNegative prompt text. Encoded via CLIP and output as negative conditioning. Skipped when negative_conditioning is connected.
user_intent_promptoptSTRING
feedback_promptoptSTRINGFeedback about the previous output. Overrides the feedback set inside Studio.
refinement_key_inputoptSTRING
latentoptLATENTOptional video latent for creativity masking. Takes priority over any saved latent for this key. Connect your i2v or previous KSampler output here.

Outputs (13)

NameTypeDescription
modelMODEL
modified_positiveCONDITIONING
negativeCONDITIONING
seedINT
high_pass_samplerSAMPLER
high_pass_sigmasSIGMAS
low_pass_samplerSAMPLER
low_pass_sigmasSIGMAS
loss_graphIMAGE
statusSTRING
training_infoSTRING
encoded_promptsSTRING
video_latentLATENT