Pular para o conteúdo principal

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

ProvedorIDPrecisa de chave de APIObservações
OpenAIopenaiSimDetectado automaticamente, rápido
GeminigeminiSimOferece suporte a indexação de imagem/áudio
VoyagevoyageSimDetectado automaticamente
MistralmistralSimDetectado automaticamente
BedrockbedrockNãoDetectado automaticamente quando a cadeia de credenciais AWS é resolvida
OllamaollamaNãoLocal, deve ser definido explicitamente
LocallocalNãoModelo 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