Saltar al contenido principal

Búsqueda en memoria

memory_search encuentra notas relevantes de 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 embeddings, palabras clave o ambos.

Inicio rápido

Si tienes configurada una clave API de OpenAI, Gemini, Voyage o Mistral, la búsqueda en memoria funciona automáticamente. Para establecer un proveedor de forma explícita:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // o "gemini", "local", "ollama", etc.
      },
    },
  },
}
Para embeddings locales sin clave API, usa provider: "local" (requiere node-llama-cpp).

Proveedores compatibles

ProveedorIDNecesita clave APINotas
OpenAIopenaiDetectado automáticamente, rápido
GeminigeminiAdmite indexación de imagen/audio
VoyagevoyageDetectado automáticamente
MistralmistralDetectado automáticamente
OllamaollamaNoLocal, debe configurarse explícitamente
LocallocalNoModelo GGUF, descarga de ~0,6 GB

Cómo funciona la búsqueda

OpenClaw ejecuta dos rutas de recuperación en paralelo y fusiona los resultados:
  • La búsqueda vectorial encuentra notas con significado similar (“gateway host” coincide con “la máquina que ejecuta OpenClaw”).
  • La búsqueda de palabras clave BM25 encuentra coincidencias exactas (ID, cadenas de error, claves de configuración).
Si solo una ruta está disponible (sin embeddings o sin FTS), la otra se ejecuta sola.

Mejorar la calidad de la búsqueda

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

Decaimiento temporal

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 persistentes como MEMORY.md nunca se ven afectados por el decaimiento.
Activa el decaimiento temporal si tu agente tiene meses de notas diarias y la información obsoleta sigue apareciendo por encima del contexto reciente.

MMR (diversidad)

Reduce los resultados redundantes. Si cinco notas mencionan la misma configuración del router, MMR garantiza que los resultados principales cubran distintos temas en lugar de repetirse.
Activa MMR si memory_search sigue devolviendo fragmentos casi duplicados de distintas notas diarias.

Activar ambos

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

Memoria multimodal

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 contenido visual y de audio. Consulta la referencia de configuración de memoria para ver la configuración.

Búsqueda en la memoria de sesiones

Opcionalmente, puedes indexar las transcripciones de sesiones para que memory_search pueda recordar conversaciones anteriores. Esto es opt-in mediante memorySearch.experimental.sessionMemory. Consulta la referencia de configuración para obtener más información.

Solución de problemas

¿Sin resultados? Ejecuta openclaw memory status para comprobar el índice. Si está vacío, ejecuta openclaw memory index --force. ¿Solo coincidencias de palabras clave? Es posible que tu proveedor de embeddings no esté configurado. Comprueba openclaw memory status --deep. ¿No se encuentra texto CJK? Vuelve a crear el índice FTS con openclaw memory index --force.

Más información