Skip to main content
Active Memory es un plugin incluido opcional que ejecuta un subagente de recuperación de memoria con bloqueo antes de la respuesta principal, en las sesiones conversacionales aptas. Existe porque la mayoría de los sistemas de memoria son reactivos: el agente principal tiene que decidir buscar en la memoria, o el usuario tiene que decir «recuerda esto». Para entonces, ya ha pasado el momento en que el dato recuperado podría resultar natural. Active Memory ofrece al sistema una oportunidad acotada para mostrar recuerdos relevantes antes de generar la respuesta principal.

Recordar entre conversaciones

Para un agente personal o de plena confianza, habilite la recuperación acotada entre sus otras conversaciones privadas mediante una opción por agente:
La opción está activada de forma predeterminada en instalaciones personales: la opción global session.dmScope debe estar sin definir o ser "main", y ningún enlace puede sobrescribir session.dmScope. Cualquier aislamiento de mensajes directos configurado la desactiva de forma predeterminada. Un valor explícito true o false siempre prevalece. Cuando está habilitada, OpenClaw indexa las transcripciones de sesión de ese agente y ejecuta una pasada de recuperación de Active Memory antes de las respuestas privadas aptas. La pasada puede leer fragmentos relevantes de transcripciones de otras conversaciones privadas del mismo agente. Excluye la conversación que ya se está respondiendo. El límite de privacidad es fijo:
  • las conversaciones privadas directas y las conversaciones explícitas persistentes de la interfaz pueden recuperar recuerdos unas de otras
  • los grupos y canales no son ni fuentes ni destinos de recuperación
  • las transcripciones de otro agente nunca son aptas
  • se rechazan las transcripciones desconocidas o archivadas que no tengan suficientes metadatos de conversación
