Полное описание того, как система должна работать. Это главный документ проекта: при расхождении кода с ним прав документ.
Всё, что помечено «должно», — обязательство. Всё, что помечено «сейчас не так», — честный список того, что ещё не сделано. Раздел 9 внизу — реальный статус на сегодня.
Загрузка картинок в узел — файлом, перетаскиванием и Ctrl+V — заработала на карточках стиля, сущности и «Картинки». Референсы к стилю и сущности подаются прямо на карточке. Фиксация версии стиля — кнопкой, после неё версия неизменна. Накопленные варианты и мастер-листы видны на карточках, старые каналы переносятся с готовой цепочкой для запуска.
Крупность и ракурс кадра не читаются карточкой из справочника режиссуры, а холст ролика переведён на граф формально и целиком не проверялся. Это держит закрытым сценарий 3. Агентная доводка промпта и эталон мастер-листа на манекене тоже не сделаны, но эти два пункта не блокируют остальные сценарии.
Ролик делают не «генерацией картинок», а удержанием одного и того же героя, места и манеры через десятки кадров. Диффузионная модель не помнит персонажа: у неё нет его внутреннего представления, и на каждом новом кадре лицо уплывает. Единственное, что реально держит консистентность, — пиксельный якорь (утверждённая картинка) плюс единый лексикон описаний.
Поэтому студия — не генератор картинок, а база знаний канала, из которой промпт собирается сам:
стиль канала ─┐ персонаж ├─→ промпт кадра ─→ кадр ─→ клип локация │ реквизит ─┘
Ценность системы = сумма накопленного (стиль, персонажи, мастер-листы), а не скорость одной генерации.
Это раздел про то, «из каких кирпичей всё сложено». Кирпичи не смешиваются.
| Сущность | Что это | Чем удерживается |
|---|---|---|
| Канал | контейнер: формат кадра, свой стиль, свои сущности, свои ролики | — |
| Версия стиля | манера канала: как нарисовано, палитра, свет, оптика, эпоха | залоченная версия неизменна |
| Персонаж / Локация / Реквизит | герой, место, предмет с алиасом @hero | якорной картинкой + признаками |
| Ролик | сцены и кадры | форматом и стилем канала |
| Кадр | один шот: крупность, ракурс, свет, референсы по ролям | промптом и якорями |
| Клип | оживление кадра | стартовым и финальным кадром |
Правило атомарности №1. Сущность — объект первого класса. Промпт ссылается на @alias, а не переписывает описание. Поправил персонажа один раз — поправилось везде, где он снят.
Правило атомарности №2. Медиа на диске — источник правды, база — индекс. База обязана пересобираться с диска.
Правило атомарности №3. Этапы производства — данные, а не код. Появился новый этап — добавляется запись в каталог, а не ветка if в интерфейсе.
Холст показывает сущности и связи между ними. Он ничего не хранит сам, кроме раскладки. Отсюда следствия, которые обязаны выполняться:
Узел — карточка на холсте. У каждого типа узла жёстко задано:
| Свойство | Что значит |
|---|---|
| Входы слева | что можно в него подать; у каждого свой тип данных |
| Выходы справа | что он отдаёт дальше |
| Настройки | что настраивается прямо на карточке |
| Содержимое | что показывается: текст, картинки, клип |
| Действия | запустить, дублировать, удалить, скачать, открыть, сбросить |
| Состояние | ждёт · в очереди · идёт · готово · ошибка · отменён |
Типы данных и цвета связей: текст — синий, картинка — фиолетовый, видео — зелёный. Соединяются только одинаковые типы. Несовместимое не прилипает.
| Узел | Входы | Выходы | Что на карточке |
|---|---|---|---|
| Текст | — | текст | поле, тулбар, цвет фона, @упоминания других узлов |
| Картинка | — | картинка | превью; загрузка файлом, перетаскиванием и Ctrl+V |
| Заметка | — | — | записка на полотне, в генерации не участвует |
| Группа | — | — | рамка; двигается вместе с содержимым |
| Стиль канала | референсы, пожелания | стиль-блок (текст) | превью референсов, разобранная манера, «Разобрать», фиксация версии |
| Персонаж / Локация / Реквизит | стиль, описание, референсы, якорь | якорь (картинка), паспорт (текст) | алиас, описание, все накопленные картинки, «Зафиксировать» |
| Промпт | стиль, описание и сущности | промпт (текст) | собранный промпт целиком, правка руками, выбор задачи |
| Генерация картинки | промпт, референсы | картинка | модель, количество, формат, запуск с ценой, история, сетка вариантов |
| Мастер-лист | промпт, эталон компоновки, персонаж | картинка | то же плюс два ролевых входа |
| Кадр | промпт, референсы | картинка | код кадра, крупность, ракурс |
| Оживление | первый кадр, последний кадр, движение | видео | модель, длительность, запуск с ценой |
| Ролик | кто снимается | — | обложка, число кадров, переход на холст ролика |
Главный раздел. Система считается работающей, только если каждый сценарий проходится целиком, мышью, без обращения к документации.
Что обязано выполняться: ни одного шага «сначала создай в другом месте»; цена видна до траты; результат появляется на той же карточке.
Три режима запуска на каждой запускаемой карточке:
| Режим | Что делает |
|---|---|
| Только этот узел | пересчитать один шаг на готовых входах |
| Всю цепочку | от начала до конца |
| Отсюда и дальше | этот узел и всё после него; готовое выше не трогаем |
История генераций. Повторный запуск никогда не затирает прошлый результат. Стрелки на карточке листают прошлые генерации, каждая помнит свои настройки.
Боковой панели нет. Отдельных страниц сущности и стиля нет. Вся работа — на карточках в рабочей области.
Карточка обязана быть информативной. Минимум для каждой:
Скорость. На карточки уходят превью, исходник — только по «открыть крупно». Полотно на 100+ узлов не проседает: невидимое не рисуется. Холст канала открывается меньше чем за секунду.
Язык. Всё по-русски и по-человечески: узел, связь, запустить, сколько вариантов, формат кадра. Никаких нода, инпут, сид, ран.
Апскейл, сетки вариаций, редактор изображений, склейка видео, аудио-узлы, графический редактор, совместная работа, публичные шаблоны, батч-списки.
Причина: студия решает одну задачу — держать персонажа и манеру одинаковыми через весь ролик. Всё остальное только увеличивает поверхность обслуживания.
Не запросами к API. Зелёные тесты не считаются доказательством.
Графовая модель с портами и типизированными связями; три режима запуска; смета и подтверждение; история генераций; заведение сущностей с холста с готовой цепочкой; перенос старых каналов на холст; показ накопленных картинок на карточках; сборка промпта по слоям; генерация картинок и клипов.
Пункты 1–2 мешают сценарию «кадр ролика». Пока они не закрыты, система проходит сценарии 1, 2, 5, 6 и не проходит сценарий 3.
Два пункта из четырёх нерабочих блокируют сценарий 3 (кадр ролика); агентная доводка промпта и эталон мастер-листа на манекене нужны, но остальные сценарии из-за них не рвутся.
Критерии готовности (раздел 8) проверяются мышью, а не автотестами: зелёный прогон тестов сам по себе ничего не доказывает.
Холст ролика формально переведён на графовую модель, но сценарий 3 (кадр ролика) целиком мышью не проверялся — статус «работает» для него не подтверждён.