Descripción general de la memoria
Cómo funciona la memoria.
Motor integrado
Backend SQLite predeterminado.
Motor QMD
Proceso auxiliar con prioridad local.
Búsqueda en la memoria
Pipeline de búsqueda y ajuste.
Active Memory
Subagente de memoria para sesiones interactivas.
memory de openclaw.json. Los valores predeterminados de búsqueda usan memory.search; las anulaciones de búsqueda por agente usan agents.entries.*.memory.search.
Para el flujo de trabajo recomendado de agente personal, use
memory.search.rememberAcrossConversations. Los controles avanzados de Active Memory para el destino,
el modelo, el prompt y la latencia se encuentran en plugins.entries.active-memory.Consulte Active Memory para conocer ambas vías de activación,
la persistencia de transcripciones y las directrices para un despliegue seguro.Recordar entre conversaciones
Configúrelo por agente cuando solo un agente personal de confianza deba usar
la recuperación de transcripciones entre conversaciones:
memory.search con una
anulación por agente. Cuando no se establece, se activa de forma predeterminada solo si la opción global
session.dmScope no está establecida o es "main" y ningún enlace tiene una anulación
session.dmScope. Cualquier aislamiento de mensajes directos configurado lo desactiva de forma predeterminada. Un valor explícito true o
false siempre prevalece. Al activarlo, se habilita la indexación de las transcripciones de sesión y
se añade sessions a las fuentes de memoria resueltas del agente. Con QMD, también
se habilita la exportación de sesiones de ese agente; no se requiere una configuración
memory.qmd.sessions.enabled independiente para este modo.
El proveedor de memoria integrado de OpenClaw admite esta ruta protegida tanto con el
backend integrado como con QMD. Los proveedores de memoria alternativos pueden seguir usando sus propios
hooks de recuperación y las herramientas avanzadas de Active Memory, pero esta configuración se omite
a menos que el proveedor actual admita la recuperación protegida de transcripciones privadas.
openclaw doctor informa de un proveedor no compatible o de una lista explícita
toolsAllow de Active Memory que omita memory_search.
El límite de recuperación es más estricto que el de la búsqueda general de sesiones:
- solo son aptas las conversaciones privadas reconocidas del mismo agente
- se excluye la conversación que se está respondiendo
- los grupos y canales se excluyen como fuentes y destinos
- los tipos de conversación desconocidos se rechazan de forma segura
- la recuperación en un entorno aislado no puede usar la autorización especial entre conversaciones
tools.sessions.visibility, las claves de sesión,
el almacenamiento de transcripciones, el enrutamiento de entrega ni los permisos de sessions_list,
sessions_history y sessions_send. Active Memory realiza una fase de recuperación acotada
y de solo lectura; si la recuperación no está disponible o agota el tiempo de espera, no se bloquea la
respuesta.
Selección del proveedor
Cuando no se establece
provider, OpenClaw usa embeddings de OpenAI. Establezca provider
explícitamente para usar Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama,
Voyage, un modelo GGUF local o un endpoint /v1/embeddings compatible con OpenAI.
Las configuraciones heredadas que aún indican provider: "auto" se resuelven como openai.
Cuando provider no está establecido, existe el valor heredado provider: "auto" o
provider: "none" selecciona intencionadamente el modo exclusivo de FTS, la recuperación de memoria puede seguir
usando la clasificación léxica de FTS cuando los embeddings no estén disponibles.
Los proveedores explícitos no locales rechazan de forma segura. Si establece memory.search.provider como
un proveedor concreto con backend remoto, como Bedrock, DeepInfra, Gemini, GitHub
Copilot, LM Studio, Mistral, Ollama, OpenAI, Voyage o un proveedor personalizado
compatible con OpenAI, y dicho proveedor no está disponible durante la ejecución, memory_search
devuelve un resultado de no disponibilidad en lugar de usar silenciosamente una recuperación exclusiva mediante FTS. Corrija la
configuración del proveedor o de la autenticación, cambie a un proveedor accesible o establezca
provider: "none" si desea usar deliberadamente una recuperación exclusiva mediante FTS.
ID de proveedores personalizados
memory.search.provider puede apuntar a una entrada models.providers.<id> personalizada para adaptadores de proveedores específicos de memoria, como ollama, o para API de modelos compatibles con OpenAI, como openai-responses / openai-completions. OpenClaw resuelve el propietario api de ese proveedor para el adaptador de embeddings y conserva el ID del proveedor personalizado para gestionar el endpoint, la autenticación y el prefijo del modelo. Esto permite que las configuraciones con varias GPU o varios hosts dediquen los embeddings de memoria a un endpoint local específico:
Resolución de la clave de API
Los embeddings remotos requieren una clave de API. Bedrock usa en su lugar la cadena predeterminada de credenciales del SDK de AWS (roles de instancia, SSO, claves de acceso o una clave de API de Bedrock).OAuth de Codex solo cubre el chat y las finalizaciones, y no satisface las solicitudes de embeddings.
Configuración del endpoint remoto
Useprovider: "openai-compatible" para un servidor genérico
/v1/embeddings compatible con OpenAI que no deba heredar las credenciales globales de chat de OpenAI.
string
URL base personalizada de la API.
string
Anulación de la clave de API.
object
Encabezados HTTP adicionales (combinados con los valores predeterminados del proveedor).
Configuración específica del proveedor
Gemini
Gemini
Tipos de entrada compatibles con OpenAI
Tipos de entrada compatibles con OpenAI
Los endpoints de embeddings compatibles con OpenAI pueden habilitar campos de solicitud Cambiar estos valores afecta a la identidad de la caché de embeddings para la indexación por lotes del proveedor y debe ir seguido de una reindexación de la memoria cuando el modelo de origen trate las etiquetas de forma diferente.
input_type específicos del proveedor. Esto resulta útil para modelos de embeddings asimétricos que requieren etiquetas diferentes para los embeddings de consultas y documentos.Bedrock
Bedrock
Configuración de embeddings de Bedrock
Bedrock utiliza la cadena de credenciales predeterminada del SDK de AWS junto con un token de portador comprobado por OpenClaw, por lo que no se almacenan claves de API en la configuración. Si OpenClaw se ejecuta en EC2 con un rol de instancia habilitado para Bedrock, basta con establecer el proveedor y el modelo:Modelos compatibles (con detección de familia y dimensiones predeterminadas):
Las variantes con sufijo de rendimiento (por ejemplo,
amazon.titan-embed-text-v1:2:8k) y los ID de perfiles de inferencia con prefijo de región (por ejemplo, us.amazon.titan-embed-text-v2:0) heredan la configuración del modelo base.Región: se resuelve en este orden: la anulación memory.search.remote.baseUrl, la configuración models.providers.amazon-bedrock.baseUrl, AWS_REGION, AWS_DEFAULT_REGION y, finalmente, el valor predeterminado us-east-1.Autenticación: OpenClaw comprueba primero AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY o AWS_BEARER_TOKEN_BEDROCK y, a continuación, recurre a la cadena estándar de proveedores de credenciales predeterminada del SDK de AWS:- Variables de entorno (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY), salvo que también se haya establecidoAWS_PROFILE - SSO (solo cuando están configurados los campos de SSO)
- Archivos compartidos de credenciales y configuración (
fromIni, incluyeAWS_PROFILE) - Proceso de credenciales (
credential_processen el archivo de configuración de AWS) - Credenciales de token de identidad web
- Credenciales de metadatos de instancias de ECS o EC2
InvokeModel al modelo específico:Local (GGUF + llama.cpp)
Local (GGUF + llama.cpp)
Instale primero el proveedor oficial de llama.cpp:
openclaw plugins install @openclaw/llama-cpp-provider.
Modelo predeterminado: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, descarga automática). Los checkouts del código fuente siguen requiriendo la aprobación de la compilación nativa: pnpm approve-builds y después pnpm rebuild node-llama-cpp.Utilice la CLI independiente para verificar la misma ruta del proveedor que utiliza el Gateway:local.contextSize también sirven para determinar la asignación automática de capas de GPU de node-llama-cpp, de modo que los pesos del modelo y el contexto de embeddings solicitado se ajusten conjuntamente. openclaw memory status --deep informa del último backend conocido de llama.cpp, el dispositivo, la descarga de cómputo, el contexto solicitado y los datos de memoria con marca de tiempo después de que el entorno de ejecución se haya cargado; el estado pasivo no carga ningún modelo.Establezca provider: "local" explícitamente para los embeddings GGUF locales. Se admiten hf: y referencias de modelos HTTP(S) en configuraciones locales explícitas (mediante la resolución de modelos de node-llama-cpp), pero no cambian el proveedor predeterminado.Comportamiento de la indexación
Los motores de memoria controlan la sincronización, el procesamiento por lotes, la supervisión y las heurísticas de indexación posteriores a Compaction. OpenClaw mantiene habilitados estos comportamientos con valores predeterminados mantenidos, en lugar de exponer controles de temporización para cada instalación.Configuración de la búsqueda híbrida
Todo bajomemory.search.query:
La recuperación híbrida permanece habilitada; MMR y la disminución temporal permanecen deshabilitadas por
la política integrada del motor.
Ejemplo completo
Rutas de memoria adicionales
.md. La gestión de enlaces simbólicos depende del backend activo: el motor integrado omite los enlaces simbólicos, mientras que QMD sigue el comportamiento del escáner QMD subyacente.
Para la búsqueda de transcripciones entre agentes con ámbito de agente, utilice agents.entries.*.memory.search.qmd.extraCollections en lugar de memory.qmd.paths. Esas colecciones adicionales siguen la misma estructura { path, name, pattern? }, pero se combinan por agente y pueden conservar nombres compartidos explícitos cuando la ruta apunta fuera del espacio de trabajo actual. Si la misma ruta resuelta aparece tanto en memory.qmd.paths como en memory.search.qmd.extraCollections, QMD conserva la primera entrada y omite el duplicado.
Memoria multimodal (Gemini)
Indexe imágenes y audio junto con Markdown mediante Gemini Embedding 2:Solo se aplica a los archivos de
extraPaths. Las raíces de memoria predeterminadas siguen admitiendo únicamente Markdown. Requiere gemini-embedding-2-preview. fallback debe ser "none"..jpg, .jpeg, .png, .webp, .gif, .heic, .heif (imágenes); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (audio).
Caché de embeddings
Evita volver a generar los embeddings del texto que no ha cambiado durante la reindexación o las actualizaciones de transcripciones.
Indexación por lotes
Disponible para
gemini, openai y voyage. El procesamiento por lotes de OpenAI suele ser la opción más rápida y económica para grandes cargas históricas.
El proveedor controla la concurrencia, el sondeo y el comportamiento de los tiempos de espera.
Búsqueda en la memoria de sesiones
Indexe las transcripciones de las sesiones y expóngalas mediantememory_search:
La búsqueda ordinaria de transcripciones de sesiones invocada por el modelo respeta
tools.sessions.visibility. La visibilidad predeterminada
tree expone la sesión actual, las sesiones que esta generó y las
sesiones de grupo del mismo agente observadas mediante el conocimiento ambiental del grupo. Las demás
sesiones no relacionadas requieren la visibilidad agent (o all solo cuando también
se requiere la recuperación entre agentes y la política entre agentes lo permite).
rememberAcrossConversations no amplía esa configuración. Proporciona una
autorización independiente, exclusiva del entorno de ejecución y limitada a las
transcripciones privadas del mismo agente durante la ejecución acotada de Active Memory.
Los ejemplos siguientes colocan estas opciones en el nivel superior de memory.search. También se pueden
aplicar opciones equivalentes en una sobrescritura de memory.search por agente cuando solo un
agente deba indexar y buscar transcripciones de sesiones.
Para la recuperación del Gateway a mensajes directos del mismo agente:
- Backend integrado
- Backend QMD
sources: ["sessions"] no exporta por sí solo las transcripciones a QMD. Configure
también memory.qmd.sessions.enabled: true. La opción de nivel superior
rememberAcrossConversations: true es la excepción: implica la
exportación de sesiones de QMD necesaria para ese agente. Las exportaciones implícitas permanecen privadas:
siempre usan la ubicación interna de exportación predeterminada (un
sessions.exportDir configurado solo se aplica a las exportaciones explícitas), solo se buscan
durante la recuperación entre conversaciones de ese agente y el memory_get
ordinario no puede leerlas. La opción explícita
memory.qmd.sessions.enabled: true conserva su comportamiento existente y hace que
las transcripciones exportadas formen parte del corpus de memoria ordinario.
Aceleración vectorial de SQLite (sqlite-vec)
Cuando sqlite-vec no está disponible, OpenClaw recurre automáticamente a la similitud de coseno dentro del proceso.
Almacenamiento de índices
Los índices de memoria integrados se almacenan en la base de datos SQLite de OpenClaw de cada agente enagents/<agentId>/agent/openclaw-agent.sqlite.
Configuración del backend QMD
Establezcamemory.backend = "qmd" para habilitarlo. Todas las opciones de QMD se encuentran en memory.qmd:
searchMode: "search" es exclusivamente léxico/BM25. OpenClaw no ejecuta sondeos de disponibilidad de vectores semánticos ni mantenimiento de embeddings de QMD para ese modo, ni siquiera durante memory status --deep; vsearch y query siguen requiriendo que los vectores y embeddings de QMD estén disponibles.
rerank: false solo cambia el modo query de QMD y requiere QMD 2.1 o una versión posterior. En el modo de CLI directa, OpenClaw pasa --no-rerank; en el modo MCP respaldado por mcporter, pasa rerank: false a la herramienta de consulta unificada de QMD. Déjelo sin configurar para usar el comportamiento predeterminado de reclasificación de consultas de QMD.
OpenClaw prefiere las estructuras actuales de colecciones y consultas MCP de QMD, pero mantiene la compatibilidad con versiones anteriores de QMD probando indicadores compatibles de patrones de colecciones y nombres anteriores de herramientas MCP cuando es necesario. Cuando QMD anuncia compatibilidad con varios filtros de colecciones, las colecciones de la misma fuente se buscan mediante un único proceso de QMD; las compilaciones anteriores de QMD conservan la ruta de compatibilidad por colección. «Misma fuente» significa que las colecciones de memoria duradera (los archivos de memoria predeterminados más las rutas personalizadas) se agrupan, mientras que las colecciones de transcripciones de sesiones permanecen como un grupo independiente, de modo que la diversificación de fuentes siga disponiendo de ambas entradas.
Las sobrescrituras de modelos de QMD permanecen en QMD, no en la configuración de OpenClaw. Si necesita sobrescribir globalmente los modelos de QMD, establezca variables de entorno como
QMD_EMBED_MODEL, QMD_RERANK_MODEL y QMD_GENERATE_MODEL en el entorno de ejecución del Gateway.Límites
Límites
Ámbito
Ámbito
Controla qué sesiones pueden recibir resultados de búsqueda de QMD. Usa el mismo esquema que El valor predeterminado distribuido permite solo mensajes directos/conversaciones directas y deniega grupos y otros tipos de canal.
session.sendPolicy:match.keyPrefix coincide con la clave de sesión normalizada; match.rawKeyPrefix coincide con la clave sin procesar, incluido agent:<id>:.Citas
Citas
memory.citations se aplica a todos los backends:Ejemplo completo de QMD
Dreaming
Dreaming se configura enplugins.entries.memory-core.config.dreaming, no en memory.search.
Dreaming se ejecuta como un único barrido programado y usa fases internas ligera/profunda/REM como detalle de implementación.
Para consultar el comportamiento conceptual y los comandos de barra diagonal, véase Dreaming.
Opciones de usuario
Ejemplo
- Dreaming escribe el estado de la máquina en
memory/.dreams/. - Dreaming escribe la salida narrativa legible por personas en
DREAMS.md(o en eldreams.mdexistente). dreaming.modelusa el control de confianza existente para subagentes del Plugin; establezcaplugins.entries.memory-core.subagent.allowModelOverride: trueantes de habilitarlo.- Dream Diary vuelve a intentarlo una vez con el modelo predeterminado de la sesión cuando el modelo configurado no está disponible. Los errores de confianza o de lista de permitidos se registran y no se vuelven a intentar de forma silenciosa.
- La política y los umbrales de las fases ligera/profunda/REM son comportamientos internos, no opciones de configuración orientadas al usuario.