Перейти до основного вмісту

Довідник із конфігурації пам’яті

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

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

KeyTypeDefaultDescription
providerstringauto-detectedID адаптера ембедингів: bedrock, gemini, github-copilot, local, mistral, ollama, openai, voyage
modelstringprovider defaultНазва моделі ембедингів
fallbackstring"none"ID резервного адаптера, якщо основний завершується помилкою
enabledbooleantrueУвімкнути або вимкнути пошук у пам’яті

Порядок автовизначення

Коли provider не задано, OpenClaw вибирає перший доступний:
  1. local — якщо налаштовано memorySearch.local.modelPath і файл існує.
  2. github-copilot — якщо можна визначити токен GitHub Copilot (змінна середовища або профіль автентифікації).
  3. openai — якщо можна визначити ключ OpenAI.
  4. gemini — якщо можна визначити ключ Gemini.
  5. voyage — якщо можна визначити ключ Voyage.
  6. mistral — якщо можна визначити ключ Mistral.
  7. bedrock — якщо ланцюжок облікових даних AWS SDK успішно визначається (роль екземпляра, ключі доступу, профіль, SSO, web identity або спільна конфігурація).
ollama підтримується, але не визначається автоматично (задайте його явно).

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

Віддалені ембединги потребують API-ключ. Натомість Bedrock використовує типовий ланцюжок облікових даних AWS SDK (ролі екземпляра, SSO, ключі доступу).
ProviderEnv varConfig key
BedrockЛанцюжок облікових даних AWSAPI-ключ не потрібен
GeminiGEMINI_API_KEYmodels.providers.google.apiKey
GitHub CopilotCOPILOT_GITHUB_TOKEN, GH_TOKEN, GITHUB_TOKENПрофіль автентифікації через вхід із пристрою
MistralMISTRAL_API_KEYmodels.providers.mistral.apiKey
OllamaOLLAMA_API_KEY (заповнювач)
OpenAIOPENAI_API_KEYmodels.providers.openai.apiKey
VoyageVOYAGE_API_KEYmodels.providers.voyage.apiKey
Codex OAuth покриває лише chat/completions і не задовольняє запити ембедингів.

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

Для власних OpenAI-сумісних кінцевих точок або перевизначення типових значень постачальника:
KeyTypeDescription
remote.baseUrlstringВласний базовий URL API
remote.apiKeystringПеревизначити API-ключ
remote.headersobjectДодаткові HTTP-заголовки (об’єднуються з типовими значеннями постачальника)
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai",
        model: "text-embedding-3-small",
        remote: {
          baseUrl: "https://api.example.com/v1/",
          apiKey: "YOUR_KEY",
        },
      },
    },
  },
}

Конфігурація, специфічна для Gemini

KeyTypeDefaultDescription
modelstringgemini-embedding-001Також підтримує gemini-embedding-2-preview
outputDimensionalitynumber3072Для Embedding 2: 768, 1536 або 3072
Зміна model або outputDimensionality запускає автоматичне повне переіндексування.

Конфігурація ембедингів Bedrock

Bedrock використовує типовий ланцюжок облікових даних AWS SDK — API-ключі не потрібні. Якщо OpenClaw працює на EC2 з роллю екземпляра, у якої ввімкнено Bedrock, просто задайте postачальника і модель:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "bedrock",
        model: "amazon.titan-embed-text-v2:0",
      },
    },
  },
}
KeyTypeDefaultDescription
modelstringamazon.titan-embed-text-v2:0Будь-який ID моделі ембедингів Bedrock
outputDimensionalitynumbermodel defaultДля Titan V2: 256, 512 або 1024

Підтримувані моделі

Підтримуються такі моделі (із визначенням сімейства та типовими розмірностями):
Model IDProviderDefault DimsConfigurable Dims
amazon.titan-embed-text-v2:0Amazon1024256, 512, 1024
amazon.titan-embed-text-v1Amazon1536
amazon.titan-embed-g1-text-02Amazon1536
amazon.titan-embed-image-v1Amazon1024
amazon.nova-2-multimodal-embeddings-v1:0Amazon1024256, 384, 1024, 3072
cohere.embed-english-v3Cohere1024
cohere.embed-multilingual-v3Cohere1024
cohere.embed-v4:0Cohere1536256-1536
twelvelabs.marengo-embed-3-0-v1:0TwelveLabs512
twelvelabs.marengo-embed-2-7-v1:0TwelveLabs1024
Варіанти із суфіксом пропускної здатності (наприклад, amazon.titan-embed-text-v1:2:8k) успадковують конфігурацію базової моделі.

Автентифікація

