Sessions and memory
Пошук у пам’яті
memory_search знаходить релевантні нотатки у ваших файлах пам'яті, навіть коли
формулювання відрізняється від оригінального тексту. Він працює, індексуючи пам'ять у невеликі
фрагменти й шукаючи в них за допомогою embeddings, ключових слів або обох підходів.
Швидкий старт
Якщо у вас налаштовано підписку GitHub Copilot, API-ключ OpenAI, Gemini, Voyage або Mistral, пошук у пам'яті працює автоматично. Щоб явно задати постачальника:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}
Для налаштувань із кількома кінцевими точками provider також може бути користувацьким
записом models.providers.<id>, наприклад ollama-5080, коли цей постачальник задає
api: "ollama" або іншого власника адаптера embeddings.
Для локальних embeddings без API-ключа задайте provider: "local". Вихідні checkout-и
все одно можуть потребувати схвалення нативного збирання: pnpm approve-builds, а потім
pnpm rebuild node-llama-cpp.
Деякі OpenAI-сумісні кінцеві точки embeddings потребують асиметричних міток, як-от
input_type: "query" для пошуку та input_type: "document" або "passage"
для проіндексованих фрагментів. Налаштуйте їх за допомогою memorySearch.queryInputType і
memorySearch.documentInputType; див. довідник конфігурації пам'яті.
Підтримувані постачальники
| Постачальник | ID | Потрібен API-ключ | Примітки |
|---|---|---|---|
| Bedrock | bedrock |
Ні | Виявляється автоматично, коли ланцюг облікових даних AWS спрацьовує |
| Gemini | gemini |
Так | Підтримує індексацію зображень і аудіо |
| GitHub Copilot | github-copilot |
Ні | Виявляється автоматично, використовує підписку Copilot |
| Local | local |
Ні | Модель GGUF, завантаження близько 0,6 ГБ |
| Mistral | mistral |
Так | Виявляється автоматично |
| Ollama | ollama |
Ні | Локальний, потрібно задати явно |
| OpenAI | openai |
Так | Виявляється автоматично, швидкий |
| Voyage | voyage |
Так | Виявляється автоматично |
Як працює пошук
OpenClaw запускає два шляхи отримання даних паралельно й об'єднує результати:
flowchart LR
Q["Query"] --> E["Embedding"]
Q --> T["Tokenize"]
E --> VS["Vector Search"]
T --> BM["BM25 Search"]
VS --> M["Weighted Merge"]
BM --> M
M --> R["Top Results"]
- Векторний пошук знаходить нотатки зі схожим значенням ("gateway host" відповідає "машині, на якій працює OpenClaw").
- Пошук за ключовими словами BM25 знаходить точні збіги (ID, рядки помилок, ключі конфігурації).
Якщо доступний лише один шлях (немає embeddings або немає FTS), інший працює самостійно.
Коли embeddings недоступні, OpenClaw усе одно використовує лексичне ранжування результатів FTS замість повернення лише до сирого впорядкування за точними збігами. Цей обмежений режим підсилює фрагменти з кращим покриттям термінів запиту та релевантними шляхами файлів, що зберігає корисну повноту навіть без sqlite-vec або постачальника embeddings.
Покращення якості пошуку
Дві необов'язкові функції допомагають, коли у вас велика історія нотаток:
Часове згасання
Старі нотатки поступово втрачають вагу ранжування, щоб новіша інформація з'являлася першою.
За стандартного періоду напіврозпаду 30 днів нотатка з минулого місяця отримує 50% від
своєї початкової ваги. Вічнозелені файли, як-от MEMORY.md, ніколи не згасають.
MMR (різноманітність)
Зменшує дублювання результатів. Якщо п'ять нотаток згадують ту саму конфігурацію маршрутизатора, MMR гарантує, що верхні результати охоплюють різні теми, а не повторюються.
Увімкнути обидві функції
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Мультимодальна пам'ять
З Gemini Embedding 2 ви можете індексувати зображення й аудіофайли разом із Markdown. Пошукові запити залишаються текстовими, але вони зіставляються з візуальним і аудіо вмістом. Див. довідник конфігурації пам'яті для налаштування.
Пошук у пам'яті сеансів
Ви можете за бажанням індексувати транскрипти сеансів, щоб memory_search міг пригадувати
попередні розмови. Це вмикається окремо через
memorySearch.experimental.sessionMemory. Див.
довідник конфігурації для подробиць.
Усунення несправностей
Немає результатів? Запустіть openclaw memory status, щоб перевірити індекс. Якщо він порожній, запустіть
openclaw memory index --force.
Лише збіги за ключовими словами? Ваш постачальник embeddings може бути не налаштований. Перевірте
openclaw memory status --deep.
Локальні embeddings перевищують час очікування? ollama, lmstudio і local за замовчуванням використовують довший
час очікування вбудованого пакетного оброблення. Якщо хост просто повільний, задайте
agents.defaults.memorySearch.sync.embeddingBatchTimeoutSeconds і повторно запустіть
openclaw memory index --force.
Текст CJK не знайдено? Перебудуйте індекс FTS за допомогою
openclaw memory index --force.
Додаткове читання
- Active Memory -- пам'ять субагента для інтерактивних чат-сеансів
- Пам'ять -- структура файлів, бекенди, інструменти
- Довідник конфігурації пам'яті -- усі параметри конфігурації