Zwei Fehler aus dem ersten Anlauf behoben: 1. referenz-check.sh lag unter deploy/ und enthielt selbst 7x das Wort "mem0" (es sucht ja danach) - damit zaehlte es sich in Kriterium 3 mit und das Kriterium war unerfuellbar. Jetzt unter docs/aufgaben/, wo Kriterium 3 nicht sucht. Strukturell geloest statt per grep-Ausnahme. 2. Der Lauf muss in einer FRISCHEN Sitzung starten - der Desktop hatte eine Sitzung vom Vortag fortgesetzt und deren Kontext mitgeschleppt. Neu: Lauf D (reasoning_effort low). Der Fehlversuch zeigte, dass >95% der Modell-Ausgabe unsichtbares Nachdenken war - 19.899 Tokens fuer 2.600 Zeichen sichtbaren Text. Das ist der billigste Hebel und wird darum vor Modellwechseln geprueft. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
5.5 KiB
Referenzaufgabe: Mem0-Sidecar restlos ausbauen
Zweck dieser Datei: Messlatte für den Stack-Umbau (Stufe 2, 20.08.2026). Dieselbe Aufgabe wird mehrfach mit verschiedenen Modellen gefahren. Gemessen wird nicht Tokens pro Sekunde, sondern: Wurde sie fertig? Wie lange? Wie viele Züge? Alle Pfade und Befehle unten sind am 20.08.2026 auf der Box nachgemessen, nicht geraten.
Hintergrund
Mem0 wurde im August abgelöst (bf145a3, eb4bcfc, 2286879). Der Rückbau blieb unvollständig:
Der Sidecar-Ordner liegt noch im Baum, MC2 fragt weiterhin einen toten Port ab.
Gemessen: curl http://127.0.0.1:8765/health → keine Antwort. Kein systemd-Dienst dafür,
/srv/models/mem0 bereits entfernt. Es ist also wirklich tot, nicht nur gerade aus.
Arbeitsplatz
Isolierter Worktree — NICHT das Live-Deployment:
~/projekte/mc2-referenz Zweig: referenz/mem0-ausbau
~/mission-control-v2 bleibt auf main und bedient weiter den laufenden Dienst auf :9001.
Dort nichts ändern.
Auftrag
Entferne die Mem0-Reste vollständig, ohne etwas anderes kaputtzumachen.
17 Dateien haben Treffer (gemessen 20.08., selbst nachprüfen statt blind vertrauen):
backend/steward.py deploy/stack-postcheck.sh
backend/config.py deploy/venv-audit.sh
backend/routers/voice.py deploy/agent-hooks/box-steckbrief-inject.sh
backend/routers/system.py deploy/warmup.sh
backend/routers/zeitmaschine.py deploy/autoupdate.sh
backend/services/sentry.py deploy/hermes-postcheck.sh
backend/services/voice_metrics.py deploy/restore.sh
backend/services/backup.py deploy/backup.sh
mcp/mcp_mc.py
Dazu der Ordner mem0_service/ (app.py, migrate.py, requirements.txt, smoke_test.py).
‼️ Der eigentliche Prüfstein: Wenn eine API-Antwort ein Feld wie
mem0_reachableliefert, das das Frontend liest, darf es nicht einfach verschwinden — sonst bricht die Oberfläche. Entweder das Frontend mit anpassen oder das Feld sauber entfernen. Wer nurgrep mem0laufen lässt und alles wegwirft, produziert eine Fassade.
Fertig-Kriterien
Ausgangswert am 20.08.: 1, 2, 4, 5 sind bereits grün — sie sind Schutzgeländer, nicht die Arbeit. Nur Kriterium 3 ist offen. Wer 3 erfüllt und dabei 1/2/4/5 kaputtmacht, hat versagt.
| # | Prüfung | Befehl | Ausgangswert |
|---|---|---|---|
| 1 | Lint sauber | cd ~/projekte/mc2-referenz && ~/.venv-lint/bin/ruff check . |
✅ All checks passed |
| 2 | Backend lädt | cd ~/projekte/mc2-referenz/backend && ~/mission-control-v2/backend/.venv/bin/python -c "import app" |
✅ ok |
| 3 | keine mem0-Reste | cd ~/projekte/mc2-referenz && grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh' | wc -l |
❌ 17 → muss 0 werden |
| 4 | Selbsttest grün | bash ~/mission-control-v2/deploy/self-smoke.sh |
✅ grün |
| 5 | MC2 gesund | curl -s localhost:9001/api/health |
✅ "status":"ok" |
Treffer in docs/ sind erlaubt — das ist Historie und darf stehenbleiben.
Selbstprüfung mit einem Befehl:
bash ~/projekte/mc2-referenz/docs/aufgaben/referenz-check.sh
Der Prüfbefehl liegt bewusst unter
docs/aufgaben/und nicht unterdeploy/. Im ersten Anlauf lag er indeploy/, enthielt selbst siebenmal das Wort „mem0" (er sucht ja danach) und zählte sich damit in Kriterium 3 mit — das Kriterium war unerfüllbar. Indocs/wird er nicht durchsucht.
Randbedingungen
- ‼️ In einer FRISCHEN Sitzung starten, nicht in einer fortgesetzten. Beim ersten Anlauf hat der Desktop eine Sitzung vom Vortag weitergeführt und deren Kontext mitgeschleppt — die Messung war dadurch wertlos. Im Desktop also einen neuen Chat anlegen, nicht den alten öffnen.
- Nicht pushen. Der Zweig bleibt lokal, damit der Lauf wiederholbar ist.
- Nichts außerhalb des Worktrees anfassen — kein
/etc, keine systemd-Dienste, kein Neustart. - Wenn ein Kriterium nicht erfüllbar ist: ehrlich sagen und aufhören. Ein klares „Kriterium 3 scheitert an X" ist wertvoller als ein beschönigter Abschluss.
Zurücksetzen zwischen den Läufen
cd ~/mission-control-v2
git worktree remove --force ~/projekte/mc2-referenz
git branch -D referenz/mem0-ausbau
git worktree add -b referenz/mem0-ausbau ~/projekte/mc2-referenz main
Messprotokoll
| Lauf | Aufbau | Fertig? | Wanduhr | Züge | Bemerkung |
|---|---|---|---|---|---|
| — | Fehlversuch 20.08. 21:10 | ✗ | 76 min, abgebrochen | 8 | Kriterium 3 unerfüllbar + fortgesetzte Alt-Sitzung. Verwertbar trotzdem: 19.899 Ausgabe-Tokens, davon nur ~2.600 Zeichen sichtbar → >95 % unsichtbares Nachdenken. Kompression feuerte bereits. |
| A | Qwen3.8-27B, reasoning_effort: medium — Ausgangswert |
||||
| D | Qwen3.8-27B, reasoning_effort: low |
Billigster Hebel: eine Konfigzeile, kein Modellwechsel | |||
| B | Qwen3.8-27B + DFlash-2 | Entwurfsmodell liegt bereit | |||
| C | Qwen3.6-35B-A3B (fast, 95,7 t/s) |
SWE-bench 73,4 |
Was der Fehlversuch schon gezeigt hat
Pro Zug erzeugte das Modell ~2.487 Tokens, sichtbar wurden davon 181–451 Zeichen. Bei 12,6 t/s sind das ~26 Minuten reine Erzeugung für ~2.600 Zeichen Text. Der Engpass ist Denk-Aufwand × Bandbreite, nicht das Harness. Darum Lauf D vor B und C: er prüft den billigsten Hebel zuerst.
Inhaltlich war das Modell gut — es fand von selbst den Prüfstein (mem0_ms → memory_ms im Frontend),
statt blind zu löschen.