Skip to main content
Esta página enumera todas las opciones de configuración para la búsqueda en la memoria de OpenClaw. Para obtener descripciones conceptuales generales, consulte:

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.
Toda la configuración compartida de la memoria se encuentra en el nivel superior 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:
El valor sigue la herencia normal de 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
La configuración no modifica 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.
Cambiar el proveedor o el modelo de embeddings, la configuración del proveedor, las fuentes, el ámbito, la segmentación o el tokenizador puede hacer que el índice vectorial de SQLite existente sea incompatible. OpenClaw pausa la búsqueda vectorial e informa de una advertencia sobre la identidad del índice en lugar de volver a generar automáticamente todos los embeddings. Reconstruya el índice cuando sea oportuno con openclaw memory status --index --agent <id> o openclaw memory index --force --agent <id>.
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

Use provider: "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

Cambiar el modelo o outputDimensionality modifica la identidad del índice. OpenClaw pausa la búsqueda vectorial hasta que se reconstruya explícitamente el índice de memoria.
Los endpoints de embeddings compatibles con OpenAI pueden habilitar campos de solicitud 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.
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.

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:
  1. Variables de entorno (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY), salvo que también se haya establecido AWS_PROFILE
  2. SSO (solo cuando están configurados los campos de SSO)
  3. Archivos compartidos de credenciales y configuración (fromIni, incluye AWS_PROFILE)
  4. Proceso de credenciales (credential_process en el archivo de configuración de AWS)
  5. Credenciales de token de identidad web
  6. Credenciales de metadatos de instancias de ECS o EC2
Permisos de IAM: el rol o usuario de IAM necesita:
Para aplicar el principio de privilegio mínimo, limite InvokeModel al modelo específico:
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:
Los valores numéricos de 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 bajo memory.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

Las rutas pueden ser absolutas o relativas al espacio de trabajo. Los directorios se examinan recursivamente en busca de archivos .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".
Formatos compatibles: .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 mediante memory_search:
La indexación de sesiones es opcional y se ejecuta de forma asíncrona. Los resultados pueden estar ligeramente desactualizados. Los registros de sesión se almacenan en el disco, por lo que el acceso al sistema de archivos debe considerarse el límite de confianza.
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:
Al usar 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 en agents/<agentId>/agent/openclaw-agent.sqlite.

Configuración del backend QMD

Establezca memory.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.
Controla qué sesiones pueden recibir resultados de búsqueda de QMD. Usa el mismo esquema que session.sendPolicy:
El valor predeterminado distribuido permite solo mensajes directos/conversaciones directas y deniega grupos y otros tipos de canal. match.keyPrefix coincide con la clave de sesión normalizada; match.rawKeyPrefix coincide con la clave sin procesar, incluido agent:<id>:.
memory.citations se aplica a todos los backends:
QMD se inicializa de forma diferida cuando se usa la memoria por primera vez; su adaptador gestiona las programaciones de actualización y embeddings.

Ejemplo completo de QMD


Dreaming

Dreaming se configura en plugins.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 el dreams.md existente).
  • dreaming.model usa el control de confianza existente para subagentes del Plugin; establezca plugins.entries.memory-core.subagent.allowModelOverride: true antes 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.

Contenido relacionado