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. плагин должен быть включён и нацелен на идентификатор текущего агента
  2. запрос должен относиться к допустимому интерактивному постоянному сеансу чата
Описание модели активации, конфигурации плагина, сохранения расшифровок и шаблона безопасного развёртывания см. в разделе Active Memory.

Выбор провайдера

Если provider не задан, OpenClaw использует эмбеддинги OpenAI. Явно задайте provider, чтобы использовать Bedrock, DeepInfra, Gemini, GitHub Copilot, Mistral, Ollama, Voyage, локальную модель GGUF или конечную точку /v1/embeddings, совместимую с OpenAI. Устаревшие конфигурации, в которых всё ещё указано 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, или для API моделей, совместимых с OpenAI, таких как openai-responses / openai-completions. OpenClaw определяет владельца api этого провайдера для адаптера эмбеддингов, сохраняя пользовательский идентификатор провайдера для обработки конечной точки, аутентификации и префикса модели. Это позволяет конфигурациям с несколькими GPU или узлами выделить для эмбеддингов памяти конкретную локальную конечную точку:

Определение ключа API

Для удалённых эмбеддингов требуется ключ API. Вместо него Bedrock использует стандартную цепочку учётных данных AWS SDK (роли экземпляров, SSO, ключи доступа или ключ API Bedrock).
OAuth Codex распространяется только на чат и завершения и не подходит для запросов эмбеддингов.

Конфигурация удалённой конечной точки

Используйте provider: "openai-compatible" для универсального сервера /v1/embeddings, совместимого с OpenAI, который не должен наследовать глобальные учётные данные чата 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 ГБ, загружается автоматически). Для рабочих копий исходного кода по-прежнему требуется разрешение на нативную сборку: 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 предпочитает актуальные структуры коллекций QMD и запросов MCP, но сохраняет совместимость со старыми выпусками 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 выполняется как один запланированный проход, а внутренние фазы light/deep/REM являются деталями реализации. Описание концептуального поведения и команд с косой чертой см. в разделе Dreaming.

Пользовательские настройки

Пример

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

Связанные материалы