- Added support for a new extension, `swarm-assistent`, in `extensions.example.yaml` with a requirement for `ollama`. - Enhanced the README.md to clarify the setup process and provide a quick start guide for using extensions. - Updated documentation in `llm.md` to reflect the opt-in nature of LLM support and provide clearer instructions for enabling it. - Improved the `autocomplete.md` to detail the automatic setup of word lists during the initial launch. - Revised `cli.md` to include new commands and options related to LLM runtime handling and extension management. - Enhanced the `spike-notes.md` to guide users through the first live run with a focus on LLM integration.
97 lines
5.2 KiB
Markdown
97 lines
5.2 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>`. Прописать `DefaultUser.AutoComplete.Source` в `Settings.fds` **до** первого старта SwarmUI |
|
||
| Каждый последующий `up` (диск уже есть) | Спросить GitHub blob `sha` того же пути. Если sha изменился — скачать заново, заменить файл, `systemctl restart swarmui` если UI уже крутится |
|
||
| `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
|
||
```
|
||
|
||
На 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`.
|
||
|
||
Если `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).
|