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: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
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 enopenclaw.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:
plugins.entries.active-memory.enabled: trueactiva el pluginconfig.agents: ["main"]incluye únicamente al agentemainconfig.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 actualconfig.modelFallbacksolo se utiliza cuando no se puede resolver ningún modelo explícito ni heredadoconfig.fastModesobrescribe opcionalmente el modo rápido para la recuperación sin cambiar el agente principalconfig.promptStyle: "balanced"es el valor predeterminado del modorecent- 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, devuelveNONE 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:- Recordar entre conversaciones se dirige automáticamente a los agentes cuya
opción efectiva
memory.search.rememberAcrossConversationsestá habilitada, pero solo en conversaciones privadas directas o conversaciones explícitas persistentes de la interfaz. - Active Memory avanzado se dirige a los identificadores de agente incluidos en
plugins.entries.active-memory.config.agentsy aplica los controles de tipo e identificador de chat del plugin.
/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:
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:
config.allowedChatIds y config.deniedChatIds:
allowedChatIdses 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 aallowedChatIds, o mantengaallowedChatTypeslimitado al despliegue en grupos o canales que se esté probando.deniedChatIdses una lista de exclusión que siempre prevalece sobreallowedChatTypesyallowedChatIds.
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: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):
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:/verbose onañade una línea de estado:🧩 Active Memory: status=ok elapsed=842ms query=recent summary=34 chars/trace onañade un resumen de depuración:🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
/trace raw, el bloque Model Input (User Role) rastreado muestra el prefijo
oculto sin procesar:
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.
- message
- recent
- completo
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:
config.promptStyle siempre prevalece sobre la asignación.
Política de modelo de respaldo
Siconfig.model no está establecido, Active Memory resuelve un modelo en este orden:
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
Dejarconfig.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 latenciagoogle/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.modelsin establecer
Configuración de Cerebras
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 detoolsAllow:
Memoria de LanceDB
Después de instalar y configurar LanceDB, Active Memory utiliza automáticamentememory_recall; no se necesita un valor explícito de toolsAllow:
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:
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 desession.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:
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 enplugins.entries.active-memory.
Campos de ajuste útiles:
Configuración recomendada
Comience conrecent:
/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 silenciosamentetimeoutMs 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:
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:- Confirme que el Plugin esté habilitado en
plugins.entries.active-memory.enabled. - Para Recordar entre conversaciones, confirme que la configuración efectiva
memory.search.rememberAcrossConversationsdel agente esté habilitada, ejecuteopenclaw doctorpara verificar que el proveedor de memoria actual admita la recuperación protegida de transcripciones y confirme queconfig.toolsAllowincluyamemory_searchcuando se configure explícitamente. Para Active Memory avanzada, confirme que el ID del agente figure enconfig.agents. - Confirme que se estén realizando las pruebas mediante una conversación persistente interactiva apta.
- Recuerde que los grupos y canales nunca utilizan la recuperación de transcripciones entre conversaciones.
- Active
config.logging: truey supervise los registros del gateway. - Verifique que la búsqueda de memoria funcione con
openclaw status --deep.
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 predeterminadamemory-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.
El proveedor de embeddings cambió o dejó de funcionar
El proveedor de embeddings cambió o dejó de funcionar
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.La recuperación parece lenta, vacía o inconsistente
La recuperación parece lenta, vacía o inconsistente
- Active
/trace onpara mostrar en la sesión el resumen de depuración de Active Memory perteneciente al Plugin. - Active
/verbose onpara 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 --deeppara 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).
La primera recuperación tras reiniciar el gateway devuelve `status=timeout`
La primera recuperación tras reiniciar el gateway devuelve `status=timeout`
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.