# Odbudowa workflow w interfejsie

Ten plan opisuje oryginalny graf v1. Utwórz węzły, wyszukując ich identyfikator techniczny w ComfyUI. Przetłumaczone etykiety mogą się różnić. Liczby w nawiasach to identyfikatory z dostarczonego JSON-a, przydatne do odczytania jego połączeń; interfejs może przypisać inne liczby podczas ręcznej rekonstrukcji.

## Węzły wspólne

| Identyfikator | Typ core | Ustawienie | Używane wyjścia |
| --- | --- | --- | --- |
| 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` z manifestu | CONDITIONING |

Połącz CLIP z loadera (1, slot 1) z wejściem clip tekstu negatywnego (3, slot 0).

## Trzy gałęzie do utworzenia

| Wariant | Tekst pozytywny | KSampler | VAEDecode | SaveImage |
| --- | --- | --- | --- | --- |
| A, frontalny | 4 | 5 | 6 | 7 |
| B, boczny | 8 | 9 | 10 | 11 |
| C, pod światło | 12 | 13 | 14 | 15 |

Skopiuj pełny `prompt` każdego wariantu do jego pozytywnego CLIPTextEncode. Wszystkie trzy teksty dzielą prefiks `common_positive_prompt`, a następnie zdanie `light`. Wspólny negatyw się nie zmienia.

Dla **każdej** gałęzi wykonaj następujące osiem połączeń:

1. CLIP z loadera → clip tekstu pozytywnego.
2. MODEL z loadera → model KSamplera.
3. CONDITIONING tekstu pozytywnego → positive KSamplera.
4. CONDITIONING wspólnego tekstu negatywnego → negative KSamplera.
5. LATENT wspólnego pustego latentu → latent_image KSamplera.
6. LATENT KSamplera → samples VAEDecode.
7. VAE z loadera → vae VAEDecode.
8. IMAGE z VAEDecode → images SaveImage.

Razem: 1 połączenie wspólne + 3 × 8 = **25 połączeń**. Węzeł SaveImage 0.37.0 ma również wyjście IMAGE; pozostaw je niepodłączone. Żaden zewnętrzny węzeł ani żadne wejście obrazu nie jest potrzebne.

## Parametry trzech KSamplerów

| Widget | Wartość |
| --- | --- |
| seed | 24092026 |
| control_after_generate | fixed |
| steps | 24 |
| cfg | 6.5 |
| sampler_name | euler |
| scheduler | normal |
| denoise | 1.0 |

W JSON-ie UI 0.4 `widgets_values` zachowuje tę kolejność: `[24092026, "fixed", 24, 6.5, "euler", "normal", 1.0]`. Kontrolka `fixed` to widget interfejsu dodany do seed; nie jest to dodatkowy argument funkcji Pythona `sample`.

Podłączone wejścia KSamplera zachowują kolejność `model`, `positive`, `negative`, `latent_image`. Wyjścia loadera zachowują kolejność `MODEL`, `CLIP`, `VAE`. To rozróżnienie między widgetami a gniazdami pozwala uniknąć przesunięcia wartości w JSON-ie pisanym ręcznie.

## Nazwy wyjść i kontrola

Wpisz w każdym SaveImage jego `output_prefix` z manifestu. Prefiksy są różne, aby wyjścia nie stały się anonimową serią. Ostateczna numeracja jest obsługiwana przez ComfyUI.

Zapisz swoją rekonstrukcję w nowym JSON-ie. Identyfikatory i pozycje mogą się różnić od tych z folderu; dostarczony walidator, celowo rygorystyczny, akceptuje wyłącznie identyfikatory z receptury v1. Porównaj wtedy wizualnie łańcuch i parametry, a następnie zwaliduj generowanie w swoim środowisku. Sam schemat UI nie dowodzi ani obecności modelu, ani powodzenia obliczeń.

Źródła: [definicje węzłów 0.37.0](https://github.com/Comfy-Org/ComfyUI/blob/73c9bad4d21e7addbe1d13bc92eee0f1431b017d/nodes.py), [kontrola wartości frontendu 1.52.7](https://github.com/Comfy-Org/ComfyUI_frontend/blob/1a7a6b82514874545dc5e8203d0bd2188c2d9b18/src/scripts/widgets.ts), [schemat UI 0.4](https://docs.comfy.org/specs/workflow_json_0.4).
