QMD es un componente auxiliar de búsqueda que prioriza lo local y se ejecuta junto a OpenClaw. Combina BM25, búsqueda vectorial y reordenación en un único binario, y puede indexar contenido más allá de los archivos de memoria de tu espacio de trabajo.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Qué añade frente al motor incorporado
- Reordenación y expansión de consultas para una mejor recuperación.
- Indexación de directorios adicionales — documentación de proyectos, notas del equipo, cualquier cosa en disco.
- Indexación de transcripciones de sesiones — recupera conversaciones anteriores.
- Totalmente local — se ejecuta con el paquete de runtime opcional node-llama-cpp y descarga automáticamente modelos GGUF.
- Reserva automática — si QMD no está disponible, OpenClaw recurre sin interrupciones al motor incorporado.
Primeros pasos
Requisitos previos
- Instala QMD:
npm install -g @tobilu/qmdobun install -g @tobilu/qmd - Compilación de SQLite que permita extensiones (
brew install sqliteen macOS). - QMD debe estar en el
PATHdel Gateway. - macOS y Linux funcionan directamente. Windows tiene mejor soporte mediante WSL2.
Activar
~/.openclaw/agents/<agentId>/qmd/ y gestiona automáticamente el ciclo de vida del componente auxiliar: las colecciones, las actualizaciones y las ejecuciones de embeddings se gestionan por ti. Prefiere las formas actuales de colección de QMD y consulta MCP, pero sigue recurriendo a indicadores de patrones de colección alternativos y nombres antiguos de herramientas MCP cuando hace falta. La reconciliación durante el arranque también recrea colecciones gestionadas obsoletas para devolverlas a sus patrones canónicos cuando todavía existe una colección QMD anterior con el mismo nombre.
Cómo funciona el componente auxiliar
- OpenClaw crea colecciones a partir de los archivos de memoria de tu espacio de trabajo y cualquier
memory.qmd.pathsconfigurado, luego ejecutaqmd updatecuando se abre el gestor de QMD y periódicamente después (cada 5 minutos de forma predeterminada). Estas actualizaciones se ejecutan mediante subprocesos de QMD, no con un rastreo del sistema de archivos dentro del proceso. Los modos semánticos también ejecutanqmd embed. - La colección predeterminada del espacio de trabajo hace seguimiento de
MEMORY.mdy del árbolmemory/.memory.mden minúsculas no se indexa como archivo de memoria raíz. - El escáner propio de QMD ignora rutas ocultas y directorios comunes de dependencias/compilación como
.git,.cache,node_modules,vendor,distybuild. El inicio del Gateway no inicializa QMD de forma predeterminada, por lo que el arranque en frío evita importar el runtime de memoria o crear el observador de larga duración antes de que se use memoria por primera vez. - Si aun así quieres una actualización al iniciar el Gateway, establece
memory.qmd.update.startupenidleoimmediate. La actualización de inicio opcional usa una ruta de subproceso QMD de una sola ejecución en lugar de crear el observador completo de larga duración dentro del proceso. - Las búsquedas usan el
searchModeconfigurado (predeterminado:search; también admitevsearchyquery).searches solo BM25, por lo que OpenClaw omite las sondas de preparación vectorial semántica y el mantenimiento de embeddings en ese modo. Si un modo falla, OpenClaw reintenta conqmd query. - Con versiones de QMD que anuncian filtros multcolección, OpenClaw agrupa colecciones del mismo origen en una única invocación de búsqueda QMD. Las versiones anteriores de QMD mantienen la reserva compatible por colección.
- Si QMD falla por completo, OpenClaw recurre al motor SQLite incorporado. Los intentos repetidos en turnos de chat aplican una breve espera tras un fallo de apertura para que un binario ausente o una dependencia rota del componente auxiliar no cree una tormenta de reintentos;
openclaw memory statusy las sondas CLI de una sola ejecución siguen comprobando QMD directamente.
La primera búsqueda puede ser lenta — QMD descarga automáticamente modelos GGUF (~2 GB) para reordenación y expansión de consultas en la primera ejecución de
qmd query.Rendimiento de búsqueda y compatibilidad
OpenClaw mantiene la ruta de búsqueda de QMD compatible tanto con instalaciones actuales como antiguas de QMD. Al iniciar, OpenClaw comprueba una vez por gestor el texto de ayuda de QMD instalado. Si el binario anuncia soporte para múltiples filtros de colección, OpenClaw busca en todas las colecciones del mismo origen con un solo comando:memory + sessions siguen proporcionando al diversificador de resultados entradas de ambos orígenes.
Las compilaciones antiguas de QMD solo aceptan un filtro de colección. Cuando OpenClaw detecta una de esas compilaciones, mantiene la ruta de compatibilidad y busca en cada colección por separado antes de fusionar y deduplicar los resultados.
Para inspeccionar manualmente el contrato instalado, ejecuta:
Sobrescrituras de modelos
Las variables de entorno de modelos de QMD pasan sin cambios desde el proceso del Gateway, por lo que puedes ajustar QMD globalmente sin añadir nueva configuración de OpenClaw:Indexación de rutas adicionales
Apunta QMD a directorios adicionales para que puedan buscarse:qmd/<collection>/<relative-path> en los resultados de búsqueda. memory_get entiende este prefijo y lee desde la raíz de colección correcta.
Indexación de transcripciones de sesiones
Activa la indexación de sesiones para recuperar conversaciones anteriores:~/.openclaw/agents/<id>/qmd/sessions/.
Alcance de búsqueda
De forma predeterminada, los resultados de búsqueda de QMD se muestran en sesiones directas y de canal (no en grupos). Configuramemory.qmd.scope para cambiar esto:
Citas
Cuandomemory.citations es auto u on, los fragmentos de búsqueda incluyen un pie de página Source: <path#line>. Establece memory.citations = "off" para omitir el pie de página y seguir pasando internamente la ruta al agente.
Cuándo usarlo
Elige QMD cuando necesites:- Reordenación para obtener resultados de mayor calidad.
- Buscar documentación de proyectos o notas fuera del espacio de trabajo.
- Recuperar conversaciones de sesiones anteriores.
- Búsqueda totalmente local sin claves API.
Solución de problemas
¿No se encuentra QMD? Asegúrate de que el binario esté en elPATH del Gateway. Si OpenClaw se ejecuta como servicio, crea un enlace simbólico:
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Si qmd --version funciona en tu shell pero OpenClaw sigue informando
spawn qmd ENOENT, probablemente el proceso del Gateway tiene un PATH distinto al de tu shell interactiva. Fija el binario explícitamente:
command -v qmd en el entorno donde QMD está instalado y luego vuelve a comprobar con openclaw memory status --deep.
¿La primera búsqueda es muy lenta? QMD descarga modelos GGUF en el primer uso. Precaliéntalo con qmd query "test" usando los mismos directorios XDG que usa OpenClaw.
¿Muchos subprocesos QMD durante la búsqueda? Actualiza QMD si es posible. OpenClaw usa un solo proceso para búsquedas multcolección del mismo origen únicamente cuando el QMD instalado anuncia soporte para múltiples filtros -c; de lo contrario, mantiene la reserva antigua por colección por corrección.
¿QMD solo BM25 sigue intentando compilar llama.cpp? Establece
memory.qmd.searchMode = "search". OpenClaw trata ese modo como solo léxico, no ejecuta sondas de estado vectorial de QMD ni mantenimiento de embeddings, y deja las comprobaciones de preparación semántica a configuraciones vsearch o query.
¿La búsqueda agota el tiempo de espera? Aumenta memory.qmd.limits.timeoutMs (predeterminado: 4000ms). Establécelo en 120000 para hardware más lento.
¿Resultados vacíos en chats de grupo? Comprueba memory.qmd.scope — el valor predeterminado solo permite sesiones directas y de canal.
¿La búsqueda de memoria raíz se volvió demasiado amplia de repente? Reinicia el Gateway o espera a la próxima reconciliación de inicio. OpenClaw recrea las colecciones gestionadas obsoletas de vuelta a los patrones canónicos MEMORY.md y memory/ cuando detecta un conflicto con el mismo nombre.
¿Repos temporales visibles desde el espacio de trabajo causan ENAMETOOLONG o indexación rota?
Actualmente, el recorrido de QMD sigue el comportamiento del escáner QMD subyacente en lugar de las reglas de enlaces simbólicos incorporadas de OpenClaw. Mantén checkouts temporales de monorepos dentro de directorios ocultos como .tmp/ o fuera de las raíces QMD indexadas hasta que QMD exponga recorridos seguros frente a ciclos o controles de exclusión explícitos.
Configuración
Para la superficie completa de configuración (memory.qmd.*), modos de búsqueda, intervalos de actualización, reglas de alcance y todos los demás controles, consulta la
referencia de configuración de memoria.