Ir al contenido

Referencia de configuración de memoria

Esta página enumera cada control de configuración para la búsqueda de memoria de OpenClaw. Para resúmenes conceptuales, consulte:

Memory overview

Cómo funciona la memoria.

Builtin engine

Backend SQLite predeterminado.

QMD engine

Sidecar con prioridad local.

Memory search

Canalización y ajuste de búsqueda.

Active memory

Subagente de memoria para sesiones interactivas.

Todos los ajustes de búsqueda de memoria se encuentran en agents.defaults.memorySearch en openclaw.json a menos que se indique lo contrario.


ClaveTipoPredeterminadoDescripción
providerstringautodetectadoID de adaptador de incrustación como bedrock, deepinfra, gemini, github-copilot, local, mistral, ollama, openai o voyage; también puede ser un models.providers.<id> configurado cuyo api apunte a uno de esos adaptadores
modelstringproveedor predeterminadoNombre del modelo de incrustación
fallbackstring"none"ID del adaptador de respaldo cuando falla el principal
enabledbooleantrueActivar o desactivar la búsqueda en memoria

Cuando no se establece provider, OpenClaw selecciona el primero disponible:

  1. local

    Seleccionado si memorySearch.local.modelPath está configurado y el archivo existe.

  2. github-copilot

    Seleccionado si se puede resolver un token de GitHub Copilot (variable de entorno o perfil de autenticación).

  3. openai

    Seleccionado si se puede resolver una clave de OpenAI.

  4. gemini

    Seleccionado si se puede resolver una clave de Gemini.

  5. voyage

    Seleccionado si se puede resolver una clave de Voyage.

  6. mistral

    Seleccionado si se puede resolver una clave de Mistral.

  7. deepinfra

    Seleccionado si se puede resolver una clave de DeepInfra.

  8. bedrock

    Seleccionado si se resuelve la cadena de credenciales del SDK de AWS (rol de instancia, claves de acceso, perfil, SSO, identidad web o configuración compartida).

ollama es compatible pero no se detecta automáticamente (establézcalo explícitamente).

memorySearch.provider puede apuntar a una entrada de models.providers.<id> personalizada. OpenClaw resuelve el propietario api de ese proveedor para el adaptador de incrustación mientras conserva el id del proveedor personalizado para el manejo del punto final, la autenticación y el prefijo del modelo. Esto permite que las configuraciones con varias GPU o varios hosts dediquen las incrustaciones de memoria a un punto final local específico:

{
models: {
providers: {
"ollama-5080": {
api: "ollama",
baseUrl: "http://gpu-box.local:11435",
apiKey: "ollama-local",
models: [{ id: "qwen3-embedding:0.6b" }],
},
},
},
agents: {
defaults: {
memorySearch: {
provider: "ollama-5080",
model: "qwen3-embedding:0.6b",
},
},
},
}

Las incrustaciones remotas requieren una clave de API. Bedrock utiliza en su lugar la cadena de credenciales predeterminada del SDK de AWS (roles de instancia, SSO, claves de acceso).

ProveedorVar. de entornoClave de configuración
BedrockCadena de credenciales de AWSNo se necesita clave de API
DeepInfraDEEPINFRA_API_KEYmodels.providers.deepinfra.apiKey
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
GitHub CopilotCOPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKENPerfil de autenticación mediante inicio de sesión de dispositivo
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (marcador de posición)
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey


Para puntos de conexión personalizados compatibles con OpenAI o para anular los valores predeterminados del proveedor:

URL base de API personalizada. Anular clave de API. Encabezados HTTP adicionales (fusionados con los valores predeterminados del proveedor).
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
model: "text-embedding-3-small",
remote: {
baseUrl: "https://api.example.com/v1/",
apiKey: "YOUR_KEY",
},
},
},
},
}

