Skip to main content
Ця сторінка містить перелік усіх параметрів конфігурації пошуку в пам’яті OpenClaw. Концептуальні огляди дивіться тут:

Огляд пам’яті

Як працює пам’ять.

Вбудований рушій

Стандартний серверний компонент SQLite.

Рушій QMD

Локальний допоміжний процес.

Пошук у пам’яті

Конвеєр пошуку та налаштування.

Active Memory

Субагент пам’яті для інтерактивних сеансів.
Усі параметри пошуку в пам’яті розміщено в agents.defaults.memorySearch у openclaw.json (або в перевизначенні agents.list[].memorySearch для окремого агента), якщо не зазначено інше.
Якщо потрібен перемикач функції Active Memory і конфігурація субагента, вони розміщені в plugins.entries.active-memory, а не в memorySearch.Active Memory використовує модель із двома умовами:
  1. Plugin має бути ввімкнений і спрямований на ідентифікатор поточного агента
  2. запит має належати до підтримуваного інтерактивного постійного сеансу чату
Опис моделі активації, конфігурації, якою керує Plugin, збереження стенограми та схеми безпечного розгортання дивіться в розділі Active Memory.

Вибір постачальника

Якщо provider не задано, OpenClaw використовує векторні подання OpenAI. Задайте provider явно, щоб використовувати Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama, Voyage, локальну модель GGUF або сумісну з OpenAI кінцеву точку /v1/embeddings. Застарілі конфігурації, у яких досі вказано provider: "auto", зіставляються з openai.
Зміна постачальника векторних подань, моделі, параметрів постачальника, джерел, області дії, поділу на фрагменти або токенізатора може зробити наявний векторний індекс SQLite несумісним. OpenClaw призупиняє векторний пошук і повідомляє попередження про ідентичність індексу замість автоматичного повторного створення векторних подань для всіх даних. Коли будете готові, перебудуйте індекс за допомогою openclaw memory status --index --agent <id> або openclaw memory index --force --agent <id>.
Якщо provider не задано, наявний застарілий параметр provider: "auto" або provider: "none" навмисно вибирає режим лише FTS, пошук у пам’яті все одно може використовувати лексичне ранжування FTS, коли векторні подання недоступні. Явно вказані нелокальні постачальники відмовляють у закритому режимі. Якщо для memorySearch.provider задано конкретного постачальника з віддаленою серверною частиною, наприклад Bedrock, DeepInfra, Gemini, GitHub Copilot, LM Studio, Mistral, Ollama, OpenAI, Voyage або сумісного з OpenAI власного постачальника, і цей постачальник недоступний під час виконання, memory_search повертає результат про недоступність замість непомітного використання пошуку лише через FTS. Виправте конфігурацію постачальника або автентифікації, перейдіть на доступного постачальника чи задайте provider: "none", якщо потрібен навмисний пошук лише через FTS.

Власні ідентифікатори постачальників

memorySearch.provider може вказувати на власний запис models.providers.<id> для адаптерів постачальника, призначених для пам’яті, як-от ollama, або для сумісних з OpenAI API моделей, як-от openai-responses / openai-completions. OpenClaw визначає власника api цього постачальника для адаптера векторних подань, зберігаючи власний ідентифікатор постачальника для обробки кінцевої точки, автентифікації та префікса моделі. Завдяки цьому конфігурації з кількома GPU або вузлами можуть виділити створення векторних подань пам’яті для певної локальної кінцевої точки:

Визначення ключа API

Для віддалених векторних подань потрібен ключ API. Натомість Bedrock використовує стандартний ланцюжок облікових даних AWS SDK (ролі екземплярів, SSO, ключі доступу або ключ API Bedrock).
OAuth Codex охоплює лише чат і завершення та не задовольняє запити на створення векторних подань.

Конфігурація віддаленої кінцевої точки

Використовуйте provider: "openai-compatible" для універсального сумісного з OpenAI сервера /v1/embeddings, який не повинен успадковувати глобальні облікові дані чату OpenAI.
string
Власна базова URL-адреса API.
string
Перевизначення ключа API.
object
Додаткові заголовки HTTP (об’єднуються зі стандартними значеннями постачальника).

Конфігурація для окремих постачальників

