chore(i18n): refresh uk translations
This commit is contained in:
parent
2df8214e9a
commit
a97c8e7155
@ -6,21 +6,22 @@ read_when:
|
||||
summary: 'Рушій контексту: підключуване збирання контексту, Compaction і життєвий цикл субагентів'
|
||||
title: Рушій контексту
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T04:13:24Z"
|
||||
generated_at: "2026-04-25T01:34:06Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 8f4e5f01f945f7fe3056587f2aa60bec607dd0dd64b29e9ab2afe8e77b5d2f1e
|
||||
source_hash: 1dc4a6f0a9fb669893a6a877924562d05168fde79b3c41df335d697e651d534d
|
||||
source_path: concepts/context-engine.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
**Рушій контексту** керує тим, як OpenClaw будує контекст моделі для кожного запуску:
|
||||
які повідомлення включати, як підсумовувати давнішу історію та як керувати
|
||||
які повідомлення включати, як підсумовувати старішу історію та як керувати
|
||||
контекстом через межі субагентів.
|
||||
|
||||
OpenClaw постачається з вбудованим рушієм `legacy` і використовує його типово — більшості
|
||||
користувачів ніколи не потрібно це змінювати. Встановлюйте та вибирайте рушій Plugin лише тоді,
|
||||
коли вам потрібна інша логіка збирання, Compaction або пригадування між сесіями.
|
||||
OpenClaw постачається з вбудованим рушієм `legacy` і використовує його за
|
||||
замовчуванням — більшості користувачів ніколи не потрібно це змінювати. Установлюйте
|
||||
та вибирайте рушій Plugin лише тоді, коли вам потрібна інша логіка збирання,
|
||||
Compaction або відновлення між сесіями.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
@ -28,46 +29,46 @@ OpenClaw постачається з вбудованим рушієм `legacy`
|
||||
|
||||
```bash
|
||||
openclaw doctor
|
||||
# або перегляньте конфігурацію напряму:
|
||||
# or inspect config directly:
|
||||
cat ~/.openclaw/openclaw.json | jq '.plugins.slots.contextEngine'
|
||||
```
|
||||
|
||||
### Встановлення Plugin рушія контексту
|
||||
### Установлення Plugin рушія контексту
|
||||
|
||||
Plugins рушія контексту встановлюються так само, як і будь-який інший Plugin OpenClaw. Спочатку
|
||||
встановіть Plugin, а потім виберіть рушій у слоті:
|
||||
встановіть його, а потім виберіть рушій у слоті:
|
||||
|
||||
```bash
|
||||
# Встановити з npm
|
||||
# Install from npm
|
||||
openclaw plugins install @martian-engineering/lossless-claw
|
||||
|
||||
# Або встановити з локального шляху (для розробки)
|
||||
# Or install from a local path (for development)
|
||||
openclaw plugins install -l ./my-context-engine
|
||||
```
|
||||
|
||||
Потім увімкніть Plugin і виберіть його як активний рушій у своїй конфігурації:
|
||||
Потім увімкніть Plugin і виберіть його як активний рушій у вашій конфігурації:
|
||||
|
||||
```json5
|
||||
// openclaw.json
|
||||
{
|
||||
plugins: {
|
||||
slots: {
|
||||
contextEngine: "lossless-claw", // має збігатися із зареєстрованим id рушія Plugin
|
||||
contextEngine: "lossless-claw", // must match the plugin's registered engine id
|
||||
},
|
||||
entries: {
|
||||
"lossless-claw": {
|
||||
enabled: true,
|
||||
// Тут розміщується конфігурація, специфічна для Plugin (див. документацію Plugin)
|
||||
// Plugin-specific config goes here (see the plugin's docs)
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Після встановлення та налаштування перезапустіть gateway.
|
||||
Після встановлення та налаштування перезапустіть Gateway.
|
||||
|
||||
Щоб повернутися до вбудованого рушія, встановіть `contextEngine` у `"legacy"` (або
|
||||
повністю видаліть цей ключ — `"legacy"` використовується типово).
|
||||
Щоб повернутися до вбудованого рушія, установіть `contextEngine` у `"legacy"` (або
|
||||
повністю видаліть цей ключ — `"legacy"` використовується за замовчуванням).
|
||||
|
||||
## Як це працює
|
||||
|
||||
@ -76,55 +77,55 @@ openclaw plugins install -l ./my-context-engine
|
||||
|
||||
1. **Ingest** — викликається, коли до сесії додається нове повідомлення. Рушій
|
||||
може зберегти або проіндексувати повідомлення у власному сховищі даних.
|
||||
2. **Assemble** — викликається перед кожним запуском моделі. Рушій повертає впорядкований
|
||||
набір повідомлень (і необов’язковий `systemPromptAddition`), які вміщаються
|
||||
в бюджет токенів.
|
||||
2. **Assemble** — викликається перед кожним запуском моделі. Рушій повертає
|
||||
впорядкований набір повідомлень (і необов’язковий `systemPromptAddition`), які
|
||||
вміщаються в бюджет токенів.
|
||||
3. **Compact** — викликається, коли вікно контексту заповнене, або коли користувач запускає
|
||||
`/compact`. Рушій підсумовує давнішу історію, щоб звільнити місце.
|
||||
`/compact`. Рушій підсумовує старішу історію, щоб звільнити місце.
|
||||
4. **After turn** — викликається після завершення запуску. Рушій може зберегти стан,
|
||||
запустити фоновий Compaction або оновити індекси.
|
||||
|
||||
Для вбудованого не-ACP harness Codex OpenClaw застосовує той самий життєвий цикл,
|
||||
Для комплектного не-ACP harness Codex OpenClaw застосовує той самий життєвий цикл,
|
||||
проєктуючи зібраний контекст в інструкції розробника Codex і запит поточного
|
||||
ходу. Codex, як і раніше, керує своєю рідною історією гілки та власним засобом Compaction.
|
||||
кроку. Codex, як і раніше, керує власною нативною історією потоку та нативним компактором.
|
||||
|
||||
### Життєвий цикл субагента (необов’язково)
|
||||
|
||||
OpenClaw викликає два необов’язкові хуки життєвого циклу субагента:
|
||||
OpenClaw викликає два необов’язкові гачки життєвого циклу субагента:
|
||||
|
||||
- **prepareSubagentSpawn** — підготувати спільний стан контексту перед початком
|
||||
дочірнього запуску. Хук отримує ключі сесії батьківського/дочірнього процесу, `contextMode`
|
||||
(`isolated` або `fork`), доступні id/файли transcript і необов’язковий TTL.
|
||||
Якщо він повертає дескриптор rollback, OpenClaw викликає його, коли spawn завершується помилкою
|
||||
після успішної підготовки.
|
||||
- **onSubagentEnded** — очистити дані, коли сесія субагента завершується або прибирається.
|
||||
- **prepareSubagentSpawn** — підготувати спільний стан контексту перед тим, як
|
||||
почнеться дочірній запуск. Гачок отримує ключі сесій батьківського й дочірнього процесів, `contextMode`
|
||||
(`isolated` або `fork`), доступні ідентифікатори/файли транскриптів та необов’язковий TTL.
|
||||
Якщо він повертає дескриптор відкату, OpenClaw викликає його, коли запуск
|
||||
завершується невдачею після успішної підготовки.
|
||||
- **onSubagentEnded** — очистити дані після завершення сесії субагента або її збирання.
|
||||
|
||||
### Додавання до системного запиту
|
||||
|
||||
Метод `assemble` може повертати рядок `systemPromptAddition`. OpenClaw
|
||||
додає його на початок системного запиту для запуску. Це дає змогу рушіям
|
||||
вбудовувати динамічні вказівки для пригадування, інструкції для retrieval або
|
||||
підказки з урахуванням контексту без потреби у статичних файлах робочого простору.
|
||||
додає його на початок системного запиту для запуску. Це дає змогу рушіям впроваджувати
|
||||
динамічні вказівки щодо відновлення, інструкції з отримання даних або підказки,
|
||||
що враховують контекст, без потреби у статичних файлах робочого простору.
|
||||
|
||||
## Рушій legacy
|
||||
|
||||
Вбудований рушій `legacy` зберігає початкову поведінку OpenClaw:
|
||||
|
||||
- **Ingest**: no-op (менеджер сесії безпосередньо обробляє збереження повідомлень).
|
||||
- **Assemble**: наскрізний режим (контекст збирання обробляє наявний конвеєр sanitize → validate → limit
|
||||
у середовищі виконання).
|
||||
- **Ingest**: no-op (менеджер сесій безпосередньо обробляє збереження повідомлень).
|
||||
- **Assemble**: pass-through (наявний конвеєр sanitize → validate → limit
|
||||
у середовищі виконання обробляє збирання контексту).
|
||||
- **Compact**: делегує вбудованому підсумковому Compaction, який створює
|
||||
одне підсумкове резюме старіших повідомлень і зберігає недоторканими недавні повідомлення.
|
||||
єдиний підсумок старіших повідомлень і зберігає нещодавні повідомлення без змін.
|
||||
- **After turn**: no-op.
|
||||
|
||||
Рушій legacy не реєструє інструменти й не надає `systemPromptAddition`.
|
||||
|
||||
Якщо `plugins.slots.contextEngine` не задано (або задано як `"legacy"`), цей
|
||||
Коли `plugins.slots.contextEngine` не задано (або його значення — `"legacy"`), цей
|
||||
рушій використовується автоматично.
|
||||
|
||||
## Plugins рушія
|
||||
## Рушії Plugin
|
||||
|
||||
Plugin може зареєструвати рушій контексту через API Plugin:
|
||||
Plugin може зареєструвати рушій контексту за допомогою API Plugin:
|
||||
|
||||
```ts
|
||||
import { buildMemorySystemPromptAddition } from "openclaw/plugin-sdk/core";
|
||||
@ -138,12 +139,12 @@ export default function register(api) {
|
||||
},
|
||||
|
||||
async ingest({ sessionId, message, isHeartbeat }) {
|
||||
// Зберегти повідомлення у вашому сховищі даних
|
||||
// Store the message in your data store
|
||||
return { ingested: true };
|
||||
},
|
||||
|
||||
async assemble({ sessionId, messages, tokenBudget, availableTools, citationsMode }) {
|
||||
// Повернути повідомлення, що вміщаються в бюджет
|
||||
// Return messages that fit the budget
|
||||
return {
|
||||
messages: buildContext(messages, tokenBudget),
|
||||
estimatedTokens: countTokens(messages),
|
||||
@ -155,7 +156,7 @@ export default function register(api) {
|
||||
},
|
||||
|
||||
async compact({ sessionId, force }) {
|
||||
// Підсумувати старіший контекст
|
||||
// Summarize older context
|
||||
return { ok: true, compacted: true };
|
||||
},
|
||||
}));
|
||||
@ -183,107 +184,111 @@ export default function register(api) {
|
||||
|
||||
Обов’язкові елементи:
|
||||
|
||||
| Елемент | Тип | Призначення |
|
||||
| ------------------ | -------- | --------------------------------------------------------- |
|
||||
| `info` | Властивість | Id рушія, назва, версія та ознака того, чи він керує Compaction |
|
||||
| `ingest(params)` | Метод | Зберегти одне повідомлення |
|
||||
| Елемент | Тип | Призначення |
|
||||
| ------------------ | -------- | -------------------------------------------------------- |
|
||||
| `info` | Властивість | Ідентифікатор рушія, назва, версія та ознака того, чи керує він Compaction |
|
||||
| `ingest(params)` | Метод | Зберегти одне повідомлення |
|
||||
| `assemble(params)` | Метод | Побудувати контекст для запуску моделі (повертає `AssembleResult`) |
|
||||
| `compact(params)` | Метод | Підсумувати/скоротити контекст |
|
||||
| `compact(params)` | Метод | Підсумувати/скоротити контекст |
|
||||
|
||||
`assemble` повертає `AssembleResult` із:
|
||||
`assemble` повертає `AssembleResult` із такими полями:
|
||||
|
||||
- `messages` — упорядковані повідомлення для надсилання моделі.
|
||||
- `estimatedTokens` (обов’язково, `number`) — оцінка рушієм загальної
|
||||
кількості токенів у зібраному контексті. OpenClaw використовує це для рішень
|
||||
щодо порога Compaction і для діагностичної звітності.
|
||||
- `estimatedTokens` (обов’язково, `number`) — оцінка рушієм загальної кількості
|
||||
токенів у зібраному контексті. OpenClaw використовує це для рішень щодо порога
|
||||
Compaction і діагностичної звітності.
|
||||
- `systemPromptAddition` (необов’язково, `string`) — додається на початок системного запиту.
|
||||
|
||||
Необов’язкові елементи:
|
||||
|
||||
| Елемент | Тип | Призначення |
|
||||
| ------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------- |
|
||||
| `bootstrap(params)` | Метод | Ініціалізувати стан рушія для сесії. Викликається один раз, коли рушій уперше бачить сесію (наприклад, імпорт історії). |
|
||||
| `ingestBatch(params)` | Метод | Прийняти завершений хід пакетно. Викликається після завершення запуску, одразу з усіма повідомленнями цього ходу. |
|
||||
| `afterTurn(params)` | Метод | Робота життєвого циклу після запуску (зберегти стан, запустити фоновий Compaction). |
|
||||
| `prepareSubagentSpawn(params)` | Метод | Налаштувати спільний стан для дочірньої сесії перед її початком. |
|
||||
| `onSubagentEnded(params)` | Метод | Очистити дані після завершення субагента. |
|
||||
| `dispose()` | Метод | Звільнити ресурси. Викликається під час вимкнення gateway або перезавантаження Plugin — не для кожної сесії. |
|
||||
| Елемент | Тип | Призначення |
|
||||
| ------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------- |
|
||||
| `bootstrap(params)` | Метод | Ініціалізувати стан рушія для сесії. Викликається один раз, коли рушій уперше бачить сесію (наприклад, імпортує історію). |
|
||||
| `ingestBatch(params)` | Метод | Прийняти завершений хід пакетом. Викликається після завершення запуску, одразу з усіма повідомленнями цього ходу. |
|
||||
| `afterTurn(params)` | Метод | Робота життєвого циклу після запуску (зберегти стан, запустити фоновий Compaction). |
|
||||
| `prepareSubagentSpawn(params)` | Метод | Налаштувати спільний стан для дочірньої сесії перед її початком. |
|
||||
| `onSubagentEnded(params)` | Метод | Очистити дані після завершення субагента. |
|
||||
| `dispose()` | Метод | Вивільнити ресурси. Викликається під час вимкнення Gateway або перезавантаження Plugin — не для кожної сесії. |
|
||||
|
||||
### ownsCompaction
|
||||
|
||||
`ownsCompaction` керує тим, чи залишається увімкненим вбудований авто-Compaction Pi
|
||||
під час спроби виконання запуску:
|
||||
`ownsCompaction` визначає, чи залишається увімкненим вбудований автокомпакшн Pi
|
||||
усередині спроби для цього запуску:
|
||||
|
||||
- `true` — рушій керує поведінкою Compaction. OpenClaw вимикає вбудований у Pi
|
||||
авто-Compaction для цього запуску, а реалізація `compact()` рушія відповідає
|
||||
за `/compact`, відновлювальний Compaction при переповненні та будь-який проактивний
|
||||
Compaction, який він хоче виконати в `afterTurn()`.
|
||||
- `false` або не задано — вбудований авто-Compaction Pi усе ще може запускатися під час
|
||||
- `true` — рушій керує поведінкою Compaction. OpenClaw вимикає вбудований
|
||||
автокомпакшн Pi для цього запуску, а реалізація `compact()` цього рушія
|
||||
відповідає за `/compact`, відновлювальний Compaction під час переповнення
|
||||
та будь-який проактивний Compaction, який він хоче виконати в `afterTurn()`. OpenClaw
|
||||
усе ще може виконувати захист від переповнення перед запитом; коли він прогнозує,
|
||||
що повний транскрипт переповнить ліміт, шлях відновлення викликає `compact()` активного
|
||||
рушія перед надсиланням іншого запиту.
|
||||
- `false` або не задано — вбудований автокомпакшн Pi усе ще може виконуватися під час
|
||||
виконання запиту, але метод `compact()` активного рушія все одно викликається для
|
||||
`/compact` і відновлення після переповнення.
|
||||
|
||||
`ownsCompaction: false` **не** означає, що OpenClaw автоматично повертається
|
||||
до шляху Compaction рушія legacy.
|
||||
`ownsCompaction: false` **не** означає, що OpenClaw автоматично повертається до
|
||||
шляху Compaction рушія legacy.
|
||||
|
||||
Це означає, що існують два коректні шаблони Plugin:
|
||||
Це означає, що існують два коректні шаблони для Plugin:
|
||||
|
||||
- **Режим володіння** — реалізуйте власний алгоритм Compaction і встановіть
|
||||
`ownsCompaction: true`.
|
||||
- **Режим делегування** — встановіть `ownsCompaction: false` і нехай `compact()` викликає
|
||||
`delegateCompactionToRuntime(...)` з `openclaw/plugin-sdk/core`, щоб використовувати
|
||||
- **Режим делегування** — установіть `ownsCompaction: false` і нехай `compact()` викликає
|
||||
`delegateCompactionToRuntime(...)` з `openclaw/plugin-sdk/core`, щоб використати
|
||||
вбудовану поведінку Compaction OpenClaw.
|
||||
|
||||
No-op `compact()` є небезпечним для активного рушія без володіння, тому що це
|
||||
вимикає звичайний шлях `/compact` і відновлення після переповнення для слота цього рушія.
|
||||
Порожній `compact()` є небезпечним для активного неволодіючого рушія, оскільки він
|
||||
вимикає звичайний шлях `/compact` і відновлювального Compaction після переповнення для цього
|
||||
слота рушія.
|
||||
|
||||
## Довідник з конфігурації
|
||||
## Довідник із конфігурації
|
||||
|
||||
```json5
|
||||
{
|
||||
plugins: {
|
||||
slots: {
|
||||
// Вибір активного рушія контексту. Типово: "legacy".
|
||||
// Встановіть id Plugin, щоб використовувати рушій Plugin.
|
||||
// Select the active context engine. Default: "legacy".
|
||||
// Set to a plugin id to use a plugin engine.
|
||||
contextEngine: "legacy",
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Слот є ексклюзивним під час виконання — для конкретного запуску або операції Compaction
|
||||
розв’язується лише один зареєстрований рушій контексту. Інші увімкнені
|
||||
Plugins `kind: "context-engine"` усе ще можуть завантажуватися й виконувати свій код
|
||||
реєстрації; `plugins.slots.contextEngine` лише вибирає, який зареєстрований id рушія
|
||||
OpenClaw розв’язує, коли йому потрібен рушій контексту.
|
||||
Слот є взаємовиключним під час виконання — для певного запуску або операції Compaction
|
||||
визначається лише один зареєстрований рушій контексту. Інші ввімкнені
|
||||
Plugins `kind: "context-engine"` все одно можуть завантажуватися й виконувати свій код
|
||||
реєстрації; `plugins.slots.contextEngine` лише вибирає, який зареєстрований ідентифікатор рушія
|
||||
OpenClaw використовує, коли йому потрібен рушій контексту.
|
||||
|
||||
## Зв’язок із Compaction і пам’яттю
|
||||
|
||||
- **Compaction** — це одна з відповідальностей рушія контексту. Рушій legacy
|
||||
делегує вбудованому механізму підсумовування OpenClaw. Plugins рушія можуть реалізовувати
|
||||
будь-яку стратегію Compaction (підсумки DAG, vector retrieval тощо).
|
||||
делегує вбудованому механізму підсумовування OpenClaw. Рушії Plugin можуть реалізовувати
|
||||
будь-яку стратегію Compaction (DAG-підсумки, векторне отримання тощо).
|
||||
- **Plugins пам’яті** (`plugins.slots.memory`) відокремлені від рушіїв контексту.
|
||||
Plugins пам’яті надають пошук/retrieval; рушії контексту керують тим, що
|
||||
бачить модель. Вони можуть працювати разом — рушій контексту може використовувати дані
|
||||
Plugin пам’яті під час збирання. Plugins рушія, яким потрібен шлях запиту
|
||||
Active Memory, мають надавати перевагу `buildMemorySystemPromptAddition(...)` з
|
||||
Plugins пам’яті забезпечують пошук/отримання; рушії контексту керують тим,
|
||||
що бачить модель. Вони можуть працювати разом — рушій контексту може використовувати
|
||||
дані Plugin пам’яті під час збирання. Рушії Plugin, яким потрібен шлях
|
||||
запиту Active Memory, мають надавати перевагу `buildMemorySystemPromptAddition(...)` з
|
||||
`openclaw/plugin-sdk/core`, який перетворює активні секції запиту пам’яті
|
||||
на готовий до додавання на початок `systemPromptAddition`. Якщо рушію потрібен
|
||||
контроль нижчого рівня, він усе одно може отримувати сирі рядки з
|
||||
у готовий до додавання на початок `systemPromptAddition`. Якщо рушію потрібен контроль
|
||||
нижчого рівня, він усе ще може отримувати сирі рядки з
|
||||
`openclaw/plugin-sdk/memory-host-core` через
|
||||
`buildActiveMemoryPromptSection(...)`.
|
||||
- **Обрізання сесій** (усічення старих результатів інструментів у пам’яті) усе ще виконується
|
||||
- **Обрізання сесії** (скорочення старих результатів інструментів у пам’яті) усе ще виконується
|
||||
незалежно від того, який рушій контексту активний.
|
||||
|
||||
## Поради
|
||||
|
||||
- Використовуйте `openclaw doctor`, щоб перевірити, чи ваш рушій завантажується коректно.
|
||||
- Якщо ви перемикаєте рушії, наявні сесії продовжують працювати з поточною історією.
|
||||
Новий рушій перебирає керування для майбутніх запусків.
|
||||
- Помилки рушія журналюються й відображаються в діагностиці. Якщо рушій Plugin
|
||||
не вдається зареєструвати або не вдається розв’язати вибраний id рушія, OpenClaw
|
||||
не виконує автоматичного повернення; запуски завершуватимуться помилкою, доки ви не виправите Plugin або
|
||||
не перемкнете `plugins.slots.contextEngine` назад на `"legacy"`.
|
||||
- Для розробки використовуйте `openclaw plugins install -l ./my-engine`, щоб зв’язати
|
||||
- Використовуйте `openclaw doctor`, щоб переконатися, що ваш рушій завантажується правильно.
|
||||
- Якщо перемикати рушії, наявні сесії продовжать роботу зі своєю поточною історією.
|
||||
Новий рушій візьме керування на себе для майбутніх запусків.
|
||||
- Помилки рушія журналюються та відображаються в діагностиці. Якщо рушій Plugin
|
||||
не вдається зареєструвати або не вдається визначити вибраний ідентифікатор рушія, OpenClaw
|
||||
не виконує автоматичний відкат; запуски завершуватимуться помилкою, доки ви не виправите Plugin або
|
||||
не повернете `plugins.slots.contextEngine` до `"legacy"`.
|
||||
- Для розробки використовуйте `openclaw plugins install -l ./my-engine`, щоб прив’язати
|
||||
локальний каталог Plugin без копіювання.
|
||||
|
||||
Див. також: [Compaction](/uk/concepts/compaction), [Контекст](/uk/concepts/context),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user