minOutput je Profil senkbar, neue Rolle coder
llmrouter CI / bun test + build (push) Successful in 4s
llmrouter CI / Build and publish image (push) Successful in 21s

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
This commit is contained in:
2026-09-09 17:03:51 +02:00
parent d509d975e4
commit 7c6e747145
8 changed files with 78 additions and 18 deletions
+17 -3
View File
@@ -59,7 +59,7 @@ ohne Deploy, ohne Container anzufassen (42i/intern#1252).
| Profil | Regel | trifft am 2026-09-07 | $/1M gew. |
|---|---|---|---|
| `auto/mass` | fest: lokales Qwen, Ausweich auf `mass:fast` | qwen36:35b | 0 |
| `auto/mass:fast` | Index ≥ 25 | ling-3.0-flash | 0,27 |
| `auto/mass:fast` | Index ≥ 25, Output ≥ 32768 (je Profil senkbar, sonst 65536) | ling-3.0-flash | 0,27 |
| `auto/allround:junior` | Index ≥ 40 | glm-5.3-flash | 0,95 |
| `auto/allround:senior` | Index ≥ 49 | grok-4.6:high | 26,00 |
| `auto/coding:junior` | Coding ≥ 68, Agentic ≥ 45 | glm-5.3-flash | 0,95 |
@@ -72,10 +72,13 @@ Agentic **41,2** — es schreibt guten Text und trägt den Werkzeug-Rundlauf nic
Ein einzelner Index sieht diesen Unterschied strukturell nicht.
**Rollenbelegung:** `xo`, `teamleader`, `lead``auto/leader:junior`;
`worker`, `engineer`, `qa`, `perf``auto/coding:junior`; alle übrigen
`worker``auto/mass:fast`; `coder`, `engineer`, `qa`, `perf`
`auto/coding:junior`; alle übrigen →
`auto/allround:junior`; `inka` fest auf `openrouter/openai/gpt-5.6-luna`.
**Keine Rolle steht auf einer Senior-Stufe** (Andreas, 2026-09-07) — hochgestuft
wird einzeln und mit Anlass, nicht vorsorglich.
wird einzeln und mit Anlass, nicht vorsorglich. `role/coder` existiert seit
2026-09-09 neben `engineer`, damit Code-Arbeit nicht über `role/worker` (Masse)
läuft.
**Der Ausweich** gilt für Ziele ohne eigenen Rückfall — festes Ziel wie
`auto/mass` (lokales Qwen) oder Schwelle auf einem Ausfall-Modell wie
@@ -283,6 +286,17 @@ starten — LiteLLM bedient die `2608`-Namen weiter, die `2609`-, `alt/`- und
## Verlauf
- 2026-09-09: **Output-Gate je Profil senkbar, neue Rolle `coder`.** Das
64K-Output-Gate (MIN_OUTPUT) trieb `auto/mass:fast` auf `solar-pro4`
(0,42 $/1M), weil ling 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 und kostete ~35 % Aufschlag. Jetzt ist
`minOutput` pro Profil in `config.json` setzbar (Default bleibt 65536),
`auto/mass:fast` läuft mit 32768. Dazu `role/coder` →
`auto/coding:junior` neben `engineer`, ACL für `persona-spark`, der
engineer-Agent in der Mac-opencode.json von `role/worker` auf
`role/coder` umgezogen.
- 2026-09-09: **Umstieg aufs Image vollzogen.** Prod läuft als OCI-Container
(`llmrouter_llmrouter_1`, podman-compose hinter der Unit `llmrouter`, Bild
`:latest` von Run #7/e144034). Laufzeitdaten wanderten nach
+8 -3
View File
@@ -20,7 +20,7 @@ reicht Durchreichen. Entscheidung Andreas, 2026-09-05.
| `deizo/kira-reasoning`, `deizo/kira-stt` | Modelle im Prod-RZ deizo, fest |
| `openrouter/<id>[:effort]` | 1:1 an OpenRouter, Effort als `reasoning.effort` |
| `alt/<id>[:effort]` | **günstigste Alternative derselben Klasse** wie `<id>` auf dieser Stufe |
| `auto/<profil>[:stufe]` | **Profil auf drei Achsen** (`mass`, `mass:fast`, `allround`, `coding`, `leader` je `:junior`/`:senior`) — billigstes Modell über den geforderten Untergrenzen |
| `auto/<profil>[:stufe]` | **Profil auf drei Achsen** (`mass`, `mass:fast`, `allround`, `coding`, `leader` je `:junior`/`:senior`) — billigstes Modell über den geforderten Untergrenzen; `minOutput` senkt das 64K-Output-Gate je Profil |
| `role/<name>` | Rolle aus `rollen`, zeigt auf einen der obigen Namen |
| `claude-*` (nackte Anthropic-ID) | Claude Code/Desktop: wird zu `alt/anthropic/<id>[:effort]` (siehe unten) |
| alles andere | **404** — unbekannte Namen sind ein Fehler, keine stille Weiterleitung (die LiteLLM-Durchreiche ist mit deren Abschaltung 2026-09-07 entfallen) |
@@ -45,12 +45,17 @@ nur auf bis zu drei Achsen statt einer: `index` (Intelligence), `coding` und
keinen Werkzeug-Rundlauf. `auto/mass` ist der Sonderfall: fest auf dem lokalen
Qwen (kostet nichts) und mit `ausweich` auf `auto/mass:fast`, falls der Knoten
steht — ohne den hinge sonst jede Titelzeile jedes Agenten, weil `auto/mass`
überall als `small_model` hängt.
überall als `small_model` hängt. Über die Achsen hinaus kann ein Profil das
64K-Output-Gate je Stufe senken: `minOutput` (Default 65536, Andreas
2026-09-09). `auto/mass:fast` läuft mit 32768 — Masse-Arbeit schreibt fast nur
kleine Completion-Häufchen, das Gate trieb sie sonst un nötig auf
`upstage/solar-pro4`; `max_output` unbekannt bleibt abgelehnt.
**Rollen** entkoppeln Agenten von Modellnamen: ein Agent ruft `role/worker`,
welches Modell dahintersteht, stellt man in `config.json` um, ohne Container.
Seit 2026-09-07 zeigen alle Rollen auf `auto/`-Profile: xo/teamleader/lead →
`auto/leader:junior`, worker/engineer/qa/perf → `auto/coding:junior`, der Rest
`auto/leader:junior`, coder/engineer/qa/perf → `auto/coding:junior`, worker
`auto/mass:fast`, der Rest →
`auto/allround:junior`, `inka` fest auf Luna. Keine Rolle steht auf einer
Senior-Stufe (Andreas: hochstufen einzeln und mit Anlass).