Зміна моделі або outputDimensionality змінює ідентичність індексу. OpenClaw призупиняє векторний пошук, доки індекс пам’яті не буде явно перебудовано.
Сумісні з OpenAI кінцеві точки векторних подань можуть увімкнути специфічні для постачальника поля запиту input_type. Це корисно для асиметричних моделей векторних подань, яким потрібні різні позначки для векторних подань запитів і документів.
Зміна цих значень впливає на ідентичність кешу векторних подань для пакетного індексування постачальником, тому після неї слід повторно проіндексувати пам’ять, якщо модель постачальника по-різному обробляє ці позначки.

Конфігурація векторних подань Bedrock

Bedrock використовує стандартний ланцюжок облікових даних AWS SDK разом із маркером носія, перевіреним OpenClaw, тому ключі API не зберігаються в конфігурації. Якщо OpenClaw працює на EC2 із роллю екземпляра, для якої ввімкнено Bedrock, просто задайте постачальника й модель:
Підтримувані моделі (із визначенням сімейства та стандартними розмірностями):Варіанти із суфіксом пропускної здатності (наприклад, amazon.titan-embed-text-v1:2:8k) та ідентифікатори профілів інференсу з префіксом регіону (наприклад, us.amazon.titan-embed-text-v2:0) успадковують конфігурацію базової моделі.Регіон: визначається в такому порядку: перевизначення memorySearch.remote.baseUrl, конфігурація models.providers.amazon-bedrock.baseUrl, AWS_REGION, AWS_DEFAULT_REGION, а потім типове значення us-east-1.Автентифікація: OpenClaw спочатку перевіряє AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY або AWS_BEARER_TOKEN_BEDROCK, а потім переходить до стандартного ланцюжка постачальників облікових даних AWS SDK:
  1. Змінні середовища (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY), якщо також не задано AWS_PROFILE
  2. SSO (лише коли налаштовано поля SSO)
  3. Спільні файли облікових даних і конфігурації (fromIni, включно з AWS_PROFILE)
  4. Процес отримання облікових даних (credential_process у файлі конфігурації AWS)
  5. Облікові дані токена вебідентичності
  6. Облікові дані з метаданих екземпляра ECS або EC2
Дозволи IAM: роль або користувач IAM потребує:
Для дотримання принципу найменших привілеїв обмежте InvokeModel конкретною моделлю:
Спочатку встановіть офіційний постачальник llama.cpp: openclaw plugins install @openclaw/llama-cpp-provider. Типова модель: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, завантажується автоматично). Для початкових кодів усе ще потрібне схвалення нативного складання: pnpm approve-builds, потім pnpm rebuild node-llama-cpp.Використовуйте автономний CLI, щоб перевірити той самий шлях постачальника, який використовує Gateway:
Числові значення local.contextSize також враховуються під час автоматичного розміщення шарів GPU у node-llama-cpp, щоб ваги моделі та запитаний контекст вбудовування вмістилися разом. openclaw memory status --deep повідомляє останні відомі відомості про бекенд llama.cpp, пристрій, вивантаження, запитаний контекст і пам’ять із позначкою часу після завантаження середовищем виконання; пасивна перевірка стану не завантажує модель.Явно задайте provider: "local" для локальних вбудовувань GGUF. hf: і посилання на моделі HTTP(S) підтримуються в явних локальних конфігураціях (через механізм визначення моделей node-llama-cpp), але вони не змінюють типового постачальника.

Час очікування вбудовування в основному процесі

number
Перевизначає час очікування для пакетів вбудовування в основному процесі під час індексування пам’яті.Якщо значення не задано, використовується типове значення постачальника: 600 секунд для локальних або самостійно розгорнутих постачальників, як-от local, ollama і lmstudio, та 120 секунд для хостингових постачальників. Збільште це значення, якщо локальні пакети вбудовування, що залежать від CPU, працюють справно, але повільно.

Поведінка індексування

Усі параметри містяться в memorySearch.sync, якщо не зазначено інше:
number
Розмір фрагмента в токенах, який використовується під час поділу джерел пам’яті перед вбудовуванням (типове значення: 400).
number
Перекриття токенів між сусідніми фрагментами для збереження контексту поблизу меж поділу (типове значення: 80).
Зміна chunking.tokens або chunking.overlap змінює межі фрагментів і робить недійсною наявну ідентичність індексу (див. попередження в розділі «Вибір постачальника»).

