Support Assistent persona packs via git and local sync.
Replace assistent-personas overlay seed with assistent-extensions SFTP and an assistent: section in extensions.yaml so personalities install like other extensions without private URLs in the public repo. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+3
-3
@@ -79,7 +79,7 @@ gpu-rent up --yes --ollama
|
||||
| `gpu-rent ssh` | Оболочка на VM |
|
||||
| `gpu-rent seed-models` | Докачать новые строки Civitai-манифеста на живой диск |
|
||||
| `gpu-rent seed-extensions` | Доклонировать/обновить git-репы; restart swarmui |
|
||||
| `gpu-rent seed-personas` | Пуш `assistent-personas/` → overlay на VM (без полного up); также `search.jsonl` → FTS, если есть |
|
||||
| `gpu-rent seed-personas` | Пуш `assistent-extensions/` → `Assistent/extensions/` (+ `_base`); также `search.jsonl` → FTS, если есть |
|
||||
| `gpu-rent push` / `push-models` | Локальные деревья → VM |
|
||||
| `gpu-rent pull-output` | VM `Output/` → `./Output` |
|
||||
| `gpu-rent capture` / `capture all` | Инвентарь VM → merge **ссылок** в `models.yaml` + `extensions.yaml` (веса не качать) |
|
||||
@@ -151,7 +151,7 @@ Exit 0 → можно `up`. Exit 1 → причина в таблице / кра
|
||||
| `/assistent` | Сводка: extension + overlay + roles + memory + live API + hints + playbook |
|
||||
| `/assistent/diagnose` | То же + journal по умолчанию + session store meta |
|
||||
| `/assistent/extension` | DLL, Sqlite deps, Tab/Assets, git HEAD |
|
||||
| `/assistent/overlay` | personas на VM vs локальный `assistent-personas/` |
|
||||
| `/assistent/overlay` | personas/packs на VM vs локальный `assistent-extensions/` |
|
||||
| `/assistent/roles` | `ollama-roles.json` ↔ `/api/tags` (`default_chat`) |
|
||||
| `/assistent/memory` | `assistent.sqlite` + counts |
|
||||
| `/assistent/api` | `AssistentListPersonas/Models/Memory/Chats` через туннель (или SSH) |
|
||||
@@ -198,7 +198,7 @@ curl -sS -X DELETE "$BASE/assistent/session/$SID"
|
||||
# One-shot convenience (session + one chat + delete)
|
||||
curl -sS -X POST "$BASE/assistent/chat-eval" \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"message":"какие steps/cfg для turbo?","persona":"leonid","timeout":120}' \
|
||||
-d '{"message":"какие steps/cfg для turbo?","persona":"neutral","timeout":120}' \
|
||||
| jq '{ok,reply,patch,trace}'
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
| Civitai хост | Дефолт API `civitai.red` (полный каталог). `.com` — SFW-витрина, NSFW с неё часто 404. Ссылки `.com`/`.red`/`.green` в манифесте принимаем. 404 → один retry на второй хост. Один токен на оба домена |
|
||||
| Пул GPU | Перед `up`/`flavors` сканируем `SCAN_POOLS` (дефолт `ru-6,ru-7`) по compute URL. Сегменты `ru-6a/b/c` берём из Nova `availability_zones`, не отдельными пулами. Пресет размера `FLAVOR_SIZE_PRESET` (дефолт `cheap` = 1×GPU, min vCPU/RAM). Диск уже есть — AZ диска, не дешёвый чужой сегмент. Первый запуск — дешёвый SKU в сегменте, где есть карта из `FLAVOR_PREFERENCE`. `.env` автоматом не пишем |
|
||||
| Манифест моделей | `<repo>/models.yaml`, типы: checkpoint / lora / vae / embedding / controlnet / upscaler. В git только `models.example.yaml` |
|
||||
| Расширения | `<repo>/extensions.yaml`: git-репы `swarmui` → `src/Extensions`, `comfy` → DLNodes. Поле `requires: none\|ollama\|any-llm` фильтрует по `LLM_RUNTIME`. Пример: swarm-assistent с `requires: ollama`. Personas: `assistent-personas/` → overlay `Assistent/personas/<id>/` на `up` / `seed-personas` (не сносит UI-клоны) |
|
||||
| Расширения | `<repo>/extensions.yaml`: git-репы `swarmui` → `src/Extensions`, `comfy` → DLNodes, `assistent` → `Assistent/extensions`. Поле `requires: none\|ollama\|any-llm` фильтрует по `LLM_RUNTIME`. Пример: swarm-assistent с `requires: ollama`. Persona packs: также `assistent-extensions/` → SFTP на `up` / `seed-personas` (не сносит UI-клоны) |
|
||||
| Autocomplete | До первого старта: скачать word-list в `Data/Autocompletions`, прописать `DefaultUser.AutoComplete.Source`. На каждом `up` сверить GitHub blob sha и обновить файл, если изменился. Дефолт: `tags/danbooru.csv` из a1111-sd-webui-tagcomplete (как в доке SwarmUI) |
|
||||
| Доступ | Браузер на туннеле; MCP переключается на облако, пока оно живо; HTTP API SwarmUI через тот же туннель |
|
||||
| Preemptible | По умолчанию всегда. Обычный сервер — только `--no-spot` |
|
||||
|
||||
+16
-1
@@ -26,6 +26,7 @@ copy extensions.example.yaml extensions.yaml
|
||||
| --- | --- | --- |
|
||||
| `swarmui` | `/mnt/swarm_data/Extensions/<dir>` → `/opt/swarmui/src/Extensions/<dir>` | C# extension SwarmUI (класс `: Extension`). После рестарта подхватывается сам |
|
||||
| `comfy` | `/mnt/swarm_data/DLNodes/<dir>` → `…/ComfyUIBackend/DLNodes/<dir>` | Custom nodes ComfyUI (Python). `requirements.txt` ставит SwarmUI/Comfy при первом старте backend |
|
||||
| `assistent` | `/mnt/swarm_data/Assistent/extensions/<dir>/` | Persona pack (полки JSON + `assistent-pack.yaml`). Без рестарта C# — Assistent читает с диска |
|
||||
|
||||
Пустой манифест или его нет — ничего не клонируем, SwarmUI как из коробки. Это не связано с Civitai-токеном.
|
||||
|
||||
@@ -42,6 +43,11 @@ swarmui:
|
||||
- url: https://github.com/example/SwarmUI-SomeExt.git
|
||||
ref: main
|
||||
dir: SomeExt
|
||||
assistent: []
|
||||
# - url: https://example.com/org/some-persona-pack.git
|
||||
# ref: main
|
||||
# dir: some-persona-pack
|
||||
# requires: ollama
|
||||
comfy:
|
||||
- url: https://github.com/example/ComfyUI-Something.git
|
||||
ref: v1.2.0
|
||||
@@ -53,7 +59,16 @@ comfy:
|
||||
| `ollama` | только при `LLM_RUNTIME=ollama` |
|
||||
| `any-llm` | при `LLM_RUNTIME=ollama` (сейчас единственный LLM-рантайм; llama.cpp снят) |
|
||||
|
||||
Строки с несовпавшим `requires` пропускаются (лог), остальные ставятся как обычно. В `extensions.example.yaml` по умолчанию — **swarm-assistent** с `requires: ollama` (чат + доска Generate/Ref + persona/Cards, ветка `main`). После `seed-extensions` + рестарта SwarmUI подтягивается текущий `main` (с **0.13.1+**: `CopyLocalLockFileAssemblies` копирует `Microsoft.Data.Sqlite` + `SQLitePCLRaw*` рядом с extension DLL — иначе ListMemory/ListChats/SaveChat падают; с **0.10.11**: default chat = `default_chat` / старший тег, warm той же моделью). На `up` (и `gpu-rent seed-personas`) сидится папка `assistent-personas/` → overlay `/mnt/swarm_data/Assistent/personas/<id>/*.json`, плюс `_base/assistant.json` (`default_persona`, опционально `num_ctx` с GPU tier). Seed **не** удаляет overlay-личности, созданные в UI. Legacy `personas.json` / yaml-prompt больше не пишутся.
|
||||
Строки с несовпавшим `requires` пропускаются (лог), остальные ставятся как обычно. В `extensions.example.yaml` по умолчанию — **swarm-assistent** с `requires: ollama` (чат + доска Generate/Ref + persona/Cards, ветка `main`). После `seed-extensions` + рестарта SwarmUI подтягивается текущий `main` (с **0.13.1+**: `CopyLocalLockFileAssemblies` копирует `Microsoft.Data.Sqlite` + `SQLitePCLRaw*` рядом с extension DLL — иначе ListMemory/ListChats/SaveChat падают; с **0.10.11**: default chat = `default_chat` / старший тег, warm той же моделью).
|
||||
|
||||
### Persona packs
|
||||
|
||||
Bundled в swarm-assistent: `neutral` (Нормальный), `aggressive`, `dreamer`. Дополнительные личности — git-паки:
|
||||
|
||||
1. **Конфиг** — секция `assistent:` в `extensions.yaml` (clone на VM в `Assistent/extensions/<dir>/`).
|
||||
2. **Локально** — клоны в `assistent-extensions/<dir>/` (gitignored). На `up` / `seed-personas` / `push` уезжают SFTP **без** `.git` в тот же dest. Приватные паки можно держать только так — без URL в yaml (capture их не увидит).
|
||||
|
||||
Формат пака: `assistent-pack.yaml` (`kind: persona`, `id: …`) + полки JSON в корне (или `personas/<id>/` для мульти-пака). На `up` также пишется `_base/assistant.json` (`default_persona: neutral`, опционально `num_ctx` с GPU tier). Seed **не** удаляет overlay-личности, созданные в UI. Legacy `assistent-personas/` / `personas.json` больше не сидятся.
|
||||
|
||||
Если есть `datasets/civitai/search.jsonl`, на том же шаге пушится FTS-индекс → `/mnt/swarm_data/Assistent/civitai-examples.jsonl` ([datasets/README](../datasets/README.md)). Диагностика Assistent: Debug API `/assistent/*` ([cli.md](cli.md)).
|
||||
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ Unit `gpu-rent-ollama` читает `/mnt/swarm_data/.gpu-rent-gpu.json`:
|
||||
|
||||
\*Flash на Ampere+ (compute ≥ 8.0). `NUM_PARALLEL=2`, `MAX_LOADED_MODELS=2` (chat VL + memory embed). Memory models use `use: memory` and a CPU Modelfile (`num_gpu 0`) so embed does not steal VRAM from the chat model. Ollama default `num_ctx` is 4096; we set `OLLAMA_CONTEXT_LENGTH` so Assistent + vision fits. Mid/high keep-alive is **5m** because Assistent parks the chat model before Generate (`AssistentParkLlm`) and warms after. Env: `/mnt/swarm_data/.gpu-rent-ollama.env`.
|
||||
|
||||
Personas: laptop `assistent-personas/` → on `up` / `seed-personas` overlay folders under `/mnt/swarm_data/Assistent/personas/<id>/` (+ `_base/assistant.json` with `default_persona` / `num_ctx`). Shelves are short JSON files (not a long prompt). See [extensions.md](extensions.md). Optional FTS examples: [datasets/README](../datasets/README.md) (`search.jsonl` → `Assistent/civitai-examples.jsonl`). Journal: `gpu-rent logs -u ollama`.
|
||||
Personas: bundled `neutral` / `aggressive` / `dreamer` in swarm-assistent; extra packs via `extensions.yaml` `assistent:` or laptop `assistent-extensions/` → `Assistent/extensions/` on `up` / `seed-personas` / `push` (+ `_base/assistant.json` with `default_persona` / `num_ctx`). See [extensions.md](extensions.md). Optional FTS examples: [datasets/README](../datasets/README.md) (`search.jsonl` → `Assistent/civitai-examples.jsonl`). Journal: `gpu-rent logs -u ollama`.
|
||||
|
||||
`ollama-models.yaml` entries:
|
||||
|
||||
|
||||
@@ -19,18 +19,18 @@
|
||||
|
||||
Веса, картинки, воркфлоу в git не коммитить (`.gitignore` + `.gitkeep`).
|
||||
|
||||
## Seed overlay (не `gpu-rent push`)
|
||||
## Seed overlay (не только `gpu-rent push`)
|
||||
|
||||
Другой механизм — не SHA256-синк четырёх деревьев выше:
|
||||
Другой механизм — не SHA256-синк Models/Wildcards/workflows:
|
||||
|
||||
| Локально | На VM | Когда |
|
||||
| --- | --- | --- |
|
||||
| `assistent-personas/` | `/mnt/swarm_data/Assistent/personas/<id>/` | `up` / `seed-personas`; см. [extensions.md](extensions.md) |
|
||||
| `assistent-extensions/<pack>/` | `/mnt/swarm_data/Assistent/extensions/<pack>/` | `up` / `seed-personas` / `push` (без `.git`); см. [extensions.md](extensions.md) |
|
||||
| `datasets/civitai/search.jsonl` | `Assistent/civitai-examples.jsonl` | `up` / `seed-personas`, если файл есть; см. [datasets/README](../datasets/README.md) |
|
||||
|
||||
## Push (Models / Wildcards / CustomWorkflows)
|
||||
## Push (Models / Wildcards / CustomWorkflows / packs)
|
||||
|
||||
Как у моделей: нет содержимого кроме README/`.gitkeep` — skip. Новый или изменённый файл — SFTP. Метадата рядом с весами едет парой. Команда на все три дерева: `gpu-rent push`.
|
||||
Как у моделей: нет содержимого кроме README/`.gitkeep` — skip. Новый или изменённый файл — SFTP. Метадата рядом с весами едет парой. Команда: `gpu-rent push` (также сидит persona-паки).
|
||||
|
||||
Wildcards: `.txt` (одна строка — один вариант), как в доке SwarmUI `Data/Wildcards`.
|
||||
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ copy models.example.yaml models.yaml
|
||||
Опционально позже (не нужно для первой картинки):
|
||||
|
||||
- `SELECTEL_API_TOKEN` (X-Token панели) + `gpu-rent watchdog install` — toast по балансу ₽; см. [cli.md](cli.md) / [decisions.md](decisions.md).
|
||||
- `copy assistent-personas.example assistent-personas` — overlay personas; см. [extensions.md](extensions.md).
|
||||
- `copy assistent-extensions.example assistent-extensions` — persona packs; см. [extensions.md](extensions.md).
|
||||
- `.\civitai-dataset.bat` — scrape метаданных Krea2 → Assistent FTS; см. [datasets/README](../datasets/README.md).
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user