Routing Sandbox: selector, bypass, lazy execution и cache без генеративных моделей
Первый практикум специально убирает SDXL, FLUX, VAE и модели из поля зрения. Здесь остаётся только логика графа: два источника данных, selector, output, Queue Prompt, bypass и наблюдение за тем, какая ветка реально требуется движку.
543 = 1 управляет четырьмя switches
При mode 1 node 552 выбирает свой image1 #829, поэтому output 715 не участвует. При mode 2 оба switches выбирают второй вход, и 715 передаёт SDXL decode #14 в 552.
Что ты должен почувствовать руками за 10–15 минут
Цель не в том, чтобы запомнить очередные названия nodes. Цель — увидеть разницу между CONNECTED, SELECTED, REQUIRED и EXECUTED.
После практикума большой Hansen-граф должен читаться уже не как паутина, а как набор веток, из которых selector выбирает текущий runtime route.
Главный вопрос
Не «куда идёт провод?», а «какой upstream сейчас действительно требуется выбранному output?»
Почему без моделей
Ни VRAM, ни sampler, ни prompt quality не должны отвлекать от routing logic.
Собери минимальный граф из четырёх функциональных частей
- Создай два easy promptLine и подпиши группы ROUTE A и ROUTE B.
- В A напиши ROUTE A · ORIGINAL. В B — ROUTE B · ORIGINAL.
- Создай easy textIndexSwitch и подключи A → text0, B → text1.
- Выход text подключи в easy showAnything. Это единственный output лаборатории.
- Начальное значение selector: index = 0.
CONNECTED ≠ SELECTED
Механика textIndexSwitch
Index выбирает один textN; lazy status запрашивает только соответствующий вход.
| Действие | Ожидаемый output | Что доказываем |
|---|---|---|
| index = 0 → Queue Prompt | ROUTE A · ORIGINAL | A selected; B физически подключена, но не выбрана |
| index = 1 → Queue Prompt | ROUTE B · ORIGINAL | Selector меняет effective route без переподключения проводов |
| вернуть index = 0 | ROUTE A · ORIGINAL | Topology не менялась; изменилось только control value |
CONNECTED ≠ REQUIRED
Оставь index = 0. Измени текст только в ROUTE B на ROUTE B · CHANGED и нажми Queue Prompt.
Главное наблюдение: output всё ещё должен показывать ROUTE A. Изменение невыбранной ветки не делает её частью текущего required path.
REQUIRED ≠ обязательно пересчитано с нуля
Не меняя index и ROUTE A, нажми Queue Prompt ещё раз. Затем поменяй ROUTE A на ROUTE A · CHANGED и снова запусти.
Смысл опыта — привыкнуть разделять requirement graph и execution/cache. Один и тот же required route может частично использовать уже валидные результаты, пока изменение входа не инвалидирует соответствующий участок.
Что наблюдать в UI
Смотри, какие nodes реально подсвечиваются как выполняющиеся после изменения выбранной и невыбранной ветки; конкретная визуализация зависит от версии frontend.
BYPASS — отдельная ось управления
Теперь намеренно переведи одну из source nodes или тестовую группу в bypass и посмотри, чем это отличается от простого выбора другого selector index.
Selector отвечает: какой вход использовать. Bypass отвечает: должна ли конкретная нода или группа работать в своём обычном режиме. Это не одно и то же состояние.
После sandbox открой PEOPLE/PPL и задай те же четыре вопроса
- Какая ветка CONNECTED?
- Какая ветка SELECTED?
- Какая ветка REQUIRED текущему output?
- Что реально EXECUTED, а что могло прийти из cache?
| Sandbox | Hansen PEOPLE/PPL |
|---|---|
| index | master / linked selector value |
| ROUTE A / B | FLUX person route / alternate route |
| textIndexSwitch | 459 / 522 / 552 selector family |
| showAnything output | return into downstream / final output |
Практикум пройден, когда ты можешь объяснить это без подсказки
- Почему подключённая ветка может не участвовать в результате.
- Почему selector не равен bypass.
- Почему положение ноды слева или справа не задаёт порядок исполнения.
- Почему изменение невыбранной ветки не обязательно влияет на текущий output.
- Почему повторный Queue Prompt не означает полный пересчёт всего canvas.
- Как найти effective runtime route в большом production workflow.
Критерий перехода дальше
Если эти шесть пунктов понятны на sandbox, можно переходить к Modules & I/O Contracts и затем разбирать Hansen уже как инженерный граф.