Das 64K-Output-Gate war global und trieb auto/mass:fast auf solar-pro4
(0,42 statt 0,27 $/1M), weil ling-3.0-flash mit 32768 Output-Token
durchfiel. Gemessen 09.09.: 1.415 Masse-Requests, 1.146 davon unter 100
Completion-Token — das Gate verfehlte dort seinen Zweck. Jetzt kann je
Schwelle-Profil minOutput gesetzt werden (Default 65536);
auto/mass:fast laeuft mit 32768, max_output unbekannt bleibt abgelehnt.
Dazu role/coder -> auto/coding:junior (ACL fuer persona-spark), damit
Code-Arbeit nicht ueber role/worker in die Masse faellt; der
engineer-Agent der Mac-opencode.json wechselt auf role/coder.
Refs #1283
Andreas setzt Jessie fuer die Show-Unterstuetzung (17.9., Kassel) bis auf
Weiteres auf role/leader. auto/coding:junior ergaenzt, damit die
auto/mass-Ausweichkette (mass -> mass:fast -> coding:junior) durch die
ACL-Pruefung kommt, statt im letzten Glied still 403 zu laufen.
Ausgerollt auf llm.lan mit Backup *.bak-show, Router-Neustart, geprueft:
role/leader loest mit persona-jessie auf glm-5.3-flash auf.
auto/mass:fast war als Endstation ohne Rückfall: ling-3.0-flash fiel
am 2026-09-07 nachts aus (5x 502 nach ~270 s hängendem Upstream,
117x 429), und der bisherige Ausweich griff nur bei fetch-Fehlern und
nur für fest-Ziele. Jetzt darf auch ein Schwelle-Alias ausweichen,
und der Ausweich löst bei 429/5xx aus — bevor das erste Byte an den
Client geht, also gefahrlos wiederholbar, weiterhin nur einmal.
auto/mass:fast weicht auf auto/coding:junior aus (ling erfüllt deren
Schwellen strukturell nie, der Rückfall landet also garantiert auf
einem tauglichen Modell). Die Container-Personas bekommen die
Kettenziele in die ACL — ohne sie schlägt der Fallback in
zielBestimmen still fehl und der ursprüngliche Fehler geht durch.
Verifiziert im lokalen End-to-End-Test gegen Schein-Upstreams:
Ausweich bei 429 (200 vom Ersatzmodell, Log-Zeile alias->ausweich),
Durchreichung von 429 ohne ACL-Freigabe, fetch-catch-Pfad unverändert
funktionierend.
Refs 42i/intern#1252
Andreas 2026-09-07: 'stellen wir die worker mal auf ling um und schauen was
passiert.' Bewusst gegen meine Empfehlung aus #1252 (ling Coding 50,6 /
Agentic 21,1 gegen glm 71,5 / 51,5) -- und bewusst als Versuch: der Rueckweg
ist diese eine Zeile.
Nur role/worker. engineer, qa und perf bleiben auf auto/coding:junior, damit
der Vergleich sauber bleibt.
Zu beobachten ist nicht der Preis (der faellt sicher), sondern ob die
Ergebnisse die Abnahme des Teamleiters bestehen -- und wie oft er neu
delegieren muss. Ein Worker, der in Schleifen haengt, braucht am Ende mehr
Zuege als er spart.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Andreas fragte nach ("bist du dir sicher? so ganz sicher?" / "versuch sonst mal
qwen mit reasoning") -- zu Recht. Ich hatte die Aussage "Qwen laedt den Skill
nicht" aus der Doku uebernommen, statt sie zu messen.
Gemessen 2026-09-07 an agent-buzz auf auto/mass (qwen36:35b, enable_thinking):
Er ruft context_get_context von selbst und nennt seinen Arbeitsweg korrekt
(Runbooks und geschlossene Tickets zuerst, Wissen sichern, Routinen woertlich).
Der alte Befund (klara 0/9, live/live#1171) galt fuer 42i/marvin-core:none --
Qwen OHNE Denkstufe. Der Unterschied ist die Denkstufe, nicht das Modell.
AGENT_SKILL_EINBACKEN bleibt als Notnagel im Entrypoint, ist fuer buzz aber
nicht gesetzt.
Belastbarkeit: ein Lauf, kein Dutzend. Fuer eine Regel reicht das nicht -- fuer
die Entscheidung, den Vorspann nicht vorsorglich zu verdoppeln, schon.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Andreas 2026-09-07: "lass buzz auf 42i/mass laufen. Der macht nicht so viel,
das muss ein qwen koennen." Buzz ist der einzige ops-Agent, deshalb bleibt die
Rolle der richtige Ort statt eines Modellnamens im Container.
Dazu gehoert zwingend AGENT_SKILL_EINBACKEN=1 fuer buzz: Qwen holt den
Persona-Skill nicht von selbst (klara 0/9 Laeufe, live/live#1171) -- genau der
Fall, fuer den der Schalter heute gebaut wurde. Der Vorspann steigt fuer ihn
also wieder, dafuer kostet sein Modell nichts.
Ausserdem: start-buzz-web.sh haengt den Werkzeug-Hinweis nach seinem
`cat > AGENTS.md` wieder an. Buzz war der einzige Container ohne den Hinweis --
sein warmer Web-Server ueberschreibt die Datei, die der Entrypoint schreibt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
Der Preisfinder waehlte bisher ueber EINE Zahl. Ein Modell kann generalistisch
gut aussehen und agentisch durchfallen -- gemini-3.8-flash hat Coding 76,3 und
Agentic 41,2 und traegt den Werkzeug-Rundlauf nicht.
- openrouter-auswahl: billigsterUeberSchwelle reicht minCoding/minAgentic an
klasseFiltern durch (nahm es bereits entgegen, wurde nur nie gefuettert)
- config: art "schwelle" hat jetzt index, coding und agentic, jede optional;
"fest" kennt ausweich
- resolver: Beschreibung nennt die geforderten Achsen
- server: ein festes Ziel weicht bei Upstream-Ausfall EINMAL auf den
konfigurierten Alias aus. Ohne das haengt mit dem lokalen Knoten jede
Titelzeile jedes Agenten, weil auto/mass ueberall als small_model haengt.
- acht Profile, Rollen darauf umgehaengt, 42i/marvin-2609:* bleiben als Namen
Aufgeloest (ohne Last-Probe, alle Ziele laufen bereits ueber bestehende
Aliasse): coding:junior und leader:junior -> glm-5.3-flash, coding:senior ->
grok-4.6:high, leader:senior -> glm-5.3:max (15,66 statt 26 gewichtet -- die
Regel findet etwas Billigeres als die Schaetzung im Ticket), mass:fast -> ling.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- config.json: fallback und der litellm-Upstream entfernt. Unbekannte Namen
sind ab jetzt ein Fehler statt einer stillen Weiterleitung -- mit totem
LiteLLM waere daraus ein Timeout ohne Hinweis geworden, und mit Caddy auf
:4000 sogar eine Schleife auf den Router selbst.
- Caddyfile: :4000 -> localhost:4010. Der Port war ueberall hart verdrahtet
(Container-Images, spark-desktop, aeltere Skripte); ihn umzubiegen ist
sicherer, als jeden Aufrufer einzeln zu finden.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Andreas 2026-09-07: das Max-Abo laeuft aus, es wird direkt umgestellt statt am
Mittwoch. Damit steht KEINE Rolle mehr auf der teuren Stufe.
- llmrouter: architect von :high auf :medium (= allround:junior)
- opencode.json: baseURL auf 4010 (Router statt LiteLLM), alle zehn Agenten auf
role/*, model und small_model ebenso; Modelldeklarationen sind jetzt die
Rollen statt der 2608-Namen
- engines.json: xo-chat und logbuch von engine=claude auf opencode; masse von
42i/marvin-2608-mass:medium (kein Router-Gegenstueck) auf :low
- logbuch-eintrag.sh: opencode-Zweig, Entwurf aus dem JSONL-Strom; der
claude-Zweig bleibt als Rueckweg erhalten
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Der XO war der letzte grosse Posten ausserhalb des Routers: engine=claude mit
claude-opus-5 ueber das Abo, damit ohne Kostenzeile und ohne Metering. Er laeuft
jetzt wie die Teams auf opencode und fragt die Rolle role/xo.
role/xo zeigt dazu auf 42i/marvin-2609:medium (= leader:junior nach
42i/intern#1252, heute glm-5.3-flash) statt :high. Ausdruecklich als Versuch
(Andreas): reicht das Urteil nicht, ist Hochstufen eine Zeile in config.json.
Der Gegenpol bleibt notiert - der Hinweis vom 2026-08-20 (Fall t1678) steht.
Kontextgrenze der Modelldeklaration bewusst auf 262144, die garantierte
Mindestschwelle der medium-Stufe.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Beide standen auf 42i/marvin-2609:high (= grok-4.6 fuer 26 $/1M gewichtet).
Nach 42i/intern#1252 entspricht das leader:junior; damit bleibt nur xo auf der
teuren Stufe, architect ueber allround:senior.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
STT-Vergleich 2026-09-06 (Studio + simulierte Telefonstrecke) dokumentiert;
Whisper verliert am Telefon Zahlenstellen, Voxtral Small nicht (Andreas).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Upstream kira-tts (10.6.42.111:8002, KIRA_TTS_KEY) und Alias deizo/kira-tts,
dazu das Recht in allen 12 Schluesseln ergaenzt, die deizo/kira-stt schon
hatten.
Anders als LiteLLM reicht der Router den Audio-Stream durch: Nicht-JSON-
Antworten gehen als Body weiter, statt ausgepuffert zu werden. Gemessen ueber
den Router: erster Ton nach 22 ms gestreamt gegen 5,70 s ungestreamt. Der
LiteLLM-Weg puffert und kommt auf 9,17 s (bekannter Upstream-Bug
BerriAI/litellm#14891).
Inka nutzt darueber jetzt STT und TTS; das LLM blieb vorerst auf dem alten
Weg (Tool-Schema-Grammatik, s. 42i/intern#1201).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- anthropicModus (alt|openrouter), Normalisierung der IDs (Datum, [1m], Punkte),
Client-Effort aus output_config.effort als Stufe, HEAD /api/hello -> 200
- Auswahl: nicht gemessene Stufe faellt auf die naechste gemessene darunter
(sonst darueber, sonst Modellzahl) -- Sonnet 5 hat nur max/none
- /models: alt/ nur bei bestimmbarer Klasse; opencode-normalize nimmt
openrouter/+alt/ genau dann (GLM 5.3 Flash war weggefallen)
- README: Abschnitt Claude Code und Claude Desktop
Verifiziert per claude -p mit claude-sonnet-5, claude-opus-5, claude-haiku-4-5-20251001.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>