154 lines
8.7 KiB
Markdown
154 lines
8.7 KiB
Markdown
# 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.py` — `MEMORY_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.py` — `Mem0-Retrieve` → `Gedächtnis-Retrieve`
|
|
4. `backend/routers/zeitmaschine.py` — `Mem0` in Docstrings/Kommentaren → `Gedächtnis`
|
|
5. `backend/services/sentry.py` — `MC_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-Dedupe` → `Re-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-Retrieve` → `Gedä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-Retrieve` → `Geparkten Gedächtnis-Retrieve`
|
|
- **Line 106:** `Unter-Detail: mem0 (Teil VON hirn...` → `Unter-Detail: memory (Teil VON hirn...`
|
|
- **Line 116:** `Agent + Mem0 + TTFT` → `Agent + Gedächtnis + TTFT`
|
|
- **Line 133:** `Agent-Overhead + Mem0 + LLM-TTFT` → `Agent-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 hirn` → `memory = Unter-Detail INNERHALB von hirn`
|
|
- **Line 455:** `Agent + Mem0 + LLM-TTFT` → `Agent + 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-Detail` → `Gedä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-Suche` → `Agent + 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-managed` → `voice-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
|
|
|
|
## Noch offen (nächste Dateien)
|
|
|
|
### 8. `mcp/mcp_mc.py`
|
|
- Treffer: "mem0" in Texten (Stack-Dienste, Backup-Beschreibung, Service-Liste)
|
|
- Keine Logik, nur Dokumentation/Texte → Mem0 → Gedächtnis
|
|
|
|
### 9. `deploy/agent-hooks/box-steckbrief-inject.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 10. `deploy/autoupdate.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 11. `deploy/hermes-postcheck.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 12. `deploy/restore.sh`
|
|
- Treffer: "mem0" — **VORSICHT:** Dies ist die Gegenstück zu backup.sh! Wenn restore.sh mem0-Reste im Restore-Prozess hat, müssen diese entfernt werden. Keine Logik ändern, nur mem0-Referenzen.
|
|
|
|
### 13. `deploy/stack-postcheck.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 14. `deploy/warmup.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 15. `deploy/venv-audit.sh`
|
|
- Treffer: "mem0" in Texten/Kommentaren
|
|
|
|
### 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` bearbeiten → Mem0 in Texten/Kommentaren zu Gedächtnis
|
|
2. `deploy/agent-hooks/box-steckbrief-inject.sh` bearbeiten
|
|
3. `deploy/autoupdate.sh`, `deploy/hermes-postcheck.sh`, `deploy/restore.sh`, `deploy/stack-postcheck.sh`, `deploy/warmup.sh`, `deploy/venv-audit.sh` bearbeiten
|
|
4. `mem0_service/` Ordner löschen
|
|
5. `ruff` + `import app` prüfen
|
|
6. `grep -ril mem0 backend/ mcp/ deploy/ --include='*.py' --include='*.sh'` → muss 0 ergeben
|
|
7. `frontend/dist` neu bauen (Box: `cd frontend && npm run build`)
|