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.

Todas las configuraciones de búsqueda de memoria se encuentran en agents.defaults.memorySearch en openclaw.json a menos que se indique lo contrario.


ClaveTipoPredeterminadoDescripción
providerstring"openai"ID del adaptador de incrustación, como bedrock, deepinfra, gemini, github-copilot, local, mistral, ollama, openai, openai-compatible o voyage; también puede ser un models.providers.<id> configurado cuyo api apunte a un adaptador de incrustación de memoria o a una API de modelo compatible con OpenAI
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 provider no está configurado, OpenClaw utiliza incrustaciones de OpenAI. Configure provider explícitamente para usar Gemini, Voyage, Mistral, DeepInfra, Bedrock, GitHub Copilot, Ollama, un modelo GGUF local o un endpoint /v1/embeddings compatible con OpenAI. Las configuraciones heredadas que todavía dicen provider: "auto" se resuelven a openai.

Si las incrustaciones de OpenAI no son accesibles desde su red, la recuperación de memoria falla de forma abierta en lugar de bloquear el turno. Establezca el campo memorySearch.provider existente en un proveedor local accesible, Ollama, regional o compatible con OpenAI para restaurar la clasificación semántica.

memorySearch.provider puede apuntar a una entrada models.providers.<id> personalizada para adaptadores de proveedores específicos de memoria como ollama, o para APIs de modelos compatibles con OpenAI como openai-responses / openai-completions. 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, autenticación y prefijo del modelo. Esto permite que las configuraciones de 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 API. Bedrock utiliza la cadena de credenciales predeterminada del SDK de AWS en su lugar (roles de instancia, SSO, claves de acceso).

ProveedorVar de entornoClave de configuración
BedrockCadena de credenciales de AWSNo se necesita clave 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


Use provider: "openai-compatible" para un servidor /v1/embeddings compatible con OpenAI genérico que no debe heredar las credenciales globales de chat de OpenAI.

URL base de API personalizada. Sobrescribir clave de API. Encabezados HTTP adicionales (fusionados con los valores predeterminados del proveedor).
{
agents: {
defaults: {
memorySearch: {
provider: "openai-compatible",
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
Tipos de entrada compatibles con OpenAI

Los puntos finales de embedding compatibles con OpenAI pueden optar por campos de solicitud input_type específicos del proveedor. Esto es útil para modelos de embedding asimétricos que requieren diferentes etiquetas para embeddings de consultas y documentos.

ClaveTipoPredeterminadoDescripción
inputTypestringsin establecerinput_type compartido para embeddings de consultas y documentos
queryInputTypestringsin establecerinput_type en tiempo de consulta; anula inputType
documentInputTypestringsin establecerinput_type de índice/documento; anula inputType
{
agents: {
defaults: {
memorySearch: {
provider: "openai-compatible",
remote: {
baseUrl: "https://embeddings.example/v1",
apiKey: "${EMBEDDINGS_API_KEY}",
},
model: "asymmetric-embedder",
queryInputType: "query",
documentInputType: "passage",
},
},
},
}

Cambiar estos valores afecta la identidad de la caché de embedding 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
outputDimensionalitynumbermodelo predeterminadoPara Titan V2: 256, 512 o 1024

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

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 (p. ej., 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, el 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, limite 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.modelCacheDirstringpredeterminado de node-llama-cppDirectorio de caché para modelos descargados
local.contextSizenumber | "auto"4096Tamaño de la ventana de contexto para el contexto de embedding. 4096 cubre los fragmentos típicos (128–512 tokens) limitando la VRAM no ponderada. 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 descargas 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

Establezca provider: "local" explícitamente para embeddings GGUF locales. Las referencias a modelos hf: y HTTP(S) son compatibles con configuraciones locales explícitas, pero no cambian el proveedor predeterminado.

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

Sin establecer utiliza 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 inserción locales limitados por CPU sean saludables 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 reordenació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 integrado 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, utilice agents.list[].memorySearch.qmd.extraCollections en lugar de memory.qmd.paths. Esas colecciones adicionales siguen la misma forma { 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 memorySearch.qmd.extraCollections, QMD mantiene la primera entrada y omite el duplicado.


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

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

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


ClaveTipoPredeterminadoDescripción
cache.enabledbooleantrueAlmacenar en caché las incrustaciones de fragmentos en SQLite
cache.maxEntriesnumber50000Máximo de incrustaciones en caché

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 la finalización del lote
remote.batch.pollIntervalMsnumberIntervalo de sondeo
remote.batch.timeoutMinutesnumberTiempo de espera del lote

Disponible para openai, gemini y voyage. El proceso por lotes de OpenAI suele ser el más rápido y económico para grandes rellenados (backfills).

remote.nonBatchConcurrency controla las llamadas de incrustación en línea utilizadas por proveedores locales/autoalojados y proveedores alojados cuando las API de lotes del proveedor no están activas. Ollama establece 1 de forma predeterminada para la indexación no por lotes para evitar saturar hosts locales pequeños; configure 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 de memoria de sesión (experimental)

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

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

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


Aceleración vectorial de SQLite (sqlite-vec)

Sección titulada «Aceleración vectorial de SQLite (sqlite-vec)»
ClaveTipoPredeterminadoDescripción
store.vector.enabledbooleantrueUsar sqlite-vec para consultas vectoriales
store.vector.extensionPathstringincluidoSobrescribir ruta de sqlite-vec

Cuando sqlite-vec no está disponible, OpenClaw vuelve automáticamente a la similitud de coseno dentro del 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
includeDefaultMemorybooleantrueAutoindexar MEMORY.md + memory/**/*.md
paths[]arrayRutas adicionales: { name, path, pattern? }
sessions.enabledbooleanfalseIndexar transcripciones de sesiones
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 QMD e incrustaciones.

OpenClaw prefiere las formas actuales de colección QMD y consulta MCP, pero mantiene funcionando las versiones anteriores de QMD intentando marcas de patrón de colección compatibles y nombres de herramientas MCP antiguos cuando sea necesario. Cuando QMD anuncia compatibilidad con 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 siguen siendo un grupo separado para que la diversificación de fuentes siga teniendo ambas entradas.

Programación de actualización
ClaveTipoPredeterminadoDescripción
update.intervalstring5mIntervalo de actualización
update.debounceMsnumber15000Debounce para cambios de archivos
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 inicio de 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 inyectados totales
limits.timeoutMsnumber4000Tiempo de espera de búsqueda
Ámbito

Controla qué sesiones pueden recibir resultados de búsqueda QMD. El 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 DM. 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 pie de página (la ruta aún 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 QMD de larga duración aún posee el observador de archivos regular y los temporizadores de intervalo cuando se abre la búsqueda de memoria 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" }],
},
},
}

Soñar se configura bajo plugins.entries.memory-core.config.dreaming, no bajo agents.defaults.memorySearch.

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

Para el comportamiento conceptual y los comandos de barra, consulte Soñar.

ClaveTipoPredeterminadoDescripción
enabledbooleanfalseHabilitar o deshabilitar la “dreaming” (ensoñación) por completo
frequencystring0 3 * * *Cadencia cron opcional para el barrido completo de dreaming
modelstringmodelo predeterminadoAnulación opcional del modelo del subagente Dream Diary
phases.deep.maxPromotedSnippetTokensnumber160Máximo de tokens estimados conservados de cada fragmento de recuerdo a corto plazo promovido a MEMORY.md; los metadatos de procedencia siguen siendo visibles
{
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",
},
},
},
},
},
}