diff --git a/SAVEPOINT.md b/SAVEPOINT.md index d730614..9a840a1 100644 --- a/SAVEPOINT.md +++ b/SAVEPOINT.md @@ -78,32 +78,51 @@ Diese 5 Dateien wurden vom abgebrochenen Lauf A2 bereits bearbeitet und im Commi - **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 +### 8. `mcp/mcp_mc.py` — **ERLEDIGT (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" in Texten/Kommentaren +- Treffer: "mem0-Gedaechtnis :8765" in einer langen Agent-Injektionszeile (Zeile 31) +- Nur Text → mem0-Gedaechtnis :8765 entfernen ### 10. `deploy/autoupdate.sh` -- Treffer: "mem0" in Texten/Kommentaren +- Treffer: "Gehirn-Check (Mem0, Tools, Voice)" → "Gehirn-Check (Tools, Voice)" -### 11. `deploy/hermes-postcheck.sh` -- Treffer: "mem0" in Texten/Kommentaren +### 11. `deploy/hermes-postcheck.sh` — **HEIKEL: 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/health` → **wird immer FAILn**, da mem0_service stillgelegt +- **Zeilen 20-24:** curl-Check auf `/api/memory` → **wird 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.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. +### 12. `deploy/restore.sh` — **LOGIK: 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.sh` -- Treffer: "mem0" in Texten/Kommentaren +### 13. `deploy/stack-postcheck.sh` — **LOGIK: 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/health` → **wird 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: "mem0" in Texten/Kommentaren +- Treffer: "für Mem0/Gedächtnis" → "für Gedächtnis" (nur Text) ### 15. `deploy/venv-audit.sh` -- Treffer: "mem0" in Texten/Kommentaren +- **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` @@ -144,10 +163,14 @@ Diese 5 Dateien wurden vom abgebrochenen Lauf A2 bereits bearbeitet und im Commi 6. **`/api/memory` existiert nicht mehr** (Kahlschlag), aber `frontend/src/lib/queries.ts` ruft es noch via `useMemory()`: `api(`/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`) +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`) diff --git a/mcp/mcp_mc.py b/mcp/mcp_mc.py index c3385c3..bb5cf4d 100644 --- a/mcp/mcp_mc.py +++ b/mcp/mcp_mc.py @@ -216,7 +216,7 @@ def system_status() -> str: @mcp.tool() def list_services() -> str: - """Erreichbarkeit aller Stack-Dienste (Engine, Gateway, Hermes, Mem0, Voice).""" + """Erreichbarkeit aller Stack-Dienste (Engine, Gateway, Hermes, Voice).""" data = _get("/api/system/services") return "\n".join( f"{'✅' if s['ok'] else '❌'} {s['name']} ({s['url']})" @@ -227,7 +227,7 @@ def list_services() -> str: @mcp.tool() def restart_service(service: str) -> str: """Startet einen erlaubten Dienst neu. Erlaubt: llama-swap (Engine) | mission-control-2 | - hermes-gateway | hermes-terminal | mem0-service | voice-service. Der Engine-Neustart + hermes-gateway | hermes-builtin-ui | voice-service. Der Engine-Neustart (llama-swap = System-Dienst) kann das Box-Passwort verlangen, wenn kein NOPASSWD gesetzt ist.""" res = _post("/api/system/restart", {"service": service}) return f"Restart {service}: {'ok' if res.get('ok') else 'Fehler — ' + res.get('err', '')}" @@ -235,7 +235,7 @@ def restart_service(service: str) -> str: @mcp.tool() def backup_now() -> str: - """Erstellt SOFORT ein Voll-Backup (mem0 + Configs + Secrets). Nutze dies vor riskanten + """Erstellt SOFORT ein Voll-Backup (Configs + Secrets). Nutze dies vor riskanten Änderungen oder wenn der Nutzer ein Backup will.""" r = _post("/api/system/backup") return f"Backup erstellt: {json.dumps(r, ensure_ascii=False)}"