feat(llm): Diagnostic zeigt, welches Modell gerade in der Karte liegt

Die Flotte listete "qwen3-4b, qwen3-8b" — das sind die Modelle, die die Box
fahren KANN (llama-swap /v1/models), nicht die geladenen. Ohne groups-Config
liegt immer nur eins in der Karte; ein anderes anzufragen entlaedt es
(gegen llama-swap ausprobiert: A laden, B anfragen → A unloaded).

Der Adapter fragt jetzt llama-swap /running und schickt das Ergebnis in jedem
worker_ping (10 s) und im worker_hello mit; nach einem Modellwechsel sofort.
None = llama-swap nicht erreichbar, [] = nichts geladen — die Anzeige
unterscheidet das ("geladen: ?" vs. "keins geladen").

Diagnostic: das geladene Modell gruen mit "● geladen", die anderen grau mit
Hinweis, dass sie beim ersten Aufruf laden und das geladene verdraengen.

"GPU void": die LLM-Zeile zeigt jetzt LLM_GPU (die Karte von llama-swap) statt
der NVIDIA_VISIBLE_DEVICES des Adapters, die mit der Modell-Karte nichts zu
tun hat.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-18 15:40:17 +02:00
co-authored by Claude Opus 5.5
parent 864237ff2c
commit 89cb3a765b
3 changed files with 56 additions and 7 deletions
+4
View File
@@ -1260,6 +1260,9 @@ function connectRVS(forcePlain) {
instanceId: p.instanceId, service: p.service || "",
node: p.node || "", gpus: p.gpus || "", model: p.model || "",
models: Array.isArray(p.models) ? p.models : (p.model ? [p.model] : []),
// Was GERADE in der Karte liegt (nur llm, aus llama-swap /running).
// null = Box konnte llama-swap nicht fragen, [] = nichts geladen.
loaded: Array.isArray(p.loaded) ? p.loaded : (prev.loaded ?? null),
// OpenAI-Endpunkt (nur llm-Worker): Port/Bind kommen aus der .env der
// Box, der Key wird NIE uebertragen — nur ob einer gesetzt ist und ob
// die .env ihn vorgibt (dann ist das Feld hier schreibgeschuetzt).
@@ -1282,6 +1285,7 @@ function connectRVS(forcePlain) {
workers.set(p.instanceId, w);
}
w.busy = !!p.busy;
if ("loaded" in p) w.loaded = Array.isArray(p.loaded) ? p.loaded : null;
w.last_seen = Date.now();
broadcastWorkers();
}