first commit
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# Autocomplete промптов SwarmUI
|
||||
|
||||
Официальная инструкция: [docs/Features/Autocompletions.md](https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Autocompletions.md).
|
||||
|
||||
Нужен word-list (`.csv` / `.txt`) в `Data/Autocompletions` и выбранный источник в настройках пользователя. Без файла в UI нечего выбирать.
|
||||
|
||||
## Поведение gpu-rent
|
||||
|
||||
| Момент | Действие |
|
||||
| --- | --- |
|
||||
| Первый диск / файла ещё нет | Скачать с GitHub на VM в `/mnt/swarm_data/Data/Autocompletions/<filename>`. Прописать `DefaultUser.AutoComplete.Source` в `Settings.fds` **до** первого старта контейнера |
|
||||
| Каждый последующий `up` (диск уже есть) | Спросить GitHub blob `sha` того же пути. Если sha изменился — скачать заново, заменить файл, перезапустить контейнер SwarmUI если он уже крутится |
|
||||
| `AUTOCOMPLETE_ENABLED=false` или URL пуст | Ничего не качать, стоковый SwarmUI (только синтаксис `<…>`, без booru-тегов) |
|
||||
|
||||
Это **не** одноразовый seed как модели: список тегов на GitHub обновляют. Проверка версии — часть каждого `up`, пока есть SSH.
|
||||
|
||||
Файл маленький (danbooru.csv ≈ 3–4 MB). Killer из‑за него не откладываем, но на первом bootstrap качаем **до** старта UI, вместе с extensions.
|
||||
|
||||
## Откуда файл
|
||||
|
||||
Дефолт — то, на что ссылается сама документация SwarmUI:
|
||||
|
||||
- репозиторий [DominikDoom/a1111-sd-webui-tagcomplete](https://github.com/DominikDoom/a1111-sd-webui-tagcomplete/tree/main/tags)
|
||||
- путь `tags/danbooru.csv`
|
||||
- raw: `https://raw.githubusercontent.com/DominikDoom/a1111-sd-webui-tagcomplete/main/tags/danbooru.csv`
|
||||
|
||||
Альтернативы из той же папки (`e621.csv`, `danbooru_e621_merged.csv`, …) или релизы [BetaDoggo/danbooru-tag-list](https://github.com/BetaDoggo/danbooru-tag-list/releases) — через конфиг, не хардкод в коде кроме дефолта.
|
||||
|
||||
## Куда класть
|
||||
|
||||
На data volume (уже примонтирован как `/SwarmUI/Data`):
|
||||
|
||||
```text
|
||||
/mnt/swarm_data/Data/Autocompletions/danbooru.csv
|
||||
/mnt/swarm_data/Data/Autocompletions/danbooru.csv.gpu-rent-meta.json
|
||||
```
|
||||
|
||||
В контейнере: `/SwarmUI/Data/Autocompletions/danbooru.csv`.
|
||||
|
||||
Sidecar meta (не отдавать в Output):
|
||||
|
||||
```json
|
||||
{
|
||||
"repo": "DominikDoom/a1111-sd-webui-tagcomplete",
|
||||
"path": "tags/danbooru.csv",
|
||||
"ref": "main",
|
||||
"github_blob_sha": "7a3cba59…",
|
||||
"filename": "danbooru.csv",
|
||||
"fetched_at": "2026-08-21T00:00:00Z"
|
||||
}
|
||||
```
|
||||
|
||||
## Как узнать, что файл новый
|
||||
|
||||
Не сравнивать «дату файла на диске». GitHub Contents API:
|
||||
|
||||
```http
|
||||
GET https://api.github.com/repos/{repo}/contents/{path}?ref={ref}
|
||||
```
|
||||
|
||||
В ответе поле `sha` — blob git. Сравнить с `github_blob_sha` в sidecar. Совпало → ничего не качать. Другое → GET `download_url` (или raw), атомарно заменить файл, обновить sidecar.
|
||||
|
||||
Без токена GitHub лимит 60 запросов/час с IP VM — на один `up` хватает. Если 403 rate limit — пропустить обновление, не валить `up`.
|
||||
|
||||
Для URL не с GitHub (произвольный raw): `HEAD`/`GET` с `If-None-Match` / `Last-Modified`, хранить ETag в sidecar.
|
||||
|
||||
## Настройки SwarmUI до первого запуска
|
||||
|
||||
Положить/дописать в `/mnt/swarm_data/Data/Settings.fds` (Frenetic Data Syntax), пока контейнер ещё не стартовал:
|
||||
|
||||
```text
|
||||
DefaultUser:
|
||||
AutoComplete:
|
||||
Source: danbooru.csv
|
||||
EscapeParens: true
|
||||
```
|
||||
|
||||
`Source` — имя файла **относительно** `Data/Autocompletions`, как в UI `AutoCompletionsSource`.
|
||||
|
||||
Если `Settings.fds` уже есть (повторный диск) и пользователь сменил список в UI — **не** перезаписывать `Source` на каждом `up`. Ставить Source только когда он пустой или мы его ещё ни разу не ставили (флаг в meta `settings_applied: true`).
|
||||
|
||||
После замены csv на уже живой VM: `systemctl restart swarmui` (хелпер `Reload()` при старте перечитает каталог).
|
||||
|
||||
## Конфиг
|
||||
|
||||
```env
|
||||
AUTOCOMPLETE_ENABLED=true
|
||||
AUTOCOMPLETE_GITHUB_REPO=DominikDoom/a1111-sd-webui-tagcomplete
|
||||
AUTOCOMPLETE_GITHUB_PATH=tags/danbooru.csv
|
||||
AUTOCOMPLETE_GITHUB_REF=main
|
||||
AUTOCOMPLETE_FILENAME=danbooru.csv
|
||||
```
|
||||
|
||||
Или один `AUTOCOMPLETE_URL=` для raw без GitHub sha (тогда версия по ETag).
|
||||
Reference in New Issue
Block a user