doku: Wissen auf den Box-Wart-Stand (STACK, VERDIKTE, FALLEN, ARBEITSWEISE, OFFENE-FAEDEN)

- STACK.md: Stand 24.09. - Dienste mit Zustand (Konsole und Spracherkennung schlafen), Units im
  Repo und nur auf der Box, Modelltabelle aus der Config vom 24.09. (Hirn, Coder, zwei
  Bild-Zwillinge, brains mit exclusive: false), Hermes v0.21.4 mit MCP-Stand nach der Diaet,
  vollstaendiger Automatik-Fahrplan (Timer, Hermes-Crons, NerdQuiz 03:00), Coding-Bahn
  OpenChamber, Sicherheit in einem Satz.
- VERDIKTE.md: Box-Wart-Verdikte vom 23./24.09. ergaenzt (Umbau statt Neubau, zwei Instanzen,
  Homelab-Rechte und -Updates, keine Anmeldung, Nachtruhe, Timer, Box-Diaet, Radar-Leitplanken,
  Bild-Zwillinge, exclusive: false); Ueberholtes in eine Tabelle "Ueberholt (mit Datum)";
  Formatfehler (Zeilen mit "|-") beseitigt.
- FALLEN.md: neue Fallen (Persistent=true, Abzug ueberschreibt lebende Config, Jobs sterben bei
  MC2-Neustart, exclusive, Draft+Bild=500, Hermes-Cron als Updater, write_file, web_extract,
  Gitea-SSH-Benutzer); Werkstatt-, Kritiker-, Delegations- und Desktop-Fallen gestrichen.
- ARBEITSWEISE.md mit GRENZEN.md zusammengelegt; Flaechen-Tabelle fuer Box-Wart, Homelab-Teil,
  Lucy, Hermes, Telegram, OpenChamber, Android-App.
- OFFENE-FAEDEN.md neu: Phasen 0-5 laut Plan (Phase 1 laeuft, Oberflaeche und Doku offen) und
  13 offene Einzelpunkte, alle am Code in main belegt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-09-24 15:38:10 +02:00
