Pular para o conteúdo principal

Pesquisa de memória

memory_search encontra notas relevantes dos seus arquivos de memória, mesmo quando a formulação é diferente do texto original. Isso 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 pesquisa de memória funciona automaticamente. Para definir explicitamente um provedor:
{
  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
GeminigeminiSimCompatível com indexação de imagem/áudio
VoyagevoyageSimDetectado automaticamente
MistralmistralSimDetectado automaticamente
OllamaollamaNãoLocal, deve ser definido explicitamente
LocallocalNãoModelo GGUF, download de ~0.6 GB

Como a pesquisa funciona

O OpenClaw executa dois caminhos de recuperação em paralelo e mescla os resultados:
  • Pesquisa vetorial encontra notas com significado semelhante (“gateway host” corresponde a “the machine running OpenClaw”).
  • Pesquisa por palavra-chave 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 pesquisa

Dois recursos opcionais ajudam quando você tem um histórico grande de notas:

Decaimento temporal

Notas antigas perdem peso no ranking gradualmente, para que informações recentes apareçam primeiro. Com a meia-vida padrão de 30 dias, uma nota do mês passado pontua 50% da sua pontuação original. Arquivos perenes como MEMORY.md nunca sofrem decaimento.
Ative o decaimento temporal se 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 mencionarem a mesma configuração de roteador, o MMR garante que os principais resultados cubram tópicos diferentes em vez de repetir.
Ative o MMR se memory_search continuar retornando trechos quase duplicados de diferentes notas diárias.

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 pesquisa continuam sendo texto, mas correspondem a conteúdo visual e de áudio. Veja a referência de configuração de memória para a configuração.

Pesquisa de memória de sessão

Opcionalmente, você pode indexar transcrições de sessão para que memory_search possa recuperar conversas anteriores. Isso é opt-in via memorySearch.experimental.sessionMemory. Veja a referência de configuração para 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 embedding pode não estar configurado. Verifique openclaw memory status --deep. Texto CJK não encontrado? Reconstrua o índice FTS com openclaw memory index --force.

Leitura adicional