diff --git a/backend/routers/gateway_proxy.py b/backend/routers/gateway_proxy.py index a822666..c7997d2 100644 --- a/backend/routers/gateway_proxy.py +++ b/backend/routers/gateway_proxy.py @@ -21,8 +21,33 @@ async def models(): # Lanes ganz oben einblenden, damit IDEs einfach „coding"/„chat" wählen können. lanes = [{"id": lane, "object": "model", "owned_by": "mc2-router", "description": _LANE_LABELS.get(lane, lane)} for lane in LANES] + # Kontextlänge je Modell mitliefern (aus der llama-swap-Config geparst). Ohne sie + # budgetieren Clients blind — Hermes-Subagents nahmen 256k an, schickten passende + # max_tokens und rissen damit den echten Server-Kontext (Radar-Lauf 02.07.). + # Rollen-Aliase (heavy/coder/hermes …) tauchen bei llama-swap NICHT als Einträge auf, + # Clients fragen aber genau damit an → als eigene Einträge einblenden. + ctx_map: dict[str, int] = {} + alias_entries: list[dict] = [] + try: + from services import llamaswap + for m in llamaswap.list_models(): + ctx = m.get("ctx") + if ctx: + for api_id in m.get("api_ids", []): + ctx_map[api_id] = ctx + for alias in m.get("aliases", []): + entry = {"id": alias, "object": "model", "owned_by": "mc2-alias", + "description": f"Alias für {m['name']}"} + if ctx: + entry["context_length"] = ctx + alias_entries.append(entry) + except Exception: + pass if isinstance(data, dict) and isinstance(data.get("data"), list): - data["data"] = lanes + data["data"] + for entry in data["data"]: + if (ctx := ctx_map.get(entry.get("id"))): + entry.setdefault("context_length", ctx) + data["data"] = lanes + alias_entries + data["data"] return JSONResponse(data, status_code=r.status_code) diff --git a/deploy/radar-prompt.md b/deploy/radar-prompt.md index d61c048..d756674 100644 --- a/deploy/radar-prompt.md +++ b/deploy/radar-prompt.md @@ -13,6 +13,9 @@ Web-Suche, FILTERT Marketing-Geschwätz aus und liefert dir nur eine Substanz-Zu (max. 5 Zeilen pro Komponente). Du konsolidierst am Ende. Erwähne im Endbericht nur, was Substanz hat — „nichts Nennenswertes" ist ein gültiges und gutes Ergebnis je Gruppe. +Scheitern Subagents wiederholt (z. B. Kontext-Fehler), recherchiere die betroffenen Gruppen +selbst sequenziell — der Report muss IMMER zustande kommen. + Task-Aufteilung (5 Subagents): 1. **Engine/Router:** llama.cpp (Vulkan, gfx1151/Strix Halo relevant!), llama-swap (mostlygeek) 2. **Agent/Runtime:** hermes-agent (NousResearch), Electron (Major-Sprünge), three-vrm/@pixiv