Gemini
ClaveTipoPredeterminadoDescripción
modelstringgemini-embedding-001También admite gemini-embedding-2-preview
outputDimensionalitynumber3072Para Embedding 2: 768, 1536 o 3072
OpenAI-compatible input types

Los endpoints de incrustación compatibles con OpenAI pueden optar por campos de solicitud input_type específicos del proveedor. Esto es útil para modelos de incrustación asimétricos que requieren diferentes etiquetas para incrustaciones de consultas y documentos.

KeyTypeDefaultDescription
inputTypestringunsetinput_type compartido para incrustaciones de consultas y documentos
queryInputTypestringunsetinput_type en tiempo de consulta; anula inputType
documentInputTypestringunsetinput_type de índice/documento; anula inputType
{
agents: {
defaults: {
memorySearch: {
provider: "openai",
remote: {
baseUrl: "https://embeddings.example/v1",
apiKey: "env:EMBEDDINGS_API_KEY",
},
model: "asymmetric-embedder",
queryInputType: "query",
documentInputType: "passage",
},
},
},
}

Cambiar estos valores afecta la identidad de la caché de incrustación para la indexación por lotes del proveedor y debe ir seguido de una reindexación de la memoria cuando el modelo ascendente trata las etiquetas de manera diferente.

Bedrock

Bedrock utiliza la cadena de credenciales predeterminada del AWS SDK; no se necesitan claves de API. Si OpenClaw se ejecuta en EC2 con un rol de instancia habilitado para Bedrock, simplemente configure el proveedor y el modelo:

{
agents: {
defaults: {
memorySearch: {
provider: "bedrock",
model: "amazon.titan-embed-text-v2:0",
},
},
},
}
ClaveTipoPredeterminadoDescripción
modelstringamazon.titan-embed-text-v2:0Cualquier ID de modelo de incrustación de Bedrock
outputDimensionalitynumberpredeterminado del modeloPara Titan V2: 256, 512 o 1024

Modelos compatibles (con detección de familia y dimensiones predeterminadas):

ID del modeloProveedorDimensiones predeterminadasDimensiones configurables
amazon.titan-embed-text-v2:0Amazon1024256, 512, 1024
amazon.titan-embed-text-v1Amazon1536
amazon.titan-embed-g1-text-02Amazon1536
amazon.titan-embed-image-v1Amazon1024
amazon.nova-2-multimodal-embeddings-v1:0Amazon1024256, 384, 1024, 3072
cohere.embed-english-v3Cohere1024
cohere.embed-multilingual-v3Cohere1024
cohere.embed-v4:0Cohere1536256-1536
twelvelabs.marengo-embed-3-0-v1:0TwelveLabs512
twelvelabs.marengo-embed-2-7-v1:0TwelveLabs1024

Las variantes con sufijo de rendimiento (por ejemplo, amazon.titan-embed-text-v1:2:8k) heredan la configuración del modelo base.

Autenticación: La autenticación de Bedrock utiliza el orden estándar de resolución de credenciales del AWS SDK:

  1. Variables de entorno (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY)
  2. Caché de tokens SSO
  3. Credenciales de token de identidad web
  4. Archivos de credenciales y configuración compartidos
  5. Credenciales de metadatos de ECS o EC2

La región se resuelve desde AWS_REGION, AWS_DEFAULT_REGION, la amazon-bedrock del proveedor baseUrl, o por defecto es us-east-1.

Permisos IAM: el rol o usuario de IAM necesita:

{
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "*"
}

Para el privilegio mínimo, limitar InvokeModel al modelo específico:

arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0
Local (GGUF + node-llama-cpp)
KeyTypeDefaultDescription
local.modelPathstringdescargado automáticamenteRuta al archivo de modelo GGUF
local.modelCacheDirstringnode-llama-cpp defaultDir. de caché para modelos descargados
local.contextSizenumber | "auto"4096Tamaño de la ventana de contexto para el contexto de incrustación. 4096 cubre fragmentos típicos (128–512 tokens) limitando la VRAM que no es de pesos. Reduzca a 1024–2048 en hosts con restricciones. "auto" usa el máximo entrenado del modelo — no recomendado para modelos de 8B+ (Qwen3-Embedding-8B: 40 960 tokens → ~32 GB VRAM vs ~8.8 GB a 4096).

