Wildcard в Stable Diffusion — это текстовые файлы со списками вариантов, из которых интерфейс случайным образом подставляет значения в промпт при каждой генерации. Если вместо красивых вариаций вы получаете буквальный текст вида __hair_color__ прямо на изображении, значит расширение для обработки подстановок не установлено или файл не найден.
Механизм особенно популярен среди пользователей AUTOMATIC1111 WebUI и ComfyUI: он позволяет за один запуск получить десятки разнообразных результатов, не переписывая промпт вручную. Ниже разберём, как устроен синтаксис, куда класть файлы и почему подстановки иногда не срабатывают.
Что такое wildcard и как работает механизм подстановки
Wildcard (подстановочный файл) — обычный текстовый файл в кодировке UTF-8, где каждая строка представляет один вариант значения. Например, файл eyes.txt может содержать строки blue eyes, green eyes, brown eyes. Когда в промпте встречается конструкция __eyes__, расширение выбирает одну из строк случайным образом.
Обработка происходит до того, как промпт попадает в модель. Это значит, что нейросеть видит уже готовый текст с подставленным значением, а сама конструкция с двойными подчёркиваниями никуда не передаётся. Выбор варианта зависит от сида: при фиксированном seed результат подстановки обычно воспроизводим, а при случайном сиде каждая генерация даст новую комбинацию.
Один промпт может содержать несколько wildcard-конструкций одновременно — например, __hair__, __eyes__, __dress__. Каждая из них раскрывается независимо, что даёт комбинаторный взрыв вариаций даже при небольших файлах.
Установка расширения Dynamic Prompts
Базовая версия AUTOMATIC1111 не понимает синтаксис wildcard из коробки — нужно расширение Dynamic Prompts. Устанавливается оно стандартным способом: вкладка Extensions → Install from URL, затем перезапуск интерфейса. После активации в настройках генерации появляется соответствующая секция, где функцию можно включить галочкой.
Для ComfyUI существуют отдельные ноды с аналогичной логикой — они подключают файл подстановок к текстовому вводу. Принцип тот же: путь к папке с wildcard-файлами указывается в настройках ноды, а синтаксис в промпте остаётся привычным.
⚠️ Внимание: после установки расширения обязательно полностью перезапустите WebUI, а не просто обновите страницу в браузере. Без перезапуска обработчик подстановок не загрузится, и конструкции
__name__попадут в генерацию как обычный текст.
Куда помещать файлы wildcard
Расширение ищет файлы в собственной папке wildcards внутри каталога расширения. Точный путь зависит от версии, поэтому надёжнее открыть папку через интерфейс или проверить настройки расширения. Файлы должны иметь расширение .txt и сохраняться в кодировке UTF-8 без BOM — иначе возможны проблемы с кириллицей и спецсимволами.
Поддерживаются вложенные папки. Если файл лежит в подкаталоге colors/warm.txt, обращение к нему выглядит как __colors/warm__. Это удобно для организации больших коллекций: отдельно цвета, отдельно позы, отдельно стили.
- 📁 Один файл — одна тематика: не смешивайте цвета глаз и стили одежды в одном списке.
- 📝 Одна строка — один вариант, без пустых строк в конце файла.
- 🔤 Имя файла без пробелов и спецсимволов — так конструкция вызова останется читаемой.
- 🗂 Группируйте связанные файлы по подпапкам для быстрого поиска.
Синтаксис и продвинутые возможности
Базовый вызов — двойные подчёркивания вокруг имени файла: __flowers__. Расширение Dynamic Prompts дополнительно поддерживает встроенный синтаксис вариантов без файлов: {red|green|blue} выберет один из перечисленных вариантов. Фигурные скобки и wildcard-файлы можно комбинировать в одном промпте.
Полезная возможность — количественный выбор. Конструкция вида {2$$red|green|blue|yellow} подставит сразу два случайных варианта из списка. Это работает для сцен, где нужно несколько элементов одного типа, например два цвета в градиенте.
Wildcard-файлы могут ссылаться друг на друга: строка внутри одного файла может содержать вызов __другой_файл__. Так строятся иерархические шаблоны — файл «персонаж» подтягивает файлы «причёска», «одежда» и «эмоция» автоматически.
Пример структуры wildcard-файла
Содержимое файла hair.txt может выглядеть так: long black hair / short blonde hair / curly red hair / silver twin tails. Каждая строка — отдельный вариант. При вызове __hair__ в промпте будет выбрана одна из строк.
Типичные ошибки и их решение
Самая частая жалоба — текст __name__ появляется на картинке или в метаданных как есть. Причины почти всегда одни и те же: расширение не активировано галочкой, файл с таким именем отсутствует в папке wildcard, либо в имени файла опечатка. Проверка занимает минуту: откройте папку подстановок и сверьте имя файла с конструкцией в промпте посимвольно.
Вторая типичная ситуация — подстановка работает, но результат не меняется между генерациями. Здесь проверьте сид: при зафиксированном значении seed выбор варианта тоже фиксируется. Установите сид в -1 (случайный), чтобы получать разные комбинации.
☑️ Wildcard не срабатывает — что проверить
⚠️ Внимание: имена wildcard-файлов чувствительны к регистру на Linux-системах — файл
Eyes.txtи вызов__eyes__не совпадут. На Windows это обычно не критично, но при переносе коллекции на сервер с Linux приводите имена к нижнему регистру.
Сравнение подходов к динамическим промптам
Wildcard — не единственный способ варьировать генерацию. В таблице сравним основные методы по удобству и сценариям применения.
| Метод | Сложность | Когда уместен |
|---|---|---|
| Wildcard-файлы | Низкая | Большие переиспользуемые списки вариантов |
| Синтаксис {a|b|c} | Низкая | Быстрый выбор из 2–5 вариантов прямо в промпте |
| Prompt matrix (X/Y/Z plot) | Средняя | Систематическое сравнение параметров |
| Ручное редактирование промпта | Низкая | Точечные одиночные эксперименты |
Для разовых тестов проще встроенный синтаксис с фигурными скобками. Файлы оправданы, когда список вариантов большой или используется в разных промптах — например, коллекция из сотни художественных стилей.
Практические сценарии использования
Где wildcard даёт максимум пользы? Первый сценарий — вариация персонажей: файлы с причёсками, цветами глаз, одеждой и эмоциями позволяют за один батч получить галерею разных образов при сохранении общего стиля промпта.
Второй сценарий — подбор стиля. Соберите в файл названия художественных техник или референсов, и генерация будет случайно перебирать их. Так быстрее находятся неожиданно удачные сочетания, которые вручную перебирать долго.
- 🎨 Тестирование модели: один промпт с wildcard по стилям показывает сильные и слабые стороны чекпоинта.
- 🖼 Генерация фонов: файлы с локациями, временем суток и погодой.
- 👗 Дизайн персонажей: комбинаторика элементов одежды и аксессуаров.
- 💡 Поиск вдохновения: случайные сочетания часто рождают идеи, которые не пришли бы в голову осознанно.
Начинайте с малого: создайте два-три файла по 5–10 строк и посмотрите, как меняются результаты. По мере накопления опыта коллекция будет расти естественным образом.
FAQ: частые вопросы о wildcard
Работают ли wildcard без расширения Dynamic Prompts?
В стандартной установке AUTOMATIC1111 — нет, нужно расширение. В некоторых форках и в ComfyUI обработка подстановок встроена или реализуется отдельными нодами, но синтаксис может отличаться — сверяйтесь с документацией вашего интерфейса.
Сколько строк можно поместить в один файл?
Жёсткого ограничения нет — файлы с сотнями и тысячами строк работают нормально. Учитывайте только, что при малом числе генераций редкие варианты могут просто не выпасть.
Можно ли использовать кириллицу в wildcard-файлах?
Технически да, если файл сохранён в UTF-8. Но большинство моделей Stable Diffusion обучены на английских описаниях, поэтому русские строки в промпте обычно дают слабый или непредсказуемый эффект.
Почему при фиксированном seed вариант всегда один и тот же?
Это ожидаемое поведение: сид определяет весь процесс генерации, включая выбор строки из wildcard-файла. Для разнообразия ставьте случайный сид (значение -1) или меняйте его вручную.
Можно ли комбинировать wildcard с весами токенов?
Да, конструкции вида (__subject__:1.2) работают — вес применится к подставленному значению. Также веса можно прописывать прямо в строках самого файла.