E4-Haertung: /v1/models liefert context_length + Alias-Eintraege (heavy/coder/...)
Radar-Erstlauf-Lehre: Hermes-Subagents fanden keine Kontextlaenge (llama-swap listet nur kanonische Namen, ohne Metadaten), nahmen 256k an und rissen mit ihren max_tokens den Server-Kontext. Gateway blendet jetzt Rollen-Aliase als Eintraege ein und liefert context_length aus der geparsten llama-swap-Config. Delegation per hermes config auf Verdikt gesetzt (max_concurrent_children 2, max_spawn_depth 1). Radar-Prompt: Fallback "sequenziell selbst recherchieren, Report muss IMMER kommen". Erstlauf-Ergebnis: Report wurde an Telegram zugestellt (Last run ok). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,8 +21,33 @@ async def models():
|
|||||||
# Lanes ganz oben einblenden, damit IDEs einfach „coding"/„chat" wählen können.
|
# Lanes ganz oben einblenden, damit IDEs einfach „coding"/„chat" wählen können.
|
||||||
lanes = [{"id": lane, "object": "model", "owned_by": "mc2-router",
|
lanes = [{"id": lane, "object": "model", "owned_by": "mc2-router",
|
||||||
"description": _LANE_LABELS.get(lane, lane)} for lane in LANES]
|
"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):
|
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)
|
return JSONResponse(data, status_code=r.status_code)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
(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.
|
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):
|
Task-Aufteilung (5 Subagents):
|
||||||
1. **Engine/Router:** llama.cpp (Vulkan, gfx1151/Strix Halo relevant!), llama-swap (mostlygeek)
|
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
|
2. **Agent/Runtime:** hermes-agent (NousResearch), Electron (Major-Sprünge), three-vrm/@pixiv
|
||||||
|
|||||||
Reference in New Issue
Block a user