Expose ollama-roles default_chat for Assistent senior model default.

Write preferred chat tag into Assistent/ollama-roles.json so UI and warmup align with manifest default: true.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-22 03:50:58 +03:00
co-authored by Cursor
parent 3620ac2b5e
commit d934fc9366
4 changed files with 10 additions and 5 deletions
+1 -1
View File
@@ -53,7 +53,7 @@ comfy:
| `ollama` | только при `LLM_RUNTIME=ollama` |
| `any-llm` | при `LLM_RUNTIME=ollama` |
Строки с несовпавшим `requires` пропускаются (лог), остальные ставятся как обычно. В `extensions.example.yaml` по умолчанию — **swarm-assistent** с `requires: ollama` (чат + доска Generate/Ref + persona/Cards, ветка `main`). После `seed-extensions` + рестарта SwarmUI подтягивается текущий `main` (с **0.10.8**: Cyrillic intent, park LLM opt-in, persona≠user name, Civitai без пустого query). На `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.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 больше не пишутся.
В git репозитория gpu-rent не коммитить рабочий список с лишними приватными URL сверх примера.
+2 -2
View File
@@ -96,7 +96,7 @@ Qwen3-VL (`huihui_ai/qwen3-vl-abliterated:…`) требует **Ollama ≥ 0.12
Рекомендуемый пресет — **abliterated Qwen3-VL Instruct**; light / text / big пока Qwen2.5. Официальные censored-теги (`qwen2.5vl:…`) в меню нет.
`default: true` в yaml — preferred в логе; pull идёт по всему списку.
`default: true` в yaml — preferred в логе и в `Assistent/ollama-roles.json``default_chat` (Assistent UI + warmup); pull идёт по всему списку.
---
@@ -127,7 +127,7 @@ Personas: laptop `assistent-personas/` → on `up` / `seed-personas` overlay fol
use: memory
```
Roles are written to `/mnt/swarm_data/Assistent/ollama-roles.json` for the Assistent extension (chat select vs memory select).
Roles are written to `/mnt/swarm_data/Assistent/ollama-roles.json` for the Assistent extension (`chat` / `memory` lists + `default_chat` for UI default and warmup).
---
+6 -2
View File
@@ -182,10 +182,14 @@ def preferred_ollama_model(path: Path) -> str | None:
return entries[0].name if entries else None
def ollama_roles_payload(entries: list[OllamaModelEntry]) -> dict[str, list[str]]:
def ollama_roles_payload(entries: list[OllamaModelEntry]) -> dict[str, list[str] | str | None]:
"""Sidecar for Assistent: chat/memory lists + preferred default_chat (manifest default: true)."""
chat = [e.name for e in entries if e.use == "chat"]
memory = [e.name for e in entries if e.use == "memory"]
return {"chat": chat, "memory": memory}
preferred = next((e.name for e in entries if e.use == "chat" and e.default), None)
if preferred is None and chat:
preferred = chat[0]
return {"chat": chat, "memory": memory, "default_chat": preferred}
def _ollama_ps_names(payload: object) -> set[str]:
+1
View File
@@ -33,6 +33,7 @@ models:
roles = ollama_roles_payload(entries)
assert roles["chat"] == ["chat-model:7b"]
assert roles["memory"] == ["nomic-embed-text"]
assert roles["default_chat"] == "chat-model:7b"
def test_ensure_memory_appended():