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.

2 curtidas

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?

1 curtida

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)

2 curtidas