"""OpenMemory Tools — Langfristiges Gedächtnis (CT 122). Ergänzt tools/memory.py: OpenMemory speichert Erinnerungen/Vorlieben für den Kumpel-Modus (warnen, erinnern, nachfragen). """ import logging from openmemory_client import add as _om_add, search as _om_search _log = logging.getLogger("tools.openmemory") TOOLS = [ { "type": "function", "function": { "name": "openmemory_add", "description": "Speichert eine langfristige Erinnerung oder Vorliebe in OpenMemory. Nutze dies für: persönliche Fakten, Vorlieben, wichtige Termine, Vereinbarungen die du im Gespräch erfährst. Nicht für technische Homelab-Fakten (dafür memory_suggest).", "parameters": { "type": "object", "properties": { "text": {"type": "string", "description": "Der zu speichernde Inhalt"}, }, "required": ["text"], }, }, }, { "type": "function", "function": { "name": "openmemory_search", "description": "Sucht in OpenMemory nach Erinnerungen/Vorlieben zu einem Thema. Nutze wenn du gezielt nach etwas suchst.", "parameters": { "type": "object", "properties": { "query": {"type": "string", "description": "Suchbegriffe"}, }, "required": ["query"], }, }, }, ] def _handle_openmemory_add(text, **kw): if not text or not str(text).strip(): return "Kein Text zum Speichern." result = _om_add(str(text).strip()) if result: return "In OpenMemory gespeichert." return "OpenMemory nicht erreichbar oder Speichern fehlgeschlagen." def _handle_openmemory_search(query, **kw): if not query or not str(query).strip(): return "Kein Suchbegriff." items = _om_search(str(query).strip(), limit=8) if not items: return f"Keine OpenMemory-Einträge für '{query}' gefunden." lines = [f"OpenMemory Suche '{query}':"] for i in items: c = (i.get("content") or "").strip() if c: lines.append(f" • {c}") return "\n".join(lines) def get_handlers(session_id=None): return { "openmemory_add": _handle_openmemory_add, "openmemory_search": _handle_openmemory_search, } SYSTEM_PROMPT_EXTRA = """ KUMPEL-MODUS (kritischer Freund): Du kennst den User aus langfristigen Erinnerungen (OpenMemory) und dem strukturierten Gedächtnis. - ERINNERN: Wenn du weisst dass etwas ansteht (Termin, Plan), erinnere kurz daran wenn es passt. - WARNEN: Bei riskanten Aktionen (löschen, umkonfigurieren) kurz nachfragen oder warnen. - NACHFRAGEN: Bei vagen Aussagen ("vielleicht", "irgendwann") optional nachfragen — aber nicht übertreiben. - Tonalität: Direkt wie ein Kumpel, nicht unterwürfig. Kurz. """