# Пересборка workflow в интерфейсе

Этот план описывает исходный граф v1. Создайте узлы, найдя их технический идентификатор в ComfyUI. Переведённые названия могут отличаться. Числа в скобках — это идентификаторы из поставляемого JSON, полезные для чтения его связей; интерфейс может присвоить другие номера при ручной пересборке.

## Общие узлы

| Идентификатор | Тип core | Настройка | Используемые выходы |
| --- | --- | --- | --- |
| 1 | CheckpointLoaderSimple | sd_xl_base_1.0.safetensors | MODEL, CLIP, VAE |
| 2 | EmptyLatentImage | width 1024, height 1024, batch_size 1 | LATENT |
| 3 | CLIPTextEncode | `negative_prompt` из манифеста | CONDITIONING |

Соедините CLIP загрузчика (1, слот 1) с входом clip негативного текста (3, слот 0).

## Три ветви для создания

| Вариант | Позитивный текст | KSampler | VAEDecode | SaveImage |
| --- | --- | --- | --- | --- |
| A, фронтальный | 4 | 5 | 6 | 7 |
| B, боковой | 8 | 9 | 10 | 11 |
| C, контровой | 12 | 13 | 14 | 15 |

Скопируйте полный `prompt` каждого варианта в его позитивный CLIPTextEncode. Все три текста разделяют префикс `common_positive_prompt`, а затем фразу `light`. Общий негатив не меняется.

Для **каждой** ветви выполните эти восемь соединений:

1. CLIP загрузчика → clip позитивного текста.
2. MODEL загрузчика → model KSampler.
3. CONDITIONING позитивного текста → positive KSampler.
4. CONDITIONING общего негативного текста → negative KSampler.
5. LATENT общего пустого латента → latent_image KSampler.
6. LATENT KSampler → samples VAEDecode.
7. VAE загрузчика → vae VAEDecode.
8. IMAGE VAEDecode → images SaveImage.

Итого: 1 общее соединение + 3 × 8 = **25 соединений**. Узел SaveImage 0.37.0 также имеет выход IMAGE; оставьте его неподключённым. Никакие внешние узлы и никакой вход для изображения не нужны.

## Параметры трёх KSampler

| Виджет | Значение |
| --- | --- |
| seed | 24092026 |
| control_after_generate | fixed |
| steps | 24 |
| cfg | 6.5 |
| sampler_name | euler |
| scheduler | normal |
| denoise | 1.0 |

В UI JSON 0.4 `widgets_values` следует этому порядку: `[24092026, "fixed", 24, 6.5, "euler", "normal", 1.0]`. Элемент управления `fixed` — это виджет интерфейса, добавленный к seed; это не дополнительный аргумент функции Python `sample`.

Связанные входы KSampler следуют порядку `model`, `positive`, `negative`, `latent_image`. Выходы загрузчика следуют порядку `MODEL`, `CLIP`, `VAE`. Это различие между виджетами и портами позволяет избежать смещения значений в JSON, написанном вручную.

## Имена выходов и проверка

Введите в каждый SaveImage его `output_prefix` из манифеста. Префиксы разные, чтобы выходы не превратились в анонимную серию. Итоговая нумерация управляется ComfyUI.

Сохраните вашу пересборку в новый JSON. Идентификаторы и позиции могут отличаться от тех, что в папке; поставляемый валидатор, намеренно строгий, принимает только идентификаторы рецепта v1. Затем сравните визуально цепочку и параметры, после чего проверьте генерацию в вашей среде. Сама схема UI не доказывает ни наличие модели, ни успешность вычисления.

Источники: [определения узлов 0.37.0](https://github.com/Comfy-Org/ComfyUI/blob/73c9bad4d21e7addbe1d13bc92eee0f1431b017d/nodes.py), [контроль значений фронтенда 1.52.7](https://github.com/Comfy-Org/ComfyUI_frontend/blob/1a7a6b82514874545dc5e8203d0bd2188c2d9b18/src/scripts/widgets.ts), [схема UI 0.4](https://docs.comfy.org/specs/workflow_json_0.4).
