gpu-rent now writes personas/<id>/ on the VM (not legacy personas.json), adds seed-personas/doctor checks, and shortens mid/high keep-alive now that Assistent parks the LLM before Generate. Co-authored-by: Cursor <cursoragent@cursor.com>
99 lines
5.9 KiB
Markdown
99 lines
5.9 KiB
Markdown
# Autocomplete промптов SwarmUI
|
||
|
||
Официальная инструкция: [docs/Features/Autocompletions.md](https://github.com/mcmonkeyprojects/SwarmUI/blob/master/docs/Features/Autocompletions.md).
|
||
|
||
**По умолчанию включено** (`AUTOCOMPLETE_ENABLED=true`): на bootstrap CLI качает `danbooru.csv` и прописывает источник в Settings **до** первого старта SwarmUI. Ничего руками делать не нужно.
|
||
|
||
Выключить: `AUTOCOMPLETE_ENABLED=false` в `.env`.
|
||
|
||
## Поведение gpu-rent
|
||
|
||
| Момент | Действие |
|
||
| --- | --- |
|
||
| Первый диск / файла ещё нет | Скачать с GitHub на VM в `/mnt/swarm_data/Data/Autocompletions/<filename>`. После `InstallConfirmWS` прописать `DefaultUser.AutoComplete.Source` (установщик затирает Settings) и при необходимости перезапустить SwarmUI |
|
||
| Каждый последующий `up` (диск уже есть) | Спросить GitHub blob `sha` того же пути. Если sha изменился — скачать заново, заменить файл. Если `Source` в Settings пустой/`\\x` — снова прописать filename (не трогать, если пользователь выбрал другой файл). `systemctl restart swarmui` если csv или Source изменились |
|
||
| `AUTOCOMPLETE_ENABLED=false` или URL пуст | Ничего не качать, стоковый SwarmUI (только синтаксис `<…>`, без booru-тегов) |
|
||
|
||
Это **не** одноразовый seed как модели: список тегов на GitHub обновляют. Проверка версии — часть каждого `up`, пока есть SSH.
|
||
|
||
Файл маленький (danbooru.csv ≈ 3–4 MB). Killer из‑за него не откладываем, но на первом bootstrap качаем **до** старта UI, вместе с extensions.
|
||
|
||
Swarm Assistent индексирует тот же csv в FTS-таблицу `tags` внутри `Assistent/memory/assistent.sqlite` (без эмбедов). Первый чат после смены sha занимает несколько секунд; дальше `lookup_tags` ищет канон/алиасы. В `memory_hits` csv не попадает.
|
||
|
||
## Откуда файл
|
||
|
||
Дефолт — то, на что ссылается сама документация 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
|
||
```
|
||
|
||
На data volume: `/mnt/swarm_data/Data/Autocompletions/danbooru.csv` (bind → `/opt/swarmui/Data/…`).
|
||
|
||
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), пока SwarmUI ещё не стартовал:
|
||
|
||
```text
|
||
DefaultUser:
|
||
AutoComplete:
|
||
Source: danbooru.csv
|
||
EscapeParens: true
|
||
```
|
||
|
||
`Source` — имя файла **относительно** `Data/Autocompletions`, как в UI `AutoCompletionsSource`.
|
||
|
||
`InstallConfirmWS` перезаписывает `Settings.fds`, поэтому gpu-rent проставляет `Source` **после** первого Comfy-install, не только до старта. Если `Source` уже непустой (пользователь выбрал другой csv) — не трогаем. Пустой / `\x` / нет ключа — пишем `danbooru.csv` (или `AUTOCOMPLETE_FILENAME`).
|
||
|
||
После замены csv или Source на уже живой 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).
|