Рушій пам’яті QMD
QMD — це локальний sidecar для пошуку, який працює поруч з OpenClaw. Він поєднує BM25, векторний пошук і переранжування в одному бінарному файлі та може індексувати вміст за межами файлів пам’яті вашого робочого простору.Що він додає порівняно з вбудованим
- Переранжування та розширення запиту для кращого охоплення.
- Індексація додаткових каталогів — документація проєкту, нотатки команди, будь-що на диску.
- Індексація транскриптів сесій — відтворення попередніх розмов.
- Повністю локальний — працює через Bun + node-llama-cpp, автоматично завантажує моделі GGUF.
- Автоматичне резервне перемикання — якщо QMD недоступний, OpenClaw безшовно повертається до вбудованого рушія.
Початок роботи
Передумови
- Установіть QMD:
npm install -g @tobilu/qmdабоbun install -g @tobilu/qmd - Збірка SQLite, яка дозволяє розширення (
brew install sqliteна macOS). - QMD має бути в
PATHGateway. - macOS і Linux працюють одразу. Windows найкраще підтримується через WSL2.
Увімкнення
~/.openclaw/agents/<agentId>/qmd/ і автоматично керує життєвим циклом sidecar —
колекції, оновлення та запуск вбудовувань обробляються за вас.
Він надає перевагу актуальним формам колекцій QMD і MCP-запитів, але за потреби
все ще повертається до застарілих прапорців колекцій --mask і старіших назв інструментів MCP.
Як працює sidecar
- OpenClaw створює колекції з файлів пам’яті вашого робочого простору та будь-яких
налаштованих
memory.qmd.paths, потім запускаєqmd update+qmd embedпід час запуску і періодично (типово кожні 5 хвилин). - Типова колекція робочого простору відстежує
MEMORY.mdі деревоmemory/.memory.mdу нижньому регістрі залишається резервним варіантом для початкового налаштування, а не окремою колекцією QMD. - Оновлення під час запуску виконується у фоновому режимі, щоб не блокувати запуск чату.
- Пошук використовує налаштований
searchMode(типово:search; також підтримуютьсяvsearchіquery). Якщо режим завершується помилкою, OpenClaw повторює спробу зqmd query. - Якщо QMD повністю виходить з ладу, OpenClaw повертається до вбудованого рушія SQLite.
Перший пошук може бути повільним — QMD автоматично завантажує моделі GGUF (~2 ГБ) для
переранжування та розширення запиту під час першого запуску
qmd query.Перевизначення моделей
Змінні середовища моделей QMD передаються без змін із процесу Gateway, тому ви можете глобально налаштовувати QMD без додавання нової конфігурації OpenClaw:Індексація додаткових шляхів
Спрямуйте QMD на додаткові каталоги, щоб зробити їх доступними для пошуку:qmd/<collection>/<relative-path> у
результатах пошуку. memory_get розуміє цей префікс і читає з правильного
кореня колекції.
Індексація транскриптів сесій
Увімкніть індексацію сесій, щоб відтворювати попередні розмови:~/.openclaw/agents/<id>/qmd/sessions/.
Область пошуку
Типово результати пошуку QMD відображаються в прямих і канальних сесіях (не в групах). Налаштуйтеmemory.qmd.scope, щоб змінити це:
Цитування
Колиmemory.citations має значення auto або on, фрагменти пошуку містять
нижній колонтитул Source: <path#line>. Установіть memory.citations = "off", щоб прибрати нижній колонтитул,
при цьому шлях усе одно передаватиметься агенту внутрішньо.
Коли варто використовувати
Вибирайте QMD, коли вам потрібно:- Переранжування для вищої якості результатів.
- Шукати в документації проєкту або нотатках за межами робочого простору.
- Відтворювати попередні розмови із сесій.
- Повністю локальний пошук без API-ключів.
Усунення несправностей
QMD не знайдено? Переконайтеся, що бінарний файл доступний уPATH Gateway. Якщо OpenClaw
працює як сервіс, створіть символічне посилання:
sudo ln -s ~/.bun/bin/qmd /usr/local/bin/qmd.
Перший пошук дуже повільний? QMD завантажує моделі GGUF під час першого використання. Попередньо прогрійте
через qmd query "test" з використанням тих самих каталогів XDG, які використовує OpenClaw.
Пошук завершується за тайм-аутом? Збільшіть memory.qmd.limits.timeoutMs (типово: 4000 мс).
Для повільнішого обладнання встановіть 120000.
Порожні результати в групових чатах? Перевірте memory.qmd.scope — типово
дозволені лише прямі та канальні сесії.
Тимчасові репозиторії, видимі з робочого простору, спричиняють ENAMETOOLONG або зламану індексацію?
Обхід QMD наразі дотримується поведінки базового сканера QMD, а не вбудованих правил символічних посилань OpenClaw.
Тримайте тимчасові монорепозиторії в прихованих каталогах, як-от .tmp/,
або поза індексованими коренями QMD, доки QMD не надасть безпечний до циклів обхід або явні засоби виключення.
Конфігурація
Для повної поверхні конфігурації (memory.qmd.*), режимів пошуку, інтервалів оновлення,
правил області та всіх інших параметрів дивіться
довідник із конфігурації пам’яті.