Студия автора
Локальное приложение, в котором собирается практика. Три обязательных шага, каждый заканчивается утверждением, и ничего не уезжает студентам, пока автор не согласился с результатом. Перед ними — необязательный шаг 0: разбор конспекта лекции, который заполняет форму первого шага.
TESTCONTAINERS_RYUK_DISABLED=true uv run gen studio --pack packs/spike --mock --port 8765
| Флаг | Что делает |
|---|---|
--pack | каталог пака, с которого студия открывается; создаётся, если его нет |
--packs | корень с практиками; по умолчанию — папка, в которой лежит --pack |
--port | порт студии, по умолчанию 8765 |
--mock | вместо вызовов LLM берёт заготовленные ответы из <пак>/mock_llm/ |
Живая генерация требует ключа в .env (OPENROUTER_API_KEY). Docker нужен всегда: проверки исполняются в эфемерном Postgres, который студия поднимает сама.
Несколько практик
Практика — это папка в корне (packs/), и они ничего друг о друге не знают: новая никак не задевает прежние. Переключатель внизу полосы шагов показывает все практики корня и докуда доведена каждая; там же заводится новая — имя латиницей с дефисами, например sql-join-2026, потому что оно станет именем архива комплекта.
Открытая практика видна в адресе: http://localhost:8765/?pack=sql-join-2026. Поэтому две практики можно держать в соседних вкладках — генерация в одной не заденет другую. Новая вкладка без параметра открывает последнюю, с которой работали, а если студия запущена впервые — ту, что указана в --pack.
Раскладка
Верхней шапки нет — по вертикали место дороже. Слева узкая полоса шагов, дальше содержимое шага, у третьего шага добавляется список заданий и инспектор справа.

Полоса шагов показывает состояние каждого шага цветом точки и подписью:
| Состояние | Что значит |
|---|---|
| пусто | шаг ещё не проходили |
| черновик | результат есть, но не утверждён |
| утверждено | зафиксировано хэшем, можно идти дальше |
| устарело | предыдущий шаг изменился после утверждения этого |
Внизу полосы — переключатель светлой и тёмной схемы и имя текущего пака.
Порядок шагов
Конспект занятия текстом. Модель предлагает тему, предметную область, темы SQL с квотами и число заданий; предложение переносится в форму первого шага и там правится. Без лекции шаг просто пропускается. Подробно
Название занятия, про что база, темы SQL с квотами заданий. Генерируется описание базы и DDL, схема тут же проверяется на живом Postgres. Подробно
Формулировки по утверждённой области. Покрытие тем считается до утверждения: не хватает заданий по теме — студия покажет, по какой. Подробно
На каждое задание — эталонное решение, спека данных, варианты, набор проверок и негативные решения. Отчёт приёмки показывает всё это целиком. Подробно
Шаги с первого по третий строго последовательны: пока область не утверждена, второй шаг сообщит об этом вместо формы. Это не формальность — задания генерируются по DDL области, а проверки строятся по формулировкам заданий.
Что делать без API-ключа
Любой шаг проходится вручную: студия отдаёт готовый промт, автор относит его в любую нейросеть и вставляет ответ обратно. Формат ответа тот же, что у API, поэтому дальше конвейер не различает, откуда пришёл JSON. Ручной режим
Что автор видит и чего не видит студент
Студия показывает автору всё содержимое пака: эталонные решения, все варианты данных с квотами, ожидаемые результаты, все проверки, включая скрытые, негативные решения и матрицу их отлова. Приложение студента отдаёт из этого только открытые примеры и тот скрытый вариант, на котором решение студента уже упало.
С 1280 пикселей видны все три колонки. Ниже 1280 инспектор скрывается кнопкой «Показать инспектор», ниже 1024 список заданий превращается в выездной.