Memoria persistente de Discourse AI

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)

2 Me gusta