From f9d09fd86e669f983a902a524cb7b3ab2b4fbc11 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sat, 2 May 2026 12:46:33 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/cli/agents.md | 47 +- docs/uk/cli/sessions.md | 60 +-- .../session-management-compaction.md | 403 +++++++++--------- 3 files changed, 256 insertions(+), 254 deletions(-) diff --git a/docs/uk/cli/agents.md b/docs/uk/cli/agents.md index c1252fbfb..0c624e564 100644 --- a/docs/uk/cli/agents.md +++ b/docs/uk/cli/agents.md @@ -4,10 +4,10 @@ read_when: summary: Довідник CLI для `openclaw agents` (list/add/delete/bindings/bind/unbind/set identity) title: Агенти x-i18n: - generated_at: "2026-04-29T11:03:52Z" + generated_at: "2026-05-02T12:44:52Z" model: gpt-5.5 provider: openai - source_hash: 46742a890a57cb1035a053f14fe574044e4a3d7dcc04812cd11c633bd808819b + source_hash: 3522394dd416a9c8b4bf25767a14073484df0ff3d7c546cf6c730f111c5c51dc source_path: cli/agents.md workflow: 16 --- @@ -18,9 +18,9 @@ x-i18n: Пов’язано: -- [Багатоагентна маршрутизація](/uk/concepts/multi-agent) +- [Маршрутизація з кількома агентами](/uk/concepts/multi-agent) - [Робочий простір агента](/uk/concepts/agent-workspace) -- [Конфігурація Skills](/uk/tools/skills-config): конфігурація видимості skills. +- [Конфігурація Skills](/uk/tools/skills-config): конфігурація видимості Skills. ## Приклади @@ -41,7 +41,7 @@ openclaw agents delete work Використовуйте прив’язки маршрутизації, щоб закріпити вхідний трафік каналу за конкретним агентом. -Якщо ви також хочете різні видимі skills для кожного агента, налаштуйте `agents.defaults.skills` і `agents.list[].skills` в `openclaw.json`. Див. [Конфігурація Skills](/uk/tools/skills-config) і [Довідник конфігурації](/uk/gateway/config-agents#agents-defaults-skills). +Якщо ви також хочете різні видимі Skills для кожного агента, налаштуйте `agents.defaults.skills` і `agents.list[].skills` в `openclaw.json`. Див. [Конфігурація Skills](/uk/tools/skills-config) і [Довідник конфігурації](/uk/gateway/config-agents#agents-defaults-skills). Список прив’язок: @@ -57,15 +57,15 @@ openclaw agents bindings --json openclaw agents bind --agent work --bind telegram:ops --bind discord:guild-a ``` -Якщо ви пропустите `accountId` (`--bind `), OpenClaw визначить його з типових параметрів каналу та хуків налаштування Plugin, коли вони доступні. +Якщо пропустити `accountId` (`--bind `), OpenClaw визначить його з типових параметрів каналу та хуків налаштування Plugin, коли вони доступні. -Якщо ви пропустите `--agent` для `bind` або `unbind`, OpenClaw націлиться на поточного типового агента. +Якщо пропустити `--agent` для `bind` або `unbind`, OpenClaw вибере поточного типового агента. ### Поведінка області дії прив’язки - Прив’язка без `accountId` відповідає лише типовому обліковому запису каналу. -- `accountId: "*"` є резервним варіантом для всього каналу (усі облікові записи) і менш специфічний, ніж явна прив’язка облікового запису. -- Якщо той самий агент уже має відповідну прив’язку каналу без `accountId`, а згодом ви прив’язуєте з явним або визначеним `accountId`, OpenClaw оновлює цю наявну прив’язку на місці замість додавання дубліката. +- `accountId: "*"` є резервним варіантом для всього каналу (усі облікові записи) і є менш специфічним, ніж явна прив’язка облікового запису. +- Якщо той самий агент уже має відповідну прив’язку каналу без `accountId`, а згодом ви додаєте прив’язку з явним або визначеним `accountId`, OpenClaw оновлює цю наявну прив’язку на місці, замість додавання дубліката. Приклад: @@ -77,7 +77,7 @@ openclaw agents bind --agent work --bind telegram openclaw agents bind --agent work --bind telegram:ops ``` -Після оновлення маршрутизація для цієї прив’язки обмежується `telegram:ops`. Якщо вам також потрібна маршрутизація для типового облікового запису, додайте її явно (наприклад, `--bind telegram:default`). +Після оновлення маршрутизація для цієї прив’язки обмежується `telegram:ops`. Якщо також потрібна маршрутизація для типового облікового запису, додайте її явно (наприклад, `--bind telegram:default`). Видалити прив’язки: @@ -86,7 +86,7 @@ openclaw agents unbind --agent work --bind telegram:ops openclaw agents unbind --agent work --all ``` -`unbind` приймає або `--all`, або одне чи більше значень `--bind`, але не обидва варіанти одночасно. +`unbind` приймає або `--all`, або одне чи кілька значень `--bind`, але не обидва варіанти одночасно. ## Поверхня команд @@ -99,7 +99,7 @@ openclaw agents unbind --agent work --all Параметри: - `--json` -- `--bindings`: включати повні правила маршрутизації, а не лише підрахунки/зведення за агентами +- `--bindings`: включити повні правила маршрутизації, а не лише кількості/зведення для кожного агента ### `agents add [name]` @@ -115,11 +115,11 @@ openclaw agents unbind --agent work --all Примітки: - Передавання будь-яких явних прапорців додавання переводить команду в неінтерактивний шлях. -- Неінтерактивний режим вимагає і назви агента, і `--workspace`. -- `main` зарезервовано, і його не можна використовувати як id нового агента. -- В інтерактивному режимі початкове заповнення автентифікації копіює лише переносні статичні профілі - (`api_key` і статичний `token` за замовчуванням). Профілі OAuth refresh-token залишаються - доступними лише через успадкування з читанням із реального сховища агента `main`. +- Неінтерактивний режим потребує і назви агента, і `--workspace`. +- `main` зарезервовано, і його не можна використовувати як новий ідентифікатор агента. +- В інтерактивному режимі початкове заповнення автентифікації копіює лише переносимі статичні профілі + (`api_key` і статичний `token` за замовчуванням). Профілі OAuth із refresh token залишаються + доступними лише через успадкування читанням із реального сховища агента `main`. Якщо налаштований типовий агент не є `main`, увійдіть окремо для профілів OAuth у новому агенті. @@ -158,8 +158,9 @@ openclaw agents unbind --agent work --all - `main` не можна видалити. - Без `--force` потрібне інтерактивне підтвердження. -- Робочий простір, стан агента та каталоги транскриптів сесій переміщуються до Кошика, а не видаляються остаточно. -- Якщо робочий простір іншого агента має той самий шлях, розташований всередині цього робочого простору або містить цей робочий простір, +- Робочий простір, стан агента та каталоги стенограм сесій переміщуються в Кошик, а не видаляються безповоротно. +- Коли Gateway доступний, видалення надсилається через Gateway, щоб очищення конфігурації та сховища сесій використовувало той самий записувач, що й трафік під час виконання. Якщо Gateway недоступний, CLI повертається до локального офлайн-шляху. +- Якщо робочий простір іншого агента має той самий шлях, розташований усередині цього робочого простору або містить цей робочий простір, робочий простір зберігається, а `--json` повідомляє `workspaceRetained`, `workspaceRetainedReason` і `workspaceSharedWith`. @@ -172,7 +173,7 @@ openclaw agents unbind --agent work --all Шляхи аватарів визначаються відносно кореня робочого простору. -## Налаштування ідентичності +## Налаштувати ідентичність `set-identity` записує поля в `agents.list[].identity`: @@ -196,7 +197,7 @@ openclaw agents unbind --agent work --all Примітки: - `--agent` або `--workspace` можна використовувати для вибору цільового агента. -- Якщо ви покладаєтеся на `--workspace`, а кілька агентів спільно використовують цей робочий простір, команда завершується помилкою й просить передати `--agent`. +- Якщо ви покладаєтеся на `--workspace`, і кілька агентів спільно використовують цей робочий простір, команда завершується помилкою та просить передати `--agent`. - Коли явні поля ідентичності не надано, команда читає дані ідентичності з `IDENTITY.md`. Завантажити з `IDENTITY.md`: @@ -211,7 +212,7 @@ openclaw agents set-identity --workspace ~/.openclaw/workspace --from-identity openclaw agents set-identity --agent main --name "OpenClaw" --emoji "🦞" --avatar avatars/openclaw.png ``` -Зразок конфігурації: +Приклад конфігурації: ```json5 { @@ -234,5 +235,5 @@ openclaw agents set-identity --agent main --name "OpenClaw" --emoji "🦞" --ava ## Пов’язано - [Довідник CLI](/uk/cli) -- [Багатоагентна маршрутизація](/uk/concepts/multi-agent) +- [Маршрутизація з кількома агентами](/uk/concepts/multi-agent) - [Робочий простір агента](/uk/concepts/agent-workspace) diff --git a/docs/uk/cli/sessions.md b/docs/uk/cli/sessions.md index 53822fe55..2deda5853 100644 --- a/docs/uk/cli/sessions.md +++ b/docs/uk/cli/sessions.md @@ -1,24 +1,24 @@ --- read_when: - - Ви хочете переглянути список збережених сесій і побачити нещодавню активність -summary: Довідник CLI для `openclaw sessions` (список збережених сеансів + використання) + - Ви хочете вивести список збережених сеансів і переглянути нещодавню активність +summary: Довідка CLI для `openclaw sessions` (список збережених сеансів + використання) title: Сеанси x-i18n: - generated_at: "2026-05-02T12:15:29Z" + generated_at: "2026-05-02T12:44:55Z" model: gpt-5.5 provider: openai - source_hash: 8791a36fedc18a1c2d4144c3fd4faeaf8f5320676ceee76026959cbe2dc1873c + source_hash: 5c9ec3ca55f7c5b6217b481e9da62f5416df73e69405a0dc15e77d2afeac723f source_path: cli/sessions.md workflow: 16 --- # `openclaw sessions` -Виводить список збережених сесій розмов. +Вивести список збережених сеансів розмов. -Списки сесій не є перевірками доступності каналу/провайдера. Вони показують збережені -рядки розмов зі сховищ сесій. Тихий Discord, Slack, Telegram або -інший канал може успішно перепідключитися без створення нового рядка сесії, +Списки сеансів не є перевірками працездатності каналів/провайдерів. Вони показують збережені +рядки розмов зі сховищ сеансів. Тихий Discord, Slack, Telegram або +інший канал може успішно перепід’єднатися без створення нового рядка сеансу, доки не буде оброблено повідомлення. Використовуйте `openclaw channels status --probe`, `openclaw status --deep` або `openclaw health --verbose`, коли потрібне живе підключення каналу. @@ -32,28 +32,28 @@ openclaw sessions --verbose openclaw sessions --json ``` -Вибір області: +Вибір області дії: -- за замовчуванням: налаштоване сховище агента за замовчуванням +- за замовчуванням: налаштоване типове сховище агента - `--verbose`: докладне журналювання - `--agent `: одне налаштоване сховище агента -- `--all-agents`: агрегувати всі налаштовані сховища агентів +- `--all-agents`: об’єднати всі налаштовані сховища агентів - `--store `: явний шлях до сховища (не можна поєднувати з `--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` після того, -як власник схвалить запит на виконання. Вихідний каталог завжди визначається +Це шлях команди, який використовується слеш-командою `/export-trajectory` після того, +як власник схвалить запит на виконання. Вихідний каталог завжди розв’язується всередині `.openclaw/trajectory-exports/` у вибраному робочому просторі. -`openclaw sessions --all-agents` читає налаштовані сховища агентів. Виявлення сесій Gateway і ACP +`openclaw sessions --all-agents` читає налаштовані сховища агентів. Виявлення сеансів Gateway і ACP ширше: воно також включає сховища лише на диску, знайдені в -корені `agents/` за замовчуванням або в шаблонному корені `session.store`. Ці +типовому корені `agents/` або шаблонізованому корені `session.store`. Ці виявлені сховища мають розв’язуватися у звичайні файли `sessions.json` всередині кореня агента; символьні посилання та шляхи поза коренем пропускаються. @@ -91,23 +91,23 @@ 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/.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/.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`), щоб можна було побачити, що буде збережено, а що видалено. -- `--enforce`: застосувати обслуговування навіть коли `session.maintenance.mode` має значення `warn`. -- `--fix-missing`: видалити записи, чиї файли транскриптів відсутні, навіть якщо зазвичай вони ще не підпадали б під видалення за віком/кількістю. -- `--active-key `: захистити конкретний активний ключ від витіснення через дисковий бюджет. Довговічні зовнішні вказівники розмов, як-от групові сесії та сесії чату з областю потоку, також зберігаються під час обслуговування за віком/кількістю/дисковим бюджетом. +- `--dry-run`: попередньо показати, скільки записів буде очищено/обмежено без запису. + - У текстовому режимі dry-run друкує таблицю дій для кожного сеансу (`Action`, `Key`, `Age`, `Model`, `Flags`), щоб ви могли бачити, що буде збережено, а що видалено. +- `--enforce`: застосувати обслуговування, навіть коли `session.maintenance.mode` має значення `warn`. +- `--fix-missing`: видалити записи, файли транскриптів яких відсутні, навіть якщо зазвичай вони ще не були б вилучені через вік/кількість. +- `--active-key `: захистити конкретний активний ключ від витіснення через дисковий бюджет. Стійкі зовнішні вказівники розмов, як-от групові сеанси та сеанси чату в межах треду, також зберігаються під час обслуговування за віком/кількістю/дисковим бюджетом. - `--agent `: запустити очищення для одного налаштованого сховища агента. - `--all-agents`: запустити очищення для всіх налаштованих сховищ агентів. -- `--store `: виконати для конкретного файлу `sessions.json`. -- `--json`: надрукувати підсумок JSON. З `--all-agents` вивід включає один підсумок на сховище. +- `--store `: запустити для конкретного файлу `sessions.json`. +- `--json`: надрукувати підсумок JSON. З `--all-agents` вивід містить по одному підсумку для кожного сховища. -Коли Gateway доступний, примусове очищення для налаштованих сховищ агентів -надсилається через Gateway, щоб воно використовувало той самий записувач сховища сесій, що й трафік -під час виконання. Використовуйте `--store ` для явного офлайн-відновлення файлу сховища. +Коли Gateway доступний, очищення не в режимі dry-run для налаштованих сховищ агентів +надсилається через Gateway, щоб воно використовувало той самий writer сховища сеансів, що й runtime +трафік. Використовуйте `--store ` для явного офлайн-відновлення файлу сховища. `openclaw sessions cleanup --all-agents --dry-run --json`: @@ -139,9 +139,9 @@ openclaw sessions cleanup --json Пов’язане: -- Конфігурація сесій: [довідник конфігурації](/uk/gateway/config-agents#session) +- Конфігурація сеансів: [довідник конфігурації](/uk/gateway/config-agents#session) ## Пов’язане - [довідник CLI](/uk/cli) -- [Керування сесіями](/uk/concepts/session) +- [керування сеансами](/uk/concepts/session) diff --git a/docs/uk/reference/session-management-compaction.md b/docs/uk/reference/session-management-compaction.md index 9943c063c..65ebda390 100644 --- a/docs/uk/reference/session-management-compaction.md +++ b/docs/uk/reference/session-management-compaction.md @@ -1,81 +1,81 @@ --- read_when: - - Потрібно налагодити ідентифікатори сеансів, JSONL транскриптів або поля sessions.json - - Ви змінюєте поведінку автоматичної Compaction або додаєте підготовче обслуговування перед Compaction - - Ви хочете реалізувати очищення пам’яті або тихі системні ходи -summary: 'Докладно: сховище сеансів і транскрипти, життєвий цикл та внутрішні механізми (авто)Compaction' -title: Поглиблений огляд керування сеансами + - Потрібно налагодити ідентифікатори сесій, JSONL стенограми або поля sessions.json + - Ви змінюєте поведінку автокомпакції або додаєте службове обслуговування «перед компакцією» + - Ви хочете реалізувати скидання пам’яті або тихі системні ходи +summary: 'Поглиблений огляд: сховище сесій + транскрипти, життєвий цикл і внутрішні механізми (авто)Compaction' +title: Поглиблений розгляд керування сеансами x-i18n: - generated_at: "2026-05-02T12:15:50Z" + generated_at: "2026-05-02T12:45:11Z" model: gpt-5.5 provider: openai - source_hash: 6e2097d685381964608096cc0505aeedbd3a8f9bc682168bd519ebe4ffe9218d + source_hash: 8038d42c1112172ebdfefdd7d42d5c729a975095e2d695f5d5122b21a2fa93c1 source_path: reference/session-management-compaction.md workflow: 16 --- -OpenClaw керує сесіями наскрізно в таких областях: +OpenClaw керує сеансами від початку до кінця в таких сферах: -- **Маршрутизація сесій** (як вхідні повідомлення зіставляються з `sessionKey`) -- **Сховище сесій** (`sessions.json`) і що воно відстежує -- **Збереження стенограм** (`*.jsonl`) та їхня структура -- **Гігієна стенограм** (специфічні для провайдера виправлення перед запусками) -- **Ліміти контексту** (контекстне вікно проти відстежуваних токенів) +- **Маршрутизація сеансів** (як вхідні повідомлення зіставляються із `sessionKey`) +- **Сховище сеансів** (`sessions.json`) і те, що воно відстежує +- **Збереження транскриптів** (`*.jsonl`) і їхня структура +- **Гігієна транскриптів** (специфічні для провайдерів виправлення перед запусками) +- **Ліміти контексту** (вікно контексту проти відстежуваних токенів) - **Compaction** (ручна й автоматична Compaction) і де підключати роботу перед Compaction -- **Тихе обслуговування** (записи пам’яті, які не мають створювати видимого для користувача виводу) +- **Тихе службове обслуговування** (записи пам’яті, які не мають створювати видимий для користувача вивід) Якщо спершу потрібен огляд вищого рівня, почніть із: -- [Керування сесіями](/uk/concepts/session) +- [Керування сеансами](/uk/concepts/session) - [Compaction](/uk/concepts/compaction) - [Огляд пам’яті](/uk/concepts/memory) - [Пошук у пам’яті](/uk/concepts/memory-search) -- [Очищення сесій](/uk/concepts/session-pruning) -- [Гігієна стенограм](/uk/reference/transcript-hygiene) +- [Обрізання сеансів](/uk/concepts/session-pruning) +- [Гігієна транскриптів](/uk/reference/transcript-hygiene) --- ## Джерело істини: Gateway -OpenClaw спроєктовано навколо єдиного **процесу Gateway**, який володіє станом сесій. +OpenClaw спроєктовано навколо єдиного **процесу Gateway**, який володіє станом сеансів. -- UI (застосунок macOS, веб Control UI, TUI) мають запитувати в Gateway списки сесій і кількість токенів. -- У віддаленому режимі файли сесій розташовані на віддаленому хості; «перевірка локальних файлів на Mac» не відображатиме того, що використовує Gateway. +- UI (застосунок macOS, веб Control UI, TUI) мають запитувати в Gateway списки сеансів і кількість токенів. +- У віддаленому режимі файли сеансів розташовані на віддаленому хості; “перевірка ваших локальних файлів Mac” не відображатиме того, що використовує Gateway. --- -## Два рівні збереження +## Два шари збереження -OpenClaw зберігає сесії на двох рівнях: +OpenClaw зберігає сеанси у двох шарах: -1. **Сховище сесій (`sessions.json`)** +1. **Сховище сеансів (`sessions.json`)** - Мапа ключ/значення: `sessionKey -> SessionEntry` - Невелике, змінюване, безпечне для редагування (або видалення записів) - - Відстежує метадані сесії (поточний ідентифікатор сесії, останню активність, перемикачі, лічильники токенів тощо) + - Відстежує метадані сеансу (поточний ідентифікатор сеансу, остання активність, перемикачі, лічильники токенів тощо) -2. **Стенограма (`.jsonl`)** - - Стенограма лише з додаванням із деревоподібною структурою (записи мають `id` + `parentId`) - - Зберігає фактичну розмову + виклики інструментів + підсумки Compaction +2. **Транскрипт (`.jsonl`)** + - Транскрипт лише для дописування з деревоподібною структурою (записи мають `id` + `parentId`) + - Зберігає власне розмову + виклики інструментів + підсумки Compaction - Використовується для відновлення контексту моделі для майбутніх ходів - - Великі налагоджувальні контрольні точки перед Compaction пропускаються, щойно активна - стенограма перевищує обмеження розміру контрольної точки, щоб уникнути другої гігантської + - Великі налагоджувальні контрольні точки перед Compaction пропускаються, щойно активний + транскрипт перевищує обмеження розміру контрольної точки, що запобігає створенню другої гігантської копії `.checkpoint.*.jsonl`. -Зчитувачі історії Gateway мають уникати матеріалізації всієї стенограми, якщо +Зчитувачі історії Gateway мають уникати матеріалізації всього транскрипта, якщо поверхні явно не потрібен довільний історичний доступ. Історія першої сторінки, -вбудована історія чату, відновлення після перезапуску та перевірки токенів/використання -використовують обмежене читання хвоста. Повні сканування стенограми проходять через асинхронний індекс стенограм, який -кешується за шляхом файлу плюс `mtimeMs`/`size` і спільно використовується паралельними зчитувачами. +вбудована історія чату, відновлення після перезапуску та перевірки токенів/використання застосовують обмежене читання хвоста. +Повні сканування транскрипта проходять через асинхронний індекс транскриптів, який +кешується за шляхом файлу плюс `mtimeMs`/`size` і спільно використовується одночасними читачами. --- ## Розташування на диску -Для кожного агента, на хості Gateway: +Для кожного агента на хості Gateway: - Сховище: `~/.openclaw/agents//sessions/sessions.json` -- Стенограми: `~/.openclaw/agents//sessions/.jsonl` - - Сесії тем Telegram: `.../-topic-.jsonl` +- Транскрипти: `~/.openclaw/agents//sessions/.jsonl` + - Сеанси тем Telegram: `.../-topic-.jsonl` OpenClaw визначає ці шляхи через `src/config/sessions.ts`. @@ -83,31 +83,31 @@ OpenClaw визначає ці шляхи через `src/config/sessions.ts`. ## Обслуговування сховища та керування диском -Збереження сесій має автоматичні засоби обслуговування (`session.maintenance`) для `sessions.json`, артефактів стенограм і побічних файлів траєкторій: +Збереження сеансів має автоматичні засоби обслуговування (`session.maintenance`) для `sessions.json`, артефактів транскриптів і допоміжних файлів траєкторій: - `mode`: `warn` (типово) або `enforce` -- `pruneAfter`: віковий поріг для застарілих записів (типово `30d`) -- `maxEntries`: обмеження кількості записів у `sessions.json` (типово `500`) -- `resetArchiveRetention`: термін зберігання архівів стенограм `*.reset.` (типово: такий самий, як `pruneAfter`; `false` вимикає очищення) -- `maxDiskBytes`: необов’язковий бюджет каталогу сесій +- `pruneAfter`: поріг віку застарілого запису (типово `30d`) +- `maxEntries`: ліміт записів у `sessions.json` (типово `500`) +- `resetArchiveRetention`: термін зберігання архівів транскриптів `*.reset.` (типово: такий самий, як `pruneAfter`; `false` вимикає очищення) +- `maxDiskBytes`: необов’язковий бюджет каталогу сеансів - `highWaterBytes`: необов’язкова ціль після очищення (типово `80%` від `maxDiskBytes`) -Звичайні записи Gateway проходять через окремий для сховища записувач сесій, який серіалізує внутрішньопроцесні мутації без отримання файлового блокування під час виконання. Допоміжні засоби виправлення гарячого шляху позичають перевірений змінюваний кеш, поки утримують цей слот записувача, тому великі файли `sessions.json` не клонуються й не перечитуються для кожного оновлення метаданих. Код під час виконання має віддавати перевагу `updateSessionStore(...)` або `updateSessionStoreEntry(...)`; прямі збереження всього сховища є інструментами сумісності та офлайн-обслуговування. Коли Gateway доступний, `openclaw sessions cleanup --enforce` делегує обслуговування Gateway, щоб очищення приєдналося до тієї самої черги записувача; `--store ` — явний офлайн-шлях ремонту для прямого обслуговування файлів. Очищення `maxEntries` досі пакетне для обмежень виробничого розміру, тож сховище може ненадовго перевищити налаштоване обмеження, перш ніж наступне очищення до верхньої межі перепише його назад до меншого розміру. Читання сховища сесій не очищує й не обмежує записи під час запуску Gateway; для очищення використовуйте записи або `openclaw sessions cleanup --enforce`. `openclaw sessions cleanup --enforce` усе одно негайно застосовує налаштоване обмеження. +Звичайні записи Gateway проходять через окремий для кожного сховища writer сеансів, який серіалізує внутрішньопроцесні мутації без runtime-блокування файлу. Помічники виправлень на гарячому шляху позичають перевірений змінюваний кеш, поки утримують цей слот writer, тож великі файли `sessions.json` не клонуються і не перечитуються для кожного оновлення метаданих. Runtime-код має віддавати перевагу `updateSessionStore(...)` або `updateSessionStoreEntry(...)`; прямі збереження всього сховища є інструментами сумісності й офлайн-обслуговування. Коли Gateway доступний, `openclaw sessions cleanup` без `--dry-run` і `openclaw agents delete` делегують мутації сховища Gateway, щоб очищення приєднувалося до тієї самої черги writer; `--store ` є явним офлайн-шляхом ремонту для прямого обслуговування файлів. Очищення `maxEntries` усе ще пакетне для production-лімітів, тому сховище може короткочасно перевищувати налаштований ліміт, перш ніж наступне очищення high-water перепише його донизу. Читання сховища сеансів не обрізають і не лімітують записи під час запуску Gateway; для очищення використовуйте записи або `openclaw sessions cleanup --enforce`. `openclaw sessions cleanup --enforce` усе одно негайно застосовує налаштований ліміт. -Обслуговування зберігає довговічні зовнішні вказівники розмов, як-от групові сесії -та сесії чату в межах потоків, але синтетичні записи виконання для cron, хуків, -heartbeat, ACP і субагентів усе ще можуть видалятися, коли вони перевищують +Обслуговування зберігає довговічні зовнішні вказівники розмов, як-от групові сеанси +та сеанси чатів у межах тредів, але синтетичні runtime-записи для Cron, hooks, +Heartbeat, ACP і субагентів усе ще можуть бути видалені, коли вони перевищують налаштований вік, кількість або дисковий бюджет. -OpenClaw більше не створює автоматичних ротаційних резервних копій `sessions.json.bak.*` під час записів Gateway. Застарілий ключ `session.maintenance.rotateBytes` ігнорується, а `openclaw doctor --fix` видаляє його зі старіших конфігурацій. +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 повідомляє про потенційні витіснення, але не змінює сховище/файли. Запуск обслуговування на вимогу: @@ -118,119 +118,120 @@ openclaw sessions cleanup --enforce --- -## Сесії Cron і журнали запусків +## Сеанси Cron і журнали запусків -Ізольовані запуски cron також створюють записи сесій/стенограми та мають окремі засоби керування терміном зберігання: +Ізольовані запуски Cron також створюють записи сеансів/транскрипти та мають окремі засоби керування зберіганням: -- `cron.sessionRetention` (типово `24h`) очищує старі ізольовані сесії запусків cron зі сховища сесій (`false` вимикає). -- `cron.runLog.maxBytes` + `cron.runLog.keepLines` очищують файли `~/.openclaw/cron/runs/.jsonl` (типово: `2_000_000` байтів і `2000` рядків). +- `cron.sessionRetention` (типово `24h`) обрізає старі ізольовані сеанси запусків Cron зі сховища сеансів (`false` вимикає). +- `cron.runLog.maxBytes` + `cron.runLog.keepLines` обрізають файли `~/.openclaw/cron/runs/.jsonl` (типово: `2_000_000` байтів і `2000` рядків). -Коли cron примусово створює нову ізольовану сесію запуску, він очищує попередній -запис сесії `cron:` перед записом нового рядка. Він переносить безпечні -параметри, як-от налаштування мислення/швидкості/детальності, мітки та явні -перевизначення моделі/автентифікації, вибрані користувачем. Він відкидає навколишній контекст розмови, як-от маршрутизацію каналу/групи, політику надсилання або черги, підвищення прав, походження та -прив’язку виконання ACP, щоб новий ізольований запуск не міг успадкувати застарілу доставку або -повноваження виконання від старішого запуску. +Коли Cron примусово створює новий ізольований сеанс запуску, він очищає попередній +запис сеансу `cron:` перед записом нового рядка. Він переносить безпечні +налаштування, як-от параметри thinking/fast/verbose, мітки та явні +вибрані користувачем перевизначення моделі/auth. Він відкидає навколишній контекст розмови, як-от +маршрутизацію каналу/групи, політику надсилання або черги, elevation, origin і runtime-прив’язку ACP, +щоб свіжий ізольований запуск не міг успадкувати застарілу доставку або +runtime-повноваження зі старішого запуску. --- -## Ключі сесій (`sessionKey`) +## Ключі сеансів (`sessionKey`) `sessionKey` визначає, _у якому контейнері розмови_ ви перебуваєте (маршрутизація + ізоляція). Поширені шаблони: -- Основний/прямий чат (для кожного агента): `agent::` (типово `main`) +- Основний/прямий чат (на агента): `agent::` (типово `main`) - Група: `agent:::group:` - Кімната/канал (Discord/Slack): `agent:::channel:` або `...:room:` - Cron: `cron:` - Webhook: `hook:` (якщо не перевизначено) -Канонічні правила задокументовано в [/concepts/session](/uk/concepts/session). +Канонічні правила задокументовано на [/concepts/session](/uk/concepts/session). --- -## Ідентифікатори сесій (`sessionId`) +## Ідентифікатори сеансів (`sessionId`) -Кожен `sessionKey` вказує на поточний `sessionId` (файл стенограми, який продовжує розмову). +Кожен `sessionKey` вказує на поточний `sessionId` (файл транскрипта, який продовжує розмову). Практичні правила: - **Скидання** (`/new`, `/reset`) створює новий `sessionId` для цього `sessionKey`. -- **Щоденне скидання** (типово 4:00 AM за місцевим часом на хості Gateway) створює новий `sessionId` під час наступного повідомлення після межі скидання. -- **Закінчення строку через бездіяльність** (`session.reset.idleMinutes` або застарілий `session.idleMinutes`) створює новий `sessionId`, коли повідомлення надходить після вікна бездіяльності. Коли налаштовано і щоденне скидання, і бездіяльність, спрацьовує те, що завершується першим. -- **Системні події** (heartbeat, пробудження cron, сповіщення exec, службові дії gateway) можуть змінювати рядок сесії, але не подовжують актуальність щоденного/бездіяльного скидання. Перехід скидання відкидає поставлені в чергу сповіщення системних подій для попередньої сесії перед побудовою нового промпта. -- **Політика відгалуження від батька** використовує активну гілку PI під час створення потоку або відгалуження субагента. Якщо ця гілка занадто велика, OpenClaw запускає дочірній об’єкт з ізольованим контекстом замість помилки або успадкування непридатної історії. Політика визначення розміру автоматична; застарілу конфігурацію `session.parentForkMaxTokens` видаляє `openclaw doctor --fix`. +- **Щоденне скидання** (типово о 4:00 AM за локальним часом на хості gateway) створює новий `sessionId` під час наступного повідомлення після межі скидання. +- **Завершення через бездіяльність** (`session.reset.idleMinutes` або застаріле `session.idleMinutes`) створює новий `sessionId`, коли повідомлення надходить після вікна бездіяльності. Коли налаштовано і щоденне скидання, і бездіяльність, спрацьовує те, що настане першим. +- **Системні події** (Heartbeat, пробудження Cron, сповіщення exec, службовий облік gateway) можуть змінювати рядок сеансу, але не продовжують свіжість щоденного/idle-скидання. Перехід скидання відкидає поставлені в чергу сповіщення системних подій для попереднього сеансу перед побудовою свіжого prompt. +- **Політика fork батьківського сеансу** використовує активну гілку PI під час створення треду або fork субагента. Якщо ця гілка завелика, OpenClaw запускає дочірній сеанс з ізольованим контекстом замість помилки або успадкування непридатної історії. Політика визначення розміру автоматична; застаріла конфігурація `session.parentForkMaxTokens` видаляється `openclaw doctor --fix`. Деталь реалізації: рішення ухвалюється в `initSessionState()` у `src/auto-reply/reply/session.ts`. --- -## Схема сховища сесій (`sessions.json`) +## Схема сховища сеансів (`sessions.json`) Тип значення сховища — `SessionEntry` у `src/config/sessions.ts`. -Ключові поля (не вичерпно): +Ключові поля (список не вичерпний): -- `sessionId`: поточний ідентифікатор стенограми (назва файлу виводиться з нього, якщо не задано `sessionFile`) -- `sessionStartedAt`: часова позначка початку для поточного `sessionId`; актуальність щоденного скидання - використовує її. Застарілі рядки можуть виводити її із заголовка сесії JSONL. -- `lastInteractionAt`: часова позначка останньої реальної взаємодії користувача/каналу; актуальність скидання через бездіяльність - використовує її, тому heartbeat, cron і події exec не підтримують сесії - активними. Застарілі рядки без цього поля для актуальності бездіяльності повертаються до відновленого часу початку - сесії. -- `updatedAt`: часова позначка останньої мутації рядка сховища, використовується для списків, очищення та - службового обліку. Вона не є джерелом істини для актуальності щоденного/бездіяльного скидання. -- `sessionFile`: необов’язкове явне перевизначення шляху стенограми -- `chatType`: `direct | group | room` (допомагає UI та політиці надсилання) -- `provider`, `subject`, `room`, `space`, `displayName`: метадані для маркування груп/каналів +- `sessionId`: поточний ідентифікатор транскрипта (ім’я файлу походить від нього, якщо `sessionFile` не задано) +- `sessionStartedAt`: часова мітка початку поточного `sessionId`; свіжість щоденного скидання + використовує її. Застарілі рядки можуть виводити її із заголовка сеансу JSONL. +- `lastInteractionAt`: часова мітка останньої реальної взаємодії користувача/каналу; свіжість idle-скидання + використовує її, щоб Heartbeat, Cron і exec-події не підтримували сеанси + активними. Застарілі рядки без цього поля повертаються до відновленого часу початку сеансу + для idle-свіжості. +- `updatedAt`: часова мітка останньої мутації рядка сховища, використовується для списків, обрізання та + службового обліку. Вона не є авторитетним джерелом для свіжості щоденного/idle-скидання. +- `sessionFile`: необов’язкове явне перевизначення шляху транскрипта +- `chatType`: `direct | group | room` (допомагає UI і політиці надсилання) +- `provider`, `subject`, `room`, `space`, `displayName`: метадані для маркування групи/каналу - Перемикачі: - `thinkingLevel`, `verboseLevel`, `reasoningLevel`, `elevatedLevel` - - `sendPolicy` (перевизначення для окремої сесії) + - `sendPolicy` (перевизначення для окремого сеансу) - Вибір моделі: - `providerOverride`, `modelOverride`, `authProfileOverride` -- Лічильники токенів (best-effort / залежать від провайдера): +- Лічильники токенів (best-effort / залежно від провайдера): - `inputTokens`, `outputTokens`, `totalTokens`, `contextTokens` -- `compactionCount`: як часто автоматична Compaction завершувалась для цього ключа сесії -- `memoryFlushAt`: часова позначка останнього скидання пам’яті перед Compaction -- `memoryFlushCompactionCount`: кількість Compaction, коли востаннє запускалося скидання +- `compactionCount`: скільки разів auto-compaction завершувалася для цього ключа сеансу +- `memoryFlushAt`: часова мітка останнього скидання пам’яті перед Compaction +- `memoryFlushCompactionCount`: кількість Compaction на момент останнього скидання -Сховище безпечно редагувати, але Gateway є джерелом істини: він може переписувати або повторно гідратувати записи під час роботи сесій. +Сховище безпечно редагувати, але Gateway є авторитетним джерелом: він може переписувати або повторно гідратувати записи під час роботи сеансів. --- -## Структура стенограми (`*.jsonl`) +## Структура транскрипта (`*.jsonl`) -Стенограмами керує `SessionManager` з `@mariozechner/pi-coding-agent`. +Транскриптами керує `SessionManager` із `@mariozechner/pi-coding-agent`. Файл має формат JSONL: -- Перший рядок: заголовок сесії (`type: "session"`, містить `id`, `cwd`, `timestamp`, необов’язковий `parentSession`) -- Далі: записи сесії з `id` + `parentId` (дерево) +- Перший рядок: заголовок сеансу (`type: "session"`, містить `id`, `cwd`, `timestamp`, необов’язковий `parentSession`) +- Далі: записи сеансу з `id` + `parentId` (дерево) Важливі типи записів: - `message`: повідомлення користувача/асистента/toolResult -- `custom_message`: повідомлення, вставлені розширенням, які _потрапляють_ у контекст моделі (можуть бути приховані від UI) -- `custom`: стан розширення, який _не потрапляє_ у контекст моделі -- `compaction`: збережений підсумок Compaction із `firstKeptEntryId` і `tokensBefore` +- `custom_message`: повідомлення, вставлені розширенням, які _потрапляють_ у контекст моделі (можуть бути приховані з UI) +- `custom`: стан розширення, який _не потрапляє_ в контекст моделі +- `compaction`: збережений підсумок Compaction з `firstKeptEntryId` і `tokensBefore` - `branch_summary`: збережений підсумок під час навігації гілкою дерева -OpenClaw навмисно **не** «виправляє» стенограми; Gateway використовує `SessionManager` для їх читання/запису. +OpenClaw навмисно **не** “виправляє” транскрипти; Gateway використовує `SessionManager` для їх читання/запису. --- -## Контекстні вікна проти відстежуваних токенів +## Вікна контексту проти відстежуваних токенів -Важливі два різні поняття: +Мають значення два різні поняття: -1. **Контекстне вікно моделі**: жорстке обмеження для кожної моделі (токени, видимі моделі) -2. **Лічильники сховища сесій**: ковзна статистика, записана в `sessions.json` (використовується для /status і панелей) +1. **Вікно контексту моделі**: жорсткий ліміт для кожної моделі (токени, видимі моделі) +2. **Лічильники сховища сеансів**: ковзні статистики, записані в `sessions.json` (використовуються для /status і dashboard) -Якщо ви налаштовуєте обмеження: +Якщо ви налаштовуєте ліміти: -- Контекстне вікно походить із каталогу моделей (і може бути перевизначене через конфігурацію). -- `contextTokens` у сховищі — це оцінка/звітне значення під час виконання; не вважайте його суворою гарантією. +- Вікно контексту береться з каталогу моделей (і може бути перевизначене через конфігурацію). +- `contextTokens` у сховищі — runtime-оцінка/звітне значення; не сприймайте його як сувору гарантію. Докладніше див. [/token-use](/uk/reference/token-use). @@ -238,39 +239,39 @@ 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, він зберігає +Коли OpenClaw розбиває довгий транскрипт на фрагменти Compaction, він зберігає виклики інструментів асистента в парі з відповідними записами `toolResult`. -- Якщо поділ за часткою токенів припадає між викликом інструмента та його результатом, OpenClaw - зміщує межу до повідомлення асистента з викликом інструмента замість того, щоб розділяти - цю пару. -- Якщо кінцевий блок результату інструмента інакше виштовхнув би фрагмент за цільовий розмір, +- Якщо межа поділу за часткою токенів припадає між викликом інструмента та його результатом, OpenClaw + зсуває межу до повідомлення асистента з викликом інструмента, замість того щоб розділяти + пару. +- Якщо кінцевий блок результату інструмента інакше перевищив би цільовий розмір фрагмента, OpenClaw зберігає цей очікуваний блок інструмента й залишає нескорочений хвіст - неушкодженим. -- Перервані/помилкові блоки виклику інструмента не утримують очікуваний поділ відкритим. + без змін. +- Перервані блоки викликів інструментів або блоки з помилками не утримують очікуваний поділ відкритим. --- -## Коли відбувається автоматичне ущільнення (середовище виконання Pi) +## Коли відбувається автоматична Compaction (середовище виконання Pi) -У вбудованому агенті Pi автоматичне ущільнення запускається у двох випадках: +У вбудованому агенті 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` та подібні варіанти, сформовані провайдерами) → ущільнити → повторити. +exceeded` та подібні варіанти, сформовані провайдером) → стиснення → повторна спроба. 2. **Підтримання порога**: після успішного ходу, коли: `contextTokens > contextWindow - reserveTokens` @@ -280,34 +281,34 @@ exceeded` та подібні варіанти, сформовані прова - `contextWindow` — контекстне вікно моделі - `reserveTokens` — запас, зарезервований для промптів + наступного виводу моделі -Це семантика середовища виконання Pi (OpenClaw споживає події, але Pi вирішує, коли виконувати ущільнення). +Це семантика середовища виконання Pi (OpenClaw споживає події, але Pi вирішує, коли стискати). -OpenClaw також може запускати попереднє локальне ущільнення перед відкриттям наступного +OpenClaw також може запускати попередню локальну Compaction перед відкриттям наступного запуску, коли задано `agents.defaults.compaction.maxActiveTranscriptBytes` і -активний файл транскрипту досягає цього розміру. Це обмежувач розміру файлу для вартості -локального повторного відкриття, а не сире архівування: OpenClaw усе одно запускає звичайне семантичне ущільнення, -і для цього потрібен `truncateAfterCompaction`, щоб ущільнений підсумок міг стати +активний файл транскрипту досягає цього розміру. Це захист за розміром файлу для локальної +вартості повторного відкриття, а не необроблене архівування: OpenClaw усе одно виконує звичайну семантичну Compaction, +і для цього потрібен `truncateAfterCompaction`, щоб стиснутий підсумок міг стати новим наступним транскриптом. -Для вбудованих запусків Pi `agents.defaults.compaction.midTurnPrecheck.enabled: true` -додає опційний захист циклу інструментів. Після додавання результату інструмента й перед -наступним викликом моделі OpenClaw оцінює навантаження на промпт за тією самою логікою -попереднього бюджету, що використовується на початку ходу. Якщо контекст більше не вміщується, захист -не виконує ущільнення всередині хука Pi `transformContext`. Він піднімає структурований -сигнал попередньої перевірки посеред ходу, зупиняє поточне подання промпта й дає -зовнішньому циклу запуску використати наявний шлях відновлення: обрізати завеликі результати інструментів, -коли цього достатньо, або запустити налаштований режим ущільнення й повторити. Ця -опція вимкнена за замовчуванням і працює з режимами ущільнення `default` і `safeguard`, -зокрема з ущільненням safeguard на основі провайдера. -Це не залежить від `maxActiveTranscriptBytes`: обмежувач за розміром у байтах запускається -перед відкриттям ходу, а попередня перевірка посеред ходу запускається пізніше у вбудованому циклі інструментів Pi +Для вбудованих запусків Pi параметр `agents.defaults.compaction.midTurnPrecheck.enabled: true` +додає опціональний захист циклу інструментів. Після додавання результату інструмента й перед +наступним викликом моделі OpenClaw оцінює тиск на промпт, використовуючи ту саму логіку попереднього +бюджету, що й на початку ходу. Якщо контекст більше не вміщується, захист +не стискає всередині хуку `transformContext` Pi. Він створює структурований +сигнал попередньої перевірки посеред ходу, зупиняє поточне надсилання промпта й дає +зовнішньому циклу запуску використати наявний шлях відновлення: скоротити завеликі результати інструментів, +коли цього достатньо, або запустити налаштований режим Compaction і повторити спробу. Цей +параметр вимкнено за замовчуванням, і він працює як з режимом Compaction `default`, так і з `safeguard`, +зокрема з Compaction із захистом на базі провайдера. +Це не залежить від `maxActiveTranscriptBytes`: захист за розміром у байтах виконується +перед відкриттям ходу, тоді як попередня перевірка посеред ходу виконується пізніше у вбудованому циклі інструментів Pi після додавання нових результатів інструментів. --- -## Налаштування ущільнення (`reserveTokens`, `keepRecentTokens`) +## Налаштування Compaction (`reserveTokens`, `keepRecentTokens`) -Налаштування ущільнення Pi містяться в налаштуваннях Pi: +Налаштування Compaction Pi містяться в налаштуваннях Pi: ```json5 { @@ -319,52 +320,52 @@ OpenClaw також може запускати попереднє локаль } ``` -OpenClaw також застосовує мінімальний безпечний поріг для вбудованих запусків: +OpenClaw також забезпечує нижню межу безпеки для вбудованих запусків: -- Якщо `compaction.reserveTokens < reserveTokensFloor`, OpenClaw підвищує його. -- Стандартний мінімум — `20000` токенів. -- Задайте `agents.defaults.compaction.reserveTokensFloor: 0`, щоб вимкнути цей мінімум. -- Якщо він уже вищий, OpenClaw залишає його без змін. -- Ручний `/compact` враховує явне `agents.defaults.compaction.keepRecentTokens` - і зберігає точку відсікання нещодавнього хвоста Pi. Без явного бюджету збереження - ручне ущільнення залишається жорсткою контрольною точкою, а перебудований контекст починається з +- Якщо `compaction.reserveTokens < reserveTokensFloor`, OpenClaw підвищує це значення. +- Типова нижня межа — `20000` токенів. +- Установіть `agents.defaults.compaction.reserveTokensFloor: 0`, щоб вимкнути нижню межу. +- Якщо значення вже вище, OpenClaw залишає його без змін. +- Ручна команда `/compact` враховує явне значення `agents.defaults.compaction.keepRecentTokens` + і зберігає точку відсікання недавнього хвоста Pi. Без явного бюджету збереження + ручна Compaction залишається жорсткою контрольною точкою, а перебудований контекст починається з нового підсумку. -- Задайте `agents.defaults.compaction.midTurnPrecheck.enabled: true`, щоб запускати - опційну попередню перевірку циклу інструментів після нових результатів інструментів і перед наступним викликом +- Установіть `agents.defaults.compaction.midTurnPrecheck.enabled: true`, щоб виконувати + опціональну попередню перевірку циклу інструментів після нових результатів інструментів і перед наступним викликом моделі. Це лише тригер; створення підсумку все одно використовує налаштований - шлях ущільнення. Він не залежить від `maxActiveTranscriptBytes`, який є - обмежувачем розміру активного транскрипту в байтах на початку ходу. -- Задайте `agents.defaults.compaction.maxActiveTranscriptBytes` як значення в байтах або - рядок на кшталт `"20mb"`, щоб запускати локальне ущільнення перед ходом, коли активний + шлях Compaction. Це не залежить від `maxActiveTranscriptBytes`, який є + захистом за розміром активного транскрипту в байтах на початку ходу. +- Установіть `agents.defaults.compaction.maxActiveTranscriptBytes` у байтове значення або + рядок, наприклад `"20mb"`, щоб виконувати локальну Compaction перед ходом, коли активний транскрипт стає великим. Цей захист активний лише коли - `truncateAfterCompaction` також увімкнено. Не задавайте його або задайте `0`, щоб + також увімкнено `truncateAfterCompaction`. Залиште це незаданим або встановіть `0`, щоб вимкнути. -- Коли `agents.defaults.compaction.truncateAfterCompaction` увімкнено, - OpenClaw після ущільнення ротуватиме активний транскрипт у ущільнений наступний JSONL. - Старий повний транскрипт лишається в архіві й посилається з контрольної точки - ущільнення, а не переписується на місці. +- Коли ввімкнено `agents.defaults.compaction.truncateAfterCompaction`, + OpenClaw після Compaction ротує активний транскрипт у стиснутий наступний JSONL. + Старий повний транскрипт залишається заархівованим і пов’язаним із + контрольною точкою Compaction замість перезапису на місці. -Причина: залишити достатній запас для багатоходового “обслуговування” (наприклад, записів пам’яті) до того, як ущільнення стане неминучим. +Навіщо: залишити достатній запас для багатокрокового “обслуговування” (наприклад, записів пам’яті), перш ніж Compaction стане неминучою. Реалізація: `ensurePiCompactionReserveTokens()` у `src/agents/pi-settings.ts` (викликається з `src/agents/pi-embedded-runner.ts`). --- -## Підключувані провайдери ущільнення +## Підключні провайдери Compaction -Плагіни можуть реєструвати провайдера ущільнення через `registerCompactionProvider()` в API плагіна. Коли `agents.defaults.compaction.provider` задано як ідентифікатор зареєстрованого провайдера, розширення safeguard делегує підсумовування цьому провайдеру замість вбудованого конвеєра `summarizeInStages`. +Plugins можуть зареєструвати провайдера Compaction через `registerCompactionProvider()` в API Plugin. Коли `agents.defaults.compaction.provider` задано як id зареєстрованого провайдера, розширення safeguard делегує підсумовування цьому провайдеру замість вбудованого конвеєра `summarizeInStages`. -- `provider`: ідентифікатор зареєстрованого плагіна провайдера ущільнення. Не задавайте, щоб використовувати стандартне LLM-підсумовування. -- Задання `provider` примусово встановлює `mode: "safeguard"`. -- Провайдери отримують ті самі інструкції з ущільнення та політику збереження ідентифікаторів, що й вбудований шлях. -- Safeguard усе одно зберігає контекст суфікса нещодавнього ходу та розділеного ходу після виводу провайдера. +- `provider`: id зареєстрованого Plugin-провайдера Compaction. Не задавайте для типового підсумовування LLM. +- Задання `provider` примусово вмикає `mode: "safeguard"`. +- Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й вбудований шлях. +- 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`. @@ -372,12 +373,12 @@ OpenClaw також застосовує мінімальний безпечни ## Поверхні, видимі користувачу -Ви можете спостерігати за ущільненням і станом сесії через: +Ви можете спостерігати Compaction і стан сесії через: - `/status` (у будь-якій чат-сесії) - `openclaw status` (CLI) - `openclaw sessions` / `sessions --json` -- Докладний режим: `🧹 Auto-compaction complete` + кількість ущільнень +- Детальний режим: `🧹 Auto-compaction complete` + кількість Compaction --- @@ -387,68 +388,68 @@ 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 також пригнічує **потокову передачу чернетки/набору** коли -частковий фрагмент починається з `NO_REPLY`, тому тихі операції не витікають частковим -виводом посеред ходу. +Станом на `2026.1.10`, OpenClaw також пригнічує **чернетковий/typing streaming**, коли +частковий фрагмент починається з `NO_REPLY`, тож тихі операції не просочують частковий +вивід посеред ходу. --- -## Попереднє перед ущільненням "скидання пам’яті" (реалізовано) +## Перед-Compaction “скидання пам’яті” (реалізовано) -Мета: перед автоматичним ущільненням запустити тихий агентний хід, який записує довговічний -стан на диск (наприклад, `memory/YYYY-MM-DD.md` у робочій області агента), щоб ущільнення не могло +Мета: перед автоматичною Compaction виконати тихий агентний хід, який записує стійкий +стан на диск (наприклад, `memory/YYYY-MM-DD.md` у робочому просторі агента), щоб Compaction не могла стерти критичний контекст. OpenClaw використовує підхід **скидання перед порогом**: 1. Відстежувати використання контексту сесії. -2. Коли воно перетинає “м’який поріг” (нижче порога ущільнення Pi), запустити тиху +2. Коли воно перетинає “м’який поріг” (нижче порога Compaction Pi), виконати тиху директиву “запиши пам’ять зараз” для агента. -3. Використати точний тихий токен `NO_REPLY` / `no_reply`, щоб користувач нічого - не бачив. +3. Використати точний тихий токен `NO_REPLY` / `no_reply`, щоб користувач + нічого не бачив. Конфігурація (`agents.defaults.compaction.memoryFlush`): -- `enabled` (за замовчуванням: `true`) -- `model` (опційне точне перевизначення провайдера/моделі для ходу скидання, наприклад `ollama/qwen3:8b`) -- `softThresholdTokens` (за замовчуванням: `4000`) +- `enabled` (типово: `true`) +- `model` (опціональне точне перевизначення провайдера/моделі для ходу скидання, наприклад `ollama/qwen3:8b`) +- `softThresholdTokens` (типово: `4000`) - `prompt` (повідомлення користувача для ходу скидання) - `systemPrompt` (додатковий системний промпт, доданий для ходу скидання) -Примітки: +Нотатки: -- Стандартні prompt/system prompt містять підказку `NO_REPLY`, щоб пригнітити +- Типові prompt/system prompt містять підказку `NO_REPLY`, щоб пригнічувати доставку. -- Коли `model` задано, хід скидання використовує цю модель без успадкування - ланцюга fallback активної сесії, тому локальне лише обслуговування не буде непомітно - переходити на платну розмовну модель. -- Скидання запускається один раз за цикл ущільнення (відстежується в `sessions.json`). -- Скидання запускається лише для вбудованих сесій Pi (CLI-бекенди пропускають його). -- Скидання пропускається, коли робоча область сесії доступна лише для читання (`workspaceAccess: "ro"` або `"none"`). -- Див. [Пам’ять](/uk/concepts/memory) щодо структури файлів робочої області та шаблонів запису. +- Коли задано `model`, хід скидання використовує цю модель без успадкування + ланцюга запасних варіантів активної сесії, тож локальне лише обслуговування не + переходить непомітно на платну розмовну модель. +- Скидання виконується один раз за цикл Compaction (відстежується в `sessions.json`). +- Скидання виконується лише для вбудованих сесій Pi (бекенди CLI його пропускають). +- Скидання пропускається, коли робочий простір сесії доступний лише для читання (`workspaceAccess: "ro"` або `"none"`). +- Див. [Пам’ять](/uk/concepts/memory) щодо структури файлів робочого простору й шаблонів запису. -Pi також надає хук `session_before_compact` в API розширень, але логіка скидання OpenClaw +Pi також надає хук `session_before_compact` в API розширення, але логіка скидання OpenClaw сьогодні живе на боці Gateway. --- ## Контрольний список усунення несправностей -- Неправильний ключ сесії? Почніть з [/concepts/session](/uk/concepts/session) і підтвердьте `sessionKey` у `/status`. -- Невідповідність сховища й транскрипту? Підтвердьте хост Gateway і шлях до сховища з `openclaw status`. -- Спам ущільнення? Перевірте: +- Неправильний ключ сесії? Почніть із [/concepts/session](/uk/concepts/session) і підтвердьте `sessionKey` у `/status`. +- Невідповідність сховища й транскрипту? Підтвердьте хост Gateway і шлях сховища з `openclaw status`. +- Спам Compaction? Перевірте: - контекстне вікно моделі (занадто мале) - - налаштування ущільнення (`reserveTokens` завеликий для вікна моделі може спричиняти раніше ущільнення) + - налаштування Compaction (`reserveTokens` занадто велике для вікна моделі може спричинити ранішу Compaction) - роздування результатів інструментів: увімкніть/налаштуйте обрізання сесії -- Тихі ходи витікають? Переконайтеся, що відповідь починається з `NO_REPLY` (точний токен без урахування регістру) і ви використовуєте збірку, яка містить виправлення пригнічення потокової передачі. +- Просочуються тихі ходи? Підтвердьте, що відповідь починається з `NO_REPLY` (точний токен без урахування регістру) і що ви використовуєте збірку, яка містить виправлення пригнічення streaming. ## Пов’язане