Commit Graph

8 Commits

Author SHA1 Message Date
Hitonabi 6db1224d95 Gedächtnis: nur Relevantes lernen/erinnern (Anti-Selbstbezug + Cache-Stabilität)
Der auto-lernende Mem0-Store sammelte trotz Relevanz-Direktive viel Müll:
Fakten ÜBER den Assistenten selbst (Hermes/Lucy), transiente Zustände
(Commit-Rückstand, Cronjob-Läufe, Onboarding-/Test-Fragen) und Gesprächs-Meta.
Live-Store war zu ~40% solcher Ballast; der niedrige Recall-Schwellwert (0.3)
blendete zudem marginale Fakten pro Turn ein und brach damit --cache-reuse.

- mem0_service/app.py: custom_instructions verschärft (NIEMALS Fakten über den
  Assistenten selbst / keine zeitgebundenen Zustände) + deterministischer
  Post-Extraktions-Guard (_is_junk_fact) löscht Assistenten-Meta/transiente
  Fakten, die mem0-OSS trotz Direktive extrahiert — unabhängig vom LLM.
- hermes/plugins/mc2-memory/__init__.py: RECALL_MIN_SCORE 0.3->0.5 (nur starke
  Treffer, oft leer -> stabilerer Prompt-Prefix -> --cache-reuse greift),
  MIN_USER_LEN 12->25 + Trivial-Turn-Skip (Begrüßung/Quittung/Aufwärmen).

Alles env-überschreibbar und reversibel. Backend/Frontend unberührt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-01 16:45:45 +02:00
Hitonabi 209afebefa Fix: Mem0-Relevanzfilter — keine Tagesnachrichten/Welt-Events/Meta-Smalltalk mehr lernen
Auto-Lernen speicherte News (Bahn-Ausfall, SpaceX...) + Meta-Aussagen ('Nutzer fragt nach X') als
Fakten. custom_instructions weisen die Extraktion jetzt an, NUR dauerhaft nützliche Nutzer-/Projekt-/
Stack-Fakten zu behalten und Vergängliches komplett zu ignorieren. (10 Altlasten bereits gelöscht.)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-28 10:38:31 +02:00
Hitonabi 46f108b6f3 Feat: Update-Absicherung — Versions-Pins + Smoke-Test + Upgrade-Doku
Schliesst den offenen "Update"-Punkt aus dem Upgrade-Playbook (Backup war Schicht 1):
- mem0_service/requirements.txt jetzt GEPINNT (mem0ai==2.0.8, chromadb==1.5.9,
  fastapi==0.138.1, uvicorn==0.49.0) -> Upgrades nur absichtlich. Grund: der Sidecar
  nutzt mem0-Interna (NoThink-Swap, Roh-Chroma-Zugriff), die ein blindes Upgrade still
  brechen koennte.
- mem0_service/smoke_test.py: prueft add/Suche/Auto-Lernen/Deutsch/Auto-Einordnung/Graph
  gegen eine WEGWERF-Collection (fasst /srv/models/mem0 nicht an). Vor/nach mem0-Upgrades
  laufen lassen. Live: alle Tests gruen.
- docs/UPGRADE.md: sichere Upgrade-Prozedur (Backup -> Pin -> install -> smoke_test ->
  gruen=restart / rot=anpassen oder restore) + reagraph/React- und Hermes-Plugin-Hinweise.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:32:36 +02:00
Hitonabi 9fb321e45e Fix: Fakt-Extraktion erzwingt Deutsch (Fachbegriffe bleiben)
custom_instructions als zwingende Sprach-Direktive — mem0s englischer Extraktions-Prompt
zog sonst Richtung Englisch. Eigennamen/Befehle/Modellnamen (PowerShell-Push, Qwen3.6, …)
bleiben unveraendert. Live verifiziert: gemischter DE/EN-Input -> Fakten auf Deutsch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:09:20 +02:00
Hitonabi b383711f6d Feat: Fundierte 4-Typen-Memory-Taxonomie + LLM-Auto-Einordnung
Saubere Neuordnung der Gedaechtnis-Kategorien an der etablierten Memory-Taxonomie
(semantisch/prozedural/episodisch), bewusst knapp (Best Practice: 3-5, klar beschrieben):
  identity (Identitaet & Vorlieben) · knowledge (Wissen & Fakten) ·
  rules (Regeln & Konventionen) · events (Ereignisse & Entscheidungen)
