Files
mission-control-v2/SAVEPOINT.md
T

12 KiB

Savepoint — Mem0-Ausbau (Referenzaufgabe)

Stand: 2026-08-22, Worktree referenz/mem0-ausbau in F:\Coding Stuff\mc2-referenz. Branch wurde aus d508a84 (A2's gesicherter Stand) erstellt und enthält dessen 5 bearbeitete Dateien.

Auftrag

docs/aufgaben/referenzaufgabe-mem0-ausbau.md: Mem0-Reste vollständig entfernen, ohne MC2/Frontend/Deployment zu brechen.

  • Messlatte: ruff clean, Backend import app sauber, grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh' = 0 Dateien, mem0_service/ entfernt, Box-Smoke/Health so weit wie möglich grün.
  • Prüfstein: API-Felder wie mem0_ms nicht einfach löschen — Frontend mit anpassen oder Feld sauber aus beiden Seiten entfernen.
  • Arbeitsweise: Datei für Datei, höchstens zwei vor der ersten Änderung. Nach jeder Änderung ein Satz.
  • Live-Deployment ~/mission-control-v2 ist TABU.

Wichtig: A2-Vorgang (Commit d508a84 — bereits auf diesem Branch)

Diese 5 Dateien wurden vom abgebrochenen Lauf A2 bereits bearbeitet und im Commit d508a84 gesichert:

  1. backend/config.pyMEMORY_DB und MC_MEM_DEDUPE_ENABLED entfernt, MEM0_SERVICE_URL-Kommentar bereinigt
  2. backend/routers/system.py_mem0_reachable() entfernt, mem0_reachable aus Systeminfo
  3. backend/routers/voice.pyMem0-RetrieveGedächtnis-Retrieve
  4. backend/routers/zeitmaschine.pyMem0 in Docstrings/Kommentaren → Gedächtnis
  5. backend/services/sentry.pyMC_MEM0_DASHBOARD_URL in Docstring entfernt

git status war nach d508a84 clean.

Wichtig: Kahlschlag-Commit 1e68f62 (bereits auf main)

  • backend/services/memory.py — gelöscht
  • backend/routers/memory.py — gelöscht (/api/memory existiert nicht mehr)
  • deploy/mc2-steward.service — gelöscht
  • deploy/mem0-service.service — gelöscht
  • deploy/voice-service.service — gelöscht
  • deploy/mem0-konsolidierung.* — gelöscht

Erledigt in dieser Sitzung

1. backend/steward.py

  • Toter Import from services import memory as memory_svc entfernt
  • Toter memory_svc.AUTO_DEDUPE_ENABLED-Block entfernt
  • Docstring: Mem0-Auto-DedupeRe-Warm-Wächter und Health-Wächter (sentry)
  • Docstring: memory.auto_dedupe_loop — Gedächtnis-Dubletten entfernt
  • Docstring: MC_MEM_DEDUPE_ENABLED entfernt
  • Verifiziert: memory.py wurde in Kahlschlag gelöscht, steward.py hatte toten Import

2. backend/services/voice_metrics.py (alle 9 Treffer bereinigt)

  • Docstring (3x): Mem0-RetrieveGedächtnis-Retrieve
  • Line 10: Mem0-Retrieve im Best-effort-Kommentar → Gedächtnis-Retrieve
  • Line 39: Mem0-Retrieve im docstring → Gedächtnis-Retrieve
  • Line 56: Geparkten Mem0-RetrieveGeparkten Gedächtnis-Retrieve
  • Line 106: Unter-Detail: mem0 (Teil VON hirn...Unter-Detail: memory (Teil VON hirn...
  • Line 116: Agent + Mem0 + TTFTAgent + Gedächtnis + TTFT
  • Line 133: Agent-Overhead + Mem0 + LLM-TTFTAgent-Overhead + Gedächtnis + LLM-TTFT
  • Line 141: mem0 = _take_retrieve(...)memory = _take_retrieve(...) (starker Kommentar)
  • Line 154: "mem0_ms""memory_ms" (API-Feld im JSON-Rückgabewort)

3. frontend/src/lib/api.ts (3 Treffer)

  • Line 446: mem0 = Unter-Detail INNERHALB von hirnmemory = Unter-Detail INNERHALB von hirn
  • Line 455: Agent + Mem0 + LLM-TTFTAgent + Gedächtnis + LLM-TTFT
  • Line 457: mem0_ms: number | null // ... (Mem0-Retrieve)memory_ms: number | null // ... (Gedächtnis-Retrieve)

4. frontend/src/components/dashboard/LatencyCard.tsx (4 Treffer)

  • Line 5: Mem0 ist ein Unter-DetailGedächtnis ist ein Unter-Detail
  • Line 42: t.mem0_ms (2x) → t.memory_ms (2x)
  • Line 106: latest.mem0_ms (2x) → latest.memory_ms (2x)
  • Line 131: Agent + Mem0-SucheAgent + Gedächtnis-Suche

5. frontend/src/views/GuideView.tsx (1 Treffer, kompletter Paragraph)

  • Stack-Paragraph (Card 8 "Gedächtnis & RAG"): "Dein Gedächtnis ist Mem0-basiert: auto-lernend..." umgeschrieben zu "Dein Gedächtnis ist auto-lernend & semantisch: Der Agent lernt im Hintergrund nach jedem Turn..."
  • Gotcha-Zeile (Mem0-extraktion) entfernt
  • Begründung: Gedächtnis-Tab existiert nicht mehr (Kahlschlag), Mem0 wurde durch Hermes-Nativ abgelöst

6. backend/services/backup.py (1 Treffer)

  • Docstring: Full state backup (mem0 + ...)Full state backup (...)

7. deploy/backup.sh (8 Treffer)

  • Line 6-7: Kommentar mem0 (Chroma + history.db) aus Inhalt entfernt
  • Line 23: MEM0_DIR="${MC_MEM0_DIR:-/srv/models/mem0}" — ganze Zeile gelöscht
  • Line 30: mkdir -p "$STAGE/mem0" — aus mkdir entfernt
  • Line 32: [ -d "$MEM0_DIR" ] && cp -a "$MEM0_DIR/." "$STAGE/mem0/" || true — ganze Zeile gelöscht
  • Line 63: Kommentar mem0-venv ist uv-managedvoice-venv ist uv-managed
  • Line 71: freeze_venv "$HOME/.mem0/venv/bin/python" "$KG/pip-mem0.txt" — ganze Zeile gelöscht
  • Line 82: $HOME/.mem0/venv/bin/python aus for-Schleife entfernt
  • Line 95: MANIFEST: mem0 (chroma + history.db) aus Inhalt entfernt

8. mcp/mcp_mc.pyERLEDIGT (3 Treffer)

  • Line 219: list_services() Docstring: "Engine, Gateway, Hermes, Mem0, Voice" → "Engine, Gateway, Hermes, Voice"
  • Line 229-231: restart_service() Docstring: mem0-service entfernt, hermes-terminal korrigiert zu hermes-builtin-ui (matcht backend allowlist in maintenance.py)
  • Line 238: backup_now() Docstring: "mem0 + Configs + Secrets" → "Configs + Secrets"
  • Verifiziert: rg -i mem0 mcp/mcp_mc.py = 0 Treffer, py_compile mcp/mcp_mc.py OK
  • Achtung: Der mc2-memory-Plugin (hermes/plugins/mc2-memory/__init__.py) ruft noch /api/memory und /api/memory/learn auf. Der Kahlschlag-Commit hat backend/routers/memory.py gelöscht → dieser API-Pfad existiert nicht mehr. Der Plugin degraded silently (prefetch="", learn fail). Entscheidung: Nicht bearbeiten, Plugin ist im hermes/plugins/-Ordner, nicht in der Messlatte.

9. deploy/agent-hooks/box-steckbrief-inject.sh

  • Treffer: "mem0-Gedaechtnis :8765" in einer langen Agent-Injektionszeile (Zeile 31)
  • Nur Text → mem0-Gedaechtnis :8765 entfernen

10. deploy/autoupdate.sh

  • Treffer: "Gehirn-Check (Mem0, Tools, Voice)" → "Gehirn-Check (Tools, Voice)"

11. deploy/hermes-postcheck.shHEIKEL: Enthält LOGIK, nicht nur Text

  • Line 3: Comment "(Mem0 + die mc2-memory-Integration) noch?" → muss aktualisiert werden
  • Line 8: MEM0_URL="${MEM0_SERVICE_URL:-http://127.0.0.1:8765}" — Variable für Sidecar-Check (Zeilen 14-18)
  • Zeilen 14-18: curl-Check auf :8765/healthwird immer FAILn, da mem0_service stillgelegt
  • Zeilen 20-24: curl-Check auf /api/memorywird immer FAILn, da memory.py in Kahlschlag gelöscht
  • Zeilen 26-31: grep-Check für memory.provider=mc2-memory in config.yaml → das ist neues Hermes-nativ-Memory, kein Mem0-Rest. NICHT entfernen (gehört zur aktuellen Architektur).
  • Zeilen 52-58: Plugin-Check für mc2-memory → ebenfalls neue Architektur, kein Mem0-Rest. NICHT entfernen.
  • Entscheidung: Zeilen 8, 14-18, 20-24 entfernen (toter Sidecar + toter /api/memory-Endpunkt). Zeilen 26-31 und 52-58 behalten (gehören zur neuen Hermes-native Memory).

12. deploy/restore.shLOGIK: Gegenstück zu backup.sh

  • Line 18: MEM0_DIR="${MC_MEM0_DIR:-/srv/models/mem0}" — Variable
  • Line 22: SERVICES="mem0-service mission-control-2 hermes-gateway" → "mem0-service" entfernen
  • Line 101: dry-run echo "mem0 → $MEM0_DIR" — mem0-Zeile entfernen
  • Line 122: if [ -d "$STAGE/mem0" ]; then rm -rf "$MEM0_DIR"; mkdir ...; cp ...; fi — ganze Zeile entfernen
  • Da backup.sh kein $STAGE/mem0 mehr erstellt, ist diese Logik tot (würde nie feuern). Entfernen.

13. deploy/stack-postcheck.shLOGIK: Enthält toten curl-Check

  • Line 6: Comment "prüft das Gehirn/Mem0" → "prüft das Gehirn"
  • Line 12: MEM0_URL="${MEM0_SERVICE_URL:-http://127.0.0.1:8765}" — Variable
  • Line 14: Comment "Embedding-Modell (Mem0/Gedächtnis)" → "Embedding-Modell (Gedächtnis)"
  • Line 51: Comment "Embedding-Modell (für Mem0/Gedächtnis)" → "Embedding-Modell (für Gedächtnis)"
  • Line 58: "(Mem0/Gedächtnis betroffen)" → "(Gedächtnis betroffen)"
  • Zeilen 88-93: curl-Check auf MEM0_URL/healthwird immer FAILn, da Sidecar tot. Ganze Block entfernen.
  • Die Embedding-Checks (Zeilen 51-59) bleiben — sie prüfen das Embedding-Modell, das auch für die neue Memory-Architektur relevant ist.

14. deploy/warmup.sh

  • Treffer: "für Mem0/Gedächtnis" → "für Gedächtnis" (nur Text)

15. deploy/venv-audit.sh

  • Line 2: Comment "(Mem0, Voice) altern" → "(Voice) altern"
  • Line 12: VENVS=("$HOME/.mem0/venv:mem0" "$HOME/.voice/venv:voice") → mem0-Entry entfernen

16. Ordner mem0_service/ löschen

  • Enthält: app.py, migrate.py, smoke_test.py, requirements.txt
  • Toter Sidecar: Port :8765 antwortet nicht, nicht systemd-registered

Noch nicht touchen (out-of-scope / unklar)

voice_service/app.py + voice_service/install.sh

  • Enthalten "mem0" — gehören zur voice_service, nicht zur Messlatte
  • voice_service.service wurde in Kahlschlag gelöscht, aber voice_service/ Ordner ist noch vorhanden
  • Entscheidung: Nicht bearbeiten, da nicht in backend/, mcp/, deploy/ Messlatte

hermes/plugins/mc2-memory/ (2 Dateien)

  • __init__.py, plugin.yaml
  • Rufen /api/memory auf → existiert nicht mehr, degradieren gracefully
  • Nicht in Messlatte (deploy/ mit .py/.sh — YAML zählt nicht, Python-Plugin ist extern)
  • Entscheidung: Nicht bearbeiten (Hermes-Plugin, nicht Teil von MC2)

deploy/mission-control-2.service + deploy/mc2-backup.service

  • systemd Service-Dateien (keine .py oder .sh)
  • Nicht in Messlatte, aber könnten Mem0-Referenzen haben
  • Entscheidung: Prüfen, ob sie Mem0 nennen; wenn ja, Text anpassen

deploy/llama-swap.config.yaml

  • YAML, nicht in Messlatte

frontend/dist/

  • Muss nach Änderungen neu gebaut werden (npm run build)
  • NACHDEM alle .ts/.tsx Dateien bearbeitet sind

Bekannte Fallstricke

  1. Prüfstein (Frontend-Konsistenz): mem0_ms war ein API-Feld, das das Frontend las. Wurde zu memory_ms umbenannt + Frontend angepasst. Nicht einfach löschen.
  2. Restore vs. Backup: restore.sh ist das Gegenstück zu backup.sh. Wenn backup.sh mem0 weglässt, darf restore.sh nicht versuchen, mem0 zu restaurieren. Sorgfältig prüfen!
  3. head funktioniert in PowerShell nicht: Muss Select-Object -First N verwenden.
  4. Globs für native Befehle: rg mit Globs muss gequoted werden, sonst spaltet PowerShell falsch.
  5. frontend/dist ist im git: Nach Frontend-Änderungen muss npm run build laufen und das neue dist committet werden.
  6. /api/memory existiert nicht mehr (Kahlschlag), aber frontend/src/lib/queries.ts ruft es noch via useMemory(): api<Memory[]>(/api/memory.... Das ist ein vorher bestehendes Problem (nicht eingeführt in dieser Runde).

Nächster Schritt

  1. mcp/mcp_mc.py committen (bereits bearbeitet)
  2. deploy/agent-hooks/box-steckbrief-inject.sh bearbeiten (1 Treffer, Text)
  3. deploy/autoupdate.sh, deploy/warmup.sh bearbeiten (je 1 Treffer, Text)
  4. deploy/venv-audit.sh bearbeiten (2 Treffer, Text + Venv-Liste)
  5. deploy/stack-postcheck.sh bearbeiten (6 Treffer, 1 Block-Entfernung, 4 Kommentare)
  6. deploy/restore.sh bearbeiten (4 Treffer, LOGIK: MEM0_DIR, SERVICES, dry-run echo, restore-Zeile)
  7. deploy/hermes-postcheck.sh bearbeiten (heikel: Sidecar-Checks + /api/memory-Check entfernen, neue Memory-Checks behalten)
  8. mem0_service/ Ordner löschen
  9. ruff + import app prüfen
  10. grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh' → muss 0 ergeben
  11. frontend/dist neu bauen (Box: cd frontend && npm run build)