co-authored by Claude Opus 5.5
parent 59631601b9
commit 24e6dd81ba
6 changed files with 509 additions and 488 deletions
+129 -135
View File
@@ -1,149 +1,143 @@
# Finale Verdikte — nicht neu aufrollen ohne neuen, belegten Anlass
# Verdikte — entschieden, nicht neu aufrollen
_Kuratiert 10.07.2026 aus dem Claude-Projektgedächtnis. Jedes Verdikt trägt sein Warum und
(wo sinnvoll) die Wiedervorlage-Bedingung. Wer eines kippen will, braucht eine MESSUNG oder
einen User-Entscheid — kein „Best Practice sagt aber…" (siehe ARBEITSWEISE.md)._
_Stand 24.09.2026. Jedes Verdikt nennt Datum und Grund. Wer eines kippen will, braucht eine neue Messung
oder einen User-Entscheid (siehe [ARBEITSWEISE.md](ARBEITSWEISE.md)). Abgelöstes steht unten unter
„Überholt (mit Datum)": ersetzt, nicht gelöscht._
## Richtung & Architektur
## Richtung
- **MC3-Neubau VERWORFEN (03.07.), „MC2 Final" ERSETZT durch „MC2 lebt" (10.07.).**
Kein Basisstation-Neubau; seit dem Ablösungs-Entscheid wird MC2 über die
Queue→Karte→Klick-Pipeline weiterentwickelt statt eingefroren. Siehe [ZIELBILD.md](ZIELBILD.md).
- **Agent-Runtime: Hermes bleibt.** ZeroClaw-PoC gebaut + abgerissen (01.07.) — der echte
Latenz-Fix war das Hirn (gemma→Qwen3.6), nicht die Runtime. (ZeroClaw-Messwerte für den
Fall „Hermes-Latenz wird wieder Thema": `docs/ZEROCLAW_POC_RESULTS.md`.)
- **Memory-Layer: Mem0 ENTFERNT (07.08.2026).** Hermes-Agent ist die Single Source of Truth für Gedächtnis und Autonomie.
- **Telegram bleibt DER Mobil-Kanal; WhatsApp VERWORFEN (09.07.).** Baileys-Bridge = Meta-ToS-
Verstoß mit Bann-Risiko auf der Privatnummer + fragiler Dauerprozess; Alarmkette/Crons sind
simple Bot-API-Calls. Neu bewerten nur bei offizieller Personal-Bot-API.
- **Multi-Profil Lucy/Werkstatt auf der Box: NICHT nötig (09.07.).** `tui_gateway` lädt hart den
`cli`-Bucket, Lucy läuft über `api_server` — die Trennung existiert auf Platform-Ebene.
(Das PC-Profil des Hermes Desktop ist ein ANDERER Fall: eigene Maschine.)
- **MoA-Preset NICHT adoptiert.** Lädt mehrere Modell-Slots parallel — RAM ist der Engpass.
Das sequenzielle Zwei-Kritiker-Gate (Coder-Next + GLM) ist E2E-bewährt und RAM-schonend.
- **worker.sh bleibt; natives `delegate_task` nur für interaktive Arbeit (10.07.).**
delegate_task kann KEINE Modellwahl pro Aufruf und läuft top-level IMMER background
(stirbt in der `-z`-Lane mit dem Prozess). `delegation.model: coder` ist live —
Fan-out funktioniert E2E in langlebigen Sessions (Desktop/Telegram/Chat).
- **Kein heavy/gpt-oss im heißen Pfad.** heavy läuft mit 32k (< Hermes-Floor 64k) und 60 GB
Kaltladen. Als Ein-Schuss-Completion (Chef-Gutachter, Radar-Analyst, Orchestrator-Planung)
ok — als delegate_task-Ziel oder Pro-Schritt-Worker nie.
- **Box-Wart (23.09.):** MC2 ist nur noch Updater, Wächter und Modell-Radar der KI-Box. Coding läuft in
OpenChamber; Ideen, Wissen, Chronik, Skills-Ansicht, Verbinden und Konsole sind aus der Oberfläche raus.
Bedienung im Browser an PC und Handy, Oberfläche im Stil „Cockpit" (Warnlampen, Instrumente).
- **Umbau statt Neubau (24.09.):** Wächter, Updates mit Rückweg und Festhalten, getrennte Prozesse, Cockpit und
Gateway tragen. Neu gebaut wird hinter Schnittstellen: Job-Engine, Einstellungen, Verlauf (Plan:
[OFFENE-FAEDEN.md](OFFENE-FAEDEN.md)). Einen Neubau („MC3") hatte der User schon am 03.07. verworfen.
- **Homelab Orchestrator (24.09.):** zwei Instanzen, eine Oberfläche. Der Box-Wart bleibt auf der KI-Box, der
Homelab-Teil läuft als Container auf dem Proxmox-PC, beide prüfen sich gegenseitig. „Box-Wart" bleibt der
Name des Bereichs für die KI-Box.
- **Homelab-Umfang und Rechte (24.09.):** Proxmox-Host, 6 Container, Arcane mit Docker, KI-Box, nichts weiter.
Proxmox nur über eine Lese-API und einen kleinen Ausführer auf dem Host. Dabei ist, was das Etikett
`community-script` oder `watcher` trägt; `watcher-aus` nimmt ein Gerät aus. Schlüssel und Ausführer erst nach
User-OK.
- **Homelab-Updates nur per Knopf (24.09.):** „Jetzt updaten" je Gerät, mit Erfolgsmeldung und
Erreichbarkeits-Check; ist der Check rot, rollt der Homelab-Teil selbst zurück und meldet es. Host-Updates
mit Warnung, Neustart getrennt; die KI-Box prüft danach, ob der Host wieder läuft.
- **Keine Anmeldung (24.09.):** nur eine unsichtbare Herkunftsprüfung, damit fremde Webseiten keine Knöpfe
auslösen (`backend/services/herkunft.py`).
- **Android-App am Ende (24.09., Phase 5):** Push, Cockpit, Updates freigeben, Lucy per Sprache mit Live-Modus.
- **Die Coding-Oberfläche heißt „OpenChamber" (24.09.).** Die Gemini-/Antigravity-Doku und SAVEPOINT liegen im
Archiv.
- **Merge und Deploy (23./24.09.):** Claude darf selbst mergen und deployen, sobald alle Prüfläufe grün sind.
- **Agent-Runtime: Hermes bleibt (01.07.).** Ein ZeroClaw-Test wurde gebaut und wieder abgerissen; der
Latenz-Gewinn kam vom Hirn, nicht von der Runtime ([Messwerte](../archiv/2026-06-30-zeroclaw-poc-ergebnis.md)).
- **Hermes führt sein Gedächtnis selbst (07.08.).** Es ist die einzige Gedächtnis-Wahrheit; der Box-Wart hat
keinen eigenen Gedächtnis-Dienst.
- **Telegram bleibt der Mobil-Kanal, WhatsApp ist verworfen (09.07.):** Die inoffizielle Bridge bedeutet
Bann-Risiko auf der Privatnummer und einen zusätzlichen Dauerprozess. Neu bewerten nur bei einer offiziellen
Personal-Bot-API.
## Engine & Modelle (Box, gfx1151)
## Betrieb des Box-Warts
- **Vulkan/RADV schlägt ROCm** (+12–22 % tg, Cutover 27.06., mehrfach bestätigt; Recheck-Stand
09.07.: hält weiter, einziger ROCm-Vorteil = Langkontext-Prefill auf gpt-oss).
**Wiedervorlage: ROCm-Recheck 20.–25.07.2026** (Box-Reminder gesetzt) — falls dann Bedarf:
NUR Hybrid für heavy/coder erwägen, **das Hirn bleibt in jedem Szenario auf Vulkan.**
- **Lucys Hirn: Qwen3.6-35B-A3B mit DFlash-Spec-Draft (seit 22.07.)** — löste draft-mtp ab:
A/B/C prod-gleich gemessen 61,7 (ohne) / 81–83 (MTP) / 86–90 t/s (DFlash), live eingependelt
89–94. Draft: `giocom-…-DFlash-Q8_0.gguf` (Mainline-kompatibel; abhinand-Konvertierung ist es
NICHT — fehlendes `target_layers`-Metadatum). Rollback-Backup `config.yaml.bak-dflash-*`.
KV **q8_0** (Entscheid 07.07.: Qualität > ein paar GB; der q4_k-Commit lief nie live).
`--parallel 2` = bewusster Trade (Lernen blockiert nie den nächsten Voice-Turn).
- **DFlash je Rolle (gemessen 22.07., nicht neu aufrollen):** coder NEIN — 44–50 t/s mit Draft
(Q8 wie BF16) vs. 59–60 ohne, trotz 68–76 % Akzeptanz: 3B-aktiv-Decode ist billiger als das
Draften. heavy WARTET — gpt-oss-120b-Draft konvertiert (liegt in `/srv/models/DFlash-drafts/`),
aber Engine b10087 lädt die Arch nicht („expected 123, got 91“ = Extra-Tensoren unbekannt);
nach Engine-Update erneut probieren. vision/scout: keine Drafts veröffentlicht.
Eigenbau-Rezept: z-lab-safetensors + `convert_hf_to_gguf.py --target-model-dir <Ziel-Tokenizer>`;
⚠️ `llama-quantize` verwirft DFlash-Sondertensoren bei Nicht-Standard-Archs.
- **coder-Lane: Qwen3-Coder-Next, FINAL** („bleiben bei dem was wir haben, nachweislich
besser"). Qwen3.6-27B dense gebencht + verworfen (tg 12,7 t/s = 4–7× langsamer).
|- **hipEngine + strix-halo-toolboxes/TheRock: beobachten, nicht adoptieren.** hipEngine
(natives HIP, nur Qwen3.6, >2× Prefill) ist jung; kyuz0-Toolboxes lösen ein Problem, das
die Box nicht hat. Radar/Reminder wachen; Adoption nur nach eigenem brain-bench.
|- **Vision-Rolle: GLM-4.6V-Flash bleibt Amtsinhaber.** Qwen-AgentWorld-35B geprüft (Prüfstand
t_9daf088f, Speed: tg 26,8 t/s / pp 339,1, Vision: 0/1 korrekt). Qualität deutlich unter
GLM-4.6V-Flash, kein Aufsteiger — **abgelehnt**. Wiedervorlage nur bei neuer Version mit
nachweislich > 50 % Vision-Rate.
|- **dist/ im Git ist ABSICHT.** Box hat kein Node; Deploy = `git reset --hard` + committetes
`frontend/dist`. NICHT gitignoren.
- **Der Wächter behebt Einfaches selbst (23.09.):** Abgestürzte Dienste (`failed`) startet er neu, höchstens 2× je
Stunde. Gestoppte Dienste meldet er nur. Schlafende (abgeschaltet und nicht im Autostart, 24.09.) sind kein Befund.
- **Updates automatisch sonntags 04:30 (23.09.),** seit 24.09. über `mc2-autoupdate.timer` statt Hermes-Cron: Als
Kind des Hermes-Gateways hing der Lauf beim Hermes-Update am eigenen Neustart (20.09.: 180 s, Fehlschlag).
- **Neustart der Box nur im Wartungsfenster So 04:00–06:59 (24.09.).** `MC_AUTOUPDATE_REBOOT_JETZT=1` erzwingt ihn.
- **Nachtruhe für Meldungen (24.09.):** `notify.sh` sammelt 00:00–06:59, um 07:00 kommt eine Morgenmeldung.
Dringendes geht sofort raus.
- **Deploy zweistufig mit Prüftor und Rückweg (24.09.):** `deploy/pruefen.sh` ersetzt die CI-Ampel.
- **llama-swap-Config (24.09.):** Die lebende Datei `/etc/llama-swap/config.yaml` ist die Wahrheit. Der Repo-Abzug
überschreibt sie nur, wenn er sich im selben Deploy geändert hat. Geschrieben wird nur unter der Config-Sperre.
- **Box-Diät (24.09.):** Konsole und Spracherkennung schlafen (nicht gelöscht). PC-Fernsteuerung (MCP
`hermes-pc-control`, PC-Aufgabe `HermesPCExecutor`) und MCP `mission-control-stack` sind aus. 10 alte Skills liegen
in `~/.hermes/skills-archiv`. Embedding und Reranker schlafen (ttl 300); warm ist nur das Hirn.
- **Sicherung mit Lucys Gedächtnis (24.09.):** Der Tarball enthält `memories/`, `SOUL.md`, Skills, Cron-Skripte,
Box-Wart-Zustand, Units und Stimmreferenz. `restore.sh` spielt Gedächtnis und Zustand nur zurück, wenn sie fehlen
oder mit `--mit-gedaechtnis`.
- **Endgültig gelöscht wird nur per User-Klick (23.09.):** Modelle im Aufräumen-Panel, Reste auf der Box ebenso.
- **Git (24.09.):** nur `main` plus Archiv-Tags. Ungemergtes, das weg soll, erst als Tag `archiv/<name>` sichern.
- **Approvals bleiben aus (17.09.):** `approvals.mode: 'off'`, `approvals.cron_mode: auto`.
- **Erinnerungen und Wecker laufen im Box-Wart** (`backend/services/reminders.py`), nicht als Hermes-Cron.
- **Hermes-Quellcode nie forken oder patchen; Hermes' interne Prompts bleiben Englisch (03.07.).** Deutsch kommt aus
`SOUL.md`; alles, was der User sieht, ist Deutsch.
- **Tool Search nicht auf `on` (04.07.):** Es spart Cloud-Tokens, kostet lokal Latenz (gemessen 15,1 s statt 5–7 s).
## Lucy (Voice-App)
## Modell-Radar (23./24.09.)
- **Shell: Electron, nicht Tauri.** Alle harten Features (Klick-Durchlass-Overlay, Capture,
Loopback, Tray, TTS-Spawn) existieren in Electron; Tauri fehlt Region-Klick-Durchlass.
- **Stimme: pocket-tts bleibt Default, bis die Mini-Lucy (Kokoro-Finetune) den Live-Test
gewinnt.** Qwen3-TTS-1.7B (RTF ~14), Chatterbox („zu delayed"), F5 (nicht streamfähig) —
alle verworfen. Mini-Lucy v1 gewann alles Messbare (TTFB 0,45 s vs 1,72 s), scheiterte aber
am Live-K.o. „nicht multilingual" → v2-Training läuft (Stand 10.07.). Umschalter in der App.
- **STT läuft auf der BOX** (Parakeet-TDT v3, 0,3–0,8 s, praktisch fehlerfreies Deutsch),
lokaler Whisper nur als Lazy-Fallback. Gemini hatte das 07.07. still auf PC-CPU umgebaut —
zurückgedreht, Messung gewann.
- **Kein Multi-Agent in der Voice-Lane** (3× Latenz-Falle). Multi-Agent JA für Radar
(Fan-out) und Werkstatt (Worker/Reviewer).
- Zwei Rollen: Hirn und Coder. Höchstens drei Modelle; eine dritte Rolle nur bei nachgewiesenem Mehrwert. Der
Debugger entfällt (23.09.).
- Das Radar testet selbst: nachts 00:30–02:30 (um 03:00 braucht NerdQuiz das Hirn), höchstens ein neuer Kandidat
pro Woche, nur was neben das Warm-Set passt. Durchgefallene werden gelöscht; getauscht wird erst per Knopf
„Übernehmen" (23.09.).
- Hirn und Coder müssen Bilder verstehen, auch mitten in Agenten-Aufgaben (23.09.).
- Fairer Vergleich (24.09.): Jeder Kandidat misst mit seiner schnellsten Draft-Variante (ohne, eingebauter
MTP-Kopf, Draft des heutigen Modells); das heutige Modell misst mit seinem Draft.
- Jev (TypeSafe AI) ist nicht relevant (24.09.): nur Cloud-API, liefert nur Wahrscheinlichkeiten, passt in keine Rolle.
## Hermes-Betrieb
## Engine und Modelle (Box, gfx1151)
- **Hermes-Quellcode NIE forken/patchen; interne Prompts bleiben ENGLISCH.** Deutsch kommt
aus SOUL.md (verifiziert); alles User-Sichtbare (Meldungen, Skills, Summaries) = deutsch.
- **Tool Search NICHT auf `on`** (steht auf `auto`, schläft de facto). Es optimiert
Cloud-Token-Kosten; wir optimieren lokale Latenz mit Prompt-Caching — `on` war gemessen
LANGSAMER (15,1 s statt 5–7 s).
- **Zed ACP / Hermes-im-Editor: NICHT machen.** Editor-Agent + Box-coder-Modell + AGENTS.md
ist der Sweet Spot; Hermes dazwischen = 70-KB-Prompt-Overhead. (Zed selbst ist inzwischen
vom PC entfernt — Hermes Desktop übernahm.)
- **Approvals bleiben AUS** (`approvals.mode: 'off'`, `cron_mode: auto`; so seit spätestens dem KISS-Umbau
21.08.2026, vom User am 17.09.2026 bestätigt). Die Schutzlinie liegt außen — ufw, PC-Executor-Token,
command_allowlist — nicht in der Freigabe-Frage. *Überholt damit:* „`approvals.cron_mode: deny` bleibt"
(Autonomie-Härtung 1c, Option A: Gefahr-Befehle + execute_code im Cron-Kontext geblockt, interaktiv `smart`).
- **Fremd-Kritik via `fremdblick.sh`** (Ein-Schuss an leichtes Fremdmodell), NIE via
delegate_task→heavy (64k-Floor + Lade-Tod). Raster: prose=GLM-4.7-Flash (kritiker),
code=Coder-Next. Harte Regel: **REPRODUZIERT-ODER-ABGELEHNT** — Freispruch nur mit
belegtem Vorher/Nachher.
- **Erinnerungen/Wecker laufen deterministisch in UNSERER Schicht** (services/reminders.py),
bewusst ohne Hermes-cron.
- **Vulkan/RADV schlägt ROCm** (+12–22 % Generierung, seit 27.06. mehrfach bestätigt). ROCm-Recheck 24.07.: Der
Vulkan-Prefill hält bei 32k noch 488 t/s, kein ROCm-Bau. Wiedervorlage nur bei neuem Langkontext-Support der
Engine oder einem reinen HIP-Modell. **Das Hirn bleibt in jedem Fall auf Vulkan.**
- **hipEngine und strix-halo-toolboxes: beobachten, nicht übernehmen (03.07.).** Übernahme nur nach eigener Messung.
- **Hirn: Qwen3.6-35B-A3B** (MoE, 3B aktiv) mit DFlash-Draft (seit 22.07.), KV q8_0 (07.07.: Qualität vor ein paar
GB), `--parallel 2` = zwei Slots à 65k (Nebenlast blockiert keinen Sprach-Turn), `--reasoning-budget 2048` (17.09.).
- **Dichte Modelle nie als Hirn (17.07.):** bandbreitengebunden, ~12 statt ~100 t/s. Das Radar lässt als Hirn nur
Modelle mit höchstens 12B aktiven Parametern zu.
- **Coder: Qwen3.8-27B mit DFlash2-Draft (04.09.):** 12,6 → 31 t/s. `heavy` ist seit 04.09. derselbe Coder.
- **Varianten der Basismodelle (17.09.):** Hirn und Coder laufen als Varianten (Prüfstand: 100,8 statt 92,8 t/s bzw.
30,4 statt 26,2 t/s). Die Originale bleiben als Rückweg. Nemotron 3.5 Lightning 30B-A3B ist eine gleichwertige
Hirn-Reserve, nicht besetzt.
- **Bild-Zwillinge (24.09.):** Bilder gehen an Zwillinge ohne Draft (`vision`, `coder-bild`), weil llama.cpp Draft
und Bild nicht zusammen kann (HTTP 500, b11057 und b11157 geprüft).
- **`brains` mit `exclusive: false` (24.09.):** Ohne den Schlüssel ist eine llama-swap-Gruppe exklusiv, und jede
Hirn-Anfrage entlud den Coder. Gruppe `bild`: `swap: true` (höchstens ein Zwilling geladen), `exclusive: false`.
- **Eine Gruppe für alles gleichzeitig Warme (25.07.):** Zwei ko-residente Gruppen verdrängen sich. Speicherregel:
Warm-Set plus größtes Bedarfsmodell ≤ ~115 GB (bei 107 GB Warm-Set plus 20 GB folgte ein Kernel-OOM).
- **`frontend/dist` im Git ist Absicht:** Die Box hat kein Node; der Deploy holt `main` per fast-forward.
- **MoA-Preset nicht übernommen (09.07.):** lädt mehrere Modelle parallel, RAM ist der Engpass.
## Lucy (Desktop-App, eigenes Repo)
- **Electron, nicht Tauri:** Klick-Durchlass-Overlay, Capture, Loopback und Tray gibt es nur in Electron.
- **Stimme: pocket-tts `german_24l` bleibt.** Qwen3-TTS-1.7B, Chatterbox und F5 sind verworfen (Latenz, kein
Streaming). Seit 04.09. kommt Lucys Stimme von der Box (`lucy-stimme`, in MC2 unter `/api/lucy/stimme/*`), auch
für die Sprachnachricht der Daily News.
- **Spracherkennung läuft auf der Box** (Parakeet-TDT v3, 0,3–0,8 s), nicht am PC. Der Dienst schläft seit 24.09.
bis zur Android-App.
- **Kein Multi-Agent im Sprachweg** (dreifache Latenz).
- **Smart Turn v3:** Audio links auffüllen; die Ausgabe ist empirisch P(unfertig). Läuft im Sprach-Sidecar (`/turn`).
## Sonstiges
- **LobeChat/WebUI-Ersatz verworfen** (Multi-User-Fehlpassung — Lehre: Scope challengen).
- **Smart Turn v3:** Audio LINKS padden; Output ist empirisch **P(unfertig)** — Doku behauptet
das Gegenteil. Läuft im Voice-Sidecar (/turn, ~110 ms).
- **Lokaler GPU-Klon (9070 XT):** Stack = llama.cpp-Vulkan + llama-swap, NICHT Lemonade
(deprecated Python, Server blockiert, Hybrid unsupported). Zweck/Umfang offen.
- **Aussortiert (tot):** Kyutai-Streaming-STT (nur EN/FR) · Unmute-Voll-Stack · LXC 105 (alt) ·
WebUI-Update-Checks · openWakeWord (Wake-Gate ist STT-basiert).
- **LobeChat/WebUI-Ersatz verworfen** (Mehrbenutzer-Design passt nicht; Lehre: Scope challengen).
- **Lokaler GPU-Klon (9070 XT):** wenn, dann llama.cpp-Vulkan + llama-swap, nicht Lemonade. Zweck offen.
- **Aussortiert:** Kyutai-Streaming-STT (nur EN/FR), Unmute-Voll-Stack, openWakeWord (Wake-Gate ist STT-basiert).
## Prüfstand 24.07.2026 — Coder-Backend + Modell (ROCm-Recheck erledigt)
## Überholt (mit Datum)
Gemessen mit llama-bench (Vulkan/RADV, Q4_K_M, -fa on) auf der Box (Ryzen AI Max+ 395):
| Test | Coder-Next 80B-A3B | Devstral Small 2 24B dense |
| -------------- | ------------------ | -------------------------- |
| pp2048 @ 0 | 702 t/s | 468 t/s |
| tg64 @ 0 | 59 t/s | 15 t/s |
| pp2048 @ 8192 | 638 t/s | 315 t/s |
| tg64 @ 8192 | 55 t/s | 14 t/s |
| pp2048 @ 32768 | 488 t/s | 63 t/s (7,7x langsamer) |
| tg64 @ 32768 | 47 t/s | 11 t/s (4,2x langsamer) |
- **Backend bleibt Vulkan (ROCm-Recheck 24.07. erledigt).** Vulkan-Prefill haelt bei 32K
noch 488 t/s — der einzige ROCm-Vorteil (Langkontext-Prefill) ist auf dieser Box kein
Engpass. Der Autor des fuehrenden ROCm/Strix-Halo-Rezepts ist im Juli 2026 selbst zu
Vulkan zurueckgekehrt (+28% Decode). Kein ROCm-Bau — Produktiv-Risiko fuer null Gewinn.
Wiedervorlage nur bei neuem Engine-Langkontext-Support oder einem reinen HIP-Modell.
- **Coder bleibt Qwen3-Coder-Next — jetzt gemessen bestaetigt.** Devstral Small 2 (einziger
neuer agentisch trainierter Dense-Kandidat) ist 4x langsamer bei Generierung und bricht
beim 32K-Prefill auf 63 t/s ein (~9 min um einen 32K-Kontext zu lesen). Fuer agentisches
Coden auf dieser Box disqualifiziert — Reliabilitaet war nicht einmal noetig als Argument.
- **Der Coder ist nicht langsam (59 t/s).** Das Fassaden-/Halluzinations-Problem ist kein
Speed- und kein Backend-Problem und wird weder durch Modelltausch noch ROCm geloest. Es
ist Reliabilitaet = Modellklasse + Harness. Naechster Hebel: Post-Edit-Verify-Hook,
kleine Etappen/frische Threads, Eskalation der harten 20% an Frontier.
- **Devstral Small 2 ist der KRITIKER, nicht der Coder — mit hartem 16k-Deckel (25.07.).**
Das Verdikt „als Coder disqualifiziert" (24.07.) bleibt unveraendert richtig. Neu ist nur die
ENGE Rolle: Gegenlesen einer Etappe. Gemessen am 25.07. auf der Box: Generierung 15,0 t/s
(Coder 51,5), Prefill 265-318 t/s (Coder 754). Der Prefill bricht mit der Kontextlaenge ein
(32k -> 63 t/s = ~9 min nur zum Lesen), deshalb ist der Kritiker in llama-swap UND in beiden
opencode.json auf **16384** gedeckelt: schlimmster Fall je Review bleibt unter einer Minute.
Der Nutzen liegt nicht im Tempo, sondern in der FREMDEN Modellfamilie — ein Mistral-Modell hat
andere blinde Flecken als der Qwen-Coder. Alternative GLM-4.7-Flash (MoE, schnellerer Prefill)
bleibt eine Zeile Config entfernt, kostet aber ~9 Punkte SWE-bench (59,2 vs. 68,0).
- **llama-swap haelt nur EINE Gruppe resident, und `persistent: true` ist gefaehrlich (25.07.).**
Zwei ko-residente Gruppen verdraengen sich gegenseitig — alles, was gleichzeitig warm sein muss,
gehoert in DIESELBE Gruppe (`brains`). `persistent: true` hindert llama-swap daran, vor einem
grossen On-Demand-Modell abzuraeumen: mit 107 GB Warm-Set + Vision (20 GB) folgte ein
**Kernel-OOM** (llama-server abgeschossen). Regel: `Warm-Set + groesstes On-Demand-Modell
<= ~115 GB` UND `persistent: false`. Danach lud vision in 10 s statt 117 s + Absturz.
Kontext-Halbierung spart bei Qwen3-Next uebrigens **0 GB** (Hybrid-Attention, winziger KV).
| Seit | Was galt | Was heute gilt |
|---|---|---|
| 24.09. | Sonntags-Update als Hermes-Cron (21.08.) | `mc2-autoupdate.timer`; der Hermes-Cron ist pausiert |
| 24.09. | CI-Ampel in Gitea Actions (22.07.); der Runner war seit 28.08. tot | Prüftor `deploy/pruefen.sh` am PC und im Deploy |
| 24.09. | `vision` = Qwen3-VL-30B-A3B (seit 20.08.), davor GLM-4.6V-Flash | Bild-Zwillinge von Hirn und Coder |
| 24.09. | Regel `persistent: false` für `brains` (25.07., nach dem OOM mit 107 GB Warm-Set) | Warm-Set ist nur das Hirn; `brains` mit `persistent: true` und `exclusive: false` |
| 24.09. | Embedding und Reranker immer warm (für die Gedächtnis-Suche) | schlafen, ttl 300 |
| 24.09. | Hermes-Aufgabenbrett (Kanban) mit Verteiler im Gateway | Werkzeugsatz seit 21.08. aus, Verteiler (`kanban.dispatch_in_gateway`) seit 24.09. aus |
| 24.09. | Werkstatt-Profil, `worker.sh`, Orchestrator- und Konzept-Skills, Agent-Hooks | Profile seit 19.08. archiviert, Dateien am 24.09. aus dem Repo |
| 24.09. | Governor (erst Dienst `:8100`, dann OpenCode-Plugin `mc2-governor.ts`) | am PC seit 22.08. abgeschaltet, Plugin am 24.09. aus dem Repo |
| 24.09. | Gemini über Antigravity als Notfall- und Review-Partner (10.07.) | Doku im Archiv |
| 24.09. | Referenz-Branch des Gedächtnis-Ausbaus | Tag `archiv/referenz-mem0-ausbau` |
| 23.09. | „MC2 lebt" (10.07.): Ideen-Queue → Karte → Klick, Auftragsbuch mit Bagatell-Annahme | Box-Wart; das Auftragsbuch war am 04.09. ausgebaut |
| 23.09. | Pins nur von Hand lösen (`jq` per SSH) | Knopf „Freigeben" (Wächter-Hinweis und Updates-Seite) |
| 04.09. | `heavy` = gpt-oss-120b (03.07.), „nie im heißen Pfad" | `heavy` = Qwen3.8-27B; gpt-oss-120b ohne Rolle |
| 21.08. | Hermes Desktop als Arbeits-Tür (09.07.); davor Zed-Agent mit Box-Modell (04.07.: kein Zed ACP) | OpenChamber am PC |
| 21.08. | Nachtprogramm aus Traum, Chef-Gutachter, Release- und Trend-Radar, Prüfstand-Cron, Restore-Probe, Selbsttest, Briefing | drei Hermes-Jobs (KISS-Umbau), seit 24.09. Timer für Updates und Morgenmeldung |
| 21.08. | natives Fan-out mit `delegation.model: coder` (10.07.) | Werkzeugsatz `delegation` aus |
| 21.08. | `approvals.cron_mode: deny` (Autonomie-Härtung, Juli) | `off`/`auto`, bestätigt 17.09. |
| 21.08. | Box-Host-Sicherung nach PBS (`pbs-backup.timer`) | aus (lief rot); der Tarball ist die Sicherung |
| 21.08. | Zwei-Kritiker-Gate (Coder-Next + GLM) über `fremdblick.sh` | entfallen mit Modell-Konsolidierung (19.08.) und KISS-Umbau |
| 19.08. | Kritiker Devstral Small 2 mit 16k-Deckel (25.07.), Rollen `scout` und `dense-planer` | ein Coder, ein Hirn |
| 19.08. | Coder Qwen3-Coder-Next „final" (24.07.); „Coder ohne DFlash" (22.07.) | Qwen3.8-27B, seit 04.09. mit DFlash2 |
| 07.08. | Gedächtnis-Sidecar Mem0 (`:8765`) samt Memory-MCP und Plugin | Hermes führt sein Gedächtnis selbst; am 27.08. restlos ausgebaut |
| 24.07. | ROCm-Recheck 20.–25.07. als Wiedervorlage | erledigt, Vulkan bleibt |