Механізм контексту
Механізм контексту керує тим, як OpenClaw будує контекст моделі для кожного запуску. Він вирішує, які повідомлення включати, як підсумовувати давнішу історію та як керувати контекстом через межі субагентів. OpenClaw постачається з вбудованим механізмомlegacy. Плагіни можуть реєструвати
альтернативні механізми, які замінюють активний життєвий цикл механізму контексту.
Швидкий старт
Перевірте, який механізм активний:Встановлення плагіна механізму контексту
Плагіни механізму контексту встановлюються так само, як і будь-які інші плагіни OpenClaw. Спочатку встановіть його, а потім виберіть механізм у слоті:contextEngine у "legacy" (або
повністю видаліть цей ключ — "legacy" використовується за замовчуванням).
Як це працює
Щоразу, коли OpenClaw запускає запит моделі, механізм контексту бере участь у чотирьох точках життєвого циклу:- Ingest — викликається, коли до сесії додається нове повідомлення. Механізм може зберегти або проіндексувати повідомлення у власному сховищі даних.
- Assemble — викликається перед кожним запуском моделі. Механізм повертає впорядкований
набір повідомлень (і необов’язковий
systemPromptAddition), які вміщаються в бюджет токенів. - Compact — викликається, коли вікно контексту заповнене або коли користувач запускає
/compact. Механізм підсумовує давнішу історію, щоб звільнити місце. - After turn — викликається після завершення запуску. Механізм може зберегти стан, запустити фонове компактування або оновити індекси.
Життєвий цикл субагента (необов’язково)
Наразі OpenClaw викликає один хук життєвого циклу субагента:- onSubagentEnded — очищення після завершення сесії субагента або її прибирання.
prepareSubagentSpawn є частиною інтерфейсу для майбутнього використання, але
середовище виконання поки що його не викликає.
Додавання до системного промпту
Методassemble може повертати рядок systemPromptAddition. OpenClaw
додає його на початок системного промпту для запуску. Це дозволяє механізмам додавати
динамічні вказівки для пригадування, інструкції для retrieval або підказки з урахуванням контексту
без потреби у статичних файлах робочого простору.
Механізм legacy
Вбудований механізмlegacy зберігає початкову поведінку OpenClaw:
- Ingest: no-op (менеджер сесій безпосередньо обробляє збереження повідомлень).
- Assemble: pass-through (наявний конвеєр sanitize → validate → limit у середовищі виконання обробляє збирання контексту).
- Compact: делегує вбудованому компактуванню з підсумовуванням, яке створює єдине резюме старіших повідомлень і зберігає недоторканими недавні повідомлення.
- After turn: no-op.
systemPromptAddition.
Коли plugins.slots.contextEngine не встановлено (або встановлено в "legacy"), цей
механізм використовується автоматично.
Механізми на основі плагінів
Плагін може зареєструвати механізм контексту за допомогою API плагінів:Інтерфейс ContextEngine
Обов’язкові елементи:| Елемент | Тип | Призначення |
|---|---|---|
info | Властивість | Ідентифікатор механізму, назва, версія та чи керує він компактуванням |
ingest(params) | Метод | Зберегти одне повідомлення |
assemble(params) | Метод | Побудувати контекст для запуску моделі (повертає AssembleResult) |
compact(params) | Метод | Підсумувати/скоротити контекст |
assemble повертає AssembleResult з такими полями:
messages— упорядковані повідомлення для надсилання моделі.estimatedTokens(обов’язкове,number) — оцінка механізмом загальної кількості токенів у зібраному контексті. OpenClaw використовує це для рішень щодо порогу компактування та діагностичної звітності.systemPromptAddition(необов’язкове,string) — додається на початок системного промпту.
| Елемент | Тип | Призначення |
|---|---|---|
bootstrap(params) | Метод | Ініціалізувати стан механізму для сесії. Викликається один раз, коли механізм уперше бачить сесію (наприклад, імпорт історії). |
ingestBatch(params) | Метод | Прийняти завершений хід пакетом. Викликається після завершення запуску з усіма повідомленнями цього ходу одразу. |
afterTurn(params) | Метод | Робота життєвого циклу після запуску (збереження стану, запуск фонового компактування). |
prepareSubagentSpawn(params) | Метод | Налаштувати спільний стан для дочірньої сесії. |
onSubagentEnded(params) | Метод | Очистити ресурси після завершення субагента. |
dispose() | Метод | Звільнити ресурси. Викликається під час вимкнення gateway або перезавантаження плагіна — не для кожної сесії. |
ownsCompaction
ownsCompaction визначає, чи залишається вбудоване автоматичне компактування Pi під час спроби
увімкненим для запуску:
true— механізм керує поведінкою компактування. OpenClaw вимикає вбудоване в Pi автоматичне компактування для цього запуску, а реалізаціяcompact()механізму відповідає за/compact, компактування для відновлення після переповнення та будь-яке проактивне компактування, яке він хоче виконувати вafterTurn().falseабо не встановлено — вбудоване автоматичне компактування Pi все ще може виконуватися під час виконання промпту, але методcompact()активного механізму все одно викликається для/compactі відновлення після переповнення.
ownsCompaction: false не означає, що OpenClaw автоматично повертається
до шляху компактування механізму legacy.
Це означає, що існують два коректні шаблони плагінів:
- Режим керування — реалізуйте власний алгоритм компактування й встановіть
ownsCompaction: true. - Режим делегування — встановіть
ownsCompaction: falseі зробіть так, щобcompact()викликавdelegateCompactionToRuntime(...)зopenclaw/plugin-sdk/core, щоб використовувати вбудовану поведінку компактування OpenClaw.
compact() є небезпечним для активного некеруючого механізму, оскільки він
вимикає звичайний шлях компактування /compact і відновлення після переповнення для цього
слота механізму.
Довідка з конфігурації
kind: "context-engine" все одно можуть завантажуватися й виконувати свій код
реєстрації; plugins.slots.contextEngine лише вибирає, який зареєстрований ідентифікатор механізму
OpenClaw визначає, коли йому потрібен механізм контексту.
Зв’язок із компактуванням і пам’яттю
- Compaction — це одна з відповідальностей механізму контексту. Механізм legacy делегує вбудованому підсумовуванню OpenClaw. Механізми на основі плагінів можуть реалізовувати будь-яку стратегію компактування (DAG-резюме, vector retrieval тощо).
- Плагіни пам’яті (
plugins.slots.memory) відокремлені від механізмів контексту. Плагіни пам’яті забезпечують пошук/retrieval; механізми контексту контролюють, що бачить модель. Вони можуть працювати разом — механізм контексту може використовувати дані плагіна пам’яті під час збирання. Механізмам на основі плагінів, яким потрібен активний шлях промпту пам’яті, слід віддавати перевагуbuildMemorySystemPromptAddition(...)зopenclaw/plugin-sdk/core, який перетворює активні секції промпту пам’яті на готовий до додавання на початокsystemPromptAddition. Якщо механізму потрібен контроль нижчого рівня, він усе одно може отримувати сирі рядки зopenclaw/plugin-sdk/memory-host-coreчерезbuildActiveMemoryPromptSection(...). - Обрізання сесії (скорочення старих результатів інструментів у пам’яті) усе ще виконується незалежно від того, який механізм контексту активний.
Поради
- Використовуйте
openclaw doctor, щоб перевірити, чи ваш механізм завантажується правильно. - Якщо ви перемикаєте механізми, наявні сесії продовжують працювати з поточною історією. Новий механізм перебирає роботу на себе для майбутніх запусків.
- Помилки механізму журналюються й відображаються в діагностиці. Якщо механізм плагіна
не вдається зареєструвати або не вдається визначити вибраний ідентифікатор механізму, OpenClaw
не виконує автоматичний перехід; запуски завершуються з помилкою, доки ви не виправите плагін або
не перемкнете
plugins.slots.contextEngineназад на"legacy". - Для розробки використовуйте
openclaw plugins install -l ./my-engine, щоб підключити локальний каталог плагіна без копіювання.
Пов’язане
- Контекст — як будується контекст для ходів агента
- Архітектура плагінів — реєстрація плагінів механізму контексту
- Компактування — підсумовування довгих розмов