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)