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 |
Підтримувані моделі (із визначенням сімейства та стандартними розмірностями):
| ID моделі | Постачальник | Розмірність за замовчуванням | Налаштовувана розмірність |
|---|---|---|---|
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) та ID профілів інференсу з префіксом регіону (наприклад, 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 ГБ). |
Спочатку встановіть офіційний постачальник llama.cpp: openclaw plugins install @openclaw/llama-cpp-provider.
Модель за замовчуванням: embeddinggemma-300m-qat-Q8_0.gguf (приблизно 0,6 ГБ, завантажується автоматично). Для робочих копій вихідного коду все ще потрібне схвалення нативного складання: 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. Та сама схема, що й у 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", }, }, }, }, },}