Memoria persistente di Discourse AI

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)

2 Mi Piace