KI · Setup & Infrastruktur

ComfyUI Node-Typen

Vom Vokabular zur Grammatik — fünf Kategorien die jeden Workflow lesbar machen.

In 2.2.2 — ComfyUI: Philosophie und Oberfläche hast du zwei Workflows gelesen — Node für Node, von links nach rechts. Du weißt jetzt was ein CheckpointLoaderSimple macht, was ein KSampler tut, warum VAEDecode am Ende steht. Das ist Vokabular.

Dieser Artikel ist die Grammatik dahinter.

Jeder Node in ComfyUI gehört zu einer funktionalen Kategorie — nicht nach Name oder Aussehen, sondern nach seiner Rolle im Datenfluss. Wer diese Kategorien versteht, kann einen unbekannten Workflow lesen ohne jeden Node einzeln nachschlagen zu müssen. Und wer einen eigenen Workflow aufbaut, weiß wo welcher Node hingehört — bevor er ihn sucht.

Fünf Kategorien decken alles ab, was in einem ComfyUI-Workflow vorkommt.

01

Loader

Loader bringen Daten von außen ins System. Keine Loader — kein Workflow.

Was sie laden: Modelle, Encoder, VAEs, Bilder, LoRAs, ControlNet-Modelle. Alles was als Datei auf der Festplatte liegt und für den Generierungsprozess gebraucht wird, kommt über einen Loader in den Graph.

Loader haben keine Eingänge — sie stehen immer am Anfang eines Datenflusses. Ihre Ausgänge sind typisiert: ein UNETLoader gibt MODEL aus, ein VAELoader gibt VAE, ein DualCLIPLoader gibt CLIP. Diese Typen bestimmen, welche Nodes danach angeschlossen werden können — ComfyUI lässt nur kompatible Verbindungen zu.

Der Unterschied zwischen SDXL und Flux wird hier sofort sichtbar: CheckpointLoaderSimple gibt MODEL, CLIP und VAE gleichzeitig aus — alles in einer Datei. Flux braucht drei separate Loader für dieselben drei Komponenten. Mehr Nodes, aber auch mehr Flexibilität: jede Komponente lässt sich unabhängig austauschen.

Nodes aus 2.2.2

CheckpointLoaderSimple · UNETLoader · DualCLIPLoader · VAELoader

Weitere Loader

LoraLoader — lädt eine LoRA und wendet sie auf MODEL und CLIP an · ControlNetLoader — lädt ein ControlNet-Modell · LoadImage — bringt ein externes Bild in den Workflow, Grundlage für ControlNet und Image-to-Image

02

Konditionierung

Konditionierung ist die Übersetzungsarbeit: menschliche Eingaben werden in ein Format überführt, das das Modell während des Samplings versteht. Der Text-Prompt ist die offensichtlichste Eingabe — aber nicht die einzige.

Text-Prompts werden über CLIP- oder T5-Encoder in CONDITIONING umgewandelt. CONDITIONING ist kein Text mehr — es ist eine numerische Repräsentation, die dem Modell sagt in welche Richtung es das Rauschen formen soll.

Bei SDXL: zwei CLIPTextEncode-Nodes, einer für positiv, einer für negativ. Beide nehmen denselben CLIP-Encoder entgegen, beide geben CONDITIONING aus.

Bei Flux: ein CLIPTextEncodeFlux-Node mit zwei Textfeldern — clip_l für die Stichwortliste, t5xxl für ausformulierte Sätze. Kein negativer Prompt, weil die Architektur diesen Kanal nicht vorsieht.

Was Konditionierungs-Nodes gemeinsam haben: sie stehen zwischen Loadern und dem Sampler. Sie nehmen Encoder entgegen, geben CONDITIONING aus, und dieses CONDITIONING landet immer im Sampling-Schritt.

Nodes aus 2.2.2

CLIPTextEncode · CLIPTextEncodeFlux

Weitere Konditionierungs-Nodes

CLIPTextEncodeSDXL — nutzt beide CLIP-Encoder von SDXL getrennt, für präzisere Steuerung · ConditioningCombine / ConditioningAverage — kombinieren mehrere CONDITIONING-Ausgaben, nützlich wenn Stil und Inhalt getrennt konditioniert werden sollen

03

Sampling

Sampling ist der eigentliche Generierungsprozess. Hier passiert das, wofür alle anderen Nodes vorbereiten: das Modell formt schrittweise aus Rauschen ein Latent, das dem Conditioning entspricht.

Ein Latent ist keine Bilddatei. Es ist eine komprimierte Darstellung im internen Raum des Modells — mathematisch weit vom sichtbaren Pixel entfernt, aber strukturell bereits das Bild. Erst der VAE in Kategorie 5 übersetzt es in Pixel.

Der Sampling-Prozess hat mehrere steuerbare Parameter:

  • Steps — wie viele Iterationsschritte. Mehr Steps, feineres Ergebnis, längere Rechenzeit. Für SDXL typisch 30–35, für Flux 20–25.
  • CFG (Classifier-Free Guidance) — wie stark das Modell dem Conditioning folgt. Bei SDXL sinnvoller Bereich: 4–7. Bei Flux.1 dev zwingend 1 — jeder höhere Wert arbeitet gegen die eingebaute Guidance-Distillation.
  • Sampler-Algorithmus — die mathematische Methode der Iteration. euler, dpmpp_2m, ddim sind gängige Varianten mit unterschiedlichen Charakteristika.
  • Scheduler — steuert wie die Rauschstärke über die Steps abnimmt. karras für SDXL, simple für Flux sind bewährte Ausgangspunkte.

