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