Altnamen wirksam machen und die XO-Runde drosseln
ALTNAMEN (Schadensbehebung): Bei der Umstellung heute Mittag starben fuenf laufende Teamlaeufe, weil sie ihren Modellnamen aus der Session mittrugen und der Router ihn nicht mehr kannte (Aktennotiz des XO an 42i/intern#1251). Das Feld "altnamen" war seit jeher deklariert und validiert, aber im Server NIE angewendet. Jetzt uebersetzt der Router alte Namen VOR ACL-Pruefung und Aufloesung; 20 Eintraege fuer die 2608-Reihe und die praefixlosen LiteLLM-Namen. DROSSELUNG der Runde (Andreas: Verbrauch senken). Gemessen am 07.09.: 32 Runden, 75-220 Zuege je Runde, 82k Kontext je Zug, 208 Mio. Token an einem Tag. - Ereignis-Paket 4 -> 2: der Aufwand waechst quadratisch mit der Zuglaenge, zwei Runden mit je 110 Zuegen kosten rund ein Viertel einer mit 220. Keine Zeitgrenze, nichts wird abgebrochen (Andreas 2026-09-03). - Prompt: die Rueckgabeformate von tool.sh stehen jetzt als Tabelle im Prompt -- mehrere Zuege gingen dafuer drauf, sie zu erraten. Dazu die Regel, Kommandos zu buendeln (214 der 1359 Bash-Aufrufe waren reine cd) und keine breiten Verzeichnis-Dumps (groesstes Ergebnis des Tages: ein ls -la mit 14k Zeichen). Nicht umgesetzt: die Vermutung, der XO fuehre delegierbare Arbeit selbst aus. Die Messung widerlegt sie -- die Bash-Aufrufe sind ueberwiegend tool.sh-Aufrufe (Tickets lesen, kommentieren, CI pruefen), also seine eigentliche Aufgabe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+24
-1
@@ -238,5 +238,28 @@
|
||||
},
|
||||
"_namen_doku": "Namensraeume: 42i/* = konfigurierte Aliasse (aliases); deizo/* = Modelle im Prod-RZ deizo (kira, fest); openrouter/<id>[:effort] = 1:1 an OpenRouter, Effort als reasoning.effort; alt/<id>[:effort] = guenstigste Alternative derselben Klasse (Intelligence, Coding, Agentic je >= 95 % der Referenz, Kontext >= 90 %, billiger), aufgeloest bei der ersten Anfrage und im 12h-Takt erneuert, OHNE Last-Probe; role/<name> = Rolle (rollen). Alles andere -> fallback (LiteLLM).",
|
||||
"anthropicModus": "alt",
|
||||
"_anthropic_doku": "Claude Code/Desktop schicken nackte IDs (claude-sonnet-5, claude-opus-5-20260723, claude-sonnet-4-5[1m]). Der Router normalisiert sie und bildet sie je anthropicModus auf alt/anthropic/<id> (Standard) oder openrouter/anthropic/<id> ab; ein Client-Effort (output_config.effort) wird als Stufe angehaengt. Rechte: die ACL prueft den abgebildeten Namen, also alt/* bzw. openrouter/*."
|
||||
"_anthropic_doku": "Claude Code/Desktop schicken nackte IDs (claude-sonnet-5, claude-opus-5-20260723, claude-sonnet-4-5[1m]). Der Router normalisiert sie und bildet sie je anthropicModus auf alt/anthropic/<id> (Standard) oder openrouter/anthropic/<id> ab; ein Client-Effort (output_config.effort) wird als Stufe angehaengt. Rechte: die ACL prueft den abgebildeten Namen, also alt/* bzw. openrouter/*.",
|
||||
"altnamen": {
|
||||
"42i/marvin-2608:none": "42i/marvin-2609:low",
|
||||
"42i/marvin-2608:low": "42i/marvin-2609:low",
|
||||
"42i/marvin-2608:medium": "42i/marvin-2609:medium",
|
||||
"42i/marvin-2608:high": "42i/marvin-2609:high",
|
||||
"42i/marvin-2608:extra": "42i/marvin-2609:high",
|
||||
"42i/marvin-2608:ultra": "42i/marvin-2609:max",
|
||||
"42i/marvin-2608-core:none": "42i/marvin-2609-core:none",
|
||||
"42i/marvin-2608-core:medium": "42i/marvin-2609-core:medium",
|
||||
"42i/marvin-2608-auto": "auto/allround:junior",
|
||||
"42i/marvin-2608-mass:none": "auto/mass:fast",
|
||||
"42i/marvin-2608-mass:medium": "auto/mass:fast",
|
||||
"42i/marvin-2608-mass": "auto/mass:fast",
|
||||
"marvin-tts": "42i/marvin-tts",
|
||||
"marvin-stt": "42i/marvin-stt",
|
||||
"marvin-tts-turbo": "42i/marvin-tts-turbo",
|
||||
"marvin-stt-turbo": "42i/marvin-stt-turbo",
|
||||
"marvin-embedding": "42i/marvin-embedding",
|
||||
"kira-reasoning": "deizo/kira-reasoning",
|
||||
"kira-stt": "deizo/kira-stt",
|
||||
"kira-tts": "deizo/kira-tts"
|
||||
},
|
||||
"_altnamen_doku": "Alte Modellnamen (LiteLLM-Zeit) auf heutige Aliasse. Eine laufende opencode- oder Claude-Sitzung traegt ihren Modellnamen bis zum Ende mit; verschwindet er waehrend des Laufs aus der Config, stirbt sie beim naechsten Zug. Am 2026-09-07 hat das fuenf Teamlaeufe gekostet (Lehre im Kommentar zu 42i/intern#1251). Die Uebersetzung greift VOR ACL-Pruefung und Aufloesung. Eintraege koennen weg, wenn sicher ist, dass niemand den alten Namen mehr traegt."
|
||||
}
|
||||
|
||||
+9
-1
@@ -99,7 +99,15 @@ function eigenerName(name: string): boolean {
|
||||
}
|
||||
|
||||
async function zielBestimmen(angefragtRoh: string, keyName: string, clientEffort: Effort | null = null): Promise<Ziel | Fehler> {
|
||||
const angefragt = anthropicName(angefragtRoh, clientEffort) ?? angefragtRoh;
|
||||
// Altnamen zuerst: eine laufende Sitzung traegt ihren Modellnamen bis zum
|
||||
// Ende mit. Verschwindet er waehrend des Laufs aus der Config, stirbt der
|
||||
// Lauf beim naechsten Zug an "Unbekanntes Modell" -- am 2026-09-07 hat genau
|
||||
// das fuenf Teamlaeufe gekostet (42i/intern#1251). Das Feld war deklariert,
|
||||
// aber nie angewendet; die Uebersetzung passiert VOR ACL und Aufloesung,
|
||||
// damit der alte Name sich in jeder Hinsicht wie der neue verhaelt.
|
||||
const ausAltname = config.altnamen?.[angefragtRoh];
|
||||
const roh = ausAltname ?? angefragtRoh;
|
||||
const angefragt = anthropicName(roh, clientEffort) ?? roh;
|
||||
if (!eigenerName(angefragt)) {
|
||||
if (config.fallback !== undefined) {
|
||||
const u = config.fallback.upstream;
|
||||
|
||||
Reference in New Issue
Block a user