Motore di memoria QMD
QMD è un sidecar di ricerca local-first che viene eseguito insieme a OpenClaw. Combina BM25, ricerca vettoriale e reranking in un unico binario, e può indicizzare contenuti oltre ai file di memoria del tuo workspace.Cosa aggiunge rispetto al motore integrato
- Reranking ed espansione delle query per un richiamo migliore.
- Indicizzazione di directory aggiuntive — documentazione del progetto, note del team, qualsiasi contenuto su disco.
- Indicizzazione delle trascrizioni di sessione — per richiamare conversazioni precedenti.
- Completamente locale — viene eseguito tramite Bun + node-llama-cpp, scarica automaticamente i modelli GGUF.
- Fallback automatico — se QMD non è disponibile, OpenClaw torna senza interruzioni al motore integrato.
Guida introduttiva
Prerequisiti
- Installa QMD:
bun install -g @tobilu/qmd - Build di SQLite che consenta le estensioni (
brew install sqlitesu macOS). - QMD deve essere nel
PATHdel gateway. - macOS e Linux funzionano subito. Windows è supportato al meglio tramite WSL2.
Abilitazione
~/.openclaw/agents/<agentId>/qmd/ e gestisce automaticamente il ciclo di vita del sidecar
— raccolte, aggiornamenti ed esecuzioni di embedding vengono gestiti per te.
Come funziona il sidecar
- OpenClaw crea raccolte dai file di memoria del tuo workspace e da eventuali
memory.qmd.pathsconfigurati, quindi esegueqmd update+qmd embedall’avvio e periodicamente (impostazione predefinita: ogni 5 minuti). - L’aggiornamento all’avvio viene eseguito in background così l’avvio della chat non viene bloccato.
- Le ricerche usano
searchModeconfigurato (predefinito:search; supporta anchevsearchequery). Se una modalità fallisce, OpenClaw riprova conqmd query. - Se QMD fallisce completamente, OpenClaw torna al motore SQLite integrato.
La prima ricerca può essere lenta — QMD scarica automaticamente i modelli GGUF (~2 GB) per
il reranking e l’espansione delle query alla prima esecuzione di
qmd query.Indicizzazione di percorsi aggiuntivi
Indica a QMD directory aggiuntive per renderle ricercabili:qmd/<collection>/<relative-path> nei
risultati di ricerca. memory_get riconosce questo prefisso e legge dalla root della raccolta corretta.
Indicizzazione delle trascrizioni di sessione
Abilita l’indicizzazione delle sessioni per richiamare conversazioni precedenti:~/.openclaw/agents/<id>/qmd/sessions/.
Ambito della ricerca
Per impostazione predefinita, i risultati della ricerca QMD vengono mostrati solo nelle sessioni DM (non in gruppi o canali). Configuramemory.qmd.scope per modificare questo comportamento:
Citazioni
Quandomemory.citations è auto o on, i frammenti di ricerca includono un
footer Source: <path#line>. Imposta memory.citations = "off" per omettere il footer
continuando comunque a passare internamente il percorso all’agente.
Quando usarlo
Scegli QMD quando hai bisogno di:- Reranking per risultati di qualità superiore.
- Cercare documentazione del progetto o note al di fuori del workspace.
- Richiamare conversazioni di sessioni passate.
- Ricerca completamente locale senza chiavi API.
Risoluzione dei problemi
QMD non trovato? Assicurati che il binario sia nelPATH del gateway. Se OpenClaw
viene eseguito come servizio, crea un symlink:
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Prima ricerca molto lenta? QMD scarica i modelli GGUF al primo utilizzo. Pre-riscalda
con qmd query "test" usando le stesse directory XDG usate da OpenClaw.
La ricerca va in timeout? Aumenta memory.qmd.limits.timeoutMs (predefinito: 4000ms).
Impostalo a 120000 per hardware più lento.
Risultati vuoti nelle chat di gruppo? Controlla memory.qmd.scope — per impostazione predefinita consente solo
le sessioni DM.
Repository temporanei visibili dal workspace che causano ENAMETOOLONG o indicizzazione non corretta?
L’attraversamento di QMD segue attualmente il comportamento dello scanner QMD sottostante invece delle
regole integrate di OpenClaw per i symlink. Tieni i checkout temporanei di monorepo in
directory nascoste come .tmp/ o fuori dalle root QMD indicizzate finché QMD non esporrà
un attraversamento sicuro rispetto ai cicli o controlli di esclusione espliciti.
Configurazione
Per la superficie completa di configurazione (memory.qmd.*), modalità di ricerca, intervalli di aggiornamento,
regole di ambito e tutte le altre opzioni, vedi il
Riferimento della configurazione della memoria.