Technical reference
Довідник із налаштування пам’яті
Ця сторінка містить перелік усіх параметрів конфігурації пошуку в пам’яті OpenClaw. Концептуальні огляди дивіться тут:
Як працює пам’ять.
Стандартний серверний компонент SQLite.
Локальний допоміжний процес.
Конвеєр пошуку та налаштування.
Субагент пам’яті для інтерактивних сеансів.
Усі параметри пошуку в пам’яті розміщено в agents.defaults.memorySearch у openclaw.json (або в перевизначенні agents.list[].memorySearch для окремого агента), якщо не зазначено інше.
Вибір постачальника
| Ключ | Тип | Стандартне значення | Опис |
|---|---|---|---|
enabled |
boolean |
true |
Увімкнення або вимкнення пошуку в пам’яті |
provider |
string |
"openai" |
Ідентифікатор адаптера векторних подань, наприклад bedrock, deepinfra, gemini, github-copilot, local, mistral, ollama, openai, openai-compatible або voyage; також може бути налаштованим models.providers.<id>, значення api якого вказує на адаптер векторних подань пам’яті або сумісний з OpenAI API моделі |
model |
string |
стандартне значення постачальника | Назва моделі векторних подань |
fallback |
string |
"none" |
Ідентифікатор резервного адаптера на випадок збою основного |
Якщо provider не задано, OpenClaw використовує векторні подання OpenAI. Задайте provider
явно, щоб використовувати Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama,
Voyage, локальну модель GGUF або сумісну з OpenAI кінцеву точку /v1/embeddings.
Застарілі конфігурації, у яких досі вказано provider: "auto", зіставляються з openai.
Якщо 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 або вузлами можуть виділити створення векторних подань пам’яті для певної локальної кінцевої точки:
{ models: { providers: { "ollama-5080": { api: "ollama", baseUrl: "http://gpu-box.local:11435", apiKey: "ollama-local", models: [{ id: "qwen3-embedding:0.6b", name: "Qwen3 Embedding 0.6B" }], }, }, }, agents: { defaults: { memorySearch: { provider: "ollama-5080", model: "qwen3-embedding:0.6b", }, }, },}Визначення ключа API
Для віддалених векторних подань потрібен ключ API. Натомість Bedrock використовує стандартний ланцюжок облікових даних AWS SDK (ролі екземплярів, SSO, ключі доступу або ключ API Bedrock).
| Постачальник | Змінна середовища | Ключ конфігурації |
|---|---|---|
| Bedrock | Ланцюжок облікових даних AWS або AWS_BEARER_TOKEN_BEDROCK |
Ключ API не потрібен |
| DeepInfra | DEEPINFRA_API_KEY |
models.providers.deepinfra.apiKey |
| Gemini | GEMINI_API_KEY |
models.providers.google.apiKey |
| GitHub Copilot | COPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKEN |
Профіль автентифікації через вхід із пристрою |
| Mistral | MISTRAL_API_KEY |
models.providers.mistral.apiKey |
| Ollama | OLLAMA_API_KEY (заповнювач) |
-- |
| OpenAI | OPENAI_API_KEY |
models.providers.openai.apiKey |
| Voyage | VOYAGE_API_KEY |
models.providers.voyage.apiKey |
Конфігурація віддаленої кінцевої точки
Використовуйте provider: "openai-compatible" для універсального сумісного з OpenAI
сервера /v1/embeddings, який не повинен успадковувати глобальні облікові дані чату OpenAI.
remote.baseUrlstringВласна базова URL-адреса API.
remote.apiKeystringПеревизначення ключа API.
remote.headersobjectДодаткові заголовки HTTP (об’єднуються зі стандартними значеннями постачальника).
{ agents: { defaults: { memorySearch: { provider: "openai-compatible", model: "text-embedding-3-small", remote: { baseUrl: "https://api.example.com/v1/", apiKey: "YOUR_KEY", }, }, }, },}Конфігурація для окремих постачальників
Gemini
| Ключ | Тип | Стандартне значення | Опис |
|---|---|---|---|
model |
string |
gemini-embedding-001 |
Також підтримує gemini-embedding-2-preview |
outputDimensionality |
number |
3072 |
Для Embedding 2: 768, 1536 або 3072 |
Типи вхідних даних, сумісні з OpenAI
Сумісні з OpenAI кінцеві точки векторних подань можуть увімкнути специфічні для постачальника поля запиту input_type. Це корисно для асиметричних моделей векторних подань, яким потрібні різні позначки для векторних подань запитів і документів.
| Ключ | Тип | Стандартне значення | Опис |
|---|---|---|---|
inputType |
string |
не задано | Спільний input_type для векторних подань запитів і документів |
queryInputType |
string |
не задано | input_type під час запиту; перевизначає inputType |
documentInputType |
string |
не задано | input_type індексу/документа; перевизначає inputType |
{ agents: { defaults: { memorySearch: { provider: "openai-compatible", remote: { baseUrl: "https://embeddings.example/v1", apiKey: "${EMBEDDINGS_API_KEY}", }, model: "asymmetric-embedder", queryInputType: "query", documentInputType: "passage", }, }, },}Зміна цих значень впливає на ідентичність кешу векторних подань для пакетного індексування постачальником, тому після неї слід повторно проіндексувати пам’ять, якщо модель постачальника по-різному обробляє ці позначки.
Bedrock
Конфігурація векторних подань Bedrock
Bedrock використовує стандартний ланцюжок облікових даних AWS SDK разом із маркером носія, перевіреним OpenClaw, тому ключі API не зберігаються в конфігурації. Якщо OpenClaw працює на EC2 із роллю екземпляра, для якої ввімкнено Bedrock, просто задайте постачальника й модель:
{ agents: { defaults: { memorySearch: { provider: "bedrock", model: "amazon.titan-embed-text-v2:0", }, }, },}| Ключ | Тип | Стандартне значення | Опис |
|---|---|---|---|
model |
string |
amazon.titan-embed-text-v2:0 |
Будь-який ідентифікатор моделі векторних подань Bedrock |
outputDimensionality |
number |
стандартне значення моделі | Для Titan V2: 256, 512 або 1024 |
Підтримувані моделі (із визначенням сімейства та стандартними розмірностями):
| Ідентифікатор моделі | Постачальник | Типова розмірність | Налаштовувана розмірність |
|---|---|---|---|
amazon.titan-embed-text-v2:0 |
Amazon | 1024 | 256, 512, 1024 |
amazon.titan-embed-text-v1 |
Amazon | 1536 | -- |
amazon.titan-embed-g1-text-02 |
Amazon | 1536 | -- |
amazon.titan-embed-image-v1 |
Amazon | 1024 | -- |
amazon.nova-2-multimodal-embeddings-v1:0 |
Amazon | 1024 | 256, 384, 1024, 3072 |
cohere.embed-english-v3 |
Cohere | 1024 | -- |
cohere.embed-multilingual-v3 |
Cohere | 1024 | -- |
cohere.embed-v4:0 |
Cohere | 1536 | 256, 384, 512, 768, 1024, 1536 |
twelvelabs.marengo-embed-3-0-v1:0 |
TwelveLabs | 512 | -- |
twelvelabs.marengo-embed-2-7-v1:0 |
TwelveLabs | 1024 | -- |
Варіанти із суфіксом пропускної здатності (наприклад, 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:
- Змінні середовища (
AWS_ACCESS_KEY_ID+AWS_SECRET_ACCESS_KEY), якщо також не заданоAWS_PROFILE - SSO (лише коли налаштовано поля SSO)
- Спільні файли облікових даних і конфігурації (
fromIni, включно зAWS_PROFILE) - Процес отримання облікових даних (
credential_processу файлі конфігурації AWS) - Облікові дані токена вебідентичності
- Облікові дані з метаданих екземпляра ECS або EC2
Дозволи IAM: роль або користувач IAM потребує:
{ "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": "*"}Для дотримання принципу найменших привілеїв обмежте InvokeModel конкретною моделлю:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0Локально (GGUF + llama.cpp)
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
local.modelPath |
string |
автоматично завантажується | Шлях до файлу моделі GGUF |
local.modelCacheDir |
string |
типове для node-llama-cpp | Каталог кешу для завантажених моделей |
local.contextSize |
number | "auto" |
4096 |
Розмір контекстного вікна для контексту вбудовування. 4096 охоплює типові фрагменти (128-512 токенів), водночас обмежуючи обсяг VRAM, не зайнятий вагами. На хостах з обмеженими ресурсами зменште до 1024-2048. "auto" використовує навчений максимум моделі — не рекомендовано для моделей 8B+ (Qwen3-Embedding-8B: до 40 960 токенів можуть збільшити використання VRAM до ~32 GB). |
Спочатку встановіть офіційний постачальник 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:
openclaw memory status --deep --agent mainopenclaw memory index --force --agent mainЧислові значення local.contextSize також враховуються під час автоматичного розміщення шарів GPU у node-llama-cpp, щоб ваги моделі та запитаний контекст вбудовування вмістилися разом. openclaw memory status --deep повідомляє останні відомі відомості про бекенд llama.cpp, пристрій, вивантаження, запитаний контекст і пам’ять із позначкою часу після завантаження середовищем виконання; пасивна перевірка стану не завантажує модель.
Явно задайте provider: "local" для локальних вбудовувань GGUF. hf: і посилання на моделі HTTP(S) підтримуються в явних локальних конфігураціях (через механізм визначення моделей node-llama-cpp), але вони не змінюють типового постачальника.
Час очікування вбудовування в основному процесі
sync.embeddingBatchTimeoutSecondsnumberПеревизначає час очікування для пакетів вбудовування в основному процесі під час індексування пам’яті.
Якщо значення не задано, використовується типове значення постачальника: 600 секунд для локальних або самостійно розгорнутих постачальників, як-от local, ollama і lmstudio, та 120 секунд для хостингових постачальників. Збільште це значення, якщо локальні пакети вбудовування, що залежать від CPU, працюють справно, але повільно.
Поведінка індексування
Усі параметри містяться в memorySearch.sync, якщо не зазначено інше:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
onSessionStart |
boolean |
true |
Синхронізувати індекс пам’яті під час початку сеансу |
onSearch |
boolean |
true |
Відкладено синхронізувати під час пошуку після виявлення змін вмісту |
watch |
boolean |
true |
Відстежувати файли пам’яті (chokidar) і планувати переіндексування після змін |
watchDebounceMs |
number |
1500 |
Вікно усунення брязкоту для об’єднання швидких подій відстеження файлів |
intervalMinutes |
number |
0 |
Інтервал періодичного переіндексування у хвилинах (0 вимикає) |
sessions.postCompactionForce |
boolean |
true |
Примусово переіндексувати сеанс після оновлень транскрипту, спричинених Compaction |
chunking.tokensnumberРозмір фрагмента в токенах, який використовується під час поділу джерел пам’яті перед вбудовуванням (типове значення: 400).
chunking.overlapnumberПерекриття токенів між сусідніми фрагментами для збереження контексту поблизу меж поділу (типове значення: 80).
Конфігурація гібридного пошуку
Усі параметри містяться в memorySearch.query:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
maxResults |
number |
6 |
Максимальна кількість збігів у пам’яті, повернутих до вставлення |
minScore |
number |
0.35 |
Мінімальна оцінка релевантності для включення збігу |
І в memorySearch.query.hybrid:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled |
boolean |
true |
Увімкнути гібридний пошук BM25 + векторний |
vectorWeight |
number |
0.7 |
Вага векторних оцінок (0-1) |
textWeight |
number |
0.3 |
Вага оцінок BM25 (0-1) |
candidateMultiplier |
number |
4 |
Множник розміру пулу кандидатів |
MMR (різноманітність)
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
mmr.enabled |
boolean |
false |
Увімкнути повторне ранжування MMR |
mmr.lambda |
number |
0.7 |
0 = максимальна різноманітність, 1 = максимальна релевантність |
Часове згасання (давність)
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
temporalDecay.enabled |
boolean |
false |
Увімкнути підвищення оцінки за давністю |
temporalDecay.halfLifeDays |
number |
30 |
Оцінка зменшується вдвічі кожні N днів |
Вічнозелені файли (MEMORY.md, файли без дат у memory/) ніколи не зазнають згасання.
Повний приклад
{ agents: { defaults: { memorySearch: { query: { maxResults: 6, minScore: 0.35, hybrid: { vectorWeight: 0.7, textWeight: 0.3, mmr: { enabled: true, lambda: 0.7 }, temporalDecay: { enabled: true, halfLifeDays: 30 }, }, }, }, }, },}Додаткові шляхи пам’яті
| Ключ | Тип | Опис |
|---|---|---|
extraPaths |
string[] |
Додаткові каталоги або файли для індексування |
{ agents: { defaults: { memorySearch: { extraPaths: ["../team-docs", "/srv/shared-notes"], }, }, },}Шляхи можуть бути абсолютними або відносними до робочого простору. Каталоги рекурсивно скануються на наявність файлів .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:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
multimodal.enabled |
boolean |
false |
Увімкнути мультимодальне індексування |
multimodal.modalities |
string[] |
-- | ["image"], ["audio"] або ["all"] |
multimodal.maxFileBytes |
number |
10485760 |
Максимальний розмір файлу для індексування (10 MiB) |
Підтримувані формати: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (зображення); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (аудіо).
Кеш вбудовувань
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
cache.enabled |
boolean |
true |
Кешувати вбудовування фрагментів у SQLite |
cache.maxEntries |
number |
не задано | Орієнтовна верхня межа кількості кешованих вбудовувань |
Запобігає повторному створенню вбудовувань для незміненого тексту під час переіндексування або оновлення транскриптів. Залиште maxEntries незаданим для необмеженого кешу; задайте його, якщо зростання використання диска важливіше за максимальну швидкість переіндексування. Коли значення задано, після перевищення кешем ліміту спочатку видаляються найстаріші записи (за часом останнього оновлення).
Пакетне індексування
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
remote.nonBatchConcurrency |
number |
4 |
Паралельні безпосередні вбудовування |
remote.batch.enabled |
boolean |
false |
Увімкнути API пакетного вбудовування |
remote.batch.concurrency |
number |
2 |
Паралельні пакетні завдання |
remote.batch.wait |
boolean |
true |
Очікувати завершення пакетної обробки |
remote.batch.pollIntervalMs |
number |
2000 |
Інтервал опитування |
remote.batch.timeoutMinutes |
number |
60 |
Час очікування пакетної обробки |
Доступно для gemini, openai і voyage. Пакетна обробка OpenAI зазвичай є найшвидшою та найдешевшою для великих ретроспективних завантажень.
remote.nonBatchConcurrency керує безпосередніми викликами вбудовування, які використовують локальні або самостійно розміщені провайдери, а також розміщені провайдери, коли їхні API пакетної обробки неактивні. Для непакетного індексування Ollama типово використовує 1, щоб не перевантажувати менші локальні хости; на потужніших машинах задайте вище значення.
Це налаштування відокремлене від sync.embeddingBatchTimeoutSeconds, яке керує часом очікування безпосередніх викликів вбудовування.
Пошук у пам’яті сеансів (експериментальний)
Індексуйте транскрипти сеансів і надавайте їх через memory_search:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
experimental.sessionMemory |
boolean |
false |
Увімкнути індексування сеансів |
sources |
string[] |
["memory"] |
Додати "sessions", щоб включити транскрипти |
sync.sessions.deltaBytes |
number |
100000 |
Порогове значення байтів для переіндексування |
sync.sessions.deltaMessages |
number |
50 |
Порогове значення повідомлень для переіндексування |
Збіги в транскриптах сеансів також підпорядковуються
tools.sessions.visibility. Типова видимість
tree надає доступ лише до поточного сеансу та породжених ним сеансів. Щоб
з іншого сеансу, наприклад приватного повідомлення, відновити непов’язаний сеанс того самого агента, запущений через Gateway,
навмисно розширте видимість до agent (або до all, лише
коли також потрібне відновлення між агентами й це дозволяє політика взаємодії між агентами).
У наведених нижче прикладах ці налаштування розміщено в agents.defaults. Також можна
застосувати еквівалентні налаштування memorySearch у перевизначенні для окремого агента, якщо лише один
агент має індексувати транскрипти сеансів і здійснювати в них пошук.
Для відновлення з Gateway у приватному повідомленні в межах одного агента:
Вбудований бекенд
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, tools: { sessions: { visibility: "agent" }, },}Бекенд QMD
{ agents: { defaults: { memorySearch: { experimental: { sessionMemory: true }, sources: ["memory", "sessions"], }, }, }, memory: { backend: "qmd", qmd: { sessions: { enabled: true }, }, }, tools: { sessions: { visibility: "agent" }, },}Під час використання QMD налаштування agents.defaults.memorySearch.experimental.sessionMemory і
sources: ["sessions"] самі по собі не експортують транскрипти до QMD. Також задайте
memory.qmd.sessions.enabled: true.
Векторне прискорення SQLite (sqlite-vec)
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
store.vector.enabled |
boolean |
true |
Використовувати sqlite-vec для векторних запитів |
store.vector.extensionPath |
string |
вбудовано | Перевизначити шлях до sqlite-vec |
Коли sqlite-vec недоступний, OpenClaw автоматично повертається до обчислення косинусної подібності всередині процесу.
Сховище індексу
Вбудовані індекси пам’яті зберігаються в базі даних OpenClaw SQLite кожного агента за адресою
agents/<agentId>/agent/openclaw-agent.sqlite.
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
store.fts.tokenizer |
string |
unicode61 |
Токенізатор FTS5 (unicode61 або trigram) |
Конфігурація бекенду QMD
Задайте memory.backend = "qmd", щоб увімкнути. Усі налаштування QMD містяться в memory.qmd:
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
command |
string |
qmd |
Шлях до виконуваного файлу QMD; задайте абсолютний шлях, якщо PATH служби відрізняється від вашої оболонки |
searchMode |
string |
search |
Команда пошуку: search, vsearch, query |
rerank |
boolean |
-- | Задайте false разом із searchMode: "query" і QMD 2.1+, щоб пропустити повторне ранжування QMD |
includeDefaultMemory |
boolean |
true |
Автоматично індексувати MEMORY.md + memory/**/*.md |
paths[] |
array |
-- | Додаткові шляхи: { name, path, pattern? } |
sessions.enabled |
boolean |
false |
Експортувати транскрипти сеансів до QMD |
sessions.retentionDays |
number |
-- | Термін зберігання транскриптів |
sessions.exportDir |
string |
-- | Каталог експорту |
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 і надалі використовують шлях сумісності для кожної колекції. Одне джерело означає, що колекції довготривалої пам’яті (типові файли пам’яті разом із власними шляхами) групуються разом, тоді як колекції транскриптів сеансів залишаються окремою групою, щоб диверсифікація джерел і надалі охоплювала обидва типи даних.
Інтеграція з mcporter
Усі налаштування містяться в memory.qmd.mcporter. Спрямовує пошуки QMD через довготривалий демон MCP mcporter замість запуску qmd для кожного запиту, зменшуючи накладні витрати холодного запуску для більших моделей.
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled |
boolean |
false |
Спрямовувати виклики QMD через mcporter замість запуску qmd для кожного запиту |
serverName |
string |
qmd |
Назва сервера mcporter, який запускає qmd mcp з lifecycle: keep-alive |
startDaemon |
boolean |
true |
Автоматично запускати демон mcporter, коли enabled має значення true |
Потребує встановленого mcporter, доступного в PATH, а також налаштованого сервера mcporter, який запускає qmd mcp. Залиште вимкненим для простіших локальних конфігурацій, де витрати на запуск процесу для кожного запиту є прийнятними.
Розклад оновлень
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
update.interval |
string |
5m |
Інтервал оновлення |
update.debounceMs |
number |
15000 |
Усунення брязкоту змін файлів |
update.onBoot |
boolean |
true |
Оновлювати після відкриття довготривалого менеджера QMD; установіть false, щоб пропустити негайне оновлення під час запуску |
update.startup |
string |
off |
Необов’язкова ініціалізація QMD під час запуску Gateway: off, idle або immediate |
update.startupDelayMs |
number |
120000 |
Затримка перед запуском оновлення startup: "idle" |
update.waitForBootSync |
boolean |
false |
Блокувати відкриття менеджера до завершення його початкового оновлення |
update.embedInterval |
string |
60m |
Окрема періодичність векторизації |
update.commandTimeoutMs |
number |
30000 |
Час очікування команд обслуговування QMD (перелік/додавання колекцій) |
update.updateTimeoutMs |
number |
120000 |
Час очікування кожного циклу qmd update |
update.embedTimeoutMs |
number |
120000 |
Час очікування кожного циклу qmd embed |
Обмеження
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
limits.maxResults |
number |
4 |
Максимальна кількість результатів пошуку |
limits.maxSnippetChars |
number |
450 |
Обмеження довжини фрагмента |
limits.maxInjectedChars |
number |
2200 |
Обмеження загальної кількості вставлених символів |
limits.timeoutMs |
number |
4000 |
Час очікування команди QMD під час пошуку через QMD, зокрема memory_search; налаштування, синхронізація, вбудований резервний механізм і додаткові операції зберігають типовий граничний час інструмента |
Область дії
Визначає, які сеанси можуть отримувати результати пошуку QMD. Схема така сама, як у session.sendPolicy:
{ memory: { qmd: { scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, }, },}Типове значення, що постачається, дозволяє лише приватні/прямі повідомлення, забороняючи групи та інші типи каналів. match.keyPrefix зіставляється з нормалізованим ключем сеансу; match.rawKeyPrefix зіставляється з необробленим ключем, включно з agent:<id>:.
Посилання на джерела
memory.citations застосовується до всіх бекендів:
| Значення | Поведінка |
|---|---|
auto (типове) |
Додавати нижній колонтитул Source: <path#line> до фрагментів |
on |
Завжди додавати нижній колонтитул |
off |
Не додавати нижній колонтитул (шлях усе одно передається агенту внутрішньо) |
Коли ініціалізацію QMD під час запуску Gateway увімкнено, OpenClaw запускає QMD лише для відповідних агентів. Якщо update.onBoot має значення true і обслуговування за інтервалом оновлення/векторизації не налаштовано, під час запуску для початкового оновлення використовується одноразовий менеджер, який після цього закривається. Якщо налаштовано інтервал оновлення або векторизації, під час запуску відкривається довготривалий менеджер QMD, який керує засобом відстеження та таймерами інтервалів; update.onBoot: false пропускає лише негайне початкове оновлення.
Повний приклад QMD
{ memory: { backend: "qmd", citations: "auto", qmd: { includeDefaultMemory: true, update: { interval: "5m", debounceMs: 15000 }, limits: { maxResults: 4, timeoutMs: 4000 }, scope: { default: "deny", rules: [{ action: "allow", match: { chatType: "direct" } }], }, paths: [{ name: "docs", path: "~/notes", pattern: "**/*.md" }], }, },}Dreaming
Dreaming налаштовується в plugins.entries.memory-core.config.dreaming, а не в agents.defaults.memorySearch.
Dreaming виконується як один запланований прохід і використовує внутрішні легку/глибоку/REM-фази як деталь реалізації.
Концептуальну поведінку та команди зі скісною рискою описано в розділі Dreaming.
Налаштування користувача
| Ключ | Тип | Типове значення | Опис |
|---|---|---|---|
enabled |
boolean |
false |
Повністю ввімкнути або вимкнути Dreaming |
frequency |
string |
0 3 * * * |
Необов’язкова періодичність Cron для повного проходу Dreaming |
model |
string |
типова модель | Необов’язкове перевизначення моделі субагента Dream Diary |
phases.deep.maxPromotedSnippetTokens |
number |
160 |
Максимальна орієнтовна кількість токенів, що зберігається з кожного фрагмента короткочасного пригадування, перенесеного до MEMORY.md; метадані походження залишаються видимими |
Приклад
{ plugins: { entries: { "memory-core": { subagent: { allowModelOverride: true, allowedModels: ["anthropic/claude-sonnet-4-6"], }, config: { dreaming: { enabled: true, frequency: "0 3 * * *", model: "anthropic/claude-sonnet-4-6", }, }, }, }, },}