legacy и использует его по умолчанию - большинству пользователей не нужно это менять. Устанавливайте и выбирайте Plugin-движок только если вам нужно другое поведение сборки, Compaction или межсессионного восстановления контекста.
Быстрый старт
Установите Plugin-движок
Plugins движков контекста устанавливаются так же, как и любой другой Plugin OpenClaw.
- Из npm
- Из локального пути
Как это работает
Каждый раз, когда OpenClaw запускает запрос к модели, движок контекста участвует в четырех точках жизненного цикла:1. Прием
1. Прием
Вызывается, когда в сессию добавляется новое сообщение. Движок может сохранить или проиндексировать сообщение в собственном хранилище данных.
2. Сборка
2. Сборка
Вызывается перед каждым запуском модели. Движок возвращает упорядоченный набор сообщений (и необязательный
systemPromptAddition), который помещается в бюджет токенов.3. Compaction
3. Compaction
Вызывается, когда окно контекста заполнено или когда пользователь выполняет
/compact. Движок суммаризирует более старую историю, чтобы освободить место.4. После хода
4. После хода
Вызывается после завершения запуска. Движок может сохранить состояние, запустить фоновую Compaction или обновить индексы.
Жизненный цикл субагента (необязательно)
OpenClaw вызывает два необязательных хука жизненного цикла субагента:Подготовьте общее состояние контекста перед запуском дочернего выполнения. Хук получает ключи родительской/дочерней сессии,
contextMode (isolated или fork), доступные идентификаторы/файлы транскрипта и необязательный TTL. Если он возвращает дескриптор отката, OpenClaw вызывает его, когда создание субагента завершается ошибкой после успешной подготовки. Нативные создания субагентов, которые запрашивают lightContext и разрешаются в contextMode="isolated", намеренно пропускают этот хук, чтобы дочерний запуск начинался с облегченного начального контекста без управляемого движком контекста состояния перед созданием.Очистите ресурсы, когда сессия субагента завершается или удаляется при очистке.
Добавление к системному промпту
Методassemble может вернуть строку systemPromptAddition. OpenClaw добавляет ее в начало системного промпта для запуска. Это позволяет движкам внедрять динамические указания по восстановлению контекста, инструкции извлечения или контекстно-зависимые подсказки без необходимости в статических файлах рабочей области.
Движок legacy
Встроенный движокlegacy сохраняет исходное поведение OpenClaw:
- Прием: без операции (менеджер сессий напрямую обрабатывает сохранение сообщений).
- Сборка: сквозной режим (существующий конвейер sanitize → validate → limit в runtime обрабатывает сборку контекста).
- Compaction: делегирует встроенной суммаризирующей Compaction, которая создает единую сводку старых сообщений и сохраняет последние сообщения без изменений.
- После хода: без операции.
systemPromptAddition.
Когда plugins.slots.contextEngine не задан (или задан как "legacy"), этот движок используется автоматически.
Plugin-движки
Plugin может зарегистрировать движок контекста с помощью Plugin API:ctx включает необязательные значения config, agentDir и workspaceDir, чтобы Plugins могли инициализировать состояние для агента или рабочей области до запуска первого хука жизненного цикла.
Затем включите его в конфигурации:
Интерфейс ContextEngine
Обязательные члены:| Член | Тип | Назначение |
|---|---|---|
info | Свойство | Идентификатор движка, имя, версия и владеет ли он Compaction |
ingest(params) | Метод | Сохранить одно сообщение |
assemble(params) | Метод | Собрать контекст для запуска модели (возвращает AssembleResult) |
compact(params) | Метод | Суммаризировать/сократить контекст |
assemble возвращает AssembleResult с:
Упорядоченные сообщения для отправки модели.
Оценка движком общего числа токенов в собранном контексте. OpenClaw использует ее для решений о пороге Compaction и диагностических отчетов.
Добавляется в начало системного промпта.
Управляет тем, какую оценку токенов runner использует для предварительных проверок переполнения. По умолчанию используется
"assembled", что означает проверку только оценки собранного промпта - это подходит для движков, которые возвращают оконный, самодостаточный контекст. Устанавливайте "preassembly_may_overflow" только когда собранное представление может скрывать риск переполнения в базовом транскрипте; тогда runner берет максимум из собранной оценки и оценки истории сессии до сборки (без оконного ограничения), когда решает, нужно ли заранее выполнить Compaction. В любом случае модель видит именно те сообщения, которые вы возвращаете, - promptAuthority влияет только на предварительную проверку.compact возвращает CompactResult. Когда Compaction ротирует активный транскрипт, result.sessionId и result.sessionFile идентифицируют следующую сессию, которую должен использовать следующий повтор или ход.
Необязательные члены:
| Член | Тип | Назначение |
|---|---|---|
bootstrap(params) | Метод | Инициализировать состояние движка для сессии. Вызывается один раз, когда движок впервые видит сессию (например, импорт истории). |
ingestBatch(params) | Метод | Принять завершенный ход пакетом. Вызывается после завершения запуска, со всеми сообщениями из этого хода сразу. |
afterTurn(params) | Метод | Работа жизненного цикла после запуска (сохранить состояние, запустить фоновую Compaction). |
prepareSubagentSpawn(params) | Метод | Настроить общее состояние для дочерней сессии до ее запуска. |
onSubagentEnded(params) | Метод | Очистить ресурсы после завершения субагента. |
dispose() | Метод | Освободить ресурсы. Вызывается при завершении работы Gateway или перезагрузке Plugin - не для каждой сессии. |
Настройки runtime
Хуки жизненного цикла, которые выполняются внутри OpenClaw, получают необязательный объектruntimeSettings. Это версионированная, доступная только для чтения внутренняя поверхность API producer/consumer: OpenClaw создает ее для выбранного движка контекста, а движок контекста потребляет ее внутри хуков жизненного цикла. Она не отображается напрямую пользователям и не создает отдельную поверхность отчетности.
schemaVersion: сейчас1runtime: хост OpenClaw, режим runtime (normal,fallbackилиdegraded) и необязательные идентификаторы харнесса/runtimecontextEngineSelection: идентификатор выбранного движка контекста и источник выбораexecutionHost: идентификатор хоста и метка поверхности, вызывающей хукmodel: запрошенная модель, разрешенная модель, провайдер и необязательное семейство моделейlimits: бюджет токенов промпта и максимальное число выходных токенов, если известноdiagnostics: закрытые коды причин fallback и degraded, если известны
null; поля-дискриминаторы, такие как режим runtime и источник выбора, остаются не-nullable. Старые движки остаются совместимыми: если строгий устаревший движок отклоняет runtimeSettings как неизвестное свойство, OpenClaw повторяет вызов жизненного цикла без него, а не помещает движок в карантин.
Требования к хосту
Движки контекста могут объявлять требования к возможностям хоста вinfo.hostRequirements. OpenClaw проверяет эти требования перед запуском операции и закрыто завершает ее с понятной ошибкой, когда выбранный runtime не может им соответствовать.
Для запусков агента объявляйте assemble-before-prompt, когда движок должен управлять фактическим промптом модели через assemble():
assemble-before-prompt. Универсальные CLI-бэкенды - нет, поэтому движки, которым это требуется, отклоняются до запуска CLI-процесса.
Изоляция сбоев
OpenClaw изолирует выбранный Plugin-движок от основного пути ответа. Если движок не legacy отсутствует, не проходит проверку контракта, выбрасывает исключение при создании фабрики или выбрасывает исключение из метода жизненного цикла, OpenClaw помещает этот движок в карантин для текущего процесса Gateway и понижает работу движка контекста до встроенного движкаlegacy. Ошибка записывается в журнал вместе с неудачной операцией, чтобы оператор мог исправить, обновить или отключить Plugin без того, чтобы агент перестал отвечать.
Ошибки требований хоста отличаются: когда движок объявляет, что среда выполнения
не имеет необходимой возможности, OpenClaw завершает выполнение с отказом до запуска прогона. Это
защищает движки, которые повредили бы состояние при запуске в неподдерживаемом хосте.
ownsCompaction
ownsCompaction управляет тем, остается ли встроенная в среду выполнения OpenClaw автоматическая Compaction внутри попытки включенной для прогона:
ownsCompaction: true
ownsCompaction: true
Движок владеет поведением Compaction. OpenClaw отключает встроенную в среду выполнения OpenClaw автоматическую Compaction для этого прогона, а реализация
compact() в движке отвечает за /compact, восстановительную Compaction при переполнении и любую упреждающую Compaction, которую он хочет выполнить в afterTurn(). OpenClaw все еще может запускать предохранитель переполнения перед prompt; когда он прогнозирует, что полный transcript переполнится, путь восстановления вызывает compact() активного движка перед отправкой еще одного prompt.ownsCompaction: false or unset
ownsCompaction: false or unset
Встроенная в среду выполнения OpenClaw автоматическая Compaction все еще может выполняться во время выполнения prompt, но метод
compact() активного движка все равно вызывается для /compact и восстановления при переполнении.- Owning mode
- Delegating mode
Реализуйте собственный алгоритм Compaction и задайте
ownsCompaction: true.compact() небезопасен для активного движка без владения, потому что он отключает обычный путь /compact и восстановительной Compaction при переполнении для этого слота движка.
Справочник по конфигурации
Слот является эксклюзивным во время выполнения - для заданного прогона или операции Compaction разрешается только один зарегистрированный контекстный движок. Другие включенные Plugin с
kind: "context-engine" все еще могут загружаться и выполнять свой код регистрации; plugins.slots.contextEngine только выбирает, какой зарегистрированный идентификатор движка OpenClaw разрешает, когда ему нужен контекстный движок.Удаление Plugin: когда вы удаляете Plugin, который сейчас выбран как
plugins.slots.contextEngine, OpenClaw сбрасывает слот обратно к значению по умолчанию (legacy). Такое же поведение сброса применяется к plugins.slots.memory. Ручное редактирование конфигурации не требуется.Связь с Compaction и памятью
Compaction
Compaction
Compaction — одна из обязанностей контекстного движка. Устаревший движок делегирует встроенному в OpenClaw суммированию. Движки Plugin могут реализовать любую стратегию Compaction (сводки DAG, векторный поиск и т. д.).
Memory plugins
Memory plugins
Plugin памяти (
plugins.slots.memory) отделены от контекстных движков. Plugin памяти предоставляют поиск/извлечение; контекстные движки управляют тем, что видит модель. Они могут работать вместе - контекстный движок может использовать данные Plugin памяти во время сборки. Движкам Plugin, которым нужен активный путь memory prompt, следует предпочитать buildMemorySystemPromptAddition(...) из openclaw/plugin-sdk/core, который преобразует активные разделы memory prompt в готовый для добавления в начало systemPromptAddition. Если движку нужен более низкоуровневый контроль, он все еще может получать сырые строки из openclaw/plugin-sdk/memory-host-core через buildActiveMemoryPromptSection(...).Session pruning
Session pruning
Обрезка старых результатов инструментов в памяти все равно выполняется независимо от того, какой контекстный движок активен.
Советы
- Используйте
openclaw doctor, чтобы проверить, что ваш движок загружается корректно. - При переключении движков существующие сессии продолжают работу со своей текущей историей. Новый движок берет на себя будущие прогоны.
- Ошибки движка записываются в журнал, а выбранный движок Plugin помещается в карантин для текущего процесса Gateway. OpenClaw откатывается к
legacyдля пользовательских turns, чтобы ответы могли продолжаться, но вам все равно следует исправить, обновить, отключить или удалить неисправный Plugin. - Для разработки используйте
openclaw plugins install -l ./my-engine, чтобы связать локальный каталог Plugin без копирования.
Связанные материалы
- Compaction - суммирование длинных бесед
- Контекст - как строится контекст для agent turns
- Архитектура Plugin - регистрация Plugin контекстного движка
- Манифест Plugin - поля манифеста Plugin
- Plugins - обзор Plugin