Конфігурація гібридного пошуку

Усі параметри містяться в memorySearch.query: І в memorySearch.query.hybrid:

Повний приклад


Додаткові шляхи пам’яті

Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги рекурсивно скануються на наявність файлів .md. Обробка символічних посилань залежить від активного бекенду: вбудований рушій пропускає символічні посилання, тоді як QMD дотримується поведінки базового сканера QMD. Для пошуку транскриптів інших агентів у межах агента використовуйте agents.list[].memorySearch.qmd.extraCollections замість memory.qmd.paths. Ці додаткові колекції мають ту саму структуру { path, name, pattern? }, але об’єднуються окремо для кожного агента й можуть зберігати явно задані спільні назви, коли шлях вказує за межі поточного робочого простору. Якщо той самий визначений шлях наявний і в memory.qmd.paths, і в memorySearch.qmd.extraCollections, QMD зберігає перший запис і пропускає дублікат.

Мультимодальна пам’ять (Gemini)

Індексуйте зображення й аудіо разом із Markdown за допомогою Gemini Embedding 2:
Застосовується лише до файлів у extraPaths. Типові корені пам’яті й надалі підтримують лише Markdown. Потребує gemini-embedding-2-preview. fallback має бути "none".
Підтримувані формати: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (зображення); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (аудіо).

Кеш вбудовувань

Запобігає повторному створенню вбудовувань для незміненого тексту під час переіндексування або оновлення транскриптів. Залиште maxEntries незаданим для необмеженого кешу; задайте його, якщо зростання використання диска важливіше за максимальну швидкість переіндексування. Коли значення задано, після перевищення кешем ліміту спочатку видаляються найстаріші записи (за часом останнього оновлення).

Пакетне індексування

Доступно для gemini, openai і voyage. Пакетна обробка OpenAI зазвичай є найшвидшою та найдешевшою для великих ретроспективних завантажень. remote.nonBatchConcurrency керує безпосередніми викликами вбудовування, які використовують локальні або самостійно розміщені провайдери, а також розміщені провайдери, коли їхні API пакетної обробки неактивні. Для непакетного індексування Ollama типово використовує 1, щоб не перевантажувати менші локальні хости; на потужніших машинах задайте вище значення. Це налаштування відокремлене від sync.embeddingBatchTimeoutSeconds, яке керує часом очікування безпосередніх викликів вбудовування.

Пошук у пам’яті сеансів (експериментальний)

Індексуйте транскрипти сеансів і надавайте їх через memory_search:
Індексування сеансів вмикається явно та виконується асинхронно. Результати можуть бути дещо застарілими. Журнали сеансів зберігаються на диску, тому вважайте доступ до файлової системи межею довіри.
Збіги в транскриптах сеансів також підпорядковуються tools.sessions.visibility. Типова видимість tree надає доступ лише до поточного сеансу та породжених ним сеансів. Щоб з іншого сеансу, наприклад приватного повідомлення, відновити непов’язаний сеанс того самого агента, запущений через Gateway, навмисно розширте видимість до agent (або до all, лише коли також потрібне відновлення між агентами й це дозволяє політика взаємодії між агентами). У наведених нижче прикладах ці налаштування розміщено в agents.defaults. Також можна застосувати еквівалентні налаштування memorySearch у перевизначенні для окремого агента, якщо лише один агент має індексувати транскрипти сеансів і здійснювати в них пошук. Для відновлення з Gateway у приватному повідомленні в межах одного агента:
Під час використання QMD налаштування agents.defaults.memorySearch.experimental.sessionMemory і sources: ["sessions"] самі по собі не експортують транскрипти до QMD. Також задайте memory.qmd.sessions.enabled: true.

Векторне прискорення SQLite (sqlite-vec)

Коли sqlite-vec недоступний, OpenClaw автоматично повертається до обчислення косинусної подібності всередині процесу.

Сховище індексу

Вбудовані індекси пам’яті зберігаються в базі даних OpenClaw SQLite кожного агента за адресою agents/<agentId>/agent/openclaw-agent.sqlite.

Конфігурація бекенду QMD

