Moteur de mémoire QMD
QMD est un sidecar de recherche local-first qui s’exécute aux côtés d’OpenClaw. Il combine BM25, la recherche vectorielle et le reranking dans un seul binaire, et peut indexer du contenu au-delà des fichiers de mémoire de votre espace de travail.Ce qu’il ajoute par rapport au moteur intégré
- Reranking et expansion de requête pour une meilleure couverture.
- Indexer des répertoires supplémentaires — documentation de projet, notes d’équipe, tout ce qui se trouve sur le disque.
- Indexer les transcriptions de session — pour retrouver des conversations antérieures.
- Entièrement local — fonctionne via Bun + node-llama-cpp, télécharge automatiquement les modèles GGUF.
- Repli automatique — si QMD n’est pas disponible, OpenClaw revient au moteur intégré de manière transparente.
Prise en main
Prérequis
- Installer QMD :
npm install -g @tobilu/qmdoubun install -g @tobilu/qmd - Une version de SQLite qui autorise les extensions (
brew install sqlitesur macOS). - QMD doit être présent dans le
PATHde la passerelle. - macOS et Linux fonctionnent immédiatement. Windows est mieux pris en charge via WSL2.
Activer
~/.openclaw/agents/<agentId>/qmd/ et gère automatiquement le cycle de vie du sidecar
— les collections, les mises à jour et les exécutions d’embedding sont gérées pour vous.
Il privilégie les formes actuelles de collection QMD et de requête MCP, mais revient toujours à
l’ancien indicateur de collection --mask et aux anciens noms d’outils MCP si nécessaire.
Fonctionnement du sidecar
- OpenClaw crée des collections à partir des fichiers de mémoire de votre espace de travail et de tous les
memory.qmd.pathsconfigurés, puis exécuteqmd update+qmd embedau démarrage et périodiquement (par défaut toutes les 5 minutes). - La collection d’espace de travail par défaut suit
MEMORY.mdainsi que l’arborescencememory/.memory.mden minuscules reste une solution de secours d’amorçage, pas une collection QMD distincte. - L’actualisation au démarrage s’exécute en arrière-plan afin de ne pas bloquer le démarrage du chat.
- Les recherches utilisent le
searchModeconfiguré (par défaut :search; prend aussi en chargevsearchetquery). Si un mode échoue, OpenClaw réessaie avecqmd query. - Si QMD échoue complètement, OpenClaw revient au moteur SQLite intégré.
La première recherche peut être lente — QMD télécharge automatiquement des modèles GGUF (~2 Go) pour le
reranking et l’expansion de requête lors de la première exécution de
qmd query.Remplacement des modèles
Les variables d’environnement des modèles QMD sont transmises inchangées depuis le processus de la passerelle, vous pouvez donc ajuster QMD globalement sans ajouter de nouvelle configuration OpenClaw :Indexation de chemins supplémentaires
Faites pointer QMD vers des répertoires supplémentaires pour les rendre interrogeables :qmd/<collection>/<relative-path> dans
les résultats de recherche. memory_get comprend ce préfixe et lit depuis la racine de collection correcte.
Indexation des transcriptions de session
Activez l’indexation des sessions pour retrouver des conversations antérieures :~/.openclaw/agents/<id>/qmd/sessions/.
Portée de recherche
Par défaut, les résultats de recherche QMD sont affichés dans les sessions directes et de canal (pas dans les groupes). Configurezmemory.qmd.scope pour modifier cela :
Citations
Quandmemory.citations vaut auto ou on, les extraits de recherche incluent un pied de page
Source: <path#line>. Définissez memory.citations = "off" pour omettre le pied de page
tout en transmettant le chemin à l’agent en interne.
Quand l’utiliser
Choisissez QMD lorsque vous avez besoin :- Du reranking pour des résultats de meilleure qualité.
- De rechercher dans la documentation du projet ou des notes en dehors de l’espace de travail.
- De retrouver des conversations de sessions passées.
- D’une recherche entièrement locale sans clés d’API.
Dépannage
QMD introuvable ? Assurez-vous que le binaire est présent dans lePATH de la passerelle. Si OpenClaw
s’exécute comme service, créez un lien symbolique :
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Première recherche très lente ? QMD télécharge les modèles GGUF lors de la première utilisation. Préchauffez-le
avec qmd query "test" en utilisant les mêmes répertoires XDG que ceux utilisés par OpenClaw.
La recherche expire ? Augmentez memory.qmd.limits.timeoutMs (valeur par défaut : 4000ms).
Définissez-la à 120000 pour du matériel plus lent.
Résultats vides dans les discussions de groupe ? Vérifiez memory.qmd.scope — par défaut, il
autorise uniquement les sessions directes et de canal.
Des dépôts temporaires visibles depuis l’espace de travail provoquent ENAMETOOLONG ou une indexation défaillante ?
Le parcours QMD suit actuellement le comportement du scanner QMD sous-jacent plutôt que
les règles de liens symboliques du moteur intégré d’OpenClaw. Conservez les extractions temporaires de monorepo dans
des répertoires cachés comme .tmp/ ou en dehors des racines QMD indexées jusqu’à ce que QMD expose
un parcours sûr face aux cycles ou des contrôles d’exclusion explicites.
Configuration
Pour la surface de configuration complète (memory.qmd.*), les modes de recherche, les intervalles de mise à jour,
les règles de portée et tous les autres réglages, consultez la
référence de configuration de la mémoire.