Mémoire persistante de Discourse AI

J’apprécie le développement de Discourse AI, qui a été excellent. Les fonctionnalités arrivent rapidement à maturité et la direction semble très prometteuse.

Une question : existe-t-il actuellement un moyen, ou des plans de feuille de route, pour que l’IA conserve l’historique entre les discussions ? Pour le moment, chaque conversation recommence à zéro, et je me demande si une mémoire persistante ou une continuité entre les sessions est envisagée.

Si ce n’est pas déjà prévu dans la feuille de route, j’aimerais le soumettre comme demande de fonctionnalité. Avoir la possibilité pour l’IA de se souvenir des interactions passées rendrait les discussions plus naturelles et élargirait considérablement les cas d’utilisation.

2 « J'aime »

J’ai implémenté un magasin clé/valeur de base à l’aide d’un persona et d’outils personnalisés sur mon blog.

Cela dit, c’est très difficile à bien faire, il faut constamment pousser les personas à se souvenir des choses, ce qui est ennuyeux.

L’alternative est simplement d’utiliser RAG sur tout votre historique avec le bot (un peu similaire à la façon dont OpenAI le fait)


Je suppose pour commencer, quelle est votre vision sur la façon dont cela fonctionnerait ? Comment cela améliorerait-il les choses ?

1 « J'aime »

Je réfléchis vraiment à l’expérience de continuité pour l’utilisateur final. Je considère que le RAG est idéal pour que les administrateurs fournissent des informations sur les personas. Avec ChatGPT/Gemini/autres, le bot conserve un petit profil — ton, profondeur, objectifs en cours — vous n’avez donc pas à réexpliquer chaque session. C’est l’expérience qui serait formidable dans Discourse AI : l’assistant se souvient de quelques éléments durables sur chaque utilisateur et les utilise lorsque c’est pertinent, afin que les conversations reprennent là où elles se sont arrêtées.

Je n’ai aucune idée si l’historique des conversations RAG pour l’utilisateur final est possible d’une manière ou d’une autre.

La valeur réside dans le fait que toute sensation fiable de « il me connaît » sans sollicitations constantes améliore grandement l’expérience pour les cas d’utilisation où les mêmes types de conversations sont revisités par les utilisateurs.

Cela étant dit, je ne pense pas que tout cela soit une mince affaire. Je ne peux pas assez dire à quel point tout cela a déjà été bien développé.

J’ai réussi à créer un plugin et un outil personnalisé qui permettent une mémoire persistante pour les personas de Discourse AI. Cela fonctionne bien d’après mes tests limités, et je voulais le partager si quelqu’un le trouve utile.

Ce que cela fait

Cette solution permet aux personas d’IA de se souvenir des informations spécifiques à l’utilisateur à travers les conversations.

Exemple : un utilisateur peut dire « Souviens-toi que je préfère le mode sombre » et l’IA stockera et rappellera cette préférence lors des interactions futures.

Composants

Ce système comporte trois parties :

  • Plugin (discourse-ai-persistent-memory)
    Fournit le stockage en arrière-plan et une interface utilisateur de préférences où les utilisateurs peuvent visualiser, ajouter ou supprimer leurs souvenirs.
  • Outil IA personnalisé
    Un outil JavaScript qui donne aux personas l’accès aux fonctions de mémoire :
    memory.set, memory.get, memory.list, memory.delete
  • Prompt Système du Persona
    Instructions qui indiquent à l’IA quand et comment utiliser l’outil de mémoire.

Comment cela fonctionne

  • Les souvenirs sont stockés sous forme de paires clé/valeur dans le PluginStore, avec un espace de noms par utilisateur.
  • Le plugin injecte les fonctions de mémoire dans le ToolRunner via un prépending de module (module prepend).
  • Les utilisateurs peuvent gérer leurs souvenirs à l’adresse :
    /u/{username}/preferences/interface
  • L’IA charge tous les souvenirs dans le contexte (pas de récupération sélective).

Dépôt GitHub

https://github.com/BrianCraword/discourse-ai-persistent-memory

Recherche de commentaires

J’apprécierais vos commentaires sur :

  • L’approche consistant à utiliser le prépending (prepend) pour injecter dans ToolRunner
  • Si le chargement de tous les souvenirs par rapport à la récupération sélective est pertinent
  • Toutes les considérations de sécurité que j’aurais pu négliger
  • Les améliorations générales de la qualité du code

Avertissement

Je ne suis pas programmeur — ceci a été construit avec l’aide de l’IA. Je ne suis pas en mesure de fournir un support, mais tout le monde est libre de l’utiliser, de le forker ou de l’améliorer. Utilisez à vos propres risques.

PROMPT :

## Système de mémoire
Vous disposez d'un système de mémoire persistante via l'outil user_memory. Utilisez-le pour mémoriser les faits importants concernant chaque utilisateur.

### Quand SAUVEGARDER les souvenirs :

* L'utilisateur mentionne des préférences (style de communication, sujets d'intérêt, préférences de format)
* L'utilisateur partage des détails personnels (profession, localisation, passe-temps)
* L'utilisateur mentionne des projets ou des objectifs en cours
* L'utilisateur vous demande explicitement de vous souvenir de quelque chose

### Quand RAPPELER les souvenirs :

* Au début d'une nouvelle conversation, appelez user_memory avec l'action "list" pour voir ce que vous savez
* Lors de la discussion de sujets susceptibles d'être liés à des conversations précédentes

### Conventions de clé de mémoire :

* preference_style, preference_topics, preference_format
* personal_profession, personal_location, personal_interests
* project_AAAA_MM (ex: project_2026_01)
* goal_[sujet] (ex: goal_learning_python)

### Exemple d'utilisation :

* Pour sauvegarder : `{ action: "save", key: "preference_style", value: "concise responses" }`
* Pour rappeler : `{ action: "recall", key: "personal_profession" }`
* Pour lister tout : `{ action: "list" }`
* Pour oublier : `{ action: "forget", key: "old_key" }`

Saluez toujours les utilisateurs de retour en vérifiant d'abord leurs souvenirs.

---

La définition de l'outil elle-même n'a pas besoin de changements car elle est déjà générique — mettez simplement à jour l'exemple du paramètre description si vous le souhaitez :

**Description du paramètre (key) :** La clé de mémoire (ex: preference_style, current_project)

Souhaitez-vous que j'ajuste le ton ou que j'ajoute/supprime des cas d'utilisation spécifiques ?



OUTIL :

Nom :        Mémoire Utilisateur
Nom de l'outil :   user_memory

Description : Un système de mémoire qui permet à l'IA de sauvegarder, rappeler, lister et oublier des faits sur les utilisateurs. Les souvenirs persistent à travers les conversations.

Résumé :
Stocker et rappeler des faits persistants sur l'utilisateur

Paramètres :
- action (string)  [REQUIS]
  L'action à effectuer : save, recall, list, ou forget

- key (string)     [optionnel]
  La clé de mémoire (ex: preference_style, current_project)

- value (string)   [optionnel]
  La valeur à stocker (nécessaire uniquement pour l'action save)

2 « J'aime »