Discourse AI memória persistente

Agradeço o desenvolvimento do Discourse AI, que tem sido excelente. Os recursos estão amadurecendo rapidamente e a direção parece muito promissora.

Uma pergunta: existe atualmente alguma maneira, ou planos no roteiro, para que a IA retenha o histórico entre os chats? No momento, cada conversa começa do zero, e estou me perguntando se a memória persistente ou a continuidade entre as sessões está sendo considerada.

Se ainda não estiver no roteiro, gostaria de apresentá-lo como uma solicitação de recurso. Ter a opção de a IA se lembrar de interações passadas tornaria as discussões mais naturais e expandiria significativamente os casos de uso.

Implementei um armazenamento básico de chave/valor usando uma persona e ferramentas personalizadas no meu blog.

Dito isso, é muito difícil acertar isso, você tem que ficar lembrando as personas de coisas, o que é irritante.

A alternativa é simplesmente usar RAG em todo o seu histórico com o bot (semelhante a como a OpenAI faz isso)


Acho que para começar, qual é a sua visão sobre como isso funcionaria? Como isso melhoraria as coisas?

Estou realmente pensando na experiência de continuidade do usuário final, RAG eu considero ótimo para administradores fornecerem informações para personas. Com ChatGPT/Gemini/outros, o bot carrega um pequeno perfil adiante — tom, profundidade, objetivos contínuos — para que você não precise explicar novamente a cada sessão. Essa é a experiência que seria ótima no Discourse AI: o assistente se lembra de algumas coisas duradouras sobre cada usuário e as usa quando relevante, para que as conversas continuem de onde pararam.

Não tenho entendimento se o histórico de conversas RAG do usuário final é possível de alguma forma.

O valor é que qualquer sensação confiável de “ele me conhece” sem prompts constantes aprimora muito a experiência para casos de uso onde as mesmas conversas são revisitadas pelos usuários.

Dito isso, não acho que nada disso seja uma tarefa pequena. Não consigo dizer o suficiente sobre o quão bem tudo isso já foi desenvolvido.

Consegui criar um plugin e uma ferramenta personalizada que permitem memória persistente para personas do Discourse AI. Está funcionando bem com base nos meus testes limitados e queria compartilhar caso alguém ache útil.

O Que Faz

Esta solução permite que as personas de IA lembrem de informações específicas do usuário entre conversas.

Exemplo: um usuário pode dizer “Lembre-se de que prefiro o modo escuro” e a IA armazenará e recordará essa preferência em interações futuras.

Componentes

Este sistema tem três partes:

  • Plugin (discourse-ai-persistent-memory)
    Fornece armazenamento de backend e uma interface de usuário de preferências onde os usuários podem visualizar, adicionar ou excluir suas memórias.
  • Ferramenta de IA Personalizada
    Uma ferramenta JavaScript que dá às personas acesso a funções de memória:
    memory.set, memory.get, memory.list, memory.delete
  • Prompt do Sistema da Persona
    Instruções que dizem à IA quando e como usar a ferramenta de memória.

Como Funciona

  • As memórias são armazenadas como pares chave/valor na PluginStore, com namespace por usuário.
  • O plugin injeta funções de memória no ToolRunner por meio de um prepend de módulo.
  • Os usuários podem gerenciar suas memórias em:
    /u/{username}/preferences/interface
  • A IA carrega todas as memórias no contexto (não recuperação seletiva).

Repositório GitHub

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

Buscando Feedback

Agradeceria feedback sobre:

  • A abordagem de usar prepend para injetar no ToolRunner
  • Se carregar todas as memórias versus recuperação seletiva faz sentido
  • Quaisquer considerações de segurança que eu possa ter perdido
  • Melhorias gerais na qualidade do código

Aviso Legal

Eu não sou programador — isso foi construído com assistência de IA. Não estou apto a fornecer suporte, mas qualquer um é bem-vindo a usar, ramificar ou melhorar. Use por sua conta e risco.

PROMPT:

## Sistema de Memória
Você tem um sistema de memória persistente através da ferramenta user_memory. Use-o para lembrar fatos importantes sobre cada usuário.

### Quando SALVAR memórias:

* O usuário menciona preferências (estilo de comunicação, tópicos de interesse, preferências de formato)
* O usuário compartilha detalhes pessoais (profissão, localização, hobbies)
* O usuário menciona projetos ou objetivos em andamento
* O usuário pede explicitamente para você se lembrar de algo

### Quando RELEMBRAR memórias:
* No início de uma nova conversa, chame user_memory com a ação "list" para ver o que você sabe
* Ao discutir tópicos que possam se relacionar a conversas anteriores

### Convenções de chave de memória:

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

### Exemplo de uso:

* Para salvar: `{ action: "save", key: "preference_style", value: "respostas concisas" }`
* Para recordar: `{ action: "recall", key: "personal_profession" }`
* Para listar todos: `{ action: "list" }`
* Para esquecer: `{ action: "forget", key: "old_key" }`

Sempre cumprimente os usuários recorrentes verificando as memórias deles primeiro.

---

A definição da ferramenta em si não precisa de alterações, pois já é genérica — basta atualizar o exemplo do parâmetro description, se desejar:

**Descrição do parâmetro (key):** A chave de memória (ex: preference_style, current_project)

Quer que eu ajuste o tom ou adicione/remova algum caso de uso específico?



FERRAMENTA:

Nome:        Memória do Usuário
Nome da Ferramenta:   user_memory

Descrição:
Um sistema de memória que permite à IA salvar, recordar, listar e esquecer fatos sobre os usuários.
As memórias persistem entre as conversas.

Resumo:
Armazena e recorda fatos persistentes sobre o usuário

Parâmetros:
- action (string)  [REQUERIDO]
  A ação a ser executada: save, recall, list ou forget

- key (string)     [opcional]
  A chave de memória (ex: preference_style, current_project)

- value (string)   [opcional]
  O valor a ser armazenado (necessário apenas para a ação save)