Saltar al contenido principal

Búsqueda de 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 fragmentos pequeños y buscándolos mediante embeddings, palabras clave o ambos.

Inicio rápido

Si tienes configurada una clave de API de OpenAI, Gemini, Voyage o Mistral, la búsqueda de 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 de API, usa provider: "local" (requiere node-llama-cpp).

Proveedores compatibles

ProveedorIDNecesita clave de APINotas
OpenAIopenaiDetectado automáticamente, rápido
GeminigeminiAdmite indexación de imágenes/audio
VoyagevoyageDetectado automáticamente
MistralmistralDetectado automáticamente
BedrockbedrockNoDetectado automáticamente cuando se resuelve la cadena de credenciales de AWS
OllamaollamaNoLocal, debe establecerse 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 combina 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 amplio 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 obtiene el 50% de su peso original. Los archivos permanentes como MEMORY.md nunca se degradan.
Activa el decaimiento temporal si tu agente tiene meses de notas diarias y la información obsoleta sigue superando al 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 temas diferentes 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 la configuración.

Búsqueda en la memoria de sesión

Opcionalmente, puedes indexar transcripciones de sesiones para que memory_search pueda recuperar conversaciones anteriores. Esto es opcional mediante memorySearch.experimental.sessionMemory. Consulta la referencia de configuración para más detalles.

Solución de problemas

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

Lecturas adicionales