Modelo predeterminado: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, descargado automáticamente). Las fuentes de código fuente aún requieren aprobación de compilación nativa: pnpm approve-builds y luego pnpm rebuild node-llama-cpp.

Use la CLI independiente para verificar la misma ruta de proveedor que usa la Gateway:

Ventana de terminal
openclaw memory status --deep --agent main
openclaw memory index --force --agent main

Si provider es auto, local se selecciona solo cuando local.modelPath apunta a un archivo local existente. Las referencias de modelos hf: y HTTP(S) todavía se pueden usar explícitamente con provider: "local", pero no hacen que auto seleccione local antes de que el modelo esté disponible en el disco.

Anule el tiempo de espera para los lotes de incrustación en línea durante la indexación de memoria.

Sin configurar, se usa el valor predeterminado del proveedor: 600 segundos para proveedores locales/autoalojados como local, ollama y lmstudio, y 120 segundos para proveedores alojados. Aumente esto cuando los lotes de incrustación locales limitados por CPU estén sanos pero lentos.


Todo bajo memorySearch.query.hybrid:

ClaveTipoPredeterminadoDescripción
enabledbooleantrueHabilitar búsqueda híbrida BM25 + vectorial
vectorWeightnumber0.7Peso para las puntuaciones vectoriales (0-1)
textWeightnumber0.3Peso para las puntuaciones BM25 (0-1)
candidateMultipliernumber4Multiplicador del tamaño del grupo de candidatos
ClaveTipoPredeterminadoDescripción
mmr.enabledbooleanfalseHabilitar re-clasificación MMR
mmr.lambdanumber0.70 = máxima diversidad, 1 = máxima relevancia
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
vectorWeight: 0.7,
textWeight: 0.3,
mmr: { enabled: true, lambda: 0.7 },
temporalDecay: { enabled: true, halfLifeDays: 30 },
},
},
},
},
},
}

ClaveTipoDescripción
extraPathsstring[]Directorios o archivos adicionales para indexar
{
agents: {
defaults: {
memorySearch: {
extraPaths: ["../team-docs", "/srv/shared-notes"],
},
},
},
}

Las rutas pueden ser absolutas o relativas al espacio de trabajo. Los directorios se escanean de forma recursiva en busca de archivos .md. El manejo de enlaces simbólicos depende del backend activo: el motor incorporado ignora 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, use agents.list[].memorySearch.qmd.extraCollections en lugar de memory.qmd.paths. Esas colecciones adicionales siguen la misma forma { path, name, pattern? }, pero se fusionan por agente y pueden preservar 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 memorySearch.qmd.extraCollections, QMD mantiene la primera entrada y omite el duplicado.


Indexe imágenes y audio junto con Markdown usando Gemini Embedding 2:

ClaveTipoPredeterminadoDescripción
multimodal.enabledbooleanfalseHabilitar la indexación multimodal
multimodal.modalitiesstring[]["image"], ["audio"] o ["all"]
multimodal.maxFileBytesnumber10000000Tamaño máximo de archivo para la indexación

Formatos admitidos: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (imágenes); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (audio).


ClaveTipoPredeterminadoDescripción
cache.enabledbooleanfalseAlmacenar en caché las incrustaciones de fragmentos en SQLite
cache.maxEntriesnumber50000Incrustaciones en caché máximas

Evita volver a incrustar texto sin cambios durante la reindexación o actualizaciones de transcripciones.


