Fix: "Modelle finden" bevorzugt faehigste passende Modelle (kein Downgrade) + Rollen-Farben zentral
- discover.rank_runnable: rankt jetzt fit-level > params_b(desc) > downloads -> fuer die 128GB-Box wird das faehigste passende (MoE-)Modell empfohlen statt kleiner Populaer-Modelle. Top-4-Anzeige nutzt dasselbe Ranking. - maintenance.model_upgrades: schlaegt KEIN Downgrade mehr vor (rec.params_b >= installiert*0.95). Behebt: fast 35B-A3B -> 4B wurde faelschlich als Upgrade angeboten. - Frontend: Rollen-Farb-Mapping zentralisiert in ModelBadges (ROLE_TONE/roleTone); Cockpit/RolesCard/ActiveModelsCard nutzen es statt eigener Duplikate. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -164,6 +164,12 @@ def model_upgrades() -> list[dict]:
|
||||
|
||||
installed = llamaswap.list_models()
|
||||
active_roles = {m["role"] for m in installed if m.get("role")}
|
||||
# Größtes installiertes Modell je Rolle (params_b) — Basis für „kein Downgrade".
|
||||
inst_params: dict[str, float] = {}
|
||||
for m in installed:
|
||||
r, pb = m.get("role"), (m.get("capabilities") or {}).get("params_b")
|
||||
if r and pb:
|
||||
inst_params[r] = max(inst_params.get(r, 0.0), float(pb))
|
||||
|
||||
cmds = " ".join(str(s.get("cmd", "")).lower()
|
||||
for s in (llamaswap.read_config().get("models") or {}).values())
|
||||
@@ -178,6 +184,14 @@ def model_upgrades() -> list[dict]:
|
||||
rec = c.get("recommended")
|
||||
if not rec:
|
||||
continue
|
||||
# KEIN Downgrade: Empfehlung nur, wenn sie mind. so „groß"/fähig ist wie das
|
||||
# installierte Modell der Rolle (verhindert z.B. fast 35B-A3B → 4B).
|
||||
rec_model = next((x for x in c.get("models", []) if x.get("repo") == rec), None)
|
||||
rec_params = float((rec_model or {}).get("params_b") or 0.0)
|
||||
cur = inst_params.get(role, 0.0)
|
||||
if cur and rec_params and rec_params < cur * 0.95:
|
||||
continue
|
||||
|
||||
base = rec.split("/")[-1].lower()
|
||||
stem = base[:-5] if base.endswith("-gguf") else base
|
||||
if base in cmds or (stem and stem in cmds):
|
||||
|
||||
Reference in New Issue
Block a user