He logrado crear un plugin y una herramienta personalizada que permiten la memoria persistente para las personas de Discourse AI. Está funcionando bien según mis pruebas limitadas y quería compartirlo por si a alguien le resulta útil.
Lo que hace
Esta solución permite que las personas de IA recuerden información específica del usuario a través de las conversaciones.
Ejemplo: un usuario puede decir “Recuerda que prefiero el modo oscuro” y la IA almacenará y recordará esta preferencia en interacciones futuras.
Componentes
Este sistema tiene tres partes:
- Plugin (
discourse-ai-persistent-memory)
Proporciona almacenamiento en el backend y una interfaz de usuario de preferencias donde los usuarios pueden ver, agregar o eliminar sus recuerdos.
- Herramienta de IA personalizada
Una herramienta de JavaScript que da a las personas acceso a las funciones de memoria:
memory.set, memory.get, memory.list, memory.delete
- Prompt del sistema de la persona
Instrucciones que le dicen a la IA cuándo y cómo usar la herramienta de memoria.
Cómo funciona
- Los recuerdos se almacenan como pares clave/valor en el
PluginStore, con un espacio de nombres por usuario.
- El plugin inyecta funciones de memoria en el
ToolRunner mediante una preposición de módulo (module prepend).
- Los usuarios pueden administrar sus recuerdos en:
/u/{username}/preferences/interface
- La IA carga todos los recuerdos en el contexto (no hay recuperación selectiva).
Repositorio de GitHub
https://github.com/BrianCraword/discourse-ai-persistent-memory
Buscando comentarios
Agradecería comentarios sobre:
- El enfoque de usar preposición (prepend) para inyectar en
ToolRunner
- Si cargar todos los recuerdos frente a la recuperación selectiva tiene sentido
- Cualquier consideración de seguridad que pueda haber pasado por alto
- Mejoras generales en la calidad del código
Descargo de responsabilidad
No soy programador; esto se construyó con asistencia de IA. No puedo proporcionar soporte, pero cualquiera es bienvenido a usarlo, bifurcarlo o mejorarlo. Úselo bajo su propio riesgo.
PROMPT:
## Sistema de Memoria
Tienes un sistema de memoria persistente a través de la herramienta user_memory. Úsala para recordar hechos importantes sobre cada usuario.
### Cuándo GUARDAR recuerdos:
* El usuario menciona preferencias (estilo de comunicación, temas de interés, preferencias de formato)
* El usuario comparte detalles personales (profesión, ubicación, pasatiempos)
* El usuario menciona proyectos u objetivos en curso
* El usuario te pide explícitamente que recuerdes algo
### Cuándo RECORDAR recuerdos:
* Al comienzo de una nueva conversación, llama a user_memory con la acción "list" para ver lo que sabes
* Al discutir temas que podrían estar relacionados con conversaciones anteriores
### Convenciones de clave de memoria:
* preference_style, preference_topics, preference_format
* personal_profession, personal_location, personal_interests
* project_YYYY_MM (ej. project_2026_01)
* goal_[topic] (ej. goal_learning_python)
### Ejemplo de uso:
* Para guardar: `{ action: "save", key: "preference_style", value: "respuestas concisas" }`
* Para recordar: `{ action: "recall", key: "personal_profession" }`
* Para listar todo: `{ action: "list" }`
* Para olvidar: `{ action: "forget", key: "old_key" }`
Saluda siempre a los usuarios recurrentes comprobando primero sus recuerdos.
---
La definición de la herramienta en sí no necesita cambios ya que es genérica; solo actualiza el ejemplo del parámetro de descripción si lo deseas:
**Descripción del parámetro (key):** La clave de memoria (ej. preference_style, current_project)
¿Quieres que ajuste el tono o añada/elimine algún caso de uso específico?
HERRAMIENTA:
Name: User Memory
Tool Name: user_memory
Description:
Un sistema de memoria que permite a la IA guardar, recordar, listar y olvidar hechos sobre los usuarios.
Los recuerdos persisten a través de las conversaciones.
Summary:
Almacenar y recuperar hechos persistentes sobre el usuario
Parameters:
- action (string) [REQUIRED]
La acción a realizar: save, recall, list o forget
- key (string) [optional]
La clave de memoria (ej. preference_style, current_project)
- value (string) [optional]
El valor a almacenar (solo necesario para la acción save)