Loest die alten gemischten 5 (user/instruction/stable/versioned/ephemeral) ab.

Auto-Einordnung: OSS-mem0 kann nicht nativ kategorisieren (Cloud-Feature) -> nach der
Fakt-Extraktion ordnet dasselbe (Thinking-freie) Hirn jeden neuen Fakt per JSON-Call
genau einer Kategorie zu (classify_facts im Sidecar /learn). Behebt den "alles ist stable"-
Bug. Manuelle Eintraege: Kategorie weiter waehlbar (Default knowledge).

Umgesetzt in mem0_service, backend (services/routers), mcp_memory (Tool-Docs) und Frontend
(MemoryView + GraphView: Labels/Farben/Filter). Kein Migrationsbedarf (leerer Start).

Live verifiziert: gemischter Absatz -> identity/rules/knowledge/events korrekt zugeordnet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 21:04:55 +02:00
Hitonabi 56243e1835 Feat: Gedaechtnis-Graph-Ansicht (Reagraph) + /api/memory/graph
Obsidian-artige Visualisierung des Gedaechtnisses: Knoten = Fakten, Kanten =
semantische Aehnlichkeit (Kosinus der gespeicherten Embeddings, kNN je Knoten),
Farbe = Kategorie, Groesse = Vernetzung. Klick auf Knoten -> Detailpanel mit
verwandten Fakten + vergessen.

- mem0_service/app.py: /graph rechnet Aehnlichkeitskanten aus den Chroma-Embeddings.
- backend: services.memory.graph() + /api/memory/graph (Passthrough).
- frontend: GraphView (reagraph, WebGL), Graph/Liste-Umschalter in MemoryView,
  GraphErrorBoundary, lazy-load (three.js nur bei Bedarf -> Hauptbundle bleibt schlank).
  reagraph auf 4.22.0 gepinnt (4.23+ braucht @react-three/fiber v9 = React 19; Projekt ist React 18).

Live gegen die Box verifiziert (Graph rendert, Kategorien-Farben, Kanten, dunkel).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 20:30:17 +02:00
Hitonabi 6d552b035a Refactor: Mem0-Sidecar nutzt lifespan statt deprecated on_event
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:29:44 +02:00
Hitonabi 05bef8642d Feat: Agent-Memory auf Mem0 (auto-lernend, semantisch) via Sidecar
Paket A des Plans. Ersetzt die flache SQLite-Fakten-DB durch Mem0 (LLM-Auto-
Extraktion + Vektor/Chroma-Suche). Architektur erzwungen durch Python-Split:
MC2-Backend laeuft auf 3.14 (kann mem0 nicht importieren), mem0+chromadb nur
auf 3.12 (~/.mem0/venv) -> Mem0-Sidecar (FastAPI, localhost:8765), MC2 spricht
ihn per HTTP. /api/memory-Form bleibt unveraendert (UI + MCP kompatibel).

- mem0_service/: Sidecar (app.py), Migration (migrate.py), deps.
  - Embeddings: neue llama-swap embed-Rolle (Qwen3-Embedding-0.6B, 1024 Dim,
    pooling last) ueber /v1/embeddings.
  - LLM-Extraktion: lokales fast-Hirn; NoThinkLLM schaltet Qwen3-Thinking ab
    (sonst bricht json_object-Extraktion ab), custom_instructions halten Deutsch.
- backend/services/memory.py: duenner HTTP-Client auf den Sidecar (semantische
  Suche mit score, verbatim add, learn()). Router: /api/memory/learn.
- mcp/mcp_memory.py: neues learn-Tool (Auto-Lernen aus Gespraechs-Turns),
  search jetzt semantisch.
- Frontend: Relevanz-Score + Auto/Manuell-Herkunft im Gedaechtnis-Tab.
- deploy/: mem0-service.service + deploy.sh (uv-Install, Migration, Restart).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 19:24:22 +02:00