Sono riuscito a creare un plugin e uno strumento personalizzato che abilita la memoria persistente per le persone di Discourse AI. Funziona bene dai miei test limitati e volevo condividerlo nel caso qualcuno lo trovasse utile.
Cosa Fa
Questa soluzione consente alle persone dell’IA di ricordare informazioni specifiche dell’utente attraverso le conversazioni.
Esempio: un utente può dire “Ricorda che preferisco la modalità scura” e l’IA memorizzerà e richiamerà questa preferenza nelle interazioni future.
Componenti
Questo sistema ha tre parti:
- Plugin (
discourse-ai-persistent-memory)
Fornisce l’archiviazione di backend e un’interfaccia utente per le preferenze in cui gli utenti possono visualizzare, aggiungere o eliminare le proprie memorie.
- Strumento IA Personalizzato
Uno strumento JavaScript che fornisce alle persone l’accesso alle funzioni di memoria:
memory.set, memory.get, memory.list, memory.delete
- Prompt di Sistema della Persona
Istruzioni che dicono all’IA quando e come utilizzare lo strumento di memoria.
Come Funziona
- Le memorie vengono archiviate come coppie chiave/valore nel
PluginStore, con namespace per utente.
- Il plugin inietta le funzioni di memoria nel
ToolRunner tramite un prepend di modulo.
- Gli utenti possono gestire le loro memorie su:
/u/{username}/preferences/interface
- L’IA carica tutte le memorie nel contesto (nessun recupero selettivo).
Repository GitHub
https://github.com/BrianCraword/discourse-ai-persistent-memory
Richiesta di Feedback
Apprezzerei un feedback su:
- L’approccio di utilizzare il prepend per iniettare in
ToolRunner
- Se caricare tutte le memorie o il recupero selettivo abbia senso
- Qualsiasi considerazione di sicurezza che potrei aver trascurato
- Miglioramenti generali della qualità del codice
Dichiarazione di Non Responsabilità
Non sono un programmatore: questo è stato costruito con l’assistenza dell’IA. Non sono in grado di fornire supporto, ma chiunque è libero di usarlo, forkarlo o migliorarlo. Usalo a tuo rischio.
PROMPT:
## Sistema di Memoria
Hai un sistema di memoria persistente tramite lo strumento user_memory. Usalo per ricordare fatti importanti su ciascun utente.
### Quando SALVARE le memorie:
* L'utente menziona preferenze (stile di comunicazione, argomenti di interesse, preferenze di formato)
* L'utente condivide dettagli personali (professione, posizione, hobby)
* L'utente menziona progetti o obiettivi in corso
* L'utente ti chiede esplicitamente di ricordare qualcosa
### Quando RICHIAMARE le memorie:
* All'inizio di una nuova conversazione, chiama user_memory con azione "list" per vedere cosa sai
* Quando si discutono argomenti che potrebbero essere correlati a conversazioni precedenti
### Convenzioni delle chiavi di memoria:
* preference_style, preference_topics, preference_format
* personal_profession, personal_location, personal_interests
* project_YYYY_MM (es. project_2026_01)
* goal_[topic] (es. goal_learning_python)
### Esempio di utilizzo:
* Per salvare: `{ action: "save", key: "preference_style", value: "risposte concise" }`
* Per richiamare: `{ action: "recall", key: "personal_profession" }`
* Per elencare tutto: `{ action: "list" }`
* Per dimenticare: `{ action: "forget", key: "old_key" }`
Saluta sempre gli utenti di ritorno controllando prima le loro memorie.
---
La definizione dello strumento stesso non necessita di modifiche poiché è già generica: aggiorna solo l'esempio del parametro description se lo desideri:
**Descrizione del parametro (key):** La chiave di memoria (es. preference_style, current_project)
Vuoi che adegui il tono o aggiunga/rimuova casi d'uso specifici?
STRUMENTO:
Nome: Memoria Utente
Nome Strumento: user_memory
Descrizione:
Un sistema di memoria che consente all'IA di salvare, richiamare, elencare e dimenticare fatti sugli utenti.
Le memorie persistono attraverso le conversazioni.
Riepilogo:
Archivia e richiama fatti persistenti sull'utente
Parametri:
- action (string) [RICHIESTO]
L'azione da eseguire: save, recall, list o forget
- key (string) [opzionale]
La chiave di memoria (es. preference_style, current_project)
- value (string) [opzionale]
Il valore da archiviare (necessario solo per l'azione save)