ClaveTipoPredeterminadoDescripción
remote.nonBatchConcurrencynumber4Incrustaciones en línea paralelas
remote.batch.enabledbooleanfalseHabilitar API de incrustación por lotes
remote.batch.concurrencynumber2Trabajos por lotes paralelos
remote.batch.waitbooleantrueEsperar a que se complete el lote
remote.batch.pollIntervalMsnumberIntervalo de sondeo
remote.batch.timeoutMinutesnumberTiempo de espera del lote

Disponible para openai, gemini y voyage. El lote de OpenAI suele ser el más rápido y económico para grandes reposiciones.

remote.nonBatchConcurrency controla las llamadas de incrustación en línea utilizadas por proveedores locales/autohospedados y proveedores hospedados cuando las API por lotes del proveedor no están activas. Ollama tiene como valor predeterminado 1 para la indexación no por lotes para evitar abrumar hosts locales pequeños; establezca un valor más alto en máquinas más grandes.

Esto es independiente de sync.embeddingBatchTimeoutSeconds, que controla el tiempo de espera de las llamadas de incrustación en línea.


Búsqueda en memoria de sesión (experimental)

Sección titulada «Búsqueda en memoria de sesión (experimental)»

Indexar las transcripciones de sesión y exponerlas a través de memory_search:

ClaveTipoPredeterminadoDescripción
experimental.sessionMemorybooleanfalseHabilitar la indexación de sesiones
sourcesstring[]["memory"]Agregar "sessions" para incluir transcripciones
sync.sessions.deltaBytesnumber100000Umbral de bytes para reindexar
sync.sessions.deltaMessagesnumber50Umbral de mensajes para reindexar


Aceleración de vectores SQLite (sqlite-vec)

Sección titulada «Aceleración de vectores SQLite (sqlite-vec)»
ClaveTipoPredeterminadoDescripción
store.vector.enabledbooleantrueUsar sqlite-vec para consultas de vectores
store.vector.extensionPathstringincluido (bundled)Anular ruta de sqlite-vec

Cuando sqlite-vec no está disponible, OpenClaw vuelve automáticamente a la similitud de coseno en proceso.


ClaveTipoPredeterminadoDescripción
store.pathstring~/.openclaw/memory/{agentId}.sqliteUbicación del índice (admite el token {agentId})
store.fts.tokenizerstringunicode61Tokenizador FTS5 (unicode61 o trigram)

Establezca memory.backend = "qmd" para habilitar. Todos los ajustes de QMD se encuentran bajo memory.qmd:

ClaveTipoPredeterminadoDescripción
commandstringqmdRuta del ejecutable QMD; establezca una ruta absoluta cuando el servicio PATH difiera de su shell
searchModestringsearchComando de búsqueda: search, vsearch, query
includeDefaultMemorybooleantrueAuto-indexar MEMORY.md + memory/**/*.md
paths[]arrayRutas adicionales: { name, path, pattern? }
sessions.enabledbooleanfalseIndexar transcripciones de sesión
sessions.retentionDaysnumberRetención de transcripciones
sessions.exportDirstringDirectorio de exportación

searchMode: "search" es solo léxico/BM25. OpenClaw no ejecuta sondas de preparación de vectores semánticos ni mantenimiento de incrustaciones de QMD para ese modo, incluso durante memory status --deep; vsearch y query siguen requiriendo preparación de vectores de QMD e incrustaciones.

OpenClaw prefiere las formas actuales de colección QMD y consulta MCP, pero mantiene funcionando las versiones anteriores de QMD probando indicadores de patrones de colección compatibles y nombres de herramientas MCP más antiguos cuando es necesario. Cuando QMD anuncia soporte para múltiples filtros de colección, las colecciones de la misma fuente se buscan con un proceso QMD; las compilaciones antiguas de QMD mantienen la ruta de compatibilidad por colección. Misma fuente significa que las colecciones de memoria duradera se agrupan, mientras que las colecciones de transcripciones de sesión permanecen como un grupo separado para que la diversificación de fuentes aún tenga ambas entradas.