Esto no combina transcripciones, no cambia claves de sesión ni rutas de entrega, no amplía tools.sessions.visibility ni concede un acceso más amplio a la herramienta sessions_*. La memoria compartida del espacio de trabajo (MEMORY.md y memory/*.md) mantiene su comportamiento actual. Active Memory debe permanecer habilitado. La recuperación añade un paso de bloqueo acotado a las respuestas aptas; los tiempos de espera agotados, la búsqueda no disponible y los resultados vacíos permiten que la respuesta continúe sin contexto de transcripciones recuperadas. El proveedor de memoria integrado de OpenClaw admite esta ruta protegida de recuperación de transcripciones tanto con el backend integrado como con QMD. Los demás proveedores de memoria mantienen su propio comportamiento de recuperación, pero no reciben automáticamente autorización para acceder a transcripciones privadas. openclaw doctor informa de un proveedor no compatible o de la ausencia de la herramienta memory_search.

Inicio rápido avanzado de Active Memory

Pegue lo siguiente en openclaw.json para obtener una configuración predeterminada avanzada y segura: plugin activado, limitado a main, solo sesiones de mensajes directos y modelo heredado de la sesión.
plugins.entries.* (incluido active-memory.config) pertenece a la categoría de configuración que no requiere reinicio: el Gateway vuelve a cargar automáticamente el entorno de ejecución del plugin y no se necesita ningún reinicio manual. Si aun así se desea forzar un reinicio completo, ejecute:
Para inspeccionarlo en directo dentro de una conversación:
Función de los campos clave:
  • plugins.entries.active-memory.enabled: true activa el plugin
  • config.agents: ["main"] incluye únicamente al agente main
  • config.allowedChatTypes: ["direct"] lo limita a sesiones de mensajes directos (incluya explícitamente grupos o canales)
  • config.model (opcional) fija un modelo de recuperación específico; si no se define, hereda el modelo de la sesión actual
  • config.modelFallback solo se utiliza cuando no se puede resolver ningún modelo explícito ni heredado
  • config.fastMode sobrescribe opcionalmente el modo rápido para la recuperación sin cambiar el agente principal
  • config.promptStyle: "balanced" es el valor predeterminado del modo recent
  • Active Memory sigue ejecutándose únicamente en sesiones de chat interactivas, persistentes y aptas (consulte Cuándo se ejecuta)

Cómo funciona

El subagente con bloqueo solo puede llamar a las herramientas de recuperación de memoria configuradas (consulte Herramientas de memoria). Si la relación entre la consulta y la memoria disponible es débil, devuelve NONE y la respuesta principal continúa sin contexto adicional. Active Memory es una función de enriquecimiento conversacional, no una función de inferencia para toda la plataforma: Utilícelo cuando la sesión sea persistente y esté orientada al usuario, el agente tenga memoria a largo plazo significativa en la que buscar y la continuidad o personalización sean más importantes que el determinismo puro del prompt: preferencias estables, hábitos recurrentes y contexto a largo plazo que deba surgir de forma natural. No resulta adecuado para automatizaciones, procesos internos, tareas de API de una sola ejecución ni situaciones donde una personalización oculta resulte sorprendente.

Cuándo se ejecuta

Active Memory tiene dos rutas de activación:
  1. Recordar entre conversaciones se dirige automáticamente a los agentes cuya opción efectiva memory.search.rememberAcrossConversations está habilitada, pero solo en conversaciones privadas directas o conversaciones explícitas persistentes de la interfaz.
  2. Active Memory avanzado se dirige a los identificadores de agente incluidos en plugins.entries.active-memory.config.agents y aplica los controles de tipo e identificador de chat del plugin.
Ambas rutas requieren que el plugin esté habilitado y que exista una conversación interactiva persistente apta. Un valor /active-memory off limitado a la sesión pausa ambas rutas en esa conversación. Si alguna condición no se cumple, Active Memory no se ejecuta en ese turno y la respuesta principal no se ve afectada.

Tipos de sesión

config.allowedChatTypes controla qué tipos de conversaciones pueden ejecutar la ruta avanzada de Active Memory. No puede ampliar Recordar entre conversaciones: esa opción del producto permanece limitada a conversaciones privadas incluso cuando Active Memory avanzado está permitido en grupos o canales. Valor predeterminado:
Valores válidos: direct, group, channel, explicit (sesiones de estilo portal con un identificador de sesión opaco, por ejemplo agent:main:explicit:portal-123). Las sesiones de mensajes directos se ejecutan de forma predeterminada; los grupos, canales y sesiones explícitas deben incluirse:
Para un despliegue más limitado dentro de un tipo de chat permitido, añada config.allowedChatIds y config.deniedChatIds:
  • allowedChatIds es una lista de identificadores de conversación resueltos permitidos. Cuando no está vacía, Active Memory solo se ejecuta en sesiones cuyo identificador de conversación está en la lista; esto restringe todos los tipos de chat permitidos a la vez, incluidos los mensajes directos. Para conservar todos los mensajes directos y restringir únicamente los grupos, añada también los identificadores de los interlocutores directos a allowedChatIds, o mantenga allowedChatTypes limitado al despliegue en grupos o canales que se esté probando.
  • deniedChatIds es una lista de exclusión que siempre prevalece sobre allowedChatTypes y allowedChatIds.
Los identificadores proceden de la clave de sesión persistente del canal (por ejemplo, en Feishu, chat_id/open_id, el identificador de chat de Telegram o el identificador de canal de Slack). La comparación no distingue entre mayúsculas y minúsculas. Si allowedChatIds no está vacío y OpenClaw no puede resolver un identificador de conversación para la sesión, Active Memory omite el turno en lugar de hacer suposiciones.

Control de sesión

Pause o reanude Active Memory en la sesión de chat actual sin editar la configuración:
Esto solo afecta a la sesión actual; no cambia plugins.entries.active-memory.config.enabled, la opción memory.search.rememberAcrossConversations de un agente ni ninguna otra configuración global. Para pausar o reanudar todas las sesiones, utilice en su lugar la forma global (requiere el propietario o operator.admin):
La forma global escribe plugins.entries.active-memory.config.enabled, pero mantiene plugins.entries.active-memory.enabled activado, por lo que el comando sigue disponible para volver a activar Active Memory más adelante.

Cómo verlo

De forma predeterminada, Active Memory inyecta un prefijo de prompt oculto y no fiable que no se muestra en la respuesta normal. Active los controles de sesión que correspondan a la salida deseada:
Cuando están activados, OpenClaw añade líneas de diagnóstico después de la respuesta normal (como mensaje de seguimiento, para que los clientes de canal no muestren fugazmente una burbuja separada antes de la respuesta):
  • /verbose on añade una línea de estado: 🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars
  • /trace on añade un resumen de depuración: 🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
Flujo de ejemplo:
Con /trace raw, el bloque Model Input (User Role) rastreado muestra el prefijo oculto sin procesar:
De forma predeterminada, la transcripción del subagente con bloqueo es temporal y se elimina después de completar la ejecución; consulte Persistencia de transcripciones para conservarla.

Modos de consulta

config.queryMode controla cuánto contenido de la conversación ve el subagente con bloqueo. Elija el modo más pequeño que permita responder bien a los mensajes de seguimiento; aumente timeoutMs a medida que crezca el tamaño del contexto, desde message hasta recent y full.
Solo se envía el mensaje más reciente del usuario.
Utilícelo cuando se busque el comportamiento más rápido, el mayor sesgo hacia la recuperación de preferencias estables y los turnos de seguimiento no necesiten contexto conversacional. Comience alrededor de 3000-5000 ms para config.timeoutMs.

Estilos de prompt

config.promptStyle controla el grado de iniciativa o rigor del subagente al devolver recuerdos: Asignación predeterminada cuando config.promptStyle no está establecido:
Un valor explícito de config.promptStyle siempre prevalece sobre la asignación.

Política de modelo de respaldo

Si config.model no está establecido, Active Memory resuelve un modelo en este orden:
Si no se resuelve ningún modelo de esa cadena, Active Memory omite la recuperación en ese turno. config.modelFallbackPolicy es un campo de compatibilidad obsoleto que se conserva para configuraciones antiguas; ya no modifica el comportamiento en tiempo de ejecución: modelFallback es estrictamente el último recurso de la cadena anterior, no una conmutación por error en tiempo de ejecución que cambie a otro modelo cuando falle el modelo resuelto.

Recomendaciones de velocidad

Dejar config.model sin establecer (para heredar el modelo de la sesión) es la opción predeterminada más segura: respeta las preferencias existentes de proveedor, autenticación y modelo. Para reducir la latencia, se recomienda usar un modelo rápido dedicado; la calidad de la recuperación importa, pero aquí la latencia importa más que en la ruta de respuesta principal, y la superficie de herramientas es limitada (solo herramientas de recuperación de memoria). Buenas opciones de modelos rápidos:
  • cerebras/gpt-oss-120b, un modelo de recuperación dedicado de baja latencia
  • google/gemini-3-flash, un modelo de respaldo de baja latencia sin cambiar el modelo principal de chat
  • el modelo normal de la sesión, dejando config.model sin establecer

Configuración de Cerebras

Confirme que la clave de API de Cerebras tenga acceso a chat/completions para el modelo elegido; la visibilidad de /v1/models por sí sola no lo garantiza.

Herramientas de memoria

config.toolsAllow establece los nombres concretos de las herramientas que el subagente bloqueante puede invocar para Active Memory avanzada. Los valores predeterminados dependen del proveedor de memoria actual: Si ninguna de las herramientas configuradas está disponible o la ejecución del subagente falla, Active Memory omite la recuperación en ese turno y la respuesta principal continúa sin contexto de memoria. En las herramientas de recuperación personalizadas, una salida visible para el modelo que no esté vacía cuenta como prueba de recuperación, salvo que los campos de resultados estructurados indiquen explícitamente un resultado vacío o un fallo. toolsAllow solo acepta nombres concretos de herramientas de memoria: los comodines, las entradas group:* y las herramientas principales del agente (read, exec, message, web_search y similares) se filtran silenciosamente antes de iniciar el subagente oculto.

Memoria integrada

No se necesita un valor explícito de toolsAllow:

Memoria de LanceDB

Después de instalar y configurar LanceDB, Active Memory utiliza automáticamente memory_recall; no se necesita un valor explícito de toolsAllow:
Esta es la ruta avanzada de Active Memory para los recuerdos almacenados por LanceDB. memory.search.rememberAcrossConversations no expone transcripciones privadas de sesiones mediante memory_recall. Utilice la recuperación automática de LanceDB o la configuración avanzada anterior cuando LanceDB sea el proveedor de memoria activo.

Lossless Claw

Lossless Claw es un plugin externo de motor de contexto (openclaw plugins install @martian-engineering/lossless-claw) con sus propias herramientas de recuperación. Primero debe configurarse como motor de contexto; consulte Motor de contexto. Después, dirija Active Memory a sus herramientas:
No añada lcm_expand a toolsAllow aquí; Lossless Claw lo utiliza como una herramienta de nivel inferior para la expansión delegada y no está destinada al subagente de Active Memory de nivel superior. Lossless Claw modifica el ensamblado del contexto sin sustituir al proveedor de memoria actual. Mantenga memory_search en toolsAllow cuando también utilice rememberAcrossConversations; una lista de herramientas que solo incluya LCM sigue siendo válida para Active Memory avanzada, pero desactiva la ruta de recuperación de transcripciones del producto.

Opciones avanzadas de último recurso

No forman parte de la configuración recomendada. config.thinking sustituye el nivel de razonamiento del subagente (el valor predeterminado es "off", ya que Active Memory se ejecuta en la ruta de respuesta y el tiempo adicional de razonamiento aumenta directamente la latencia visible para el usuario):
config.fastMode sustituye el modo rápido solo para el subagente de memoria bloqueante. Utilice true, false o "auto"; déjelo sin establecer para heredar los valores predeterminados normales del agente, la sesión y el modelo. "auto" utiliza el umbral de fastAutoOnSeconds configurado para el modelo de recuperación:
config.promptAppend añade instrucciones para el operador después del prompt predeterminado y antes del contexto de la conversación; combínelo con un valor personalizado de toolsAllow cuando un plugin de memoria ajeno al núcleo necesite un orden específico de herramientas o una formulación concreta de las consultas:
config.promptOverride sustituye por completo el prompt predeterminado (el contexto de la conversación se sigue añadiendo después). No se recomienda, salvo que se pruebe deliberadamente un contrato de recuperación diferente; el prompt predeterminado está ajustado para devolver NONE o un contexto compacto de datos del usuario para el modelo principal:

Persistencia de transcripciones

Las ejecuciones de subagentes bloqueantes crean una transcripción real de session.jsonl durante la llamada. De forma predeterminada, se escribe en un directorio temporal y se elimina inmediatamente cuando finaliza la ejecución. Para conservar esas transcripciones en el disco con fines de depuración:
Las transcripciones persistentes se guardan dentro de la carpeta de sesiones del agente de destino, en un directorio separado de la transcripción de la conversación principal del usuario:
Cambie el subdirectorio relativo mediante config.transcriptDir. Utilice esta opción con cuidado: las transcripciones pueden acumularse rápidamente en sesiones con mucha actividad, el modo de consulta full duplica una gran cantidad de contexto de conversación y estas transcripciones contienen contexto oculto del prompt, además de recuerdos recuperados.

Configuración

Toda la configuración de Active Memory se encuentra en plugins.entries.active-memory. Campos de ajuste útiles:

Configuración recomendada

Comience con recent:
Use /verbose on para la línea de estado y /trace on para el resumen de depuración durante el ajuste; ambos se envían como seguimiento después de la respuesta principal, no antes. Después, cambie a message para reducir la latencia o a full si el contexto adicional compensa una ejecución más lenta del subagente.

Margen para el inicio en frío

Antes de v2026.5.2, el plugin ampliaba silenciosamente timeoutMs en 30000 ms adicionales durante el inicio en frío, para que el calentamiento del modelo, la carga del índice de incrustaciones y la primera recuperación pudieran compartir un único presupuesto mayor. v2026.5.2 trasladó ese margen a una configuración explícita de setupGraceTimeoutMs: ahora timeoutMs es el presupuesto de trabajo de recuperación predeterminado, salvo que se habilite expresamente. El hook bloqueante divide ese presupuesto en dos fases fijas: hasta 1500 ms para la comprobación preliminar de la sesión/configuración antes de que comience la recuperación y, después, otros 1500 ms fijos para completar la interrupción y recuperar la transcripción cuando finaliza el trabajo de recuperación. Ninguno de estos márgenes amplía la ejecución del modelo ni de las herramientas. Si se actualizó desde v2026.4.x y se ajustó timeoutMs para el anterior entorno de gracia implícita (el valor inicial recomendado timeoutMs: 15000 es un ejemplo), establezca setupGraceTimeoutMs: 30000 para restaurar el presupuesto efectivo anterior a v5.2:
El tiempo de bloqueo en el peor caso es de timeoutMs + setupGraceTimeoutMs + 3000 ms (el presupuesto configurado para el trabajo de recuperación, más hasta 1500 ms de comprobación previa, más una asignación fija de 1500 ms para completar el proceso después de la recuperación). El ejecutor de recuperación integrado utiliza el mismo presupuesto de tiempo de espera efectivo, por lo que setupGraceTimeoutMs abarca tanto el supervisor externo de creación del prompt como la ejecución interna de recuperación bloqueante. Para gateways con recursos limitados donde la latencia de arranque en frío sea una contrapartida aceptada, los valores inferiores (5000-15000 ms) también funcionan; la contrapartida es una mayor probabilidad de que la primera recuperación tras reiniciar un gateway devuelva un resultado vacío mientras finaliza el calentamiento.

Depuración

Si Active Memory no aparece donde se espera:
  1. Confirme que el Plugin esté habilitado en plugins.entries.active-memory.enabled.
  2. Para Recordar entre conversaciones, confirme que la configuración efectiva memory.search.rememberAcrossConversations del agente esté habilitada, ejecute openclaw doctor para verificar que el proveedor de memoria actual admita la recuperación protegida de transcripciones y confirme que config.toolsAllow incluya memory_search cuando se configure explícitamente. Para Active Memory avanzada, confirme que el ID del agente figure en config.agents.
  3. Confirme que se estén realizando las pruebas mediante una conversación persistente interactiva apta.
  4. Recuerde que los grupos y canales nunca utilizan la recuperación de transcripciones entre conversaciones.
  5. Active config.logging: true y supervise los registros del gateway.
  6. Verifique que la búsqueda de memoria funcione con openclaw status --deep.
Si las coincidencias de memoria generan ruido, restrinja maxSummaryChars. Si Active Memory es demasiado lenta, reduzca queryMode, reduzca timeoutMs o disminuya el número de turnos recientes y los límites de caracteres por turno.

Problemas comunes

Active Memory avanzada utiliza el pipeline de recuperación del Plugin de memoria configurado, por lo que la mayoría de los resultados inesperados de recuperación son problemas del proveedor de embeddings, no errores de Active Memory. La ruta predeterminada memory-core utiliza memory_search y memory_get; la ranura memory-lancedb utiliza memory_recall. Si se utiliza otro Plugin de memoria, confirme que config.toolsAllow indique las herramientas que ese Plugin realmente registra. Recordar entre conversaciones tiene un alcance más limitado: el proveedor de memoria actual debe admitir la ruta protegida de recuperación de OpenClaw para el mismo agente y sesiones privadas.
Si memory.search.provider no está definido, OpenClaw utiliza embeddings de OpenAI. Establezca memory.search.provider explícitamente para embeddings de Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, locales, Mistral, Ollama, Voyage o compatibles con OpenAI. Si el proveedor configurado no puede ejecutarse, memory_search puede degradarse a una recuperación únicamente léxica; los fallos en tiempo de ejecución después de que ya se haya seleccionado un proveedor no recurren automáticamente a una alternativa.Establezca un memory.search.fallback opcional solo cuando se desee una única alternativa deliberada. Consulte Búsqueda de memoria para ver la lista completa de proveedores y ejemplos.
  • Active /trace on para mostrar en la sesión el resumen de depuración de Active Memory perteneciente al Plugin.
  • Active /verbose on para ver también la línea de estado 🧩 Active Memory: ... después de cada respuesta.
  • Supervise los registros del gateway para detectar active-memory: ... start|done, memory sync failed (search-bootstrap) o errores de embeddings del proveedor.
  • Ejecute openclaw status --deep para inspeccionar el backend de búsqueda de memoria y el estado del índice.
  • Si utiliza ollama, confirme que el modelo de embeddings esté instalado (ollama list).
En v2026.5.2 y versiones posteriores, si la preparación del arranque en frío (calentamiento del modelo + carga del índice de embeddings) no ha finalizado cuando se activa la primera recuperación, la ejecución puede alcanzar el presupuesto configurado timeoutMs y devolver status=timeout con una salida vacía. Los registros del gateway muestran active-memory timeout after Nms cerca de la primera respuesta apta tras un reinicio.Consulte Gracia de arranque en frío en Configuración recomendada para conocer el valor recomendado de setupGraceTimeoutMs.

Páginas relacionadas