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, додаткових шляхів і всіх інших параметрів конфігурації див. довідник із конфігурації пам’яті.