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>
Teil 1: VoiceLatencyCard auf dem Dashboard (GET /api/voice/metrics, C2) —
zeigt STT/Vision/Chat-TTFB/TTS mit p50/p95/last + count.
Teil 2: UI-editierbare Routing-Policy. Neuer routing_policy.py (hot-reload JSON
unter MODELS_DIR/mc2-routing.json, Env=Defaults, atomarer Write, Validierung).
router_logic, gateway_proxy und gateway.routing_summary lesen jetzt live via
load_policy(); routing_summary ist lane-bewusst (chat/coding statt altem auto).
Neue Endpoints GET/PUT /api/routing/policy.
Teil 3: LaneEditor.tsx als ZONE im Cockpit (chat/coding-Aliase + Schwellen +
fast_no_think, Speichern/Default-je-Feld); Gateway-Node zeigt die Lanes.
Verifiziert: npm run build (tsc strict) clean, FastAPI TestClient (GET/PUT,
Validierung, Persistenz, Hot-reload durch die API), venv-Smoke (Routing).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Der :9001/v1-Gateway bietet zwei virtuelle Modelle an, die der Router auf echte
Modelle abbildet:
- coding → coder (Standard) · heavy (riesiger/architektonischer Kontext) ·
fast (triviale Nicht-Code-Kurzfrage)
- chat → fast/heavy (= bisheriges model:auto, weiter als Alias unterstützt)
router_logic.choose_for_lane() kapselt die Lane-Logik (Code-Indikatoren DE+EN,
damit echte Coding-Anfragen nie auf fast abrutschen). gateway_proxy routet die
Lane-Namen und listet sie in /v1/models, sodass IDEs einfach "coding" wählen.
Lucy/Hermes (:8642) bleibt unberührt — andere Ebene.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
LiteLLM baut auf Python 3.14 nicht (orjson-Pin ohne cp314-Wheel). Stattdessen
eingebauter Gateway in MC2: routers/gateway_proxy.py (/v1/chat/completions,
/completions, /models) + services/router_logic.py (Komplexitaets-Routing
fast<->heavy, Streaming-Passthrough). gateway.py/routing.py/connect.py auf
builtin umgestellt (Endpunkt = MC :PORT/v1). Gleicher OpenAI-Vertrag,
spaeter gegen LiteLLM austauschbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>