Sessions and memory

Вбудований рушій пам’яті

Вбудований рушій є стандартним бекендом пам’яті. Він зберігає ваш індекс пам’яті в SQLite-базі даних для кожного агента й не потребує додаткових залежностей для початку роботи.

Що він надає

  • Пошук за ключовими словами через повнотекстове індексування FTS5 (оцінювання BM25).
  • Векторний пошук через ембединги від будь-якого підтримуваного провайдера.
  • Гібридний пошук, що поєднує обидва підходи для найкращих результатів.
  • Підтримку CJK через триграмну токенізацію для китайської, японської та корейської мов.
  • Прискорення sqlite-vec для векторних запитів у базі даних (необов’язково).

Початок роботи

Якщо у вас є API-ключ для OpenAI, Gemini, Voyage, Mistral або DeepInfra, вбудований рушій автоматично виявляє його та вмикає векторний пошук. Конфігурація не потрібна.

Щоб явно задати провайдера:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
      },
    },
  },
}

Без провайдера ембедингів доступний лише пошук за ключовими словами.

Щоб примусово використати вбудованого локального провайдера ембедингів, установіть необов’язковий пакет середовища виконання node-llama-cpp поруч з OpenClaw, а потім спрямуйте local.modelPath на файл GGUF:

{
  agents: {
    defaults: {
      memorySearch: {
        provider: "local",
        fallback: "none",
        local: {
          modelPath: "~/.node-llama-cpp/models/embeddinggemma-300m-qat-Q8_0.gguf",
        },
      },
    },
  },
}

Підтримувані провайдери ембедингів

Провайдер ID Автоматично виявляється Примітки
OpenAI openai Так Стандартно: text-embedding-3-small
Gemini gemini Так Підтримує мультимодальність (зображення + аудіо)
Voyage voyage Так
Mistral mistral Так
DeepInfra deepinfra Так Стандартно: BAAI/bge-m3
Ollama ollama Ні Локальний, задайте явно
Локальний local Так (перший) Необов’язкове середовище виконання node-llama-cpp

Автоматичне виявлення вибирає першого провайдера, API-ключ якого можна отримати, у наведеному порядку. Задайте memorySearch.provider, щоб перевизначити вибір.

Як працює індексування

OpenClaw індексує MEMORY.md і memory/*.md у фрагменти (~400 токенів із перекриттям 80 токенів) і зберігає їх у SQLite-базі даних для кожного агента.

  • Розташування індексу: ~/.openclaw/memory/<agentId>.sqlite
  • Обслуговування сховища: супровідні WAL-файли SQLite обмежуються періодичними контрольними точками та контрольними точками під час завершення роботи.
  • Спостереження за файлами: зміни у файлах пам’яті запускають повторне індексування із затримкою (1,5 с).
  • Автоматичне повторне індексування: коли змінюється провайдер ембедингів, модель або конфігурація поділу на фрагменти, весь індекс автоматично перебудовується.
  • Повторне індексування на вимогу: openclaw memory index --force

Коли використовувати

Вбудований рушій є правильним вибором для більшості користувачів:

  • Працює відразу без додаткових залежностей.
  • Добре обробляє пошук за ключовими словами та векторний пошук.
  • Підтримує всіх провайдерів ембедингів.
  • Гібридний пошук поєднує найкраще з обох підходів до пошуку.

Розгляньте перехід на QMD, якщо вам потрібні повторне ранжування, розширення запиту або індексування каталогів поза робочою областю.

Розгляньте Honcho, якщо вам потрібна міжсесійна пам’ять з автоматичним моделюванням користувача.

Усунення несправностей

Пошук у пам’яті вимкнено? Перевірте openclaw memory status. Якщо жодного провайдера не виявлено, задайте його явно або додайте API-ключ.

Локального провайдера не виявлено? Переконайтеся, що локальний шлях існує, і виконайте:

openclaw memory status --deep --agent main
openclaw memory index --force --agent main

І окремі команди CLI, і Gateway використовують однаковий id провайдера local. Якщо для провайдера задано auto, локальні ембединги розглядаються першими лише тоді, коли memorySearch.local.modelPath вказує на наявний локальний файл.

Застарілі результати? Виконайте openclaw memory index --force, щоб перебудувати індекс. Спостерігач може пропустити зміни в рідкісних крайових випадках.

sqlite-vec не завантажується? OpenClaw автоматично переходить до косинусної подібності всередині процесу. openclaw memory status --deep повідомляє про локальне векторне сховище окремо від провайдера ембедингів, тому Vector store: unavailable вказує на завантаження sqlite-vec, тоді як Embeddings: unavailable вказує на готовність провайдера/автентифікації або моделі. Перевірте журнали на конкретну помилку завантаження.

Конфігурація

Для налаштування провайдера ембедингів, тонкого налаштування гібридного пошуку (ваги, MMR, часовий спад), пакетного індексування, мультимодальної пам’яті, sqlite-vec, додаткових шляхів і всіх інших параметрів конфігурації див. довідник із конфігурації пам’яті.

Пов’язане