Files
h-school/docs/design/off-queue/portrait-models.md
T
Leonid Pershin 81fd3f6181 Split SwarmUI portraits into a model catalog and layered prompts.
Picker is Swarm intersect config, preset style/shot inherit model defaults, and living saves lift the old preset shape.
2026-08-20 14:08:11 +03:00

2.9 KiB
Raw Blame History

Часть Вне очереди. Соседей по папке не читать, если задача не про них.

Модели Swarm и слои промпта

Зачем

Пикер моделей не должен предлагать то, чего нет в нашем конфиге. Дефолты генерации живут на модели; пресет задаёт стиль и тип кадра и может переопределить дефолты. Промпт собирается слоями, а не одним «базовым» текстом пресета.

Было / Стало / Почему

Было. Пресет сам держал модель, steps/cfg/sampler и positive. Список Swarm только наполнял комбобоксы. «Свой промпт» у custom заменял текст кадра. portraitSettings в сейве — копия этого файла.

Стало. В конфиге каталог models (whitelist) и пресеты. Пикер = Swarm ∩ каталог; при офлайне Swarm — все id из каталога. У модели: закрытый набор настроек генерации (steps, cfg, clip skip, sampler, scheduler, seed, LoRA) и обычно пустые base positive/negative. У пресета: модель, стиль (бывший positive), доп. negative, размеры и тип кадра на avatar/custom/full. Оверрайды генерации у пресета — nullable, в UI под спойлером. Промпт:

  1. base positive модели
  2. стиль пресета
  3. тип кадра
  4. «Свой промпт» (promptExtra, только custom; после кадра, не вместо)
  5. поза (слот пустой, без поля в UI)
  6. внешность: кто это, возраст, тело
  7. одежда
  8. хвост пустой

Negative: модель + необязательное дополнение пресета. Ширина/высота остаются на виде кадра.

Почему. Модель задаёт «как считать картинку»; пресет — «какой это школьный снимок». Гость по-прежнему рисует с копии школы, не с глобального файла.

Что не входит

Зеркало всех ListT2IParams. Кнопка настроек в меню. Редактор каталога «добавить модель из Swarm». Поза в UI. Бамп версии сокета. Перегенерация уже лежащих PNG.

Живые школы: NormalizeAfterLoad поднимает старый пресет (positivestyle, kind positiveshotType, уникальные modelmodels[]). Старые картинки не трогаем.