Mecanismo de memória QMD
QMD é um sidecar de pesquisa local-first que é executado junto com o OpenClaw. Ele combina BM25, pesquisa vetorial e reranking em um único binário, e pode indexar conteúdo além dos arquivos de memória do seu workspace.O que ele adiciona em relação ao integrado
- Reranking e expansão de consulta para melhor recall.
- Indexação de diretórios extras — documentação do projeto, notas da equipe, qualquer coisa em disco.
- Indexação de transcrições de sessão — recorde conversas anteriores.
- Totalmente local — executa via Bun + node-llama-cpp, com download automático de modelos GGUF.
- Fallback automático — se o QMD não estiver disponível, o OpenClaw faz fallback para o mecanismo integrado sem interrupções.
Primeiros passos
Pré-requisitos
- Instale o QMD:
bun install -g @tobilu/qmd - Build do SQLite que permita extensões (
brew install sqliteno macOS). - O QMD deve estar no
PATHdo gateway. - macOS e Linux funcionam imediatamente. O Windows é melhor compatível via WSL2.
Ativar
~/.openclaw/agents/<agentId>/qmd/ e gerencia automaticamente o ciclo de vida do sidecar
— coleções, atualizações e execuções de embedding são tratadas para você.
Como o sidecar funciona
- O OpenClaw cria coleções a partir dos arquivos de memória do seu workspace e de quaisquer
memory.qmd.pathsconfigurados, depois executaqmd update+qmd embedna inicialização e periodicamente (o padrão é a cada 5 minutos). - A atualização na inicialização é executada em segundo plano para que o início do chat não seja bloqueado.
- As pesquisas usam o
searchModeconfigurado (padrão:search; também oferece suporte avsearchequery). Se um modo falhar, o OpenClaw tenta novamente comqmd query. - Se o QMD falhar por completo, o OpenClaw faz fallback para o mecanismo SQLite integrado.
A primeira pesquisa pode ser lenta — o QMD faz download automático de modelos GGUF (~2 GB) para
reranking e expansão de consulta na primeira execução de
qmd query.Indexação de caminhos extras
Aponte o QMD para diretórios adicionais para torná-los pesquisáveis:qmd/<collection>/<relative-path> nos
resultados de pesquisa. memory_get entende esse prefixo e lê da raiz da coleção
correta.
Indexação de transcrições de sessão
Ative a indexação de sessão para recordar conversas anteriores:~/.openclaw/agents/<id>/qmd/sessions/.
Escopo de pesquisa
Por padrão, os resultados de pesquisa do QMD só são exibidos em sessões de DM (não em grupos ou canais). Configurememory.qmd.scope para alterar isso:
Citações
Quandomemory.citations é auto ou on, trechos de pesquisa incluem um
rodapé Source: <path#line>. Defina memory.citations = "off" para omitir o rodapé
enquanto ainda passa o caminho ao agente internamente.
Quando usar
Escolha o QMD quando você precisar de:- Reranking para resultados de maior qualidade.
- Pesquisar documentação do projeto ou notas fora do workspace.
- Recordar conversas de sessões anteriores.
- Pesquisa totalmente local sem chaves de API.
Solução de problemas
QMD não encontrado? Verifique se o binário está noPATH do gateway. Se o OpenClaw
for executado como serviço, crie um link simbólico:
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Primeira pesquisa muito lenta? O QMD baixa modelos GGUF no primeiro uso. Faça o pre-warm
com qmd query "test" usando os mesmos diretórios XDG que o OpenClaw usa.
A pesquisa expira? Aumente memory.qmd.limits.timeoutMs (padrão: 4000ms).
Defina 120000 para hardware mais lento.
Resultados vazios em chats de grupo? Verifique memory.qmd.scope — o padrão só
permite sessões de DM.
Repositórios temporários visíveis no workspace causando ENAMETOOLONG ou indexação quebrada?
A travessia do QMD atualmente segue o comportamento do scanner QMD subjacente em vez das
regras integradas de link simbólico do OpenClaw. Mantenha checkouts temporários de monorepo em
diretórios ocultos como .tmp/ ou fora das raízes QMD indexadas até que o QMD exponha
travessia segura contra ciclos ou controles explícitos de exclusão.
Configuração
Para a superfície completa de configuração (memory.qmd.*), modos de pesquisa, intervalos de atualização,
regras de escopo e todos os outros controles, consulte a
referência de configuração de memória.