Nodes/创界 · ChuangJie/创界集成控制台
ComfyUI Node

创界集成控制台

One node to load, prompt, sample and decode — the ChuangJie console

By lefango·Created 24 days ago·Updated 17 days ago· 3
创界集成控制台
  • model
  • clip
  • vae
  • output_0
  • output_1
  • output_2
  • output_3
  • output_4
  • output_5
  • output_6
  • output_7
◄config{"version": 1, "modules": {"model": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}, "clip": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}, "vae": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}}, "lora": {"enabled": true, "entries": [], "preset": null}, "preset": null, "name": "", "cover": null, "generation": {"enabled": true, "edit_image_id": "", "edit_image_width": 0, "edit_image_height": 0, "moss_layout": [], "moss_character_boxes": []}}►
◄positive►
◄negative►
◄prompt_config{"schema":2,"presets":[],"styles":[],"style_enabled":false,"style_order":"user","multi_select":false}►
◄text_output_enabledfalse►
◄text_output_usertrue►
◄text_output_extrafalse►
◄text_output_presetsfalse►
◄text_output_stylesfalse►
◄latent_width1024►
◄latent_height1024►
◄latent_batch_size1►
◄sampling_config{"seed":0,"steps":20,"cfg":7,"sampler_name":"euler","scheduler":"normal","denoise":1,"control_after_generate":"randomize"}►

The whole workflow in a single box

集合控制台 (also labelled 创界集成控制台 - "ChuangJie integrated console") is the flagship of this pack and the opposite design philosophy to everything else in the ecosystem. rgthree's pack assumes you want a hundred small nodes you can rewire; this one assumes you want a form. Model, CLIP, VAE, LoRAs, prompt, negative, style presets, resolution, sampler settings, seed - all of it, in one node with a custom panel, one output image.

If you've ever handed ComfyUI to someone who doesn't want to learn graph editing, that trade is obvious. If you're the kind of person with fourteen reroutes and a comparison node, it will feel like a coffin. Both reactions are fair, and the README's own screenshots are from 0.3.3 - the UI has moved on since, so treat them as history.

What it actually is: a compiler, not a node

This is the part worth understanding, because it explains every weird error you'll hit. The console doesn't define an execution function. On queue, the pack registers a prompt handler (server.add_on_prompt_handler) that rewrites the submitted graph before ComfyUI validates it: it reads the config JSON, checks which outputs your workflow actually consumes, deletes the console from the prompt, and injects the real nodes - internal loader stages for model/CLIP/VAE, LoRA patch stages, a prompt stage, EmptyLatentImage (or EmptyFlux2LatentImage for MOSS), a KSampler, VAEDecode, preview nodes, and the mask composite when an edit mask is in play.

So the console's seven sockets are declared as "*" - ComfyUI's ANY escape hatch - and the frontend builds the real typed ports. That's why the wildcard had to come with a VALIDATE_INPUTS override: a node with untyped sockets has to vouch for itself. And it's why, when expansion fails, you get 一体节点配置未展开:… instead of a Python stack trace.

Consequence worth internalizing: output types depend on your configuration, so a graph can queue fine on the machine it was built on and fail on one where the model family resolves differently. Also, nothing here is lazily evaluated - with generation enabled the internal KSampler runs even if you only wanted the latent.

The inputs that matter

  • config - the JSON snapshot of everything you set in the panel (modules with source internal/external/off, LoRA entries, generation flags). You rarely type it; it's the serialized form of the form. It survives edits to the pack, and an old one can be rejected wholesale with 不支持旧 Checkpoint 模式配置 if it predates the split.
  • positive / negative - your text.
  • prompt_config - presets and styles from the prompt manager, same schema the prompt stage reads.
  • latent_width / latent_height / latent_batch_size - resolution and batch. Step 8, minimum 16. MOSS-Image rounds down to a 16 grid; on the Qwen editing path the resolution comes from your source image instead.
  • sampling_config - one JSON blob for seed, steps, CFG, sampler, scheduler, denoise and control_after_generate. That last field is ComfyUI's classic trap: it fires after the run, so if you flip the seed to fixed to keep an image you liked, you've already lost the seed. Set the global "widget control mode" to Before once and this class of mistake disappears.
  • model / clip / vae (optional) - external inputs. Wire these with the module's source set to external and the console skips its own loader, which is how you mix this console with a GGUF loader or a custom VAE you'd rather manage yourself.

