Files
gpu-rent/docs/autocomplete.md
T
Leonid Pershin f437cd0373 Update documentation and CLI behavior for GPU management
- Clarified the behavior of `Ctrl+C` and `Ctrl+D` in the README and other documentation, specifying that `Ctrl+C` only stops the tunnel while keeping the GPU active, and `Ctrl+D` stops the GPU while preserving disk data.
- Enhanced the CLI documentation to reflect these changes, ensuring users understand the implications of these commands during GPU operations.
- Improved the handling of data bindings and remounting logic in the codebase to prevent issues with empty model tabs in the UI.
- Added tests to validate the new command behaviors and ensure proper documentation alignment.
2026-08-21 13:25:55 +03:00

97 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 ≈ 34 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
```
На 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).