Зафиксированные решения раунда 1 плюс вопросы, на которые нужен твой ответ. Отвечать можно номерами пунктов — где согласен с моей ставкой, достаточно «ок».
На 27 пунктах я уже поставил ставку по умолчанию — если согласен, достаточно «ок». На 11 ниже либо ставки нет вовсе, либо решение принципиально твоё, даже если предложенный вариант рядом есть.
Переходы по ссылкам ведут прямо к вопросу в тексте ниже.
studio.obahoba.com, порт 8310, systemd, Vertex в боевом режиме, 3 канала в базе, 20 таблиц.TZ.md и GRAPH-API.md. Работа сохранена в ветке spaces-canvas-2026-08-17, таблицы графа остались в базе неиспользованными.Граф надстроили над старыми сущностями как второе представление. Отсюда полупустые карточки и отсутствие загрузки картинок в узел. Дело не в узлах, а в двойной модели данных.
| Кусок | Что даёт |
|---|---|
compose.py | сборка промпта по слоям: стиль → сцена → ремесло → рефы по ролям → identity lock → негативы, плюс проверки «два лица в один слот» и «цепочка ушла от якоря» |
pricing.py | прайс и смета: 3 картиночных модели $0.04–0.24, 3 тарифа Veo, оценка времени |
vertex.py | адаптер Vertex: рефы с ролевыми подписями, формат кадра, сид, first/last frame для Veo |
master-sheet/ | утверждённый эталон компоновки мастер-листа: зелёный манекен 2×2 плюс промпт «зелёное замени героем» |
| knowledge + загрузчик | справочник режиссуры: крупности, ракурсы, движения, композиция, свет, оптика |
thumbs.py | webp-превью вместо исходников на карточки |
КАНАЛ (формат, ниша)
└── СТИЛЬ — библиотека версий, каждая залоченная неизменяема
└── МАСТЕР-АССЕТ (компонент): персонаж | локация | объект
этап 1: описание → ПРОМПТ (узел, правится) → N вариантов → выбор
этап 2: выбранный вариант + эталон компоновки → МАСТЕР-ЛИСТ (якорь)
├── СОСТОЯНИЕ (вариант компонента, вытекает из родителя)
└── ИНСТАНС (использование в кадре, живая ссылка на ассет)
└── СЦЕНА: кадр A / кадр B / доп. ракурсы того же момента
└── ШОТ: клип из одного кадра или интерполяция A→B
└── РОЛИК: последовательность шотов
| № | Решение Тимура |
|---|---|
| 1–3 | Скоуп первой версии: только ассеты и шоты. Сценарий с автораскадровкой, обложки, монтаж и озвучка — после готового ядра |
| 4 | Инстанс наследует живой ссылкой: поменял якорь, кадры помечены «устарело», автоперегенерации нет никогда |
| 5 | Состояние — полноценный вариант со своим мастер-листом, но обязан вытекать из родительского ассета |
| 6 | Залоченный стиль неизменяем. Правки только через копию. В генерации выбирается один из зафиксированных стилей |
| 7 | Ассеты живут внутри канала, с копированием в другой |
| 8 | Два уровня холста: канал и ролик |
| 9 | Нужен удобный формат просмотра для приёмки (по миниатюрам решение не принять) и итеративная доводка выбранного варианта вместо перегенерации с нуля |
| 10 | Переиспользуемые рецепты — потом |
| 11 | Мастер-лист объекта делаем, но предметы не должны плыть в ракурсах и должны наследовать форму |
| 12 | Лист локации — четыре вида, как предложено |
| 13 | Механику ракурсов сделать по-настоящему хорошо, провести отдельное исследование |
| 14 | Только Vertex, расширение движков в будущем |
| 15 | Лимита трат нет. Нужна прозрачная экономика: и по отдельной генерации, и по проекту целиком |
| 16 | По умолчанию всё на дешёвой модели. Дорогую Тимур включает сам |
| 17 | Новое ядро, структурнее и продуманнее |
| 18 | Старые данные не переносим |
| 19 | Приёмка не тремя гейтами, а на каждом шаге: промпт, варианты, мастер-лист. Любой шаг правится и переделывается со своими дополнениями |
| 20 | Формат кадра и настройки задаются в момент генерации, по умолчанию наследуются от канала |
Стиль перестаёт быть настройкой канала и становится библиотекой. Каждый лок неизменяем, докрутка через копию. Ассет и кадр навсегда помнят, на каком стиле собраны.
Доводка выбранного варианта — отдельный механизм, которого сейчас нет. Не «сгенерь ещё раз», а «возьми вот этот и убери изъян»: входной картинкой идёт сам вариант, промптом только правка, результат становится дочерней итерацией, дерево доводки сохраняется целиком.
Приёмка на каждом шаге означает, что каждый шаг обязан быть остановимым, правимым и повторяемым без потери сделанного.
«Создать промпт»: на входе описание, тип ассета и выбранный стиль. На выходе английский промпт для модели плюс русский текст для чтения. Повторное нажатие не затирает, а кладёт новую версию рядом, листается стрелками.
От одного описания можно держать несколько промптов-веток и вести каждую отдельно.
Сколько вариантов за прогон по умолчанию: 2, 4 или 6?
Из вариантов можно отметить несколько в шорт-лист и повести дальше каждый. Якорь один, переназначается в любой момент.
Доводка: выбранный вариант идёт входной картинкой, пишешь только правку («убери шрам, добавь седину в бороду»), получается дочерняя итерация. Дерево доводки видно на холсте, из любой точки можно уйти в другую сторону.
Нужна ли кисть-маска (обвёл область, переделал только её), или на первом этапе хватит текстовой правки?
Две разные кнопки: «ещё варианты по тому же промпту» (другой сид) и «поправить вот этот». Обе нужны?
Одна панель из четырёх плохая. Перегенерить лист целиком или доснять эту панель отдельным вызовом и подменить её в листе?
Что уходит рефом в кадр по умолчанию: лист целиком одной картинкой или панель, ближайшая к заданному ракурсу?
Объект. Развилка: эталон с зелёными болванками держит компоновку, но может навязать силуэт — меч и стул не влезут в одну болванку. Альтернатива: сначала генерим объект в одном ракурсе как якорь, потом доснимаем остальные ракурсы от этого якоря, а эталон держит только рамки панелей и порядок ракурсов.
Локация: один из четырёх видов помечается «главный фон» (пустой кадр с уровня глаз) и дальше уходит рефом в кадры как якорь места.
До фиксации можно жечь пробные картинки на черновом стиле, они не становятся ассетами и лежат внутри карточки стиля.
Один из залоченных стилей помечен основным и подставлен по умолчанию, менять можно на каждом узле.
В кадре два ассета, собранные на разных стилях: предупредить и дать выбрать стиль кадра, или запретить такой кадр?
Подмешивать ли, кроме текста, 1–2 картинки-референса стиля прямо в генерацию? Манеру они держат лучше текста, но занимают слоты рефов, а их эффективно три.
Разбор стиля агентом даёт карту: манера, палитра, свет, материал, линия, оптика, эпоха, анти-признаки; текст правится руками до фиксации. Нужна ли возможность завести стиль вообще без картинок, одним текстом?
Сцена появляется сама при создании первого кадра и потом переименовывается, или ты хочешь заводить её руками первой?
Сцена хранит локацию, состав участников, время суток и погоду, описание момента. Кадры это наследуют, поэтому доп ракурс не описывается заново.
У кадра явная роль A или B, видна на карточке. Из кадра A делаешь «конечный кадр», из B «начальный», роли система расставляет сама.
Доп ракурс сцены наследует всё и меняет только камеру.
Жёсткое ограничение: эффективно держится три картинки-рефа. Кадр с двумя героями и локацией это уже три, плюс реф ракурса четыре. Что делать: склеивать якоря героев в композитный реф на нашей стороне, собирать кадр в два шага (сначала фон, потом герои поверх), или предупреждать и резать?
Кадр без ассетов, только промпт и стиль, разрешён для перебивок и пейзажей.
Длительности только 4, 6, 8 секунд (предел Veo), звук Veo по умолчанию выключен.
У клипа есть выходы «первый кадр» и «последний кадр» для сцепки следующей сцены, но с предупреждением: после трёх шагов от якоря персонаж плывёт, надо возвращаться к мастер-листу.
Несколько дублей клипа на один кадр, выбираешь лучший, остальные не удаляются.
Добавление узла тремя способами: пробел или слэш открывает поиск; тянешь связь в пустоту и поиск сам фильтруется по типу; правый клик на холсте.
Карточка в двух состояниях: свёрнутая (превью, имя, статус) и развёрнутая (промпт, настройки, история). Размер тянется за угол, положение и размер запоминаются.
Просмотр для приёмки: полный экран, листание стрелками, зум 1:1 по клику, сравнение двух картинок рядом, отметки «шорт-лист» и «сделать якорем» прямо оттуда, вся клавиатура. Что здесь лишнее, чего не хватает?
Пока идёт генерация: на карточке полоска и обратный отсчёт (среднее время по модели известно), внизу лента очереди с отменой. Нужно ли уведомление в Telegram, когда пачка готова?
Параллельно 2 картинки и 1 видео. Больше — Vertex начинает отдавать 429.
Отмена действия, автосохранение раскладки, миникарта, группы, заметки, поиск по холсту.
Удаление узла с холста не удаляет ассет. Удаление ассета спрашивает подтверждение и уносит генерации в корзину на 30 дней, а не насмерть.
Показываем цену на кнопке до запуска, стоимость каждой генерации на её карточке, суммы по ассету, ролику, каналу и за месяц, плюс журнал трат с разбивкой по моделям. Чего добавить?
Считать отдельной строкой «сожжено на невыбранное» — сколько стоили варианты, которые не взял?
Черновой режим без трат нужен только для разработки, тебе он не показывается.
Новая версия поднимается на отдельном адресе, на studio.obahoba.com переключается после твоей приёмки. Старая всё это время живая.
Без ответа с прошлого раунда: нужен ли просмотр и апрув с телефона; доступ только у тебя или ещё у кого-то; держим всё на VPS или выгружаем в облако, когда генерации распухнут.
Показывать прогресс блоками (готово ядро ассетов — смотри) или один финальный показ?
Перед ТЗ идёт глубокое исследование там, где «как правильно» решается фактами, а не вкусом.
Контроль ракурса и turnaround в живых продуктах (LTX Studio, Krea, Freepik Spaces, Higgsfield, Kling, Seedance) и что из этого воспроизводимо на Vertex.
Сколько картинок-рефов реально держит Gemini 3 Pro Image, что лучше — композит или отдельные слоты с ролями, как адресовать роли без утечки деталей.
Доводка по маске: возможности и грабли.
Как держат консистентность локаций и фонов, актуальные приёмы ре-якорения.
Veo 3.1: пределы по двум кадрам, длительностям и рефам, лучшие практики motion-промпта.
UX графовых редакторов на 500+ узлов: виртуализация, отмена действий, автораскладка, скорость.
JTBD-разбор всех задач Тимура, включая не названные: возврат к работе через неделю, переделка одного шага, брак и повтор, чистка мусора, перенос ассета между каналами.
BRIEF.md