Автентифікація Bedrock використовує стандартний порядок визначення облікових даних AWS SDK:
  1. Змінні середовища (AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY)
  2. Кеш токенів SSO
  3. Облікові дані токена web identity
  4. Спільні файли облікових даних і конфігурації
  5. Облікові дані метаданих ECS або EC2
Регіон визначається з AWS_REGION, AWS_DEFAULT_REGION, baseUrl постачальника amazon-bedrock або за замовчуванням використовується us-east-1.

Дозволи IAM

Роль або користувач IAM потребує:
{
  "Effect": "Allow",
  "Action": "bedrock:InvokeModel",
  "Resource": "*"
}
Для принципу найменших привілеїв обмежте InvokeModel конкретною моделлю:
arn:aws:bedrock:*::foundation-model/amazon.titan-embed-text-v2:0

Локальна конфігурація ембедингів

KeyTypeDefaultDescription
local.modelPathstringauto-downloadedШлях до файлу моделі GGUF
local.modelCacheDirstringnode-llama-cpp defaultКаталог кешу для завантажених моделей
Типова модель: embeddinggemma-300m-qat-Q8_0.gguf (~0.6 GB, завантажується автоматично). Потребує нативного збирання: pnpm approve-builds, потім pnpm rebuild node-llama-cpp.

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

Усе розміщується в memorySearch.query.hybrid:
KeyTypeDefaultDescription
enabledbooleantrueУвімкнути гібридний пошук BM25 + vector
vectorWeightnumber0.7Вага для векторних оцінок (0-1)
textWeightnumber0.3Вага для оцінок BM25 (0-1)
candidateMultipliernumber4Множник розміру пулу кандидатів

MMR (різноманітність)

KeyTypeDefaultDescription
mmr.enabledbooleanfalseУвімкнути повторне ранжування MMR
mmr.lambdanumber0.70 = максимальна різноманітність, 1 = максимальна релевантність

Часове згасання (свіжість)

KeyTypeDefaultDescription
temporalDecay.enabledbooleanfalseУвімкнути підсилення свіжості
temporalDecay.halfLifeDaysnumber30Оцінка зменшується вдвічі кожні N днів
Для evergreen-файлів (MEMORY.md, файли без дати в memory/) згасання ніколи не застосовується.

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

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            vectorWeight: 0.7,
            textWeight: 0.3,
            mmr: { enabled: true, lambda: 0.7 },
            temporalDecay: { enabled: true, halfLifeDays: 30 },
          },
        },
      },
    },
  },
}

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

