O que ele oferece
- Pesquisa por palavra-chave por meio da indexação de texto completo FTS5 (pontuação BM25).
- Pesquisa vetorial por meio de embeddings de qualquer provedor compatível.
- Pesquisa híbrida que combina ambas para obter os melhores resultados.
- Compatibilidade com CJK por meio de tokenização por trigramas para chinês, japonês e coreano.
- Aceleração com sqlite-vec para consultas vetoriais no banco de dados (opcional).
Primeiros passos
Por padrão, o mecanismo integrado usa embeddings da OpenAI. SeOPENAI_API_KEY ou
models.providers.openai.apiKey já estiver configurado, a pesquisa vetorial funcionará
sem nenhuma configuração adicional de memória.
Para definir explicitamente um provedor:
local.modelPath para um arquivo GGUF:
Provedores de embeddings compatíveis
Defina
memorySearch.provider para deixar de usar a OpenAI.
Como a indexação funciona
O OpenClaw indexaMEMORY.md e memory/*.md em segmentos (400 tokens com
sobreposição de 80 tokens por padrão) e os armazena em um banco de dados SQLite por agente.
- Localização do índice: o banco de dados do agente proprietário em
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite - Manutenção do armazenamento: os arquivos auxiliares WAL do SQLite são limitados por checkpoints periódicos e no encerramento.
- Monitoramento de arquivos: alterações nos arquivos de memória acionam uma reindexação com debounce (1,5 s por padrão).
- Reindexação automática: o índice é recriado automaticamente quando há alterações no provedor de embeddings, no modelo, na configuração de segmentação, nas fontes configuradas ou no escopo.
- Reindexação sob demanda:
openclaw memory index --force
Também é possível indexar arquivos Markdown fora do espaço de trabalho com
memorySearch.extraPaths. Consulte a
referência de configuração.Quando usar
O mecanismo integrado é a escolha certa para a maioria dos usuários:- Funciona imediatamente, sem dependências adicionais.
- Lida bem com pesquisas por palavra-chave e vetoriais.
- É compatível com todos os provedores de embeddings.
- A pesquisa híbrida combina o melhor das duas abordagens de recuperação.
Solução de problemas
Pesquisa de memória desativada? Verifiqueopenclaw memory status. Se nenhum provedor for
detectado, defina um explicitamente ou adicione uma chave de API.
Provedor local não detectado? Confirme se o caminho local existe e execute:
local.
Defina memorySearch.provider: "local" quando quiser usar embeddings locais.
Resultados desatualizados? Execute openclaw memory index --force para recriar o índice. O monitor
pode não detectar alterações em casos extremos raros.
O sqlite-vec não está sendo carregado? O OpenClaw recorre automaticamente à similaridade de
cosseno no processo. openclaw memory status --deep informa o armazenamento vetorial local
separadamente do provedor de embeddings; portanto, Vector store: unavailable indica o carregamento do sqlite-vec, enquanto Embeddings: unavailable
indica problemas de prontidão do provedor/autenticação ou do modelo. Consulte os logs para identificar
o erro específico de carregamento.