Ir al contenido

Búsqueda de memoria

memory_search encuentra notas relevantes en tus archivos de memoria, incluso cuando la redacción difiere del texto original. Funciona indexando la memoria en pequeños fragmentos y buscándolos mediante incrustaciones, palabras clave o ambos.

Si tienes una clave de API de OpenAI, Gemini, Voyage o Mistral configurada, la búsqueda de memoria funciona automáticamente. Para establecer un proveedor explícitamente:

{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}

Para incrustaciones locales sin clave de API, usa provider: "local" (requiere node-llama-cpp).

ProveedorIDNecesita clave de APINotas
OpenAIopenaiDetección automática, rápido
GeminigeminiAdmite la indexación de imágenes/audio
VoyagevoyageDetección automática
MistralmistralDetección automática
OllamaollamaNoLocal, debe establecerse explícitamente
LocallocalNoModelo GGUF, descarga de ~0.6 GB

OpenClaw ejecuta dos rutas de recuperación en paralelo y fusiona los resultados:

flowchart LR
Q["Query"] --> E["Embedding"]
Q --> T["Tokenize"]
E --> VS["Vector Search"]
T --> BM["BM25 Search"]
VS --> M["Weighted Merge"]
BM --> M
M --> R["Top Results"]
  • Búsqueda vectorial encuentra notas con significados similares (“host de puerta de enlace” coincide con “la máquina que ejecuta OpenClaw”).
  • Búsqueda de palabras clave BM25 encuentra coincidencias exactas (ID, cadenas de error, claves de configuración).

Si solo hay una ruta disponible (sin incrustaciones o sin FTS), la otra se ejecuta sola.

Dos funciones opcionales ayudan cuando tienes un historial grande de notas:

Las notas antiguas pierden gradualmente peso en la clasificación para que la información reciente aparezca primero. Con la vida media predeterminada de 30 días, una nota del mes pasado puntúa al 50% de su peso original. Los archivos perennes como MEMORY.md nunca se decaen.

Reduce los resultados redundantes. Si cinco notas mencionan la misma configuración de enrutador, MMR asegura que los resultados principales cubran diferentes temas en lugar de repetirse.

{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}

Con Gemini Embedding 2, puedes indexar imágenes y archivos de audio junto con Markdown. Las consultas de búsqueda siguen siendo texto, pero coinciden con el contenido visual y de audio. Consulta la referencia de configuración de memoria para la configuración.

Opcionalmente, puedes indexar las transcripciones de la sesión para que memory_search pueda recordar conversaciones anteriores. Esto es opcional a través de memorySearch.experimental.sessionMemory. Consulta la referencia de configuración para más detalles.

¿Sin resultados? Ejecuta openclaw memory status para verificar el índice. Si está vacío, ejecuta openclaw memory index --force.

¿Solo coincidencias de palabras clave? Es posible que tu proveedor de incrustaciones no esté configurado. Verifica openclaw memory status --deep.

¿Texto CJK no encontrado? Reconstruye el índice FTS con openclaw memory index --force.