Ich habe es geschafft, ein Plugin und ein benutzerdefiniertes Tool zu erstellen, das persistente Erinnerung für Discourse AI Personas ermöglicht. Es funktioniert bei meinen begrenzten Tests gut, und ich wollte es teilen, falls es jemand nützlich findet.
Was es tut
Diese Lösung ermöglicht es KI-Personas, benutzerspezifische Informationen über Konversationen hinweg zu speichern.
Beispiel: Ein Benutzer kann sagen: „Denk daran, dass ich den Dunkelmodus bevorzuge“, und die KI speichert diese Präferenz und ruft sie bei zukünftigen Interaktionen ab.
Komponenten
Dieses System besteht aus drei Teilen:
- Plugin (
discourse-ai-persistent-memory)
Stellt Backend-Speicher und eine Benutzeroberfläche für Benutzereinstellungen bereit, in der Benutzer ihre Erinnerungen anzeigen, hinzufügen oder löschen können.
- Benutzerdefiniertes KI-Tool
Ein JavaScript-Tool, das Personas Zugriff auf Speicherfunktionen gibt:
memory.set, memory.get, memory.list, memory.delete
- Persona System Prompt
Anweisungen, die der KI mitteilen, wann und wie das Speicher-Tool zu verwenden ist.
Funktionsweise
- Erinnerungen werden als Schlüssel/Wert-Paare im
PluginStore gespeichert, pro Benutzer benannt.
- Das Plugin injiziert Speicherfunktionen über ein Modul-Prepend in den
ToolRunner.
- Benutzer können ihre Erinnerungen verwalten unter:
/u/{username}/preferences/interface
- Die KI lädt alle Erinnerungen in den Kontext (keine selektive Abfrage).
GitHub-Repository
https://github.com/BrianCraword/discourse-ai-persistent-memory
Feedback erwünscht
Ich würde mich über Feedback zu Folgendem freuen:
- Der Ansatz, Prepend zu verwenden, um in
ToolRunner zu injizieren
- Ob das Laden aller Erinnerungen oder die selektive Abfrage sinnvoll ist
- Alle Sicherheitsaspekte, die ich möglicherweise übersehen habe
- Allgemeine Verbesserungen der Codequalität
Haftungsausschluss
Ich bin kein Programmierer – dies wurde mit KI-Unterstützung erstellt. Ich kann keinen Support leisten, aber jeder ist willkommen, es zu nutzen, zu forken oder zu verbessern. Nutzung auf eigene Gefahr.
PROMPT:
## Speichersystem
Sie verfügen über ein persistentes Speichersystem über das Tool user_memory. Verwenden Sie es, um sich wichtige Fakten über jeden Benutzer zu merken.
### Wann Erinnerungen GESPEICHERT werden sollten:
* Benutzer erwähnt Präferenzen (Kommunikationsstil, Interessengebiete, Formatpräferenzen)
* Benutzer teilt persönliche Details mit (Beruf, Wohnort, Hobbys)
* Benutzer erwähnt laufende Projekte oder Ziele
* Benutzer bittet Sie ausdrücklich, sich etwas zu merken
### Wann Erinnerungen ABGERUFEN werden sollten:
* Zu Beginn einer neuen Konversation rufen Sie user_memory mit der Aktion „list“ auf, um zu sehen, was Sie wissen
* Bei der Diskussion von Themen, die sich auf frühere Konversationen beziehen könnten
### Konventionen für Speicher-Schlüssel:
* preference_style, preference_topics, preference_format
* personal_profession, personal_location, personal_interests
* project_YYYY_MM (z. B. project_2026_01)
* goal_[thema] (z. B. goal_learning_python)
### Beispielverwendung:
* Zum Speichern: `{ action: "save", key: "preference_style", value: "concise responses" }`
* Zum Abrufen: `{ action: "recall", key: "personal_profession" }`
* Alle auflisten: `{ action: "list" }`
* Zum Vergessen: `{ action: "forget", key: "old_key" }`
Begrüßen Sie wiederkehrende Benutzer immer, indem Sie zuerst ihre Erinnerungen überprüfen.
---
Die Tool-Definition selbst muss nicht geändert werden, da sie bereits generisch ist – aktualisieren Sie nur das Beispiel für die Beschreibungsparameter, wenn Sie möchten:
**Parameterbeschreibung (key):** Der Speicher-Schlüssel (z. B. preference_style, current_project)
Möchten Sie, dass ich den Ton anpasse oder bestimmte Anwendungsfälle hinzufüge/entferne?
TOOL:
Name: Benutzerspeicher
Tool Name: user_memory
Beschreibung:
Ein Speichersystem, das es der KI ermöglicht, Fakten über Benutzer zu speichern, abzurufen, aufzulisten und zu vergessen.
Erinnerungen bleiben über Konversationen hinweg bestehen.
Zusammenfassung:
Persistente Fakten über den Benutzer speichern und abrufen
Parameter:
- action (string) [ERFORDERLICH]
Die auszuführende Aktion: save, recall, list oder forget
- key (string) [optional]
Der Speicher-Schlüssel (z. B. preference_style, current_project)
- value (string) [optional]
Der zu speichernde Wert (nur für die Aktion „save“ erforderlich)