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