legacy і використовує його за замовчуванням. Установлюйте й вибирайте рушій-плагін, лише якщо потрібна інша поведінка формування, ущільнення або відновлення даних між сеансами.
Швидкий початок
1
Перевірте, який рушій активний
2
Установіть рушій-плагін
Плагіни рушіїв контексту встановлюються так само, як і будь-які інші плагіни OpenClaw.
- З npm
- З локального шляху
3
Увімкніть і виберіть рушій
4
Поверніться до застарілого рушія (необов’язково)
Установіть для
contextEngine значення "legacy" (або повністю видаліть ключ — "legacy" є значенням за замовчуванням).Як це працює
Щоразу, коли OpenClaw запускає запит до моделі, рушій контексту залучається на чотирьох етапах життєвого циклу:1. Приймання
1. Приймання
Викликається, коли до сеансу додається нове повідомлення. Рушій може зберегти або проіндексувати повідомлення у власному сховищі даних.
2. Формування
2. Формування
Викликається перед кожним запуском моделі. Рушій повертає впорядкований набір повідомлень (і необов’язковий
systemPromptAddition), які вкладаються в бюджет токенів.3. Ущільнення
3. Ущільнення
Викликається, коли контекстне вікно заповнене або коли користувач запускає
/compact. Рушій узагальнює давнішу історію, щоб звільнити місце.4. Після ходу
4. Після ходу
Викликається після завершення запуску. Рушій може зберегти стан, запустити фонове ущільнення або оновити індекси.
maintain() для обслуговування транскрипту (безпечного перезаписування через runtimeContext.rewriteTranscriptEntries()) після початкового завантаження, успішного ходу або ущільнення. Установіть info.turnMaintenanceMode: "background", щоб виконувати його як відкладену роботу, а не блокувати відповідь.
Для вбудованого засобу виконання Codex без ACP OpenClaw застосовує той самий життєвий цикл, проєктуючи сформований контекст в інструкції розробника Codex і запит поточного ходу. Codex і надалі керує власною історією потоків і власним засобом ущільнення.
Життєвий цикл субагента (необов’язково)
OpenClaw викликає два необов’язкові перехоплювачі життєвого циклу субагента:method
Підготуйте спільний стан контексту перед початком дочірнього запуску. Перехоплювач отримує ключі батьківського й дочірнього сеансів,
contextMode (isolated або fork), доступні ідентифікатори чи файли транскриптів і необов’язковий TTL. Якщо він повертає дескриптор відкочування, OpenClaw викликає його, коли створення завершується невдало після успішної підготовки. Власні механізми створення субагентів, які запитують lightContext і визначаються як contextMode="isolated", навмисно пропускають цей перехоплювач, щоб дочірній процес починав роботу з полегшеного початкового контексту без стану перед створенням, яким керує рушій контексту.method
Виконайте очищення після завершення або прибирання сеансу субагента.
Доповнення системного запиту
Методassemble може повертати рядок systemPromptAddition. OpenClaw додає його на початок системного запиту для запуску. Це дає рушіям змогу вставляти динамічні вказівки щодо відновлення даних, інструкції з пошуку або підказки з урахуванням контексту без потреби у статичних файлах робочого простору.
Застарілий рушій
Вбудований рушійlegacy зберігає початкову поведінку OpenClaw:
- Приймання: не виконує жодних дій (диспетчер сеансів безпосередньо керує збереженням повідомлень).
- Формування: передає дані без змін (формуванням контексту керує наявний у середовищі виконання конвеєр очищення → перевірки → обмеження).
- Ущільнення: делегує роботу вбудованому ущільненню шляхом узагальнення, яке створює єдине резюме давніших повідомлень і залишає останні повідомлення без змін.
- Після ходу: не виконує жодних дій.
systemPromptAddition.
Якщо plugins.slots.contextEngine не задано (або для нього встановлено "legacy"), цей рушій використовується автоматично.
Рушії-плагіни
Плагін може зареєструвати рушій контексту за допомогою API плагінів:ctx містить необов’язкові значення config, agentDir і workspaceDir,
щоб плагіни могли ініціалізувати стан окремого агента або робочого простору до
виконання першого перехоплювача життєвого циклу.
Потім увімкніть його в конфігурації:
Інтерфейс ContextEngine
Обов’язкові члени:assemble повертає AssembleResult з такими полями:
Message[]
обов'язково
Упорядковані повідомлення, які потрібно надіслати моделі.
number
обов'язково
Оцінка рушієм загальної кількості токенів у сформованому контексті. OpenClaw використовує її для ухвалення рішень щодо порога ущільнення та діагностичних звітів.
string
Додається на початок системного запиту.
"assembled" | "preassembly_may_overflow"
Визначає, яку оцінку кількості токенів засіб запуску використовує для
попередніх перевірок на випередження переповнення. Значення за замовчуванням —
"assembled", тобто для рушіїв, які не керують ущільненням,
перевіряється лише оцінка сформованого запиту.
Рушії, які задають ownsCompaction: true, самостійно керують допуском запитів,
тому OpenClaw за замовчуванням пропускає загальну попередню перевірку перед запитом. Установлюйте
"preassembly_may_overflow", лише якщо сформоване представлення може приховати ризик
переповнення в базовому транскрипті; тоді засіб запуску залишає загальну
попередню перевірку активною та бере максимальне значення з оцінки сформованого контексту й
оцінки історії сеансу до формування (без застосування вікна), вирішуючи, чи потрібно
заздалегідь виконати ущільнення. У будь-якому разі модель і надалі отримує саме
повернені повідомлення — promptAuthority впливає лише на попередню перевірку.ContextEngineProjection
Необов’язковий життєвий цикл проєкції для хостів із постійними серверними потоками (наприклад, app-server Codex).
mode: "thread_bootstrap" зі стабільним epoch указує хосту вставити сформований контекст один раз за епоху й повторно використовувати серверний потік, доки епоха не зміниться, замість повторного проєктування на кожному ході. Для звичайного проєктування на кожному ході не вказуйте це поле.compact повертає CompactResult. Коли ущільнення змінює ідентичність активного сеансу,
result.sessionTarget (типізований ContextEngineSessionTarget, що містить
ідентичність сеансу й область сховища) визначає наступний сеанс, який
має використовувати наступна повторна спроба або хід; result.sessionId дублює ідентифікатор наступного сеансу.
Необов’язкові члени:
Налаштування середовища виконання
Перехоплювачі життєвого циклу, які виконуються всередині OpenClaw, отримують необов’язковий об’єктruntimeSettings. Це версіонована внутрішня поверхня API
«виробник — споживач» лише для читання: OpenClaw створює її для вибраного рушія
контексту, а рушій контексту використовує її в перехоплювачах життєвого циклу. Вона не
відображається безпосередньо користувачам і не створює окремої поверхні звітності.
schemaVersion: наразі1runtime: хост OpenClaw, режим середовища виконання (normal,fallbackабоdegraded) та необов’язкові ідентифікатори тестового каркаса/середовища виконанняcontextEngineSelection: ідентифікатор вибраного рушія контексту та джерело виборуexecutionHost: ідентифікатор і мітка хоста для поверхні, що викликає хукmodel: запитана модель, визначена модель, провайдер і необов’язкове сімейство моделейlimits: бюджет токенів запиту та максимальна кількість вихідних токенів, якщо відомоdiagnostics: коди причин закритого резервного переходу та роботи в погіршеному режимі, якщо відомо
null; поля-дискримінатори,
як-от режим середовища виконання та джерело вибору, не допускають значення null. Старіші рушії
залишаються сумісними: якщо строгий застарілий рушій відхиляє runtimeSettings як невідому
властивість, OpenClaw повторює виклик життєвого циклу без неї замість поміщення
рушія в карантин.
Вимоги до хоста
Рушії контексту можуть оголошувати вимоги до можливостей хоста вinfo.hostRequirements.
OpenClaw перевіряє ці вимоги перед початком операції та безпечно припиняє роботу
з описовою помилкою, якщо вибране середовище виконання не може їх задовольнити.
Для запусків агента оголосіть assemble-before-prompt, якщо рушій має керувати
фактичним запитом моделі через assemble():
assemble-before-prompt.
Універсальні серверні компоненти CLI — ні, тому рушії, які вимагають цю можливість, відхиляються до
запуску процесу CLI.
Ізоляція збоїв
OpenClaw ізолює вибраний рушій плагіна від основного шляху відповіді. Якщо незастарілий рушій відсутній, не проходить перевірку контракту, генерує виняток під час створення фабрики або в методі життєвого циклу, OpenClaw поміщає цей рушій у карантин для поточного процесу Gateway і переводить роботу з рушієм контексту на вбудований рушійlegacy. Помилка реєструється разом із невдалою операцією, щоб
оператор міг виправити, оновити або вимкнути плагін, а агент не припиняв
відповідати.
Збої вимог до хоста обробляються інакше: коли рушій оголошує, що середовище виконання
не має необхідної можливості, OpenClaw безпечно припиняє роботу до початку запуску. Це
захищає рушії, які пошкодили б стан у разі запуску на непідтримуваному хості.
ownsCompaction
ownsCompaction визначає, чи залишається ввімкненим для запуску вбудоване автоматичне ущільнення середовища виконання OpenClaw у межах спроби:
ownsCompaction: true
ownsCompaction: true
Рушій керує поведінкою ущільнення. OpenClaw вимикає для цього запуску вбудоване автоматичне ущільнення середовища виконання OpenClaw і загальну попередню перевірку переповнення перед запитом, а реалізація
compact() рушія відповідає за /compact, ущільнення для відновлення після переповнення провайдера та будь-яке випереджальне ущільнення, яке потрібно виконати в afterTurn(). OpenClaw усе одно запускає запобіжник переповнення перед запитом, коли рушій повертає promptAuthority: "preassembly_may_overflow" з assemble().ownsCompaction: false or unset
ownsCompaction: false or unset
Вбудоване автоматичне ущільнення середовища виконання OpenClaw усе ще може виконуватися під час обробки запиту, але метод
compact() активного рушія все одно викликається для /compact і відновлення після переповнення.- Режим керування
- Режим делегування
Реалізуйте власний алгоритм ущільнення та встановіть
ownsCompaction: true.compact() небезпечна для активного рушія, який не керує ущільненням, оскільки вона вимикає звичайний шлях ущільнення /compact і відновлення після переповнення для цього слота рушія.
Довідник із конфігурації
Під час виконання слот є ексклюзивним — для певного запуску або операції ущільнення визначається лише один зареєстрований рушій контексту. Інші ввімкнені плагіни
kind: "context-engine" усе ще можуть завантажуватися та виконувати свій код реєстрації; plugins.slots.contextEngine лише вибирає ідентифікатор зареєстрованого рушія, який OpenClaw визначає, коли йому потрібен рушій контексту.Видалення плагіна: коли ви видаляєте плагін, який наразі вибрано як
plugins.slots.contextEngine, OpenClaw повертає слот до типового значення (legacy). Така сама поведінка скидання застосовується до plugins.slots.memory. Редагувати конфігурацію вручну не потрібно.Зв’язок з ущільненням і пам’яттю
Compaction
Compaction
Compaction — один з обов’язків рушія контексту. Застарілий рушій делегує роботу вбудованому механізму підсумовування OpenClaw. Рушії плагінів можуть реалізовувати будь-яку стратегію ущільнення (підсумки DAG, векторний пошук тощо).
Плагіни пам’яті
Плагіни пам’яті
Плагіни пам’яті (
plugins.slots.memory) відокремлені від рушіїв контексту. Плагіни пам’яті забезпечують пошук/отримання даних; рушії контексту керують тим, що бачить модель. Вони можуть працювати разом — рушій контексту може використовувати дані плагіна пам’яті під час складання. Рушіям плагінів, яким потрібен активний шлях запиту пам’яті, варто надавати перевагу buildMemorySystemPromptAddition(...) з openclaw/plugin-sdk/core, що перетворює активні розділи запиту пам’яті на готовий до додавання на початок systemPromptAddition. Якщо рушію потрібен низькорівневий контроль, він усе ще може отримувати необроблені рядки з openclaw/plugin-sdk/memory-host-core через buildActiveMemoryPromptSection(...).Обрізання сеансу
Обрізання сеансу
Обрізання старих результатів інструментів у пам’яті виконується незалежно від того, який рушій контексту активний.
Поради
- Використовуйте
openclaw doctor, щоб переконатися, що ваш рушій завантажується правильно. - Після перемикання рушіїв наявні сеанси продовжують працювати зі своєю поточною історією. Новий рушій застосовується до майбутніх запусків.
- Помилки рушія реєструються, а вибраний рушій плагіна поміщається в карантин для поточного процесу Gateway. OpenClaw переходить на
legacyдля звернень користувача, щоб відповіді могли надходити й надалі, але несправний плагін усе одно потрібно виправити, оновити, вимкнути або видалити. - Для розробки використовуйте
openclaw plugins install -l ./my-engine, щоб під’єднати локальний каталог плагіна без копіювання.
Пов’язані матеріали
- Compaction — підсумовування довгих розмов
- Контекст — як формується контекст для звернень агента
- Архітектура плагінів — реєстрація плагінів рушія контексту
- Маніфест плагіна — поля маніфесту плагіна
- Плагіни — огляд плагінів