Busca de memória
memory_search encontra notas relevantes dos seus arquivos de memória, mesmo quando a formulação difere do texto original. Ela funciona indexando a memória em pequenos blocos e pesquisando neles usando embeddings, palavras-chave ou ambos.
Início rápido
Se você tiver uma chave de API da OpenAI, Gemini, Voyage ou Mistral configurada, a busca de memória funciona automaticamente. Para definir um provedor explicitamente:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // ou "gemini", "local", "ollama", etc.
},
},
},
}
Para embeddings locais sem chave de API, use provider: "local" (requer node-llama-cpp).
Provedores compatíveis
| Provedor | ID | Precisa de chave de API | Observações |
|---|
| OpenAI | openai | Sim | Detectado automaticamente, rápido |
| Gemini | gemini | Sim | Oferece suporte a indexação de imagem/áudio |
| Voyage | voyage | Sim | Detectado automaticamente |
| Mistral | mistral | Sim | Detectado automaticamente |
| Bedrock | bedrock | Não | Detectado automaticamente quando a cadeia de credenciais AWS é resolvida |
| Ollama | ollama | Não | Local, deve ser definido explicitamente |
| Local | local | Não | Modelo GGUF, download de ~0,6 GB |
Como a busca funciona
O OpenClaw executa dois caminhos de recuperação em paralelo e mescla os resultados:
- Busca vetorial encontra notas com significado semelhante (“gateway host” corresponde a “a máquina que executa o OpenClaw”).
- Busca por palavra-chave com BM25 encontra correspondências exatas (IDs, strings de erro, chaves de configuração).
Se apenas um caminho estiver disponível (sem embeddings ou sem FTS), o outro será executado sozinho.
Melhorando a qualidade da busca
Dois recursos opcionais ajudam quando você tem um histórico grande de notas:
Decaimento temporal
Notas antigas perdem peso gradualmente no ranqueamento para que informações recentes apareçam primeiro.
Com a meia-vida padrão de 30 dias, uma nota do mês passado recebe 50% do seu peso original. Arquivos permanentes como MEMORY.md nunca sofrem decaimento.
Ative o decaimento temporal se o seu agente tiver meses de notas diárias e informações desatualizadas continuarem superando o contexto recente.
MMR (diversidade)
Reduz resultados redundantes. Se cinco notas mencionam a mesma configuração de roteador, o MMR garante que os principais resultados cubram tópicos diferentes em vez de repetir o mesmo conteúdo.
Ative o MMR se memory_search continuar retornando trechos quase duplicados de notas diárias diferentes.
Ativar ambos
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Memória multimodal
Com o Gemini Embedding 2, você pode indexar imagens e arquivos de áudio junto com Markdown. As consultas de busca continuam sendo texto, mas correspondem ao conteúdo visual e de áudio. Consulte a referência de configuração de memória para saber como configurar.
Busca na memória da sessão
Opcionalmente, você pode indexar transcrições de sessão para que memory_search consiga recuperar conversas anteriores. Isso é opcional via memorySearch.experimental.sessionMemory. Consulte a referência de configuração para mais detalhes.
Solução de problemas
Sem resultados? Execute openclaw memory status para verificar o índice. Se estiver vazio, execute openclaw memory index --force.
Apenas correspondências por palavra-chave? Seu provedor de embeddings pode não estar configurado. Verifique com openclaw memory status --deep.
Texto em CJK não encontrado? Reconstrua o índice FTS com openclaw memory index --force.
Leitura adicional