Outputs are labelled per your configuration; the ones the pack documents are the image, positive and negative conditioning, the first-pass latent, and the seed. The latent is the useful one for tinkering: internal sampling still happens, but you can hang an external KSampler off it for a second pass at higher resolution.

Install

Manager: search ComfyUI-ChuangJie. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/lefango/ComfyUI-ChuangJie.git
cd ComfyUI && python -m pip install -r custom_nodes/ComfyUI-ChuangJie/requirements.txt

The pip line installs gguf, sentencepiece and protobuf for GGUF loading into ComfyUI's own interpreter - a plain pip install into your system python won't be seen. Restart and hard-refresh, or the frontend bundle won't mount.

Where it bites

The panel doesn't appear and you see raw JSON text boxes. The custom frontend failed to load. Hard-refresh first; if it persists, check for an old ComfyUI-ChuangJie-Integrated-Console or ComfyUI-Unified-Model-Loader-Test folder in custom_nodes - the pack raises a duplicate-route error at startup when it finds one, and stale extension entries have caused exactly this symptom in earlier versions. The README also flags Nodes 2.0 acceptance as incomplete: if the UI is broken there, fall back to the Classic canvas.

一体出图需要启用 MODEL 模块 (or CLIP, or VAE) - one of the three modules is set to off while generation is on. The console refuses rather than limping along with a half-loaded pipeline.

"latent 宽度需为 16 的倍数" - you're on a MOSS-Image family model, which needs the 16-pixel grid. The pack auto-aligns from 0.5.29; on older builds it doesn't.

Prompt stage size errors on tiny or extreme-ratio images come from the latent_width/height floor of 16 - the pack clamps rather than tricks the model. Rare, but that's the reason the clamp exists.

Worth knowing before you invest: the pack is licensed CC BY-NC-SA 4.0, so commercial use needs the author's permission.

Category创界节点/模型工具

Inputs (16)

NameTypeDefaultDescription
configSTRING{"version": 1, "modules": {"model": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}, "clip": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}, "vae": {"source": "internal", "files": [], "file_names": [], "architecture": "", "options": {}, "name": "", "cover": null}}, "lora": {"enabled": true, "entries": [], "preset": null}, "preset": null, "name": "", "cover": null, "generation": {"enabled": true, "edit_image_id": "", "edit_image_width": 0, "edit_image_height": 0, "moss_layout": [], "moss_character_boxes": []}}—
positiveSTRING—
negativeSTRING—
prompt_configSTRING{"schema":2,"presets":[],"styles":[],"style_enabled":false,"style_order":"user","multi_select":false}—
text_output_enabledBOOLEANfalse—
text_output_userBOOLEANtrue—
text_output_extraBOOLEANfalse—
text_output_presetsBOOLEANfalse—
text_output_stylesBOOLEANfalse—
latent_widthINT102416–16384—
latent_heightINT102416–16384—
latent_batch_sizeINT11–4096—
sampling_configSTRING{"seed":0,"steps":20,"cfg":7,"sampler_name":"euler","scheduler":"normal","denoise":1,"control_after_generate":"randomize"}—
modeloptMODEL—
clipoptCLIP—
vaeoptVAE—

Outputs (8)

NameTypeDescription
output_0*—
output_1*—
output_2*—
output_3*—
output_4*—
output_5*—
output_6*—
output_7*—