Bei SDXL bündelt KSampler all das in einem Node. Bei Flux ist es aufgeteilt: KSamplerSelect wählt den Algorithmus, BasicScheduler definiert die Sigma-Kurve, RandomNoise erzeugt den Seed, BasicGuider verbindet Modell und Conditioning, SamplerCustomAdvanced führt alles zusammen. Mehr Nodes — aber jede Komponente einzeln austauschbar.

EmptyLatentImage gehört konzeptionell zu dieser Kategorie: es erzeugt den leeren Arbeitsbereich, in dem die Diffusion stattfindet. Auflösung und Seitenverhältnis werden hier festgelegt — nicht beim Speichern.

Nodes aus 2.2.2

KSampler · SamplerCustomAdvanced · KSamplerSelect · BasicScheduler · RandomNoise · BasicGuider · EmptyLatentImage

04

Steuerung — ControlNet

ControlNet ist eine eigene Kategorie, weil es eine eigene Logik hat. Es ist kein Teil des Prompt-Prozesses und kein Teil des Samplings — es ist eine seitliche Einspeisung, die den Generierungsprozess an eine externe Struktur bindet.

Wie das funktioniert: Ein Eingabebild — zum Beispiel ein Blender-Render — wird durch einen Vorverarbeitungs-Node in eine Kantenkarte umgewandelt. Diese Kantenkarte wird zusammen mit einem geladenen ControlNet-Modell in einen ControlNetApply-Node gegeben. Der Ausgang ist ein modifiziertes CONDITIONING, das jetzt nicht nur den Text-Prompt enthält, sondern auch die geometrische Struktur des Eingabebilds.

Dieses modifizierte CONDITIONING geht dann in den Sampler — und das Modell generiert ein Bild, das sowohl dem Prompt als auch der vorgegebenen Struktur folgt.

Im RAY-L-Workflow ist das die zentrale Verbindung: Blender liefert die Geometrie als Kantenbild, ControlNet Canny überträgt diese Geometrie in den Diffusionsprozess, das Modell interpretiert Materialien und Atmosphäre innerhalb dieser festen Struktur. Komposition und Perspektive kommen aus Blender — alles andere aus dem Modell.

ControlNet-Modelle sind nicht universell: ein für SDXL trainiertes ControlNet Canny funktioniert nicht mit Flux, und umgekehrt. Das Modell und sein ControlNet müssen zusammenpassen.

Masken — für Inpainting und Outpainting — folgen einer verwandten Logik: auch sie steuern den Generierungsprozess räumlich, aber gezielt für bestimmte Bildbereiche. Das ist ein eigenes Thema und kommt später, wenn RAY-L diese Features integriert.

Wichtige Nodes

ControlNetLoader — lädt das ControlNet-Modell · ControlNetApply / ControlNetApplyAdvanced — verbindet Kantenbild und ControlNet mit dem CONDITIONING · CannyEdgePreprocessor — erzeugt die Kantenkarte aus einem Eingabebild

05

Output & Nachbearbeitung

Am Ende jedes Workflows steht die Rückübersetzung: vom Latent ins sichtbare Bild, und vom Bild in eine Datei.

VAEDecode ist der Pflichtschritt. Das Latent aus dem Sampler ist kein Bild — erst der VAE übersetzt es in Pixel. Welcher VAE verwendet wird, beeinflusst die Bildqualität direkt: Farbwiedergabe, Schärfe, Artefakte. Bei SDXL kommt der VAE aus dem Checkpoint oder wird separat geladen; bei Flux ist ae.safetensors der Standard.

SaveImage speichert das dekodierte Bild im Output-Verzeichnis von ComfyUI und zeigt es in der Arbeitsfläche an. Mehr tut er nicht — aber er ist der Node, den man am häufigsten ansieht.

Upscaler-Nodes gehören ebenfalls in diese Kategorie. Sie nehmen das fertige Bild entgegen und vergrößern es — entweder über klassische Upscaling-Algorithmen oder über KI-basierte Modelle wie ESRGAN. In einer professionellen Produktionskette ist Upscaling oft der letzte Schritt vor der Weiterverarbeitung in Topaz oder einem anderen Nachbearbeitungstool. Direkt aus ComfyUI heraus lässt sich dieser Schritt automatisieren — das Bild geht in den Upscaler, der Upscaler gibt es an SaveImage weiter.

Nodes aus 2.2.2

VAEDecode · SaveImage

Weitere Output-Nodes

ImageUpscaleWithModel — KI-basiertes Upscaling innerhalb des Workflows · UpscaleModelLoader — lädt das Upscaling-Modell · PreviewImage — zeigt ein Bild in der Arbeitsfläche ohne es zu speichern, nützlich für Zwischenschritte

Die Verbindungslogik

Ein letzter Gedanke zur Frage warum ComfyUI Verbindungen überhaupt typisiert — warum man einen LATENT-Ausgang nicht einfach mit einem CONDITIONING-Eingang verbinden kann.

Typisierung ist Fehlervermeidung. Ein Workflow mit zwölf Nodes hat dutzende mögliche Verbindungen — ohne Typen wäre es trivial, einen VAE-Ausgang versehentlich mit einem Sampler-Eingang zu verbinden, der ein Modell erwartet. Das Ergebnis wäre ein Fehler, der schwer zu lokalisieren ist.

Mit Typen sieht man sofort: diese Verbindung ist nicht möglich, weil die Typen nicht übereinstimmen. Der Graph bleibt lesbar. Und lesbar bedeutet: wartbar, teilbar, wiederverwendbar.

Das ist auch der Grund warum ComfyUI-Workflows als JSON so gut transportierbar sind — die Verbindungsstruktur ist vollständig im File gespeichert, inklusive aller Typen. Wer eine JSON öffnet, öffnet einen vollständig definierten Prozess.