Calendario de actualización
ClaveTipoPredeterminadoDescripción
update.intervalstring5mIntervalo de actualización
update.debounceMsnumber15000Eliminar rebote de cambios de archivo
update.onBootbooleantrueActualizar cuando se abre el gestor QMD de larga duración; también controla la actualización de inicio opcional
update.startupstringoffActualización opcional al iniciar la puerta de enlace: off, idle o immediate
update.startupDelayMsnumber120000Retraso antes de que se ejecute la actualización startup: "idle"
update.waitForBootSyncbooleanfalseBloquear la apertura del gestor hasta que se complete su actualización inicial
update.embedIntervalstringCadencia de incrustación separada
update.commandTimeoutMsnumberTiempo de espera para comandos QMD
update.updateTimeoutMsnumberTiempo de espera para operaciones de actualización de QMD
update.embedTimeoutMsnumberTiempo de espera para operaciones de incrustación de QMD
Límites
ClaveTipoPredeterminadoDescripción
limits.maxResultsnumber6Máx. resultados de búsqueda
limits.maxSnippetCharsnumberLimitar longitud del fragmento
limits.maxInjectedCharsnumberLimitar caracteres totales inyectados
limits.timeoutMsnumber4000Tiempo de espera de búsqueda
Ámbito

Controla qué sesiones pueden recibir resultados de búsqueda QMD. Mismo esquema que session.sendPolicy:

{
memory: {
qmd: {
scope: {
default: "deny",
rules: [{ action: "allow", match: { chatType: "direct" } }],
},
},
},
}

La configuración predeterminada incluida permite sesiones directas y de canal, mientras que sigue denegando grupos.

El valor predeterminado es solo MD. match.keyPrefix coincide con la clave de sesión normalizada; match.rawKeyPrefix coincide con la clave sin procesar incluyendo `agent:

:`.

Citas

memory.citations se aplica a todos los backends:

ValorComportamiento
auto (predeterminado)Incluir pie de página `Source:

en fragmentos | |on | Incluir siempre el pie de página | |off` | Omitir el pie de página (la ruta todavía se pasa internamente al agente) |

Las actualizaciones de arranque de QMD utilizan una ruta de subproceso de una sola vez durante el inicio de la puerta de enlace. El administrador de QMD de larga duración sigue siendo propietario del observador de archivos normal y los temporizadores de intervalo cuando la búsqueda de memoria se abre para uso interactivo.

{
memory: {
backend: "qmd",
citations: "auto",
qmd: {
includeDefaultMemory: true,
update: { interval: "5m", debounceMs: 15000 },
limits: { maxResults: 6, timeoutMs: 4000 },
scope: {
default: "deny",
rules: [{ action: "allow", match: { chatType: "direct" } }],
},
paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }],
},
},
}

La función de soñar (Dreaming) se configura bajo plugins.entries.memory-core.config.dreaming, no bajo agents.defaults.memorySearch.

La función de soñar se ejecuta como un barrido programado y utiliza fases internas ligera/profunda/REM como detalle de implementación.

Para ver el comportamiento conceptual y los comandos de barra, consulte Dreaming.

ClaveTipoPredeterminadoDescripción
enabledbooleanfalseHabilitar o deshabilitar el proceso de soñar (dreaming) por completo
frequencystring0 3 * * *Cadencia opcional de cron para el barrido completo de soñar (dreaming)
modelstringmodelo predeterminadoInvalidación opcional del modelo del subagente Dream Diary
{
plugins: {
entries: {
"memory-core": {
subagent: {
allowModelOverride: true,
allowedModels: ["anthropic/claude-sonnet-4-6"],
},
config: {
dreaming: {
enabled: true,
frequency: "0 3 * * *",
model: "anthropic/claude-sonnet-4-6",
},
},
},
},
},
}