Node Literacy — алфавит ComfyUI
Прежде чем читать большой workflow, нужно понимать базовые типы данных, входы и выходы нод. Эта глава учит видеть не название ноды, а то, какой объект она принимает, что делает с ним и что возвращает дальше.
У каждой ноды есть три вопроса: что входит, что происходит, что выходит
Ноду нужно читать не по её названию, а как функцию. Слева находятся входы, внутри задаются параметры, справа находятся выходы. Если понимать тип каждого socket, большая часть графа перестаёт быть загадкой.
Профессиональная привычка: прежде чем менять параметр, сначала определить тип входа и тип выхода. Это защищает от бессмысленных попыток соединить несовместимые части графа.
Главные «буквы» ComfyUI
| Тип | Что это означает | Типичный пример |
|---|---|---|
| IMAGE | Пиксельное изображение или batch изображений | LoadImage → PreviewImage |
| MASK | Одноканальная карта области действия | SAM2 mask → composite / inpaint |
| LATENT | Скрытое представление изображения для diffusion sampler | VAE Encode → KSampler |
| MODEL | Объект генеративной модели после loader / patch | Checkpoint / UNet loader → sampler |
| CLIP | Текстовый encoder / text-model interface | Loader → CLIP Text Encode |
| CONDITIONING | Закодированная текстовая или control-информация | CLIP Text Encode → sampler / guider |
| VAE | Encoder/decoder между IMAGE и LATENT | IMAGE → VAE Encode → LATENT |
| STRING | Текст | Prompt field → text encoder |
| INT | Целое число | steps, width, height, seed selector |
| FLOAT | Число с плавающей точкой | denoise, strength, CFG, weight |
IMAGE и LATENT — это не одно и то же
IMAGE существует в пиксельном пространстве: его можно показать PreviewImage, сохранить, обработать маской или передать в preprocessor. LATENT существует в скрытом пространстве diffusion-модели и используется sampler-ом.
Поэтому IMAGE нельзя напрямую подключать туда, где ожидается LATENT. Между ними нужен VAE Encode. В обратную сторону нужен VAE Decode.
Debug rule
Если нода «не принимает картинку», сначала проверь, не ожидает ли она LATENT, MASK или CONDITIONING вместо IMAGE.
MASK отвечает за область действия, а не за само изображение
Маска описывает, где операция разрешена, запрещена или должна быть смешана. Белое и чёрное значения получают смысл только в контексте конкретной downstream-ноды, поэтому polarity нельзя угадывать по привычке.
В production-графе всегда нужно проверять три вещи: размер mask, её polarity и совпадение coordinate space с изображением, к которому она применяется.
Model object и prompt — разные части системы
MODEL отвечает за генеративную сеть. CLIP или другой text encoder превращает STRING prompt в CONDITIONING. Sampler затем получает модель, conditioning и latent как разные входы.
Это важная ментальная модель: prompt не «лежит внутри sampler». Он заранее кодируется и передаётся как отдельный объект.
Маленькие типы часто управляют огромными ветками
STRING, INT и FLOAT выглядят проще IMAGE или MODEL, но именно они часто формируют control plane. Один INT может выбирать source в нескольких selectors, а один FLOAT одновременно задавать denoise или weight для целой ветки.
Поэтому связанный control input важнее локального widget value: если input подключён, реальное значение может приходить извне.
Провод можно читать как утверждение о совместимости данных
Каждый link говорит: output одной ноды совместим с input другой. Если ComfyUI не даёт соединить sockets, проблема обычно не в UI, а в несовместимости типов или в том, что между ними пропущен преобразующий шаг.
| Нужно получить | Есть сейчас | Что обычно требуется между ними |
|---|---|---|
| LATENT | IMAGE | VAE Encode |
| IMAGE | LATENT | VAE Decode |
| CONDITIONING | STRING | Text Encode |
| MASK | IMAGE / detection result | ImageToMask или segmentation stage |
| CONTROL signal | IMAGE | Preprocessor + ControlNet/apply stage |
Как читать незнакомую ноду за 20 секунд
- Посмотреть тип каждого входа.
- Посмотреть тип каждого выхода.
- Определить, меняет ли нода данные или только маршрутизирует их.
- Отделить linked inputs от локальных widget values.
- Найти один upstream source и один downstream consumer.
- Только после этого изучать название модели и параметры.
Практика: перевести маленький workflow с языка нод на обычный язык
Возьми любой граф из 5–15 нод. Для каждой ноды подпиши один входной тип, операцию и выходной тип. Затем одной фразой опиши весь маршрут без названий моделей.
Критерий готовности
Ученик готов переходить к Graph Literacy, когда может объяснить маршрут по типам данных, не опираясь только на названия конкретных моделей.