chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-02 05:37:48 +00:00
parent 1bdfb73f01
commit 1fd3431ddb
3 changed files with 251 additions and 243 deletions

View File

@ -1,20 +1,20 @@
---
read_when:
- Ви хочете переглянути список збережених сеансів і побачити нещодавню активність
- Ви хочете вивести список збережених сеансів і переглянути нещодавню активність
summary: Довідник CLI для `openclaw sessions` (список збережених сеансів + використання)
title: Сеанси
x-i18n:
generated_at: "2026-04-28T22:44:10Z"
generated_at: "2026-05-02T05:36:09Z"
model: gpt-5.5
provider: openai
source_hash: 9fea2014f538b00a27fa0078391a421843052333c5bcfc8100fced515eed0004
source_hash: 4e7e5017ba5a6194ac10d3a18ea9b711da57bc2ef1696776622cd3be2a2fbf43
source_path: cli/sessions.md
workflow: 16
---
# `openclaw sessions`
Перелічує збережені сесії розмов.
Перелічує збережені сеанси розмов.
```bash
openclaw sessions
@ -27,28 +27,28 @@ openclaw sessions --json
Вибір області:
- типово: налаштоване стандартне сховище агента
- default: налаштоване сховище агента за замовчуванням
- `--verbose`: докладне журналювання
- `--agent <id>`: одне налаштоване сховище агента
- `--all-agents`: об'єднати всі налаштовані сховища агентів
- `--all-agents`: обєднати всі налаштовані сховища агентів
- `--store <path>`: явний шлях до сховища (не можна поєднувати з `--agent` або `--all-agents`)
Експортувати пакет траєкторії для збереженої сесії:
Експортуйте пакет траєкторії для збереженого сеансу:
```bash
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --workspace .
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --output bug-123 --json
```
Це шлях команди, який використовується slash-командою `/export-trajectory` після того,
як власник схвалює запит на виконання. Вихідний каталог завжди визначається
Це шлях команди, який використовується slash-командою `/export-trajectory` після
того, як власник схвалить запит на виконання. Каталог виводу завжди визначається
всередині `.openclaw/trajectory-exports/` у вибраному робочому просторі.
`openclaw sessions --all-agents` читає налаштовані сховища агентів. Виявлення сесій Gateway і ACP
ширше: воно також включає сховища лише на диску, знайдені під
стандартним коренем `agents/` або шаблонним коренем `session.store`. Ці
виявлені сховища мають визначатися як звичайні файли `sessions.json` всередині
кореня агента; символьні посилання та шляхи поза коренем пропускаються.
`openclaw sessions --all-agents` читає налаштовані сховища агентів. Виявлення
сеансів Gateway і ACP ширше: воно також включає сховища лише на диску, знайдені
під коренем `agents/` за замовчуванням або шаблонним коренем `session.store`. Такі
виявлені сховища мають визначатися як звичайні файли `sessions.json` усередині
кореня агента; символьні посилання та шляхи за межами кореня пропускаються.
Приклади JSON:
@ -73,7 +73,7 @@ openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:12
## Обслуговування очищення
Запустити обслуговування зараз (замість очікування наступного циклу запису):
Запустіть обслуговування зараз (замість очікування наступного циклу запису):
```bash
openclaw sessions cleanup --dry-run
@ -84,19 +84,19 @@ openclaw sessions cleanup --enforce --active-key "agent:main:telegram:direct:123
openclaw sessions cleanup --json
```
`openclaw sessions cleanup` використовує налаштування `session.maintenance` з конфігурації:
`openclaw sessions cleanup` використовує параметри `session.maintenance` з конфігурації:
- Примітка щодо області: `openclaw sessions cleanup` обслуговує сховища сесій, транскрипти та супровідні файли траєкторій. Вона не обрізає журнали запусків Cron (`cron/runs/<jobId>.jsonl`), якими керують `cron.runLog.maxBytes` і `cron.runLog.keepLines` у [конфігурації Cron](/uk/automation/cron-jobs#configuration) та які пояснено в [обслуговуванні Cron](/uk/automation/cron-jobs#maintenance).
- Примітка щодо області: `openclaw sessions cleanup` обслуговує сховища сеансів, транскрипти та побічні файли траєкторій. Вона не обрізає журнали запусків cron (`cron/runs/<jobId>.jsonl`), якими керують `cron.runLog.maxBytes` і `cron.runLog.keepLines` у [конфігурації Cron](/uk/automation/cron-jobs#configuration) та які пояснено в [обслуговуванні Cron](/uk/automation/cron-jobs#maintenance).
- `--dry-run`: попередньо показати, скільки записів було б очищено/обмежено без запису.
- У текстовому режимі dry-run друкує таблицю дій для кожної сесії (`Action`, `Key`, `Age`, `Model`, `Flags`), щоб було видно, що буде збережено, а що видалено.
- `--dry-run`: попередньо показати, скільки записів було б обрізано/обмежено без запису.
- У текстовому режимі dry-run друкує таблицю дій для кожного сеансу (`Action`, `Key`, `Age`, `Model`, `Flags`), щоб ви могли побачити, що буде збережено, а що видалено.
- `--enforce`: застосувати обслуговування, навіть коли `session.maintenance.mode` має значення `warn`.
- `--fix-missing`: видалити записи, чиї файли транскриптів відсутні, навіть якщо зазвичай вони ще не підпали б під обмеження віку/кількості.
- `--active-key <key>`: захистити певний активний ключ від витіснення через дисковий бюджет.
- `--fix-missing`: видалити записи, чиї файли транскриптів відсутні, навіть якщо вони зазвичай ще не підлягали б вилученню за віком/кількістю.
- `--active-key <key>`: захистити конкретний активний ключ від витіснення через дисковий бюджет. Стійкі зовнішні вказівники розмов, як-от групові сеанси та сеанси чату в межах потоку, також зберігаються під час обслуговування за віком/кількістю/дисковим бюджетом.
- `--agent <id>`: запустити очищення для одного налаштованого сховища агента.
- `--all-agents`: запустити очищення для всіх налаштованих сховищ агентів.
- `--store <path>`: виконати для певного файла `sessions.json`.
- `--json`: надрукувати зведення JSON. З `--all-agents` вивід містить одне зведення для кожного сховища.
- `--store <path>`: запустити для певного файла `sessions.json`.
- `--json`: надрукувати підсумок JSON. З `--all-agents` вивід містить по одному підсумку для кожного сховища.
`openclaw sessions cleanup --all-agents --dry-run --json`:
@ -126,11 +126,11 @@ openclaw sessions cleanup --json
}
```
Пов'язано:
Пов’язане:
- Конфігурація сесій: [довідник конфігурації](/uk/gateway/config-agents#session)
- Конфігурація сеансу: [Довідник конфігурації](/uk/gateway/config-agents#session)
## Пов'язано
## Пов’язане
- [Довідник CLI](/uk/cli)
- [Керування сесіями](/uk/concepts/session)
- [Керування сеансами](/uk/concepts/session)

View File

@ -2,39 +2,39 @@
read_when:
- Ви хочете зрозуміти маршрутизацію та ізоляцію сеансів
- Ви хочете налаштувати область дії DM для багатокористувацьких конфігурацій
- Ви налагоджуєте щоденні скидання сесій або скидання сесій через бездіяльність
- Ви налагоджуєте щоденне скидання сеансів або скидання після бездіяльності
summary: Як OpenClaw керує сесіями розмов
title: Керування сеансами
x-i18n:
generated_at: "2026-05-01T12:19:28Z"
generated_at: "2026-05-02T05:36:26Z"
model: gpt-5.5
provider: openai
source_hash: f1bde2ab8f1589ed477df959aecf59c282bb086bfe93159397252021a1d6393b
source_hash: b2fd0c9e880242a8d0070c24bd1f7971e4082344240e28632e2e3ca032404807
source_path: concepts/session.md
workflow: 16
---
OpenClaw організовує розмови в **сесії**. Кожне повідомлення маршрутизується до
сесії залежно від того, звідки воно надійшло -- приватні повідомлення, групові чати, cron-завдання тощо.
сесії залежно від того, звідки воно надійшло -- особисті повідомлення, групові чати, завдання cron тощо.
## Як маршрутизуються повідомлення
| Джерело | Поведінка |
| ------------------ | ------------------------------------ |
| Приватні повідомлення | Спільна сесія за замовчуванням |
| Групові чати | Ізольовано для кожної групи |
| Кімнати/канали | Ізольовано для кожної кімнати |
| Cron-завдання | Нова сесія для кожного запуску |
| Webhook | Ізольовано для кожного hook |
| Джерело | Поведінка |
| ------------------ | --------------------------------- |
| Особисті повідомлення | Спільна сесія за замовчуванням |
| Групові чати | Ізольовано для кожної групи |
| Кімнати/канали | Ізольовано для кожної кімнати |
| Завдання Cron | Нова сесія для кожного запуску |
| Webhooks | Ізольовано для кожного hook |
## Ізоляція приватних повідомлень
## Ізоляція особистих повідомлень
За замовчуванням усі приватні повідомлення мають спільну сесію для безперервності. Це підходить для
За замовчуванням усі особисті повідомлення використовують одну сесію для безперервності. Це підходить для
налаштувань з одним користувачем.
<Warning>
Якщо кілька людей можуть надсилати повідомлення вашому агенту, увімкніть ізоляцію приватних повідомлень. Без цього всі
користувачі мають спільний контекст розмови -- приватні повідомлення Аліси були б
Якщо кілька людей можуть писати вашому агенту, увімкніть ізоляцію особистих повідомлень. Без неї всі
користувачі спільно використовують той самий контекст розмови -- приватні повідомлення Аліси були б
видимі Бобу.
</Warning>
@ -48,55 +48,56 @@ OpenClaw організовує розмови в **сесії**. Кожне п
}
```
Інші варіанти:
Інші параметри:
- `main` (за замовчуванням) -- усі приватні повідомлення мають одну спільну сесію.
- `main` (за замовчуванням) -- усі особисті повідомлення використовують одну сесію.
- `per-peer` -- ізолювати за відправником (між каналами).
- `per-channel-peer` -- ізолювати за каналом + відправником (рекомендовано).
- `per-account-channel-peer` -- ізолювати за обліковим записом + каналом + відправником.
<Tip>
Якщо та сама людина зв'язується з вами з кількох каналів, використовуйте
`session.identityLinks`, щоб зв'язати її ідентичності, аби вони мали одну спільну сесію.
Якщо та сама людина звязується з вами з кількох каналів, використовуйте
`session.identityLinks`, щоб пов’язати її ідентичності, аби вони використовували одну сесію.
</Tip>
### Закріплення пов'язаних каналів
### Пристикування пов’язаних каналів
Команди dock дають змогу користувачу перемістити маршрут відповіді поточної сесії прямого чату до
іншого пов'язаного каналу, не починаючи нову сесію. Див.
[Закріплення каналів](/uk/concepts/channel-docking) для прикладів, конфігурації та
Команди пристикування дають користувачу змогу перенести маршрут відповіді поточної сесії прямого чату до
іншого пов’язаного каналу без запуску нової сесії. Див.
[Пристикування каналів](/uk/concepts/channel-docking) для прикладів, конфігурації та
усунення несправностей.
Перевірте своє налаштування за допомогою `openclaw security audit`.
## Життєвий цикл сесії
Сесії використовуються повторно, доки не спливе їхній термін:
Сесії повторно використовуються, доки не завершиться їхній строк дії:
- **Щоденне скидання** (за замовчуванням) -- нова сесія о 4:00 ранку за локальним часом на хості Gateway.
Щоденна свіжість базується на тому, коли поточний `sessionId` почався, а не
- **Щоденне скидання** (за замовчуванням) -- нова сесія о 4:00 за місцевим часом на хості
Gateway. Щоденна актуальність базується на часі запуску поточного `sessionId`, а не
на пізніших записах метаданих.
- **Скидання через бездіяльність** (необов'язково) -- нова сесія після періоду бездіяльності. Задайте
`session.reset.idleMinutes`. Свіжість за бездіяльністю базується на останній реальній
взаємодії користувача/каналу, тому Heartbeat, Cron та системні події exec не
- **Скидання за бездіяльністю** (необов’язково) -- нова сесія після періоду бездіяльності. Задайте
`session.reset.idleMinutes`. Актуальність бездіяльності базується на останній реальній
взаємодії користувача/каналу, тому Heartbeat, Cron і системні події exec не
підтримують сесію активною.
- **Ручне скидання** -- введіть `/new` або `/reset` у чаті. `/new <model>` також
перемикає модель.
Коли налаштовано і щоденне скидання, і скидання через бездіяльність, спрацьовує те, чий термін спливає першим.
Коли налаштовано і щоденне скидання, і скидання за бездіяльністю, спрацьовує те, строк якого завершується першим.
Heartbeat, Cron, exec та інші ходи системних подій можуть записувати метадані сесії,
але ці записи не подовжують свіжість щоденного скидання або скидання через бездіяльність. Коли скидання
але ці записи не подовжують актуальність щоденного скидання чи скидання за бездіяльністю. Коли скидання
переводить сесію, поставлені в чергу сповіщення системних подій для старої сесії
відкидаються, щоб застарілі фонові оновлення не додавалися на початок першого prompt у
відкидаються, щоб застарілі фонові оновлення не додавалися перед першим prompt у
новій сесії.
Сесії з активною CLI-сесією, що належить провайдеру, не перериваються неявним
щоденним значенням за замовчуванням. Використовуйте `/reset` або явно налаштуйте `session.reset`, коли такі
сесії мають спливати за таймером.
сесії мають завершуватися за таймером.
## Де зберігається стан
Усім станом сесій володіє **gateway**. UI-клієнти запитують дані сесій у gateway.
Увесь стан сесій належить **gateway**. UI-клієнти запитують у Gateway
дані сесій.
- **Сховище:** `~/.openclaw/agents/<agentId>/sessions/sessions.json`
- **Транскрипти:** `~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl`
@ -106,16 +107,16 @@ Heartbeat, Cron, exec та інші ходи системних подій мо
- `sessionStartedAt`: коли почався поточний `sessionId`; щоденне скидання використовує це.
- `lastInteractionAt`: остання взаємодія користувача/каналу, яка подовжує час життя за бездіяльністю.
- `updatedAt`: остання зміна рядка сховища; корисно для списків і очищення, але не
є авторитетним джерелом для свіжості щоденного скидання або скидання через бездіяльність.
є авторитетним джерелом для актуальності щоденного скидання/скидання за бездіяльністю.
Старіші рядки без `sessionStartedAt` визначаються з заголовка сесії в транскрипті JSONL,
коли він доступний. Якщо старішому рядку також бракує `lastInteractionAt`,
свіжість за бездіяльністю повертається до часу початку цієї сесії, а не до пізніших
службових записів.
Старіші рядки без `sessionStartedAt` визначаються із заголовка сесії JSONL-транскрипта,
коли він доступний. Якщо старіший рядок також не має `lastInteractionAt`,
актуальність бездіяльності повертається до часу початку цієї сесії, а не до пізніших службових
записів.
## Обслуговування сесій
OpenClaw автоматично обмежує сховище сесій із часом. За замовчуванням він працює
OpenClaw автоматично обмежує обсяг сховища сесій із часом. За замовчуванням він працює
в режимі `warn` (повідомляє, що було б очищено). Задайте `session.maintenance.mode`
як `"enforce"` для автоматичного очищення:
@ -131,9 +132,13 @@ OpenClaw автоматично обмежує сховище сесій із ч
}
```
Для виробничих лімітів `maxEntries` середовище виконання Gateway під час запису використовує невеликий буфер верхньої межі та очищує сховище пакетами до налаштованого ліміту. Читання сховища сесій не очищують і не обмежують записи під час запуску Gateway. Це уникає повного очищення сховища під час кожного запуску або ізольованої cron-сесії. `openclaw sessions cleanup --enforce` застосовує ліміт негайно.
Для виробничих лімітів `maxEntries` записи під час виконання Gateway використовують невеликий буфер верхньої межі й пакетно очищаються назад до налаштованого обмеження. Читання сховища сесій не очищають і не обмежують записи під час запуску Gateway. Це дає змогу уникнути повного очищення сховища під час кожного запуску або ізольованої сесії cron. `openclaw sessions cleanup --enforce` застосовує обмеження негайно.
Попередній перегляд за допомогою `openclaw sessions cleanup --dry-run`.
Обслуговування зберігає довговічні зовнішні вказівники розмов, зокрема групові
сесії та сесії чатів у межах thread, водночас дозволяючи синтетичним записам Cron,
hook, Heartbeat, ACP і під-агентів застарівати.
Перегляньте попередній результат за допомогою `openclaw sessions cleanup --dry-run`.
## Перегляд сесій
@ -144,16 +149,16 @@ OpenClaw автоматично обмежує сховище сесій із ч
## Додаткове читання
- [Очищення сесій](/uk/concepts/session-pruning) -- скорочення результатів інструментів
- [Очищення сесій](/uk/concepts/session-pruning) -- обрізання результатів інструментів
- [Compaction](/uk/concepts/compaction) -- підсумовування довгих розмов
- [Інструменти сесій](/uk/concepts/session-tool) -- інструменти агента для роботи між сесіями
- [Глибокий огляд керування сесіями](/uk/reference/session-management-compaction) --
- [Поглиблений огляд керування сесіями](/uk/reference/session-management-compaction) --
схема сховища, транскрипти, політика надсилання, метадані походження та розширена конфігурація
- [Мультиагентність](/uk/concepts/multi-agent) — маршрутизація та ізоляція сесій між агентами
- [Фонові завдання](/uk/automation/tasks) — як відокремлена робота створює записи завдань із посиланнями на сесії
- [Фонові завдання](/uk/automation/tasks) — як відокремлена робота створює записи завдань із посиланнями на сесію
- [Маршрутизація каналів](/uk/channels/channel-routing) — як вхідні повідомлення маршрутизуються до сесій
## Пов'язане
## Повязане
- [Очищення сесій](/uk/concepts/session-pruning)
- [Інструменти сесій](/uk/concepts/session-tool)

View File

@ -1,15 +1,15 @@
---
read_when:
- Потрібно діагностувати ідентифікатори сеансів, транскрипт JSONL або поля sessions.json
- Ви змінюєте поведінку автоматичного Compaction або додаєте службове обслуговування перед Compaction
- Ви хочете реалізувати очищення пам’яті або тихі системні ходи
summary: 'Глибоке занурення: сховище сеансів + транскрипти, життєвий цикл і внутрішні механізми (авто)Compaction'
- Потрібно налагодити ідентифікатори сеансів, JSONL-транскрипт або поля sessions.json
- Ви змінюєте поведінку автоматичного Compaction або додаєте підготовче обслуговування перед Compaction
- Ви хочете реалізувати скидання пам’яті або тихі системні ходи
summary: 'Поглиблений розбір: сховище сеансів і транскрипти, життєвий цикл та внутрішні механізми (авто)Compaction'
title: Поглиблений огляд керування сеансами
x-i18n:
generated_at: "2026-05-01T12:19:43Z"
generated_at: "2026-05-02T05:36:33Z"
model: gpt-5.5
provider: openai
source_hash: efd2fb5157a98cb406c5210d813fa600259dfc559350010a9c070075ac6b28ed
source_hash: 6f5d8b072feb389d7161fb2fa0fcd0941edb79b8b0f7ddd841877158795c2895
source_path: reference/session-management-compaction.md
workflow: 16
---
@ -17,12 +17,12 @@ x-i18n:
OpenClaw керує сесіями від початку до кінця в таких сферах:
- **Маршрутизація сесій** (як вхідні повідомлення зіставляються з `sessionKey`)
- **Сховище сесій** (`sessions.json`) і що воно відстежує
- **Сховище сесій** (`sessions.json`) і те, що воно відстежує
- **Збереження транскриптів** (`*.jsonl`) і їхня структура
- **Гігієна транскриптів** (специфічні для провайдера виправлення перед запусками)
- **Обмеження контексту** (вікно контексту порівняно з відстежуваними токенами)
- **Compaction** (ручне й автоматичне Compaction) і де підключати роботу перед Compaction
- **Тихе обслуговування** (записи пам’яті, які не мають створювати видимого для користувача виводу)
- **Гігієна транскриптів** (виправлення, специфічні для провайдера, перед запусками)
- **Обмеження контексту** (вікно контексту проти відстежуваних токенів)
- **Compaction** (ручна та автоматична Compaction) і де підключати роботу перед Compaction
- **Тихе обслуговування** (записи пам’яті, які не повинні створювати видимий для користувача вивід)
Якщо спершу потрібен загальніший огляд, почніть із:
@ -30,35 +30,35 @@ OpenClaw керує сесіями від початку до кінця в та
- [Compaction](/uk/concepts/compaction)
- [Огляд пам’яті](/uk/concepts/memory)
- [Пошук у пам’яті](/uk/concepts/memory-search)
- [Обрізання сесій](/uk/concepts/session-pruning)
- [Очищення сесій](/uk/concepts/session-pruning)
- [Гігієна транскриптів](/uk/reference/transcript-hygiene)
---
## Джерело істини: Gateway
OpenClaw спроєктовано навколо одного **процесу Gateway**, який володіє станом сесій.
OpenClaw спроєктовано навколо єдиного **процесу Gateway**, який володіє станом сесій.
- UI (застосунок macOS, веб Control UI, TUI) мають запитувати в Gateway списки сесій і кількість токенів.
- У віддаленому режимі файли сесій розміщені на віддаленому хості; “перевірка локальних файлів Mac” не відображатиме те, що використовує Gateway.
- Інтерфейси користувача (застосунок macOS, вебінтерфейс керування, TUI) мають запитувати в Gateway списки сесій і кількість токенів.
- У віддаленому режимі файли сесій розташовані на віддаленому хості; «перевірка ваших локальних файлів Mac» не відображатиме те, що використовує Gateway.
---
## Два шари збереження
## Два рівні збереження
OpenClaw зберігає сесії у двох шарах:
OpenClaw зберігає сесії на двох рівнях:
1. **Сховище сесій (`sessions.json`)**
- Мапа ключ/значення: `sessionKey -> SessionEntry`
- Невелике, змінюване, безпечне для редагування (або видалення записів)
- Відстежує метадані сесії (поточний id сесії, останню активність, перемикачі, лічильники токенів тощо)
- Невелике, змінне, безпечне для редагування (або видалення записів)
- Відстежує метадані сесії (поточний ідентифікатор сесії, останню активність, перемикачі, лічильники токенів тощо)
2. **Транскрипт (`<sessionId>.jsonl`)**
- Транскрипт лише з додаванням записів із деревоподібною структурою (записи мають `id` + `parentId`)
- Транскрипт лише для додавання зі структурою дерева (записи мають `id` + `parentId`)
- Зберігає фактичну розмову + виклики інструментів + підсумки Compaction
- Використовується для повторної побудови контексту моделі для майбутніх ходів
- Великі налагоджувальні контрольні точки перед Compaction пропускаються, щойно активний
транскрипт перевищує обмеження розміру контрольної точки, щоб уникнути другої величезної
транскрипт перевищує обмеження розміру контрольної точки, щоб уникнути другої гігантської
копії `.checkpoint.*.jsonl`.
---
@ -75,30 +75,35 @@ OpenClaw визначає ці шляхи через `src/config/sessions.ts`.
---
## Обслуговування сховища та керування диском
## Обслуговування сховища та контроль диска
Збереження сесій має автоматичні засоби обслуговування (`session.maintenance`) для `sessions.json`, артефактів транскриптів і допоміжних файлів траєкторій:
Збереження сесій має автоматичні засоби обслуговування (`session.maintenance`) для `sessions.json`, артефактів транскриптів і супровідних файлів траєкторій:
- `mode`: `warn` (типово) або `enforce`
- `pruneAfter`: поріг віку застарілих записів (типово `30d`)
- `maxEntries`: обмеження кількості записів у `sessions.json` (типово `500`)
- `resetArchiveRetention`: строк зберігання архівів транскриптів `*.reset.<timestamp>` (типово: як `pruneAfter`; `false` вимикає очищення)
- `resetArchiveRetention`: термін зберігання архівів транскриптів `*.reset.<timestamp>` (типово: такий самий, як `pruneAfter`; `false` вимикає очищення)
- `maxDiskBytes`: необов’язковий бюджет каталогу сесій
- `highWaterBytes`: необов’язкова ціль після очищення (типово `80%` від `maxDiskBytes`)
Звичайні записи Gateway пакетно виконують очищення `maxEntries` для обмежень продакшн-розміру, тому сховище може ненадовго перевищувати налаштоване обмеження, перш ніж наступне очищення до верхнього порога перепише його назад до меншого розміру. Читання сховища сесій не обрізають і не обмежують записи під час запуску Gateway; для очищення використовуйте записи або `openclaw sessions cleanup --enforce`. `openclaw sessions cleanup --enforce` все одно негайно застосовує налаштоване обмеження.
Звичайні записи Gateway пакетно виконують очищення `maxEntries` для обмежень виробничого розміру, тож сховище може ненадовго перевищити налаштований ліміт, перш ніж наступне очищення високого рівня води перепише його назад до меншого розміру. Читання сховища сесій не обрізає й не обмежує записи під час запуску Gateway; для очищення використовуйте записи або `openclaw sessions cleanup --enforce`. `openclaw sessions cleanup --enforce` все одно негайно застосовує налаштоване обмеження.
Обслуговування зберігає довговічні зовнішні вказівники розмов, як-от групові сесії
та сесії чатів у межах потоків, але синтетичні runtime-записи для cron, hooks,
heartbeat, ACP і субагентів усе ще можуть бути видалені, коли вони перевищують
налаштований вік, кількість або дисковий бюджет.
OpenClaw більше не створює автоматичні ротаційні резервні копії `sessions.json.bak.*` під час записів Gateway. Застарілий ключ `session.maintenance.rotateBytes` ігнорується, а `openclaw doctor --fix` видаляє його зі старіших конфігурацій.
Порядок застосування для очищення дискового бюджету (`mode: "enforce"`):
Порядок примусового очищення дискового бюджету (`mode: "enforce"`):
1. Спершу видалити найстаріші архівовані, сирітські артефакти транскриптів або сирітські артефакти траєкторій.
2. Якщо все ще вище цілі, витіснити найстаріші записи сесій і їхні файли транскриптів/траєкторій.
3. Продовжувати, доки використання не стане на рівні `highWaterBytes` або нижче.
1. Спершу видалити найстаріші архівні, осиротілі артефакти транскриптів або осиротілі артефакти траєкторій.
2. Якщо використання все ще перевищує ціль, вилучити найстаріші записи сесій і їхні файли транскриптів/траєкторій.
3. Продовжувати, доки використання не буде на рівні або нижче `highWaterBytes`.
У `mode: "warn"` OpenClaw повідомляє про потенційні витіснення, але не змінює сховище/файли.
У `mode: "warn"` OpenClaw повідомляє про потенційні вилучення, але не змінює сховище/файли.
Запустити обслуговування на вимогу:
Запустіть обслуговування на вимогу:
```bash
openclaw sessions cleanup --dry-run
@ -107,50 +112,50 @@ openclaw sessions cleanup --enforce
---
## Cron-сесії та журнали запусків
## Сесії Cron і журнали запусків
Ізольовані запуски Cron також створюють записи сесій/транскрипти й мають окремі налаштування строків зберігання:
Ізольовані запуски cron також створюють записи сесій/транскрипти та мають окремі засоби керування зберіганням:
- `cron.sessionRetention` (типово `24h`) обрізає старі сесії ізольованих запусків Cron зі сховища сесій (`false` вимикає).
- `cron.runLog.maxBytes` + `cron.runLog.keepLines` обрізають файли `~/.openclaw/cron/runs/<jobId>.jsonl` (типово: `2_000_000` байтів і `2000` рядків).
- `cron.sessionRetention` (типово `24h`) видаляє старі ізольовані сесії запусків cron зі сховища сесій (`false` вимикає).
- `cron.runLog.maxBytes` + `cron.runLog.keepLines` очищають файли `~/.openclaw/cron/runs/<jobId>.jsonl` (типово: `2_000_000` байтів і `2000` рядків).
Коли Cron примусово створює нову ізольовану сесію запуску, він очищає попередній
Коли cron примусово створює нову ізольовану сесію запуску, він очищає попередній
запис сесії `cron:<jobId>` перед записом нового рядка. Він переносить безпечні
налаштування, як-от параметри мислення/швидкого режиму/детальності, мітки та явно
вибрані користувачем перевизначення моделі/автентифікації. Він відкидає навколишній контекст розмови, як-от
маршрутизацію каналу/групи, політику надсилання чи черги, підвищення прав, походження та
прив’язку середовища виконання ACP, щоб свіжий ізольований запуск не міг успадкувати застарілу доставку або
повноваження середовища виконання від старішого запуску.
налаштування, як-от параметри мислення/швидкого режиму/докладності, мітки та явні
вибрані користувачем перевизначення моделі/автентифікації. Він відкидає фоновий
контекст розмови, як-от маршрутизацію каналу/групи, політику надсилання або черги,
підвищення привілеїв, джерело та runtime-прив’язку ACP, щоб свіжий ізольований
запуск не міг успадкувати застарілу доставку або runtime-повноваження від старішого запуску.
---
## Ключі сесій (`sessionKey`)
`sessionKey` визначає, у _якому кошику розмови_ ви перебуваєте (маршрутизація + ізоляція).
`sessionKey` визначає, у якому _кошику розмови_ ви перебуваєте (маршрутизація + ізоляція).
Поширені шаблони:
- Основний/прямий чат (на агента): `agent:<agentId>:<mainKey>` (типово `main`)
- Основний/прямий чат (для кожного агента): `agent:<agentId>:<mainKey>` (типово `main`)
- Група: `agent:<agentId>:<channel>:group:<id>`
- Кімната/канал (Discord/Slack): `agent:<agentId>:<channel>:channel:<id>` або `...:room:<id>`
- Cron: `cron:<job.id>`
- Webhook: `hook:<uuid>` (якщо не перевизначено)
Канонічні правила задокументовано в [/concepts/session](/uk/concepts/session).
Канонічні правила задокументовано на [/concepts/session](/uk/concepts/session).
---
## Id сесій (`sessionId`)
## Ідентифікатори сесій (`sessionId`)
Кожен `sessionKey` вказує на поточний `sessionId` (файл транскрипту, який продовжує розмову).
Практичні правила:
- **Скидання** (`/new`, `/reset`) створює новий `sessionId` для цього `sessionKey`.
- **Щоденне скидання** (типово 4:00 AM за локальним часом на хості gateway) створює новий `sessionId` на наступному повідомленні після межі скидання.
- **Закінчення строку бездіяльності** (`session.reset.idleMinutes` або застаріле `session.idleMinutes`) створює новий `sessionId`, коли повідомлення надходить після вікна бездіяльності. Коли налаштовано і щоденне, і за бездіяльністю, перемагає те, що спливає першим.
- **Системні події** (heartbeat, пробудження Cron, сповіщення exec, службовий облік gateway) можуть змінювати рядок сесії, але не подовжують свіжість для щоденного/idle-скидання. Перехід скидання відкидає поставлені в чергу сповіщення системних подій для попередньої сесії до побудови свіжого промпта.
- **Захист від форку батьківського потоку** (`session.parentForkMaxTokens`, типово `100000`) пропускає форкування батьківського транскрипту, коли батьківська сесія вже завелика; новий потік починається заново. Установіть `0`, щоб вимкнути.
- **Щоденне скидання** (типово о 4:00 AM за локальним часом на хості Gateway) створює новий `sessionId` на наступному повідомленні після межі скидання.
- **Закінчення терміну через бездіяльність** (`session.reset.idleMinutes` або застарілий `session.idleMinutes`) створює новий `sessionId`, коли повідомлення надходить після вікна бездіяльності. Коли налаштовано і щоденне скидання, і бездіяльність, перемагає те, що спливає першим.
- **Системні події** (heartbeat, пробудження cron, сповіщення exec, службовий облік gateway) можуть змінювати рядок сесії, але не подовжують свіжість щоденного/бездіяльного скидання. Перехід скидання відкидає поставлені в чергу сповіщення системних подій для попередньої сесії перед побудовою свіжого prompt.
- **Захист форку батьківського потоку** (`session.parentForkMaxTokens`, типово `100000`) пропускає форкування батьківського транскрипту, коли батьківська сесія вже завелика; новий потік починається з нуля. Установіть `0`, щоб вимкнути.
Деталь реалізації: рішення ухвалюється в `initSessionState()` у `src/auto-reply/reply/session.ts`.
@ -162,30 +167,30 @@ openclaw sessions cleanup --enforce
Ключові поля (не вичерпно):
- `sessionId`: поточний id транскрипту (ім’я файлу виводиться з нього, якщо не встановлено `sessionFile`)
- `sessionStartedAt`: часова мітка початку для поточного `sessionId`; для щоденного скидання
свіжість використовує її. Застарілі рядки можуть виводити її із заголовка сесії JSONL.
- `lastInteractionAt`: часова мітка останньої реальної взаємодії користувача/каналу; для idle-скидання
свіжість використовує її, тому Heartbeat, Cron і exec-події не підтримують сесії
- `sessionId`: поточний ідентифікатор транскрипту (ім’я файлу виводиться з нього, якщо не задано `sessionFile`)
- `sessionStartedAt`: позначка часу початку для поточного `sessionId`; свіжість щоденного скидання
використовує її. Застарілі рядки можуть виводити її із заголовка сесії JSONL.
- `lastInteractionAt`: позначка часу останньої реальної взаємодії користувача/каналу; свіжість скидання
через бездіяльність використовує її, тож heartbeat, cron і події exec не підтримують сесії
активними. Застарілі рядки без цього поля повертаються до відновленого часу початку сесії
для idle-свіжості.
- `updatedAt`: часова мітка останньої зміни рядка сховища, використовується для списків, обрізання та
службового обліку. Вона не є джерелом істини для свіжості щоденного/idle-скидання.
для свіжості бездіяльності.
- `updatedAt`: позначка часу останньої зміни рядка сховища, використовується для списків, очищення та
службового обліку. Вона не є джерелом істини для свіжості щоденного/бездіяльного скидання.
- `sessionFile`: необов’язкове явне перевизначення шляху транскрипту
- `chatType`: `direct | group | room` (допомагає UI та політиці надсилання)
- `chatType`: `direct | group | room` (допомагає інтерфейсам користувача та політиці надсилання)
- `provider`, `subject`, `room`, `space`, `displayName`: метадані для позначення груп/каналів
- Перемикачі:
- `thinkingLevel`, `verboseLevel`, `reasoningLevel`, `elevatedLevel`
- `sendPolicy` (перевизначення для окремої сесії)
- Вибір моделі:
- `providerOverride`, `modelOverride`, `authProfileOverride`
- Лічильники токенів (best-effort / залежні від провайдера):
- Лічильники токенів (best-effort / залежать від провайдера):
- `inputTokens`, `outputTokens`, `totalTokens`, `contextTokens`
- `compactionCount`: як часто автоматичне Compaction завершувалося для цього ключа сесії
- `memoryFlushAt`: часова мітка останнього скидання пам’яті перед Compaction
- `memoryFlushCompactionCount`: кількість Compaction на момент останнього скидання
- `compactionCount`: як часто автоматична Compaction завершувалася для цього ключа сесії
- `memoryFlushAt`: позначка часу останнього скидання пам’яті перед Compaction
- `memoryFlushCompactionCount`: кількість Compaction, коли востаннє виконувався flush
Сховище безпечно редагувати, але Gateway є джерелом істини: він може переписувати або повторно гідратувати записи під час роботи сесій.
Сховище безпечно редагувати, але Gateway є джерелом істини: він може переписувати або повторно гідратувати записи під час виконання сесій.
---
@ -200,27 +205,27 @@ openclaw sessions cleanup --enforce
Помітні типи записів:
- `message`: повідомлення user/assistant/toolResult
- `custom_message`: вставлені розширенням повідомлення, які ходять_ у контекст моделі (можуть бути приховані від UI)
- `custom`: стан розширення, який е входить_ у контекст моделі
- `message`: повідомлення користувача/асистента/toolResult
- `custom_message`: повідомлення, вставлені розширенням, які ходять_ до контексту моделі (можуть бути приховані від інтерфейсу користувача)
- `custom`: стан розширення, який е входить_ до контексту моделі
- `compaction`: збережений підсумок Compaction з `firstKeptEntryId` і `tokensBefore`
- `branch_summary`: збережений підсумок під час навігації гілкою дерева
OpenClaw навмисно **не** “виправляє” транскрипти; Gateway використовує `SessionManager` для їх читання/запису.
OpenClaw навмисно **не** «виправляє» транскрипти; Gateway використовує `SessionManager` для їх читання/запису.
---
## Вікна контексту й відстежувані токени
## Вікна контексту проти відстежуваних токенів
Важливі два різні поняття:
1. **Вікно контексту моделі**: жорстке обмеження на модель (токени, видимі моделі)
2. **Лічильники сховища сесій**: ковзні статистики, записані в `sessions.json` (використовуються для /status і дашбордів)
1. **Вікно контексту моделі**: жорстке обмеження для кожної моделі (токени, видимі моделі)
2. **Лічильники сховища сесій**: ковзна статистика, записана в `sessions.json` (використовується для /status і панелей керування)
Якщо ви налаштовуєте обмеження:
- Вікно контексту береться з каталогу моделей (і може бути перевизначене через конфігурацію).
- `contextTokens` у сховищі — це оцінка/звітне значення часу виконання; не сприймайте його як сувору гарантію.
- `contextTokens` у сховищі — це runtime-оцінка/звітне значення; не розглядайте його як сувору гарантію.
Докладніше див. [/token-use](/uk/reference/token-use).
@ -228,78 +233,76 @@ OpenClaw навмисно **не** “виправляє” транскрипт
## Compaction: що це таке
Compaction підсумовує старішу розмову в збережений запис `compaction` у транскрипті й залишає останні повідомлення незмінними.
Compaction підсумовує старішу розмову в збережений запис `compaction` у транскрипті та залишає недавні повідомлення без змін.
Після Compaction майбутні ходи бачать:
- Підсумок Compaction
- Повідомлення після `firstKeptEntryId`
Compaction є **персистентним** (на відміну від обрізання сесій). Див. [/concepts/session-pruning](/uk/concepts/session-pruning).
Compaction є **постійною** (на відміну від очищення сесій). Див. [/concepts/session-pruning](/uk/concepts/session-pruning).
## Межі фрагментів Compaction і парування інструментів
## Межі частин Compaction і поєднання інструментів
Коли OpenClaw розбиває довгий транскрипт на фрагменти Compaction, він зберігає
виклики інструментів assistant у парі з відповідними записами `toolResult`.
Коли OpenClaw розбиває довгий транскрипт на частини Compaction, він зберігає
виклики інструментів асистента поєднаними з відповідними записами `toolResult`.
- Якщо поділ за часткою токенів потрапляє між викликом інструмента та його результатом, OpenClaw
зміщує межу до повідомлення assistant із викликом інструмента, замість того щоб розділяти
зсуває межу до повідомлення асистента з викликом інструмента, а не розділяє
пару.
- Якщо кінцевий блок результатів інструментів інакше перевищив би цільовий розмір фрагмента,
- Якщо завершальний блок результатів інструментів інакше перевищив би цільовий розмір частини,
OpenClaw зберігає цей очікуваний блок інструментів і залишає непідсумований хвіст
незмінним.
без змін.
- Перервані/помилкові блоки викликів інструментів не утримують очікуваний поділ відкритим.
---
## Коли відбувається автоматичне Compaction (середовище виконання Pi)
## Коли відбувається автоматична Compaction (runtime Pi)
У вбудованому агенті Pi автоматичне Compaction запускається у двох випадках:
У вбудованому агенті Pi автоматична Compaction запускається у двох випадках:
1. **Відновлення після переповнення**: модель повертає помилку переповнення контексту
(`request_too_large`, `context length exceeded`, `input exceeds the maximum
number of tokens`, `input token count exceeds the maximum number of input
tokens`, `input is too long for the model`, `ollama error: context length
exceeded` і подібні варіанти у формі провайдерів) → compact → повторити.
exceeded` і подібні варіанти, сформовані провайдерами) → compact → retry.
2. **Порогове обслуговування**: після успішного ходу, коли:
`contextTokens > contextWindow - reserveTokens`
Де:
- `contextWindow` — вікно контексту моделі
- `reserveTokens`запас, зарезервований для промптів + наступного виводу моделі
- `contextWindow`це вікно контексту моделі
- `reserveTokens`це запас, зарезервований для prompts + наступного виводу моделі
Це семантика середовища виконання Pi (OpenClaw споживає події, але Pi вирішує, коли виконувати Compaction).
Це семантика runtime Pi (OpenClaw споживає події, але Pi вирішує, коли виконувати Compaction).
OpenClaw також може запустити попереднє локальне Compaction перед відкриттям наступного
OpenClaw також може запускати попередню локальну Compaction перед відкриттям наступного
запуску, коли встановлено `agents.defaults.compaction.maxActiveTranscriptBytes` і
активний файл транскрипту досягає цього розміру. Це захист за розміром файлу для вартості локального
повторного відкриття, а не сире архівування: OpenClaw все одно виконує звичайне семантичне Compaction,
і воно потребує `truncateAfterCompaction`, щоб стиснений підсумок міг стати
новим наступним транскриптом.
активний файл транскрипта досягає цього розміру. Це захист за розміром файлу для вартості
локального повторного відкриття, а не сире архівування: OpenClaw усе ще виконує звичайну
семантичну Compaction, і для цього потрібен `truncateAfterCompaction`, щоб стиснений
підсумок міг стати новим наступним транскриптом.
Для вбудованих запусків Pi `agents.defaults.compaction.midTurnPrecheck.enabled: true`
додає opt-in захист циклу інструментів. Після додавання результату інструмента й перед
наступним викликом моделі OpenClaw оцінює тиск на prompt за допомогою тієї самої
логіки передстартового бюджету, що використовується на початку ходу. Якщо контекст
більше не вміщується, захист не виконує Compaction усередині хука Pi
`transformContext`. Він піднімає структурований сигнал
mid-turn precheck, зупиняє поточне надсилання prompt і дає зовнішньому циклу
запуску використати наявний шлях відновлення: обрізати завеликі результати
інструментів, коли цього достатньо, або запустити налаштований режим Compaction і
повторити спробу. Опція вимкнена за замовчуванням і працює з обома режимами
Compaction, `default` і `safeguard`, зокрема із Compaction у режимі safeguard на
основі провайдера.
Це не залежить від `maxActiveTranscriptBytes`: захист за розміром у байтах
запускається перед відкриттям ходу, тоді як mid-turn precheck запускається пізніше
у вбудованому циклі інструментів Pi після додавання нових результатів інструментів.
додає опціональний захист циклу інструментів. Після додавання результату інструмента і перед
наступним викликом моделі OpenClaw оцінює навантаження на промпт, використовуючи ту саму
логіку попереднього бюджету, що й на початку ходу. Якщо контекст більше не вміщується,
захист не виконує Compaction всередині хука Pi `transformContext`. Він піднімає структурований
сигнал попередньої перевірки всередині ходу, зупиняє поточне надсилання промпта і дає
зовнішньому циклу запуску використати наявний шлях відновлення: обрізати завеликі результати
інструментів, коли цього достатньо, або запустити налаштований режим Compaction і повторити
спробу. Параметр вимкнений за замовчуванням і працює з режимами Compaction `default` і
`safeguard`, зокрема із Compaction з захистом, підтриманою провайдером.
Це незалежно від `maxActiveTranscriptBytes`: захист за розміром у байтах запускається
до відкриття ходу, тоді як попередня перевірка всередині ходу запускається пізніше у
вбудованому циклі інструментів Pi після додавання нових результатів інструментів.
---
## Налаштування Compaction (`reserveTokens`, `keepRecentTokens`)
Налаштування Compaction Pi містяться в налаштуваннях Pi:
Налаштування Compaction для Pi містяться в налаштуваннях Pi:
```json5
{
@ -311,32 +314,32 @@ Compaction, `default` і `safeguard`, зокрема із Compaction у режи
}
```
OpenClaw також застосовує мінімальний безпечний поріг для вбудованих запусків:
OpenClaw також примусово застосовує безпечну нижню межу для вбудованих запусків:
- Якщо `compaction.reserveTokens < reserveTokensFloor`, OpenClaw підвищує його.
- Стандартний мінімальний поріг — `20000` токенів.
- Установіть `agents.defaults.compaction.reserveTokensFloor: 0`, щоб вимкнути мінімальний поріг.
- Якщо `compaction.reserveTokens < reserveTokensFloor`, OpenClaw підвищує це значення.
- Нижня межа за замовчуванням становить `20000` токенів.
- Установіть `agents.defaults.compaction.reserveTokensFloor: 0`, щоб вимкнути нижню межу.
- Якщо значення вже вище, OpenClaw залишає його без змін.
- Ручний `/compact` враховує явно заданий `agents.defaults.compaction.keepRecentTokens`
і зберігає точку відсікання нещодавнього хвоста Pi. Без явно заданого бюджету збереження
ручний Compaction залишається жорсткою контрольною точкою, а перебудований контекст починається з
- Ручний `/compact` враховує явний `agents.defaults.compaction.keepRecentTokens`
і зберігає точку відсікання нещодавнього хвоста Pi. Без явного бюджету збереження
ручна Compaction лишається жорсткою контрольною точкою, а перебудований контекст починається з
нового підсумку.
- Установіть `agents.defaults.compaction.midTurnPrecheck.enabled: true`, щоб запускати
необов’язкову попередню перевірку циклу інструментів після нових результатів інструментів і перед наступним
викликом моделі. Це лише тригер; генерація підсумку все одно використовує налаштований
шлях Compaction. Вона не залежить від `maxActiveTranscriptBytes`, який є
стартовим захистом активного транскрипту за розміром у байтах.
- Установіть `agents.defaults.compaction.maxActiveTranscriptBytes` у байтове значення або
рядок на кшталт `"20mb"`, щоб запускати локальний Compaction перед ходом, коли активний
транскрипт стає великим. Цей захист активний лише тоді, коли також увімкнено
`truncateAfterCompaction`. Залиште це значення незаданим або встановіть `0`, щоб
опціональну попередню перевірку циклу інструментів після нових результатів інструментів і перед наступним
викликом моделі. Це лише тригер; створення підсумку все одно використовує налаштований
шлях Compaction. Він незалежний від `maxActiveTranscriptBytes`, який є
захистом за розміром активного транскрипта в байтах на початку ходу.
- Установіть `agents.defaults.compaction.maxActiveTranscriptBytes` у значення байтів або
рядок, наприклад `"20mb"`, щоб запускати локальну Compaction перед ходом, коли активний
транскрипт стає великим. Цей захист активний лише коли також увімкнено
`truncateAfterCompaction`. Залиште параметр невстановленим або встановіть `0`, щоб
вимкнути.
- Коли `agents.defaults.compaction.truncateAfterCompaction` увімкнено,
OpenClaw після Compaction ротує активний транскрипт у стиснений наступний JSONL.
Старий повний транскрипт залишається заархівованим і пов’язаним із
контрольною точкою Compaction, замість перезапису на місці.
- Коли увімкнено `agents.defaults.compaction.truncateAfterCompaction`,
OpenClaw після Compaction обертає активний транскрипт у стиснений наступний JSONL.
Старий повний транскрипт лишається в архіві та прив’язується з контрольної точки
Compaction замість перезапису на місці.
Навіщо: залишити достатній запас для багатоходового «обслуговування» (наприклад, записів пам’яті), перш ніж Compaction стане неминучим.
Навіщо: залишити достатній запас для багатоходового “housekeeping” (наприклад, записів пам’яті), перш ніж Compaction стане неминучою.
Реалізація: `ensurePiCompactionReserveTokens()` у `src/agents/pi-settings.ts`
(викликається з `src/agents/pi-embedded-runner.ts`).
@ -345,87 +348,87 @@ OpenClaw також застосовує мінімальний безпечни
## Підключувані провайдери Compaction
Plugins можуть зареєструвати провайдера Compaction через `registerCompactionProvider()` в API Plugin. Коли `agents.defaults.compaction.provider` встановлено на id зареєстрованого провайдера, розширення safeguard делегує підсумовування цьому провайдеру замість вбудованого конвеєра `summarizeInStages`.
Plugins можуть реєструвати провайдера Compaction через `registerCompactionProvider()` в API Plugin. Коли для `agents.defaults.compaction.provider` задано id зареєстрованого провайдера, розширення safeguard делегує підсумовування цьому провайдеру замість вбудованого конвеєра `summarizeInStages`.
- `provider`: id зареєстрованого Plugin провайдера Compaction. Не задавайте, щоб використовувати стандартне LLM-підсумовування.
- `provider`: id зареєстрованого Plugin провайдера Compaction. Залиште невстановленим для стандартного підсумовування LLM.
- Установлення `provider` примусово задає `mode: "safeguard"`.
- Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й вбудований шлях.
- Safeguard усе одно зберігає контекст суфікса нещодавніх ходів і розділених ходів після виводу провайдера.
- Safeguard усе ще зберігає контекст суфікса нещодавніх ходів і розділених ходів після виводу провайдера.
- Вбудоване підсумовування safeguard повторно дистилює попередні підсумки з новими повідомленнями
замість дослівного збереження повного попереднього підсумку.
- Режим Safeguard вмикає аудити якості підсумків за замовчуванням; установіть
`qualityGuard.enabled: false`, щоб пропустити поведінку повторної спроби при неправильному форматі виводу.
- Якщо провайдер зазнає невдачі або повертає порожній результат, OpenClaw автоматично повертається до вбудованого LLM-підсумовування.
- Сигнали переривання/тайм-ауту перекидаються далі (не приглушуються), щоб поважати скасування викликачем.
- Режим safeguard за замовчуванням вмикає аудити якості підсумків; установіть
`qualityGuard.enabled: false`, щоб пропустити поведінку повторної спроби у разі некоректно сформованого виводу.
- Якщо провайдер зазнає помилки або повертає порожній результат, OpenClaw автоматично повертається до вбудованого підсумовування LLM.
- Сигнали переривання/тайм-ауту перекидаються далі (не поглинаються), щоб поважати скасування викликувачем.
Джерело: `src/plugins/compaction-provider.ts`, `src/agents/pi-hooks/compaction-safeguard.ts`.
---
## Видимі для користувача поверхні
## Поверхні, видимі користувачу
Ви можете спостерігати Compaction і стан сеансу через:
Ви можете спостерігати Compaction і стан сесії через:
- `/status` (у будь-якому сеансі чату)
- `/status` (у будь-якій чат-сесії)
- `openclaw status` (CLI)
- `openclaw sessions` / `sessions --json`
- Детальний режим: `🧹 Auto-compaction complete` + кількість Compaction
---
## Тихе обслуговування (`NO_REPLY`)
## Тихе housekeeping (`NO_REPLY`)
OpenClaw підтримує «тихі» ходи для фонових завдань, де користувач не має бачити проміжний вивід.
OpenClaw підтримує “тихі” ходи для фонових завдань, де користувач не має бачити проміжний вивід.
Умовність:
- Помічник починає свій вивід із точного тихого токена `NO_REPLY` /
`no_reply`, щоб позначити «не доставляти відповідь користувачу».
- OpenClaw вилучає/пригнічує це на рівні доставки.
- Пригнічення точного тихого токена не залежить від регістру, тому `NO_REPLY` і
`no_reply` обидва враховуються, коли весь payload — це лише тихий токен.
- Це лише для справді фонових ходів без доставки; це не скорочення для
- Асистент починає свій вивід із точного тихого токена `NO_REPLY` /
`no_reply`, щоб указати “не доставляти відповідь користувачу”.
- OpenClaw видаляє/пригнічує це на рівні доставки.
- Пригнічення точного тихого токена не залежить від регістру, тож `NO_REPLY` і
`no_reply` обидва враховуються, коли весь payload є лише тихим токеном.
- Це лише для справжніх фонових ходів без доставки; це не скорочення для
звичайних дієвих запитів користувача.
Починаючи з `2026.1.10`, OpenClaw також пригнічує **чернетковий/typing streaming**, коли
частковий фрагмент починається з `NO_REPLY`, тож тихі операції не витікають частковим
Станом на `2026.1.10`, OpenClaw також пригнічує **потокове передавання чернетки/набору тексту**, коли
частковий фрагмент починається з `NO_REPLY`, щоб тихі операції не витікали частковим
виводом посеред ходу.
---
## «Скидання пам’яті» перед Compaction (реалізовано)
## “Скидання пам’яті” перед Compaction (реалізовано)
Мета: перед автоматичним Compaction запустити тихий агентний хід, який записує довговічний
стан на диск (наприклад, `memory/YYYY-MM-DD.md` у робочій області агента), щоб Compaction не міг
стерти критично важливий контекст.
Мета: перед автоматичною Compaction запустити тихий агентний хід, який записує довговічний
стан на диск (наприклад, `memory/YYYY-MM-DD.md` у робочому просторі агента), щоб Compaction не могла
стерти критичний контекст.
OpenClaw використовує підхід **скидання перед порогом**:
1. Відстежувати використання контексту сеансу.
2. Коли воно перетинає «м’який поріг» (нижче порога Compaction Pi), запустити тиху
директиву «запиши пам’ять зараз» для агента.
1. Відстежувати використання контексту сесії.
2. Коли воно перетинає “м’який поріг” (нижчий за поріг Compaction Pi), запустити тиху
директиву “запиши пам’ять зараз” для агента.
3. Використати точний тихий токен `NO_REPLY` / `no_reply`, щоб користувач не бачив
нічого.
Конфігурація (`agents.defaults.compaction.memoryFlush`):
- `enabled` (за замовчуванням: `true`)
- `model` (необов’язкове точне перевизначення провайдера/моделі для ходу скидання, наприклад `ollama/qwen3:8b`)
- `model` (опціональне точне перевизначення провайдера/моделі для ходу скидання, наприклад `ollama/qwen3:8b`)
- `softThresholdTokens` (за замовчуванням: `4000`)
- `prompt` (повідомлення користувача для ходу скидання)
- `systemPrompt` (додатковий системний prompt, доданий для ходу скидання)
- `systemPrompt` (додатковий системний промпт, доданий для ходу скидання)
Примітки:
Нотатки:
- Стандартний prompt/system prompt містить підказку `NO_REPLY`, щоб пригнітити
- Стандартний prompt/system prompt містять підказку `NO_REPLY`, щоб пригнітити
доставку.
- Коли `model` задано, хід скидання використовує цю модель без успадкування
ланцюга fallback активного сеансу, тож локальне-only обслуговування не виконує тихий
- Коли задано `model`, хід скидання використовує цю модель без успадкування
fallback-ланцюга активної сесії, щоб локальне housekeeping не виконувало тихий
fallback до платної розмовної моделі.
- Скидання виконується один раз за цикл Compaction (відстежується в `sessions.json`).
- Скидання виконується лише для вбудованих сеансів Pi (бекенди CLI пропускають його).
- Скидання пропускається, коли робоча область сеансу доступна лише для читання (`workspaceAccess: "ro"` або `"none"`).
- Див. [Пам’ять](/uk/concepts/memory) щодо структури файлів робочої області та патернів запису.
- Скидання запускається один раз за цикл Compaction (відстежується в `sessions.json`).
- Скидання запускається лише для вбудованих сесій Pi (бекенди CLI пропускають його).
- Скидання пропускається, коли робочий простір сесії доступний лише для читання (`workspaceAccess: "ro"` або `"none"`).
- Див. [Пам’ять](/uk/concepts/memory) щодо структури файлів робочого простору і патернів запису.
Pi також надає хук `session_before_compact` в API розширення, але логіка скидання OpenClaw
сьогодні живе на боці Gateway.
@ -434,16 +437,16 @@ Pi також надає хук `session_before_compact` в API розширен
## Контрольний список усунення несправностей
- Неправильний ключ сеансу? Почніть із [/concepts/session](/uk/concepts/session) і підтвердьте `sessionKey` у `/status`.
- Невідповідність сховища й транскрипту? Підтвердьте хост Gateway і шлях сховища з `openclaw status`.
- Ключ сесії неправильний? Почніть із [/concepts/session](/uk/concepts/session) і підтвердьте `sessionKey` у `/status`.
- Невідповідність сховища і транскрипта? Підтвердьте хост Gateway і шлях сховища з `openclaw status`.
- Спам Compaction? Перевірте:
- вікно контексту моделі (завелике мале)
- налаштування Compaction (`reserveTokens` занадто високий для вікна моделі може спричинити раніший Compaction)
- роздування результатів інструментів: увімкніть/налаштуйте обрізання сеансу
- Витік тихих ходів? Підтвердьте, що відповідь починається з `NO_REPLY` (точний токен без урахування регістру) і ви використовуєте збірку, яка містить виправлення пригнічення streaming.
- контекстне вікно моделі (замале)
- налаштування Compaction (`reserveTokens` завеликий для вікна моделі може спричиняти ранішу Compaction)
- роздування результатів інструментів: увімкніть/налаштуйте обрізання сесії
- Тихі ходи витікають? Підтвердьте, що відповідь починається з `NO_REPLY` (точний токен без урахування регістру), і що ви використовуєте збірку, яка містить виправлення пригнічення потокового передавання.
## Пов’язане
- [Керування сеансами](/uk/concepts/session)
- [Обрізання сеансу](/uk/concepts/session-pruning)
- [Керування сесіями](/uk/concepts/session)
- [Обрізання сесії](/uk/concepts/session-pruning)
- [Рушій контексту](/uk/concepts/context-engine)