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:
2026-09-07 14:05:35 +02:00
committed by andreas
co-authored by Claude Opus 5
parent 32c54439c8
commit 0ecf90e152
2 changed files with 33 additions and 2 deletions
+24 -1
View File
@@ -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
View File
@@ -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;