Задайте memory.backend = "qmd", щоб увімкнути. Усі налаштування QMD містяться в memory.qmd: searchMode: "search" використовує лише лексичний пошук/BM25. У цьому режимі OpenClaw не виконує перевірок готовності семантичних векторів або обслуговування вбудовувань QMD, зокрема під час memory status --deep; vsearch і query і надалі потребують готовності векторів та вбудовувань QMD. rerank: false змінює лише режим QMD query і потребує QMD 2.1 або новішої версії. У режимі прямого CLI OpenClaw передає --no-rerank; у режимі MCP на основі mcporter він передає rerank: false уніфікованому інструменту запитів QMD. Залиште значення незаданим, щоб використовувати типову поведінку повторного ранжування запитів QMD. OpenClaw надає перевагу актуальним формам колекцій і запитів MCP у QMD, але зберігає працездатність старіших випусків QMD, за потреби випробовуючи сумісні прапорці шаблонів колекцій і старіші назви інструментів MCP. Коли QMD заявляє про підтримку кількох фільтрів колекцій, пошук у колекціях з одного джерела виконується одним процесом QMD; старіші збірки QMD і надалі використовують шлях сумісності для кожної колекції. Одне джерело означає, що колекції довготривалої пам’яті (типові файли пам’яті разом із власними шляхами) групуються разом, тоді як колекції транскриптів сеансів залишаються окремою групою, щоб диверсифікація джерел і надалі охоплювала обидва типи даних.
Перевизначення моделей QMD залишаються на боці QMD, а не в конфігурації OpenClaw. Якщо потрібно глобально перевизначити моделі QMD, задайте змінні середовища, як-от QMD_EMBED_MODEL, QMD_RERANK_MODEL і QMD_GENERATE_MODEL, у середовищі виконання Gateway.

Інтеграція з mcporter

Усі налаштування містяться в memory.qmd.mcporter. Спрямовує пошуки QMD через довготривалий демон MCP mcporter замість запуску qmd для кожного запиту, зменшуючи накладні витрати холодного запуску для більших моделей. Потребує встановленого mcporter, доступного в PATH, а також налаштованого сервера mcporter, який запускає qmd mcp. Залиште вимкненим для простіших локальних конфігурацій, де витрати на запуск процесу для кожного запиту є прийнятними.
Визначає, які сеанси можуть отримувати результати пошуку QMD. Схема така сама, як у session.sendPolicy:
Типове значення, що постачається, дозволяє лише приватні/прямі повідомлення, забороняючи групи та інші типи каналів. match.keyPrefix зіставляється з нормалізованим ключем сеансу; match.rawKeyPrefix зіставляється з необробленим ключем, включно з agent:<id>:.
memory.citations застосовується до всіх бекендів:
Коли ініціалізацію QMD під час запуску Gateway увімкнено, OpenClaw запускає QMD лише для відповідних агентів. Якщо update.onBoot має значення true і обслуговування за інтервалом оновлення/векторизації не налаштовано, під час запуску для початкового оновлення використовується одноразовий менеджер, який після цього закривається. Якщо налаштовано інтервал оновлення або векторизації, під час запуску відкривається довготривалий менеджер QMD, який керує засобом відстеження та таймерами інтервалів; update.onBoot: false пропускає лише негайне початкове оновлення.

Повний приклад QMD


Dreaming

Dreaming налаштовується в plugins.entries.memory-core.config.dreaming, а не в agents.defaults.memorySearch. Dreaming виконується як один запланований прохід і використовує внутрішні легку/глибоку/REM-фази як деталь реалізації. Концептуальну поведінку та команди зі скісною рискою описано в розділі Dreaming.

Налаштування користувача

Приклад

  • Dreaming записує машинний стан до memory/.dreams/.
  • Dreaming записує зрозумілий людині описовий результат до DREAMS.md (або наявного dreams.md).
  • dreaming.model використовує наявний механізм перевірки довіри до субагентів Plugin; установіть plugins.entries.memory-core.subagent.allowModelOverride: true, перш ніж його вмикати.
  • Dream Diary повторює спробу один раз із типовою моделлю сеансу, коли налаштована модель недоступна. Помилки перевірки довіри або списку дозволених моделей реєструються в журналі, і повторна спроба не виконується без повідомлення.
  • Політика та порогові значення легкої/глибокої/REM-фаз є внутрішньою поведінкою, а не користувацькою конфігурацією.

Пов’язані матеріали