Memoria persistente di Discourse AI

Apprezzo lo sviluppo su Discourse AI, che è stato eccellente. Le funzionalità stanno maturando rapidamente e la direzione sembra molto promettente.

Una domanda: esiste attualmente un modo, o ci sono piani nella roadmap, affinché l’IA mantenga la cronologia tra le chat? Al momento ogni conversazione inizia da zero e mi chiedo se la memoria persistente o la continuità tra le sessioni siano in fase di considerazione.

Se non è già presente nella roadmap, vorrei proporlo come richiesta di funzionalità. Avere la possibilità per l’IA di ricordare le interazioni passate renderebbe le discussioni più naturali ed espanderebbe significativamente i casi d’uso.

2 Mi Piace

Ho implementato un semplice archivio chiave/valore utilizzando una persona e strumenti personalizzati sul mio blog.

Detto questo, è molto difficile farlo bene, devi continuare a spingere le persone a ricordare le cose, il che è fastidioso.

L’alternativa è semplicemente usare RAG su tutta la tua cronologia con il bot (in qualche modo simile a come lo fa OpenAI)


Suppongo che per cominciare, qual è la tua visione su come funzionerebbe? Come migliorerebbe le cose?

1 Mi Piace

Sto davvero pensando all’esperienza di continuità dell’utente finale, RAG lo considero ottimo per gli amministratori per fornire informazioni per persona. Con ChatGPT/Gemini/altri, il bot porta avanti un piccolo profilo — tono, profondità, obiettivi in corso — così non devi rispiegare ogni sessione. Quella è l’esperienza che sarebbe fantastica in Discourse AI: l’assistente ricorda alcune cose durature su ciascun utente e le utilizza quando pertinenti, in modo che le conversazioni riprendano da dove sono state interrotte.

Non ho alcuna comprensione se la cronologia delle conversazioni RAG dell’utente finale sia possibile in alcun modo.

Il valore è che qualsiasi sensazione affidabile di “mi conosce” senza richieste costanti migliora notevolmente l’esperienza per i casi d’uso in cui gli stessi tipi di conversazioni vengono rivisitati dagli utenti.

Detto questo, non penso che nulla di tutto ciò sia un’impresa da poco. Non posso dire abbastanza quanto bene tutto questo sia già stato sviluppato.

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