KeyTypeDescription
extraPathsstring[]Додаткові каталоги або файли для індексації
{
  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:
KeyTypeDefaultDescription
multimodal.enabledbooleanfalseУвімкнути мультимодальне індексування
multimodal.modalitiesstring[]["image"], ["audio"] або ["all"]
multimodal.maxFileBytesnumber10000000Максимальний розмір файлу для індексації
Застосовується лише до файлів у extraPaths. Типові корені пам’яті залишаються лише для Markdown. Потрібен gemini-embedding-2-preview. fallback має бути "none". Підтримувані формати: .jpg, .jpeg, .png, .webp, .gif, .heic, .heif (зображення); .mp3, .wav, .ogg, .opus, .m4a, .aac, .flac (аудіо).

Кеш ембедингів

KeyTypeDefaultDescription
cache.enabledbooleanfalseКешувати ембединги фрагментів у SQLite
cache.maxEntriesnumber50000Максимальна кількість кешованих ембедингів
Запобігає повторному створенню ембедингів для незміненого тексту під час переіндексації або оновлення транскриптів.

Пакетна індексація

KeyTypeDefaultDescription
remote.batch.enabledbooleanfalseУвімкнути API пакетних ембедингів
remote.batch.concurrencynumber2Паралельні пакетні завдання
remote.batch.waitbooleantrueОчікувати завершення пакета
remote.batch.pollIntervalMsnumberІнтервал опитування
remote.batch.timeoutMinutesnumberТайм-аут пакета
Доступно для openai, gemini і voyage. Пакетний режим OpenAI зазвичай найшвидший і найдешевший для великих зворотних заповнень.

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

Індексує транскрипти сесій і показує їх через memory_search:
KeyTypeDefaultDescription
experimental.sessionMemorybooleanfalseУвімкнути індексацію сесій
sourcesstring[]["memory"]Додайте "sessions", щоб включити транскрипти
sync.sessions.deltaBytesnumber100000Поріг байтів для переіндексації
sync.sessions.deltaMessagesnumber50Поріг повідомлень для переіндексації
Індексація сесій вмикається за бажанням і виконується асинхронно. Результати можуть бути дещо застарілими. Журнали сесій зберігаються на диску, тому вважайте доступ до файлової системи межею довіри.

Прискорення векторів SQLite (sqlite-vec)

KeyTypeDefaultDescription
store.vector.enabledbooleantrueВикористовувати sqlite-vec для векторних запитів
store.vector.extensionPathstringbundledПеревизначити шлях до sqlite-vec
Коли sqlite-vec недоступний, OpenClaw автоматично повертається до in-process cosine similarity.

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

KeyTypeDefaultDescription
store.pathstring~/.openclaw/memory/{agentId}.sqliteРозташування індексу (підтримує токен {agentId})
store.fts.tokenizerstringunicode61Токенізатор FTS5 (unicode61 або trigram)

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

Щоб увімкнути, задайте memory.backend = "qmd". Усі налаштування QMD розміщені в memory.qmd:
KeyTypeDefaultDescription
commandstringqmdШлях до виконуваного файлу QMD
searchModestringsearchКоманда пошуку: search, vsearch, query
includeDefaultMemorybooleantrueАвтоматично індексувати MEMORY.md + memory/**/*.md
paths[]arrayДодаткові шляхи: { name, path, pattern? }
sessions.enabledbooleanfalseІндексувати транскрипти сесій
sessions.retentionDaysnumberЗберігання транскриптів
sessions.exportDirstringКаталог експорту
OpenClaw віддає перевагу поточним формам колекцій QMD і запитів MCP, але зберігає працездатність старіших випусків QMD, за потреби повертаючись до застарілих прапорців колекцій --mask і старіших назв інструментів MCP. Перевизначення моделей QMD залишаються на боці QMD, а не в конфігурації OpenClaw. Якщо вам потрібно глобально перевизначити моделі QMD, задайте змінні середовища, наприклад QMD_EMBED_MODEL, QMD_RERANK_MODEL і QMD_GENERATE_MODEL, у середовищі виконання Gateway.

Розклад оновлень

KeyTypeDefaultDescription
update.intervalstring5mІнтервал оновлення
update.debounceMsnumber15000Дебаунс змін файлів
update.onBootbooleantrueОновлювати під час запуску
update.waitForBootSyncbooleanfalseБлокувати запуск до завершення оновлення
update.embedIntervalstringОкремий інтервал для ембедингів
update.commandTimeoutMsnumberТайм-аут для команд QMD
update.updateTimeoutMsnumberТайм-аут для операцій оновлення QMD
update.embedTimeoutMsnumberТайм-аут для операцій ембедингів QMD

Обмеження

KeyTypeDefaultDescription
limits.maxResultsnumber6Максимум результатів пошуку
limits.maxSnippetCharsnumberОбмежити довжину фрагмента
limits.maxInjectedCharsnumberОбмежити загальну кількість вставлених символів
limits.timeoutMsnumber4000Тайм-аут пошуку

Область дії

Керує тим, які сесії можуть отримувати результати пошуку QMD. Та сама схема, що й у session.sendPolicy:
{
  memory: {
    qmd: {
      scope: {
        default: "deny",
        rules: [{ action: "allow", match: { chatType: "direct" } }],
      },
    },
  },
}
Типова конфігурація в постачанні дозволяє прямі сесії та сесії каналів, водночас усе ще забороняючи групи. Типове значення — лише DM. match.keyPrefix зіставляється з нормалізованим ключем сесії; match.rawKeyPrefix зіставляється з сирим ключем, включно з agent:<id>:.

Цитати

memory.citations застосовується до всіх бекендів:
ValueBehavior
auto (default)Додавати нижній колонтитул Source: <path#line> до фрагментів
onЗавжди додавати нижній колонтитул
offНе додавати нижній колонтитул (шлях усе одно передається агенту внутрішньо)

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

{
  memory: {
    backend: "qmd",
    citations: "auto",
    qmd: {
      includeDefaultMemory: true,
      update: { interval: "5m", debounceMs: 15000 },
      limits: { maxResults: 6, 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 запускається як один запланований цикл і використовує внутрішні фази light/deep/REM як деталь реалізації. Щоб дізнатися про концептуальну поведінку та slash-команди, див. Dreaming.

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

KeyTypeDefaultDescription
enabledbooleanfalseПовністю ввімкнути або вимкнути Dreaming
frequencystring0 3 * * *Необов’язкова частота Cron для повного циклу Dreaming

Приклад

{
  plugins: {
    entries: {
      "memory-core": {
        config: {
          dreaming: {
            enabled: true,
            frequency: "0 3 * * *",
          },
        },
      },
    },
  },
}
Примітки:
  • Dreaming записує машинний стан у memory/.dreams/.
  • Dreaming записує зрозумілий людині наративний вивід у DREAMS.md (або наявний dreams.md).
  • Політика фаз light/deep/REM і пороги є внутрішньою поведінкою, а не користувацькою конфігурацією.