Sessions and memory
Пошук у пам’яті
memory_search знаходить релевантні нотатки у ваших файлах пам’яті, навіть якщо
формулювання відрізняється від оригінального тексту. Він розбиває пам’ять на невеликі фрагменти та
шукає в них за допомогою вбудовувань, ключових слів або обох методів.
Швидкий початок
OpenClaw за замовчуванням використовує вбудовування OpenAI. Щоб скористатися іншим провайдером, задайте його явно:
{ agents: { defaults: { memorySearch: { provider: "openai", // або "gemini", "voyage", "mistral", "bedrock", "local", "ollama", "lmstudio", "github-copilot", "openai-compatible" }, }, },}provider також може посилатися на власний запис models.providers.<id> (наприклад,
ollama-5080), якщо в цьому записі для api задано "ollama" або
ідентифікатор іншого провайдера з адаптером вбудовувань пам’яті.
Для локальних вбудовувань без ключа API встановіть офіційний plugin провайдера llama.cpp
і задайте provider: "local":
openclaw plugins install @openclaw/llama-cpp-providerДля збірок із вихідного коду все одно потрібне схвалення нативної збірки: pnpm approve-builds, а потім
pnpm rebuild node-llama-cpp.
Деякі сумісні з OpenAI кінцеві точки вбудовувань потребують асиметричних міток input_type,
як-от "query" для пошуку та "document"/"passage" для індексованих
фрагментів. Задайте їх за допомогою queryInputType і documentInputType; див.
Довідник із налаштування пам’яті.
Підтримувані провайдери
| Провайдер | ID | Потрібен ключ API | Примітки |
|---|---|---|---|
| Bedrock | bedrock |
Ні | Використовує ланцюжок облікових даних AWS |
| DeepInfra | deepinfra |
Так | Модель за замовчуванням BAAI/bge-m3 |
| Gemini | gemini |
Так | Підтримує індексування зображень і аудіо |
| GitHub Copilot | github-copilot |
Ні | Використовує вашу передплату Copilot |
| Локальний | local |
Ні | Модель GGUF, автоматичне завантаження ~0.6 GB |
| LM Studio | lmstudio |
Ні | Локальний/самостійно розміщений сервер |
| Mistral | mistral |
Так | |
| Ollama | ollama |
Ні | Локальний/самостійно розміщений сервер |
| OpenAI | openai |
Так | За замовчуванням |
| Сумісний з OpenAI | openai-compatible |
Зазвичай | Універсальна кінцева точка /v1/embeddings |
| Voyage | voyage |
Так |
Як працює пошук
OpenClaw паралельно виконує два способи пошуку та об’єднує результати:
flowchart LR
Q["Запит"] --> E["Вбудовування"]
Q --> T["Токенізація"]
E --> VS["Векторний пошук"]
T --> BM["Пошук BM25"]
VS --> M["Зважене об’єднання"]
BM --> M
M --> R["Найкращі результати"]- Векторний пошук зіставляє подібні значення («хост gateway» відповідає «комп’ютеру, на якому працює OpenClaw»).
- Пошук за ключовими словами BM25 зіставляє точні терміни (ID, рядки помилок, ключі конфігурації).
- Пошук за іменами файлів індексує шляхи окремо від вмісту нотаток. Точні повні шляхи, базові імена та основи імен файлів мають вищий рейтинг за часткові збіги шляхів, водночас уривки та оцінки ключових слів у вмісті й надалі визначаються за вмістом нотаток.
Якщо доступний лише один спосіб, він працює самостійно.
Режим лише FTS. Задайте provider: "none", щоб навмисно вимкнути вбудовування
та шукати лише за ключовими словами. Якщо залишити provider незаданим або задати "auto",
система також переходить до ранжування лише за ключовими словами без помилки, якщо автентифікацію для вбудовувань не налаштовано;
так само поводиться provider: "local" (провайдер GGUF/llama.cpp)
у разі збою.
Явно заданий провайдер недоступний. Якщо явно вказати будь-якого іншого провайдера
(наприклад, openai, ollama, gemini) і він стане недоступним під час
запиту (неправильна автентифікація, збій мережі), memory_search повідомить, що пам’ять
недоступна, замість непомітного переходу до результатів лише FTS. Завдяки цьому
несправність налаштованого провайдера залишається помітною. Задайте provider: "none" для навмисного
пошуку лише FTS або виправте конфігурацію провайдера/автентифікації, щоб відновити семантичне
ранжування.
Поліпшення якості пошуку
Дві необов’язкові функції допомагають працювати з великою історією нотаток.
Часове згасання
Вага старих нотаток у рейтингу поступово зменшується, тому свіжа інформація відображається першою.
За стандартного періоду напіврозпаду 30 днів оцінка нотатки з минулого місяця становить 50% її
початкової ваги. MEMORY.md та інші файли без дат у memory/
залишаються актуальними й ніколи не зазнають згасання; згасають лише датовані файли memory/YYYY-MM-DD.md.
MMR (різноманітність)
Зменшує кількість надлишкових результатів. Якщо в п’яти нотатках згадується однакова конфігурація маршрутизатора, MMR забезпечує охоплення різних тем у найкращих результатах замість повторень.
Увімкнення обох функцій
{ agents: { defaults: { memorySearch: { query: { hybrid: { mmr: { enabled: true }, temporalDecay: { enabled: true }, }, }, }, }, },}Мультимодальна пам’ять
За допомогою gemini-embedding-2-preview можна індексувати зображення й аудіо разом із
Markdown. Це стосується лише файлів у memorySearch.extraPaths; стандартні
корені пам’яті (MEMORY.md, memory/*.md) підтримують лише Markdown. Пошукові запити
залишаються текстовими, але зіставляються з візуальним та аудіовмістом. Інструкції з налаштування див. у
довіднику з налаштування пам’яті.
Пошук у пам’яті сеансів
Для точного повнотекстового пошуку у стенограмах сеансів використовуйте sessions_search,
а потім відкрийте результат за допомогою sessions_history. Пошук у пам’яті сеансів залишається семантичним
експериментальним доповненням.
За бажанням індексуйте стенограми сеансів, щоб memory_search міг знаходити попередні
розмови. Цю функцію потрібно ввімкнути: задайте experimental.sessionMemory: true і додайте
"sessions" до sources (стандартне значення sources — ["memory"]).
Збіги сеансів підпорядковуються tools.sessions.visibility: стандартне значення "tree"
надає доступ лише до поточного сеансу та породжених ним сеансів. Щоб із одного сеансу знаходити
непов’язаний сеанс того самого агента (наприклад, сеанс, запущений через gateway
із приватного повідомлення), розширте видимість до "agent".
Під час використання бекенду QMD також задайте memory.qmd.sessions.enabled: true, щоб
стенограми експортувалися до колекції QMD; самі лише experimental.sessionMemory
і sources не експортують стенограми до QMD. Див.
довідник із налаштування.
Усунення несправностей
Немає результатів? Запустіть openclaw memory status, щоб перевірити індекс. Якщо він порожній, запустіть
openclaw memory index --force.
Збіги лише за ключовими словами? Можливо, провайдер вбудовувань не налаштований. Перевірте
openclaw memory status --deep.
Час очікування локальних вбудовувань спливає? ollama, lmstudio і local за замовчуванням використовують довший
час очікування вбудованого пакетного оброблення. Якщо хост просто повільний, задайте
agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds і повторно запустіть
openclaw memory index --force.
Текст CJK не знайдено? Перебудуйте індекс FTS за допомогою
openclaw memory index --force.