Memoria activa
La memoria activa es un subagente de memoria bloqueante opcional propiedad del plugin que se ejecuta antes de la respuesta principal para las sesiones conversacionales elegibles. Existe porque la mayoría de los sistemas de memoria son capaces, pero reactivos. Dependen de que el agente principal decida cuándo buscar en la memoria, o de que el usuario diga cosas como “recuerda esto” o “busca en la memoria”. Para entonces, el momento en que la memoria habría hecho que la respuesta se sintiera natural ya pasó. La memoria activa le da al sistema una oportunidad acotada de sacar a la superficie memoria relevante antes de que se genere la respuesta principal.Pega esto en tu agente
Pega esto en tu agente si quieres que habilite la Memoria activa con una configuración autónoma y segura por defecto:main, lo mantiene limitado a sesiones
de estilo mensaje directo de forma predeterminada, le permite heredar primero el modelo de la sesión actual y
sigue permitiendo la reserva remota integrada si no hay ningún modelo explícito o heredado
disponible.
Después de eso, reinicia el gateway:
Activar la memoria activa
La configuración más segura es:- habilitar el plugin
- apuntar a un agente conversacional
- mantener el registro activado solo mientras ajustas la configuración
openclaw.json:
plugins.entries.active-memory.enabled: trueactiva el pluginconfig.agents: ["main"]habilita la memoria activa solo para el agentemainconfig.allowedChatTypes: ["direct"]mantiene la memoria activa activada de forma predeterminada solo para sesiones de estilo mensaje directo- si
config.modelno está configurado, la memoria activa hereda primero el modelo de la sesión actual config.modelFallbackPolicy: "default-remote"mantiene la reserva remota integrada como predeterminada cuando no hay ningún modelo explícito o heredado disponibleconfig.promptStyle: "balanced"usa el estilo de prompt predeterminado de propósito general para el modorecent- la memoria activa sigue ejecutándose solo en sesiones de chat interactivas persistentes elegibles
Cómo verla
La memoria activa inyecta contexto del sistema oculto para el modelo. No expone etiquetas sin procesar<active_memory_plugin>...</active_memory_plugin> al cliente.
Alternancia por sesión
Usa el comando del plugin cuando quieras pausar o reanudar la memoria activa para la sesión de chat actual sin editar la configuración:plugins.entries.active-memory.enabled, la selección del agente ni otra
configuración global.
Si quieres que el comando escriba la configuración y pause o reanude la memoria activa para
todas las sesiones, usa la forma global explícita:
plugins.entries.active-memory.config.enabled. Deja
plugins.entries.active-memory.enabled activado para que el comando siga estando disponible para
volver a activar la memoria activa más adelante.
Si quieres ver qué está haciendo la memoria activa en una sesión en vivo, activa el modo
detallado para esa sesión:
- una línea de estado de la memoria activa como
Active Memory: ok 842ms recent 34 chars - un resumen de depuración legible como
Active Memory Debug: Lemon pepper wings with blue cheese.
Cuándo se ejecuta
La memoria activa usa dos compuertas:- Inclusión por configuración
El plugin debe estar habilitado, y el id del agente actual debe aparecer en
plugins.entries.active-memory.config.agents. - Elegibilidad estricta en tiempo de ejecución Incluso cuando está habilitada y dirigida, la memoria activa solo se ejecuta para sesiones de chat interactivas persistentes elegibles.
Tipos de sesión
config.allowedChatTypes controla qué tipos de conversaciones pueden ejecutar Memoria
activa.
El valor predeterminado es:
Dónde se ejecuta
La memoria activa es una función de enriquecimiento conversacional, no una función de inferencia para toda la plataforma.| Superficie | ¿Se ejecuta la memoria activa? |
|---|---|
| Sesiones persistentes de Control UI / chat web | Sí, si el plugin está habilitado y el agente está seleccionado |
| Otras sesiones de canal interactivas en la misma ruta de chat persistente | Sí, si el plugin está habilitado y el agente está seleccionado |
| Ejecuciones sin interfaz de un solo uso | No |
| Ejecuciones de latido/en segundo plano | No |
Rutas internas genéricas de agent-command | No |
| Ejecución interna/de ayuda de subagentes | No |
Por qué usarla
Usa la memoria activa cuando:- la sesión es persistente y orientada al usuario
- el agente tiene memoria a largo plazo significativa para buscar
- la continuidad y la personalización importan más que el determinismo puro del prompt
- preferencias estables
- hábitos recurrentes
- contexto del usuario a largo plazo que debería aflorar de forma natural
- automatización
- workers internos
- tareas de API de un solo uso
- lugares donde la personalización oculta sería sorprendente
Cómo funciona
La forma en tiempo de ejecución es: El subagente de memoria bloqueante solo puede usar:memory_searchmemory_get
NONE.
Modos de consulta
config.queryMode controla cuánto de la conversación ve el subagente de memoria bloqueante.
Estilos de prompt
config.promptStyle controla cuán dispuesto o estricto es el subagente de memoria bloqueante
al decidir si devolver memoria.
Estilos disponibles:
balanced: predeterminado de propósito general para el modorecentstrict: el menos dispuesto; ideal cuando quieres muy poca contaminación del contexto cercanocontextual: el más favorable para la continuidad; ideal cuando el historial de conversación debe importar másrecall-heavy: más dispuesto a sacar a la superficie memoria con coincidencias más suaves pero aún plausiblesprecision-heavy: prefiere agresivamenteNONEa menos que la coincidencia sea evidentepreference-only: optimizado para favoritos, hábitos, rutinas, gustos y hechos personales recurrentes
config.promptStyle no está configurado:
config.promptStyle explícitamente, esa anulación prevalece.
Ejemplo:
Política de reserva de modelo
Siconfig.model no está configurado, la Memoria activa intenta resolver un modelo en este orden:
config.modelFallbackPolicy controla el último paso.
Predeterminado:
resolved-only si quieres que la Memoria activa omita la recuperación en lugar de usar
la reserva remota integrada predeterminada cuando no hay ningún modelo explícito o heredado
disponible.
Vías de escape avanzadas
Estas opciones intencionalmente no forman parte de la configuración recomendada.config.thinking puede anular el nivel de razonamiento del subagente de memoria bloqueante:
config.promptAppend agrega instrucciones adicionales del operador después del prompt predeterminado de Memoria
activa y antes del contexto de la conversación:
config.promptOverride reemplaza el prompt predeterminado de Memoria activa. OpenClaw
sigue agregando después el contexto de la conversación:
NONE
o contexto compacto de hechos del usuario para el modelo principal.
message
Solo se envía el mensaje más reciente del usuario.
- quieres el comportamiento más rápido
- quieres el sesgo más fuerte hacia la recuperación de preferencias estables
- los turnos de seguimiento no necesitan contexto conversacional
- comienza alrededor de
3000a5000ms
recent
Se envía el mensaje más reciente del usuario más una pequeña cola conversacional reciente.
- quieres un mejor equilibrio entre velocidad y base conversacional
- las preguntas de seguimiento suelen depender de los últimos turnos
- comienza alrededor de
15000ms
full
La conversación completa se envía al subagente de memoria bloqueante.
- la mejor calidad de recuperación importa más que la latencia
- la conversación contiene una preparación importante muy atrás en el hilo
- auméntalo considerablemente en comparación con
messageorecent - comienza alrededor de
15000ms o más según el tamaño del hilo
Persistencia de transcripciones
Las ejecuciones del subagente de memoria bloqueante de la memoria activa crean una transcripción realsession.jsonl
durante la llamada al subagente de memoria bloqueante.
De forma predeterminada, esa transcripción es temporal:
- se escribe en un directorio temporal
- se usa solo para la ejecución del subagente de memoria bloqueante
- se elimina inmediatamente después de que finaliza la ejecución
config.transcriptDir.
Usa esto con cuidado:
- las transcripciones del subagente de memoria bloqueante pueden acumularse rápidamente en sesiones con mucha actividad
- el modo de consulta
fullpuede duplicar mucho contexto de conversación - estas transcripciones contienen contexto de prompt oculto y memorias recuperadas
Configuración
Toda la configuración de la memoria activa se encuentra en:| Clave | Tipo | Significado |
|---|---|---|
enabled | boolean | Habilita el plugin en sí |
config.agents | string[] | Id. de agentes que pueden usar memoria activa |
config.model | string | Referencia opcional del modelo del subagente de memoria bloqueante; cuando no está configurado, la memoria activa usa el modelo de la sesión actual |
config.queryMode | "message" | "recent" | "full" | Controla cuánto de la conversación ve el subagente de memoria bloqueante |
config.promptStyle | "balanced" | "strict" | "contextual" | "recall-heavy" | "precision-heavy" | "preference-only" | Controla cuán dispuesto o estricto es el subagente de memoria bloqueante al decidir si devolver memoria |
config.thinking | "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "adaptive" | Anulación avanzada del nivel de razonamiento para el subagente de memoria bloqueante; valor predeterminado off por velocidad |
config.promptOverride | string | Reemplazo avanzado completo del prompt; no se recomienda para uso normal |
config.promptAppend | string | Instrucciones avanzadas adicionales añadidas al prompt predeterminado o reemplazado |
config.timeoutMs | number | Tiempo de espera máximo estricto para el subagente de memoria bloqueante |
config.maxSummaryChars | number | Cantidad máxima total de caracteres permitida en el resumen de active-memory |
config.logging | boolean | Emite registros de memoria activa durante el ajuste |
config.persistTranscripts | boolean | Conserva en disco las transcripciones del subagente de memoria bloqueante en lugar de eliminar los archivos temporales |
config.transcriptDir | string | Directorio relativo de transcripciones del subagente de memoria bloqueante dentro de la carpeta de sesiones del agente |
| Clave | Tipo | Significado |
|---|---|---|
config.maxSummaryChars | number | Cantidad máxima total de caracteres permitida en el resumen de active-memory |
config.recentUserTurns | number | Turnos previos del usuario que se incluirán cuando queryMode sea recent |
config.recentAssistantTurns | number | Turnos previos del asistente que se incluirán cuando queryMode sea recent |
config.recentUserChars | number | Cantidad máxima de caracteres por turno reciente del usuario |
config.recentAssistantChars | number | Cantidad máxima de caracteres por turno reciente del asistente |
config.cacheTtlMs | number | Reutilización de caché para consultas idénticas repetidas |
Configuración recomendada
Comienza conrecent.
/verbose on en la
sesión en lugar de buscar un comando de depuración de active-memory independiente.
Luego cambia a:
messagesi quieres menor latenciafullsi decides que el contexto adicional vale la pena aunque el subagente de memoria bloqueante sea más lento
Depuración
Si la memoria activa no aparece donde esperas:- Confirma que el plugin esté habilitado en
plugins.entries.active-memory.enabled. - Confirma que el id. del agente actual figure en
config.agents. - Confirma que estás probando mediante una sesión de chat interactiva persistente.
- Activa
config.logging: truey observa los registros del gateway. - Verifica que la búsqueda en memoria en sí funcione con
openclaw memory status --deep.
maxSummaryChars
- reduce
queryMode - reduce
timeoutMs - reduce la cantidad de turnos recientes
- reduce los límites de caracteres por turno