chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-28 19:39:44 +00:00
parent 085283d284
commit 0efbf6b5a5
2 changed files with 231 additions and 220 deletions

View File

@ -1,40 +1,40 @@
---
read_when:
- Ви хочете зрозуміти, які інструменти сесії має агент
- Ви хочете налаштувати міжсесійний доступ або запуск субагентів
- Ви хочете перевірити статус або керувати запущеними субагентами
summary: Інструменти агента для міжсесійного статусу, відновлення контексту, обміну повідомленнями та оркестрації субагентів
title: Інструменти сесії
- Ви хочете налаштувати міжсесійний доступ або створення під-агентів
- Ви хочете перевірити статус або керувати створеними підагентами
summary: Інструменти агентів для міжсеансового статусу, пригадування, обміну повідомленнями та оркестрації субагентів
title: Інструменти сеансу
x-i18n:
generated_at: "2026-04-27T14:18:19Z"
model: gpt-5.4
generated_at: "2026-04-28T19:38:58Z"
model: gpt-5.5
provider: openai
source_hash: 19c42436ed7123cee35f397d672db1c2e0963cd1299e36d6fff41a56b880149b
source_hash: 0464116d42e271da12cbe90529e06e9f51605981be85b54bb5850ee9b8fb7824
source_path: concepts/session-tool.md
workflow: 15
workflow: 16
---
OpenClaw надає агентам інструменти для роботи між сесіями, перевірки статусу та
оркестрації субагентів.
OpenClaw надає агентам інструменти для роботи між сеансами, перевірки статусу та
оркестрування субагентів.
## Доступні інструменти
| Інструмент | Що він робить |
| ------------------ | --------------------------------------------------------------------------- |
| `sessions_list` | Показує список сесій з необов’язковими фільтрами (тип, мітка, агент, давність, попередній перегляд) |
| `sessions_history` | Читає стенограму конкретної сесії |
| `sessions_send` | Надсилає повідомлення до іншої сесії та за потреби очікує |
| `sessions_spawn` | Запускає ізольовану сесію субагента для фонової роботи |
| Інструмент | Що він робить |
| ----------------- | ---------------------------------------------------------------------------- |
| `sessions_list` | Перелічує сеанси з необов'язковими фільтрами (тип, мітка, агент, давність, попередній перегляд) |
| `sessions_history` | Читає транскрипт певного сеансу |
| `sessions_send` | Надсилає повідомлення до іншого сеансу та, за потреби, очікує |
| `sessions_spawn` | Запускає ізольований сеанс субагента для фонової роботи |
| `sessions_yield` | Завершує поточний хід і очікує подальших результатів субагента |
| `subagents` | Показує список, керує або завершує запущених субагентів для цієї сесії |
| `session_status` | Показує картку у стилі `/status` і за потреби задає перевизначення моделі для сесії |
| `subagents` | Перелічує, спрямовує або зупиняє створених субагентів для цього сеансу |
| `session_status` | Показує картку у стилі `/status` і, за потреби, встановлює перевизначення моделі для окремого сеансу |
Ці інструменти, як і раніше, підпорядковуються активному профілю інструментів і
політиці allow/deny. `tools.profile: "coding"` включає повний набір
оркестрації сесій, зокрема `sessions_spawn`, `sessions_yield` і `subagents`.
`tools.profile: "messaging"` включає інструменти міжсесійного обміну
повідомленнями (`sessions_list`, `sessions_history`, `sessions_send`, `session_status`), але
не включає запуск субагентів. Щоб зберегти профіль messaging і водночас
На ці інструменти все ще поширюються активний профіль інструментів і політика
дозволу/заборони. `tools.profile: "coding"` включає повний набір оркестрування
сеансів, зокрема `sessions_spawn`, `sessions_yield` і `subagents`.
`tools.profile: "messaging"` включає інструменти обміну повідомленнями між
сеансами (`sessions_list`, `sessions_history`, `sessions_send`, `session_status`), але
не включає створення субагентів. Щоб зберегти профіль обміну повідомленнями й усе одно
дозволити нативне делегування, додайте:
```json5
@ -46,136 +46,142 @@ OpenClaw надає агентам інструменти для роботи м
}
```
Політики групи, провайдера, пісочниці та окремого агента все ще можуть
прибрати ці інструменти після етапу профілю. Використовуйте `/tools` із
відповідної сесії, щоб перевірити фактичний список інструментів.
Політики групи, провайдера, пісочниці та окремого агента все ще можуть вилучати ці інструменти
після етапу профілю. Використайте `/tools` з відповідного сеансу, щоб перевірити
ефективний список інструментів.
## Перелік і читання сесій
## Переліки та читання сеансів
`sessions_list` повертає сесії з їхнім ключем, agentId, типом, каналом, моделлю,
кількістю токенів і часовими позначками. Можна фільтрувати за типом (`main`, `group`, `cron`, `hook`,
`node`), точною `label`, точним `agentId`, текстом пошуку або давністю
(`activeMinutes`). Якщо вам потрібне сортування у стилі поштової скриньки, інструмент також
може запитувати похідний заголовок в межах видимості, фрагмент попереднього перегляду
останнього повідомлення або обмежену кількість недавніх повідомлень у кожному рядку.
Похідні заголовки й попередні перегляди створюються лише для тих сесій,
які викликаючий агент уже може бачити згідно з налаштованою політикою
видимості інструментів сесії, тож непов’язані сесії залишаються прихованими.
`sessions_list` повертає сеанси з їхнім ключем, agentId, типом, каналом, моделлю,
кількістю токенів і часовими позначками. Фільтруйте за типом (`main`, `group`, `cron`, `hook`,
`node`), точним `label`, точним `agentId`, пошуковим текстом або давністю
(`activeMinutes`). Коли потрібне сортування у стилі поштової скриньки, він також може запитувати
похідний заголовок у межах видимості, фрагмент попереднього перегляду останнього повідомлення або обмежені
нещодавні повідомлення в кожному рядку. Похідні заголовки та попередні перегляди створюються лише для
сеансів, які викликач уже може бачити відповідно до налаштованої політики видимості
інструментів сеансу, тому непов'язані сеанси залишаються прихованими.
`sessions_history` отримує стенограму розмови для конкретної сесії.
За замовчуванням результати інструментів виключаються — передайте `includeTools: true`, щоб їх побачити.
Повернуте представлення навмисно обмежене й відфільтроване з міркувань безпеки:
`sessions_history` отримує транскрипт розмови для певного сеансу.
За замовчуванням результати інструментів виключено -- передайте `includeTools: true`, щоб побачити їх.
Повернуте подання навмисно обмежене й відфільтроване для безпеки:
- текст помічника нормалізується перед відновленням:
- теги thinking видаляються
- блоки каркаса `<relevant-memories>` / `<relevant_memories>` видаляються
- текстові XML-блоки викликів інструментів, такі як `<tool_call>...</tool_call>`,
- текст асистента нормалізується перед пригадуванням:
- теги міркувань вилучаються
- службові блоки `<relevant-memories>` / `<relevant_memories>` вилучаються
- текстові XML-блоки payload викликів інструментів, як-от `<tool_call>...</tool_call>`,
`<function_call>...</function_call>`, `<tool_calls>...</tool_calls>` і
`<function_calls>...</function_calls>`, видаляються, включно з
обрізаними payload, які так і не закриваються коректно
- спрощений каркас викликів/результатів інструментів, такий як `[Tool Call: ...]`,
`[Tool Result ...]` і `[Historical context ...]`, видаляється
- витоки керівних токенів моделі, такі як `<|assistant|>`, інші ASCII
токени `<|...|>` і повноширинні варіанти `<...>`, видаляються
- некоректний XML викликів інструментів MiniMax, такий як `<invoke ...>` /
`</minimax:tool_call>`, видаляється
`<function_calls>...</function_calls>`, вилучаються, зокрема обрізані
payload, які ніколи коректно не закриваються
- знижені службові блоки викликів/результатів інструментів, як-от `[Tool Call: ...]`,
`[Tool Result ...]` і `[Historical context ...]`, вилучаються
- витіклі токени керування моделлю, як-от `<|assistant|>`, інші ASCII
токени `<|...|>` і повноширинні варіанти `<...>`, вилучаються
- некоректний XML виклику інструмента MiniMax, як-от `<invoke ...>` /
`</minimax:tool_call>`, вилучається
- текст, схожий на облікові дані/токени, редагується перед поверненням
- довгі текстові блоки обрізаються
- дуже великі історії можуть відкидати старіші рядки або замінювати
надто великий рядок на `[sessions_history omitted: message too large]`
- інструмент повідомляє підсумкові прапорці, такі як `truncated`, `droppedMessages`,
- дуже великі історії можуть відкидати старіші рядки або замінювати завеликий рядок на
`[sessions_history omitted: message too large]`
- інструмент повідомляє прапорці підсумку, як-от `truncated`, `droppedMessages`,
`contentTruncated`, `contentRedacted` і `bytes`
Обидва інструменти приймають або **ключ сесії** (наприклад, `"main"`), або **ID сесії**
Обидва інструменти приймають або **ключ сеансу** (наприклад, `"main"`), або **ID сеансу**
з попереднього виклику списку.
Якщо вам потрібна точна стенограма побайтно, перевіряйте файл стенограми на
диску, а не використовуйте `sessions_history` як необроблений дамп.
Якщо потрібен точний побайтовий транскрипт, перевірте файл транскрипту на
диску, а не розглядайте `sessions_history` як сирий дамп.
## Надсилання міжсесійних повідомлень
## Надсилання повідомлень між сеансами
`sessions_send` доставляє повідомлення до іншої сесії та за потреби очікує
на відповідь:
`sessions_send` доставляє повідомлення до іншого сеансу та, за потреби, очікує
відповіді:
- **Fire-and-forget:** задайте `timeoutSeconds: 0`, щоб поставити в чергу й
одразу повернутися.
- **Очікування відповіді:** задайте тайм-аут і отримайте відповідь безпосередньо.
- **Надіслати й не чекати:** встановіть `timeoutSeconds: 0`, щоб поставити в чергу й повернутися
негайно.
- **Очікувати відповіді:** встановіть час очікування й отримайте відповідь inline.
Після відповіді цільової сесії OpenClaw може запустити **цикл зворотних відповідей**,
у якому агенти чергують повідомлення (до 5 ходів). Цільовий агент може відповісти
`REPLY_SKIP`, щоб зупинити це раніше.
Повідомлення та подальші відповіді A2A позначаються як міжсеансові дані в
отримувальному prompt (`[Inter-session message ... isUser=false]`) і в походженні
транскрипту. Отримувальний агент має розглядати їх як дані, маршрутизовані інструментом, а не як
пряму інструкцію, написану кінцевим користувачем.
## Допоміжні інструменти статусу й оркестрації
Після відповіді цілі OpenClaw може запустити **цикл зворотної відповіді**, де
агенти чергують повідомлення (до 5 ходів). Цільовий агент може відповісти
`REPLY_SKIP`, щоб зупинитися раніше.
`session_status` — це полегшений еквівалент `/status` для поточної
або іншої видимої сесії. Він повідомляє про використання, час, стан моделі/середовища виконання
та пов’язаний контекст фонового завдання, якщо він є. Подібно до `/status`, він може
дозаповнювати розріджені лічильники токенів/кешу з останнього запису використання у стенограмі, а
`model=default` очищає перевизначення для сесії. Використовуйте `sessionKey="current"` для
поточної сесії викликача; видимі клієнтські мітки, такі як `openclaw-tui`, не є ключами сесії.
## Помічники статусу та оркестрування
`sessions_yield` навмисно завершує поточний хід, щоб наступним повідомленням
стала подія продовження, на яку ви чекаєте. Використовуйте це після запуску субагентів, коли
хочете, щоб результати завершення прийшли наступним повідомленням, а не через цикли опитування.
`session_status` — це легкий інструмент, еквівалентний `/status`, для поточного
або іншого видимого сеансу. Він повідомляє використання, час, стан моделі/середовища виконання та
контекст пов'язаного фонового завдання, якщо він є. Як і `/status`, він може дозаповнювати
розріджені лічильники токенів/кешу з останнього запису використання в транскрипті, а
`model=default` очищає перевизначення для окремого сеансу. Використовуйте `sessionKey="current"` для
поточного сеансу викликача; видимі клієнтські мітки, як-от `openclaw-tui`, не є
ключами сеансів.
`subagents` — це допоміжний інструмент площини керування для вже запущених субагентів
`sessions_yield` навмисно завершує поточний хід, щоб наступне повідомлення могло бути
подальшою подією, на яку ви очікуєте. Використовуйте його після створення субагентів, коли
хочете, щоб результати завершення надійшли як наступне повідомлення, замість побудови
циклів опитування.
`subagents` — це помічник площини керування для вже створених субагентів
OpenClaw. Він підтримує:
- `action: "list"` для перевірки активних/нещодавніх запусків
- `action: "steer"` для надсилання додаткових вказівок запущеному дочірньому агенту
- `action: "kill"` для зупинки одного дочірнього агента або `all`
- `action: "steer"` для надсилання подальших вказівок запущеній дочірній сутності
- `action: "kill"` для зупинення однієї дочірньої сутності або `all`
## Запуск субагентів
## Створення субагентів
`sessions_spawn` за замовчуванням створює ізольовану сесію для фонового завдання.
Він завжди неблокувальний одразу повертає `runId` і
`sessions_spawn` за замовчуванням створює ізольований сеанс для фонового завдання.
Він завжди неблокувальний -- одразу повертає `runId` і
`childSessionKey`.
Ключові параметри:
- `runtime: "subagent"` (типово) або `"acp"` для зовнішніх агентів harness.
- перевизначення `model` і `thinking` для дочірньої сесії.
- `thread: true`, щоб прив’язати запуск до потоку чату (Discord, Slack тощо).
- `sandbox: "require"`, щоб примусово використовувати пісочницю для дочірнього агента.
- `context: "fork"` для нативних субагентів, коли дочірньому агенту потрібна стенограма
поточного запитувача; пропустіть цей параметр або використайте `context: "isolated"` для чистої дочірньої сесії.
- `runtime: "subagent"` (за замовчуванням) або `"acp"` для зовнішніх агентів harness.
- Перевизначення `model` і `thinking` для дочірнього сеансу.
- `thread: true` для прив'язування spawn до потоку чату (Discord, Slack тощо).
- `sandbox: "require"` для примусового застосування пісочниці до дочірньої сутності.
- `context: "fork"` для нативних субагентів, коли дочірній сутності потрібен поточний
транскрипт запитувача; опустіть його або використайте `context: "isolated"` для чистої дочірньої сутності.
Листові субагенти за замовчуванням не отримують інструментів сесії. Якщо
`maxSpawnDepth >= 2`, то субагенти-оркестратори рівня глибини 1 додатково отримують
Типові кінцеві субагенти не отримують інструменти сеансу. Коли
`maxSpawnDepth >= 2`, субагенти-оркестратори глибини 1 додатково отримують
`sessions_spawn`, `subagents`, `sessions_list` і `sessions_history`, щоб вони
могли керувати власними дочірніми агентами. Листові запуски все одно не отримують рекурсивних
інструментів оркестрації.
могли керувати власними дочірніми сутностями. Кінцеві запуски все одно не отримують рекурсивні
інструменти оркестрування.
Після завершення крок сповіщення публікує результат у канал запитувача.
Доставка завершення зберігає прив’язану маршрутизацію потоку/теми, коли це можливо, а якщо
джерело завершення ідентифікує лише канал, OpenClaw усе одно може повторно використати
збережений маршрут сесії запитувача (`lastChannel` / `lastTo`) для прямої
Після завершення крок оголошення публікує результат у каналі запитувача.
Доставка завершення зберігає прив'язану маршрутизацію потоку/теми, коли вона доступна, і якщо
джерело завершення ідентифікує лише канал, OpenClaw все одно може повторно використати
збережений маршрут сеансу запитувача (`lastChannel` / `lastTo`) для прямої
доставки.
Для поведінки, специфічної для ACP, див. [ACP Agents](/uk/tools/acp-agents).
Для поведінки, специфічної для ACP, див. [Агенти ACP](/uk/tools/acp-agents).
## Видимість
Інструменти сесії мають обмежену область видимості, щоб обмежити те, що агент може бачити:
Інструменти сеансу обмежені за областю, щоб контролювати, що агент може бачити:
| Рівень | Область видимості |
| Рівень | Область |
| ------- | ---------------------------------------- |
| `self` | Лише поточна сесія |
| `tree` | Поточна сесія + запущені субагенти |
| `agent` | Усі сесії для цього агента |
| `all` | Усі сесії (між агентами, якщо налаштовано) |
| `self` | Лише поточний сеанс |
| `tree` | Поточний сеанс + створені субагенти |
| `agent` | Усі сеанси для цього агента |
| `all` | Усі сеанси (між агентами, якщо налаштовано) |
За замовчуванням використовується `tree`. Сесії в пісочниці примусово обмежуються до `tree`
незалежно від конфігурації.
За замовчуванням використовується `tree`. Сеанси в пісочниці обмежуються до `tree` незалежно від
конфігурації.
## Додаткові матеріали
- [Session Management](/uk/concepts/session) -- маршрутизація, життєвий цикл, обслуговування
- [ACP Agents](/uk/tools/acp-agents) -- запуск зовнішніх harness-агентів
- [Multi-agent](/uk/concepts/multi-agent) -- багатoагентна архітектура
- [Gateway Configuration](/uk/gateway/configuration) -- параметри конфігурації інструментів сесії
- [Керування сеансами](/uk/concepts/session) -- маршрутизація, життєвий цикл, обслуговування
- [Агенти ACP](/uk/tools/acp-agents) -- створення зовнішніх harness
- [Мультиагентність](/uk/concepts/multi-agent) -- мультиагентна архітектура
- [Конфігурація Gateway](/uk/gateway/configuration) -- параметри конфігурації інструментів сеансу
## Пов’язані матеріали
## Пов'язане
- [Session management](/uk/concepts/session)
- [Session pruning](/uk/concepts/session-pruning)
- [Керування сеансами](/uk/concepts/session)
- [Обрізання сеансів](/uk/concepts/session-pruning)

View File

@ -1,92 +1,93 @@
---
read_when:
- Ви налагоджуєте відхилення запитів постачальником, пов’язані з формою транскрипту
- Ви змінюєте логіку санітизації транскрипту або відновлення викликів інструментів
- Ви досліджуєте невідповідності ідентифікаторів викликів інструментів між постачальниками
summary: 'Довідник: правила санітизації та відновлення транскриптів, специфічні для постачальників'
title: Гігієна транскриптів
- Ви налагоджуєте відхилення запитів провайдером, пов’язані зі структурою транскрипту
- Ви змінюєте логіку санітизації транскрипту або виправлення викликів інструментів
- Ви досліджуєте невідповідності ідентифікаторів викликів інструментів між провайдерами
summary: 'Довідка: правила очищення та відновлення транскриптів, специфічні для провайдера'
title: Гігієна транскрипту
x-i18n:
generated_at: "2026-04-27T23:14:22Z"
model: gpt-5.4
generated_at: "2026-04-28T19:39:03Z"
model: gpt-5.5
provider: openai
source_hash: 32242fe22101e83906881fb66b89f2555cab8559f5f6f73308d94dec068c8088
source_hash: 51459c719c6314b2980057d7e1e003e1598e8fe4a619c081aa25ce29200645a8
source_path: reference/transcript-hygiene.md
workflow: 15
workflow: 16
---
OpenClaw застосовує **специфічні для постачальників виправлення** до транскриптів перед запуском (під час побудови контексту моделі). Більшість із них — це коригування **в пам’яті**, які використовуються для дотримання суворих вимог постачальника. Окремий прохід відновлення файлу сеансу також може переписувати збережений JSONL перед завантаженням сеансу — або видаляючи пошкоджені рядки JSONL, або відновлюючи збережені ходи, які є синтаксично коректними, але, як відомо, відхиляються
постачальником під час повторного програвання. Коли відновлення відбувається, оригінальний файл резервно копіюється поруч
із файлом сеансу.
OpenClaw застосовує **специфічні для провайдера виправлення** до транскриптів перед запуском (під час побудови контексту моделі). Більшість із них — це коригування **в пам’яті**, які використовуються для задоволення суворих вимог провайдера. Окремий прохід ремонту файлу сеансу також може переписати збережений JSONL до завантаження сеансу: або відкинувши некоректні рядки JSONL, або виправивши збережені репліки, які синтаксично валідні, але відомо, що їх відхиляє
провайдер під час повторного відтворення. Коли відбувається ремонт, оригінальний файл резервно копіюється поруч із
файлом сеансу.
Обсяг включає:
Область охоплює:
- Контекст запиту лише для виконання, що не потрапляє в видимі користувачеві ходи транскрипту
- Санітизацію ідентифікаторів викликів інструментів
- Валідацію вхідних даних викликів інструментів
- Відновлення парування результатів інструментів
- Валідацію / упорядкування ходів
- Очищення сигнатур думок
- Очищення сигнатур thinking
- Санітизацію корисного навантаження зображень
- Тегування походження користувацького вводу (для промптів, маршрутизованих між сеансами)
- Відновлення порожніх ходів помилки асистента для повторного програвання Bedrock Converse
- Контекст prompt лише під час виконання, який не потрапляє в видимі користувачу репліки транскрипту
- Очищення ідентифікаторів викликів інструментів
- Перевірка вхідних даних викликів інструментів
- Ремонт зіставлення результатів інструментів
- Перевірка / упорядкування реплік
- Очищення підписів думок
- Очищення підписів мислення
- Очищення корисного навантаження зображень
- Позначення походження користувацького вводу (для prompt, маршрутизованих між сеансами)
- Ремонт порожніх помилкових реплік асистента для повторного відтворення Bedrock Converse
Якщо вам потрібні подробиці про зберігання транскриптів, див.:
Якщо вам потрібні деталі зберігання транскриптів, див.:
- [Поглиблений розбір керування сеансами](/uk/reference/session-management-compaction)
- [Поглиблений огляд керування сеансами](/uk/reference/session-management-compaction)
---
## Глобальне правило: контекст виконання — це не користувацький транскрипт
## Глобальне правило: контекст виконання не є користувацьким транскриптом
Контекст виконання/системний контекст може додаватися до промпту моделі для ходу, але це
не вміст, створений кінцевим користувачем. OpenClaw зберігає окреме
тіло промпту, орієнтоване на транскрипт, для відповідей Gateway, запланованих followup-повідомлень, ACP, CLI та вбудованих запусків Pi. Збережені видимі користувацькі ходи використовують це
тіло транскрипту замість промпту, збагаченого контекстом виконання.
Контекст виконання/системи може бути доданий до prompt моделі для репліки, але це
не контент, створений кінцевим користувачем. OpenClaw зберігає окреме тіло
prompt, орієнтоване на транскрипт, для відповідей Gateway, чергових подальших повідомлень, ACP, CLI та вбудованих запусків Pi.
Збережені видимі користувацькі репліки використовують це тіло транскрипту замість
збагаченого під час виконання prompt.
Для застарілих сеансів, які вже зберегли обгортки виконання,
поверхні історії Gateway застосовують проєкцію відображення перед поверненням повідомлень у WebChat,
TUI, REST або SSE-клієнтам.
Для застарілих сеансів, які вже зберегли обгортки виконання, поверхні історії Gateway
застосовують проєкцію відображення перед поверненням повідомлень клієнтам WebChat,
TUI, REST або SSE.
---
## Де це виконується
Уся гігієна транскриптів централізована у вбудованому ранері:
Уся гігієна транскриптів централізована у вбудованому runner:
- Вибір політики: `src/agents/transcript-policy.ts`
- Застосування санітизації/відновлення: `sanitizeSessionHistory` у `src/agents/pi-embedded-runner/replay-history.ts`
- Застосування очищення/ремонту: `sanitizeSessionHistory` у `src/agents/pi-embedded-runner/replay-history.ts`
Політика використовує `provider`, `modelApi` і `modelId`, щоб вирішити, що застосовувати.
Окремо від гігієни транскриптів, файли сеансів відновлюються (за потреби) перед завантаженням:
Окремо від гігієни транскриптів файли сеансів ремонтуються (за потреби) перед завантаженням:
- `repairSessionFileIfNeeded` у `src/agents/session-file-repair.ts`
- Викликається з `run/attempt.ts` і `compact.ts` (вбудований ранер)
- Викликається з `run/attempt.ts` і `compact.ts` (вбудований runner)
---
## Глобальне правило: санітизація зображень
## Глобальне правило: очищення зображень
Корисне навантаження зображень завжди санітизується, щоб запобігти відхиленню з боку постачальника через обмеження
розміру (зменшення роздільності/повторне стиснення завеликих base64-зображень).
Корисне навантаження зображень завжди очищується, щоб запобігти відхиленню на боці провайдера через обмеження
розміру (зменшення масштабу/повторне стиснення надмірно великих зображень base64).
Це також допомагає контролювати тиск на токени, спричинений зображеннями, для моделей із підтримкою зору.
Це також допомагає контролювати тиск токенів від зображень для моделей із підтримкою зору.
Менші максимальні розміри зазвичай зменшують використання токенів; більші розміри зберігають деталізацію.
Реалізація:
- `sanitizeSessionMessagesImages` у `src/agents/pi-embedded-helpers/images.ts`
- `sanitizeContentBlocksImages` у `src/agents/tool-images.ts`
- Максимальний розмір сторони зображення налаштовується через `agents.defaults.imageMaxDimensionPx` (типове значення: `1200`).
- Максимальна сторона зображення налаштовується через `agents.defaults.imageMaxDimensionPx` (типово: `1200`).
---
## Глобальне правило: пошкоджені виклики інструментів
## Глобальне правило: некоректні виклики інструментів
Блоки викликів інструментів асистента, у яких відсутні і `input`, і `arguments`, відкидаються
перед побудовою контексту моделі. Це запобігає відхиленням з боку постачальника через частково
збережені виклики інструментів (наприклад, після помилки обмеження швидкості).
до побудови контексту моделі. Це запобігає відхиленням провайдером через частково
збережені виклики інструментів (наприклад, після збою через ліміт частоти).
Реалізація:
@ -95,106 +96,110 @@ TUI, REST або SSE-клієнтам.
---
## Глобальне правило: походження вводу між сеансами
## Глобальне правило: походження міжсеансового вводу
Коли агент надсилає промпт в інший сеанс через `sessions_send` (зокрема
під час кроків відповіді/оголошення від агента до агента), OpenClaw зберігає створений користувацький хід із:
Коли агент надсилає prompt в інший сеанс через `sessions_send` (зокрема
кроки відповіді/оголошення між агентами), OpenClaw зберігає створену користувацьку репліку з:
- `message.provenance.kind = "inter_session"`
Ці метадані записуються під час додавання до транскрипту й не змінюють роль
(`role: "user"` зберігається для сумісності з постачальниками). Читачі транскриптів можуть використовувати
це, щоб не трактувати маршрутизовані внутрішні промпти як інструкції, створені кінцевим користувачем.
OpenClaw також додає на початок тієї самої репліки маркер `[Inter-session message ... isUser=false]`
перед текстом маршрутизованого prompt, щоб активний виклик моделі міг відрізнити
вивід стороннього сеансу від зовнішніх інструкцій кінцевого користувача. Цей маркер містить
вихідний сеанс, канал і інструмент, коли вони доступні. Транскрипт усе ще використовує
`role: "user"` для сумісності з провайдером, але і видимий текст, і метадані
походження позначають репліку як міжсеансові дані.
Під час перебудови контексту OpenClaw також додає на початок таких користувацьких ходів у пам’яті короткий
маркер `[Inter-session message]`, щоб модель могла відрізняти їх від
зовнішніх інструкцій кінцевого користувача.
Під час перебудови контексту OpenClaw застосовує той самий маркер до старіших збережених
міжсеансових користувацьких реплік, які мають лише метадані походження.
---
## Матриця постачальників (поточна поведінка)
## Матриця провайдерів (поточна поведінка)
**OpenAI / OpenAI Codex**
- Лише санітизація зображень.
- Відкидання осиротілих сигнатур reasoning (окремих елементів reasoning без наступного блоку контенту) для транскриптів OpenAI Responses/Codex, а також відкидання придатного до повторного програвання OpenAI reasoning після перемикання маршруту моделі.
- Збереження придатних до повторного програвання корисних навантажень елементів reasoning OpenAI Responses, включно із зашифрованими елементами з порожнім summary, щоб ручне/WebSocket-повторне програвання зберігало потрібний стан `rs_*`, спарений з елементами виводу асистента.
- Без санітизації ідентифікаторів викликів інструментів.
- Відновлення парування результатів інструментів може переміщувати справжні відповідні результати та синтезувати результати `aborted` у стилі Codex для відсутніх викликів інструментів.
- Без валідації чи перевпорядкування ходів.
- Відсутні результати інструментів сімейства OpenAI Responses синтезуються як `aborted`, щоб відповідати нормалізації повторного програвання Codex.
- Без видалення сигнатур думок.
- Лише очищення зображень.
- Відкидати осиротілі підписи reasoning (окремі елементи reasoning без наступного блока контенту) для транскриптів OpenAI Responses/Codex і відкидати повторно відтворюваний OpenAI reasoning після перемикання маршруту моделі.
- Зберігати повторно відтворювані payload елементів reasoning OpenAI Responses, зокрема зашифровані елементи з порожнім підсумком, щоб ручне/WebSocket повторне відтворення зберігало потрібний стан `rs_*`, поєднаний з елементами виводу асистента.
- Без очищення ідентифікаторів викликів інструментів.
- Ремонт зіставлення результатів інструментів може переміщувати реальні зіставлені виводи та синтезувати Codex-стилю виводи `aborted` для відсутніх викликів інструментів.
- Без перевірки чи переупорядкування реплік.
- Відсутні виводи інструментів сімейства OpenAI Responses синтезуються як `aborted`, щоб відповідати нормалізації повторного відтворення Codex.
- Без видалення підписів думок.
**OpenAI-compatible Gemma 4**
**OpenAI-сумісна Gemma 4**
- Історичні блоки thinking/reasoning асистента видаляються перед повторним програванням, щоб локальні
OpenAI-сумісні сервери Gemma 4 не отримували контент reasoning із попередніх ходів.
- Продовження викликів інструментів у поточному ході зберігають блок reasoning асистента
прив’язаним до виклику інструмента, доки результат інструмента не буде повторно програно.
- Історичні блоки мислення/reasoning асистента видаляються перед повторним відтворенням, щоб локальні
OpenAI-сумісні сервери Gemma 4 не отримували контент reasoning із попередніх реплік.
- Поточні продовження викликів інструментів у межах тієї самої репліки зберігають блок reasoning асистента
приєднаним до виклику інструмента, доки результат інструмента не буде повторно відтворено.
**Google (Generative AI / Gemini CLI / Antigravity)**
- Санітизація ідентифікаторів викликів інструментів: суворо алфавітно-цифрові.
- Відновлення парування результатів інструментів і синтетичні результати інструментів.
- Валідація ходів (чергування ходів у стилі Gemini).
- Виправлення порядку ходів Google (додавання маленького початкового user-ходу, якщо історія починається з assistant).
- Antigravity Claude: нормалізація сигнатур thinking; відкидання блоків thinking без сигнатури.
- Очищення ідентифікаторів викликів інструментів: суворо літерно-цифрові.
- Ремонт зіставлення результатів інструментів і синтетичні результати інструментів.
- Перевірка реплік (чергування реплік у стилі Gemini).
- Виправлення порядку реплік Google (додавання на початок крихітного користувацького bootstrap, якщо історія починається з асистента).
- Antigravity Claude: нормалізувати підписи мислення; відкидати непідписані блоки мислення.
**Anthropic / Minimax (Anthropic-compatible)**
**Anthropic / Minimax (Anthropic-сумісні)**
- Відновлення парування результатів інструментів і синтетичні результати інструментів.
- Валідація ходів (об’єднання послідовних user-ходів для дотримання суворого чергування).
- Кінцеві assistant-prefill ходи видаляються з вихідних корисних навантажень Anthropic Messages,
коли увімкнено thinking, включно з маршрутами Cloudflare AI Gateway.
- Блоки thinking із відсутніми, порожніми або пробільними сигнатурами повторного програвання видаляються
перед перетворенням для постачальника. Якщо це спорожнює хід асистента, OpenClaw зберігає
форму ходу, використовуючи непорожній текст пропущеного reasoning.
- Старіші ходи асистента, що містять лише thinking і мають бути видалені, замінюються
непорожнім текстом пропущеного reasoning, щоб адаптери постачальника не відкидали хід під час повторного програвання.
- Ремонт зіставлення результатів інструментів і синтетичні результати інструментів.
- Перевірка реплік (об’єднання послідовних користувацьких реплік для задоволення суворого чергування).
- Кінцеві репліки попереднього заповнення асистента видаляються з вихідних payload Anthropic Messages,
коли мислення ввімкнено, зокрема для маршрутів Cloudflare AI Gateway.
- Блоки мислення з відсутніми, порожніми або blank підписами повторного відтворення видаляються
перед перетворенням для провайдера. Якщо це спорожнює репліку асистента, OpenClaw зберігає
форму репліки з непорожнім текстом про пропущене reasoning.
- Старіші репліки асистента лише з мисленням, які потрібно видалити, замінюються
непорожнім текстом про пропущене reasoning, щоб адаптери провайдерів не відкидали репліку
повторного відтворення.
**Amazon Bedrock (Converse API)**
- Порожні assistant-ходи помилки потоку відновлюються до непорожнього резервного текстового блоку
перед повторним програванням. Bedrock Converse відхиляє повідомлення assistant із `content: []`, тому
збережені assistant-ходи з `stopReason: "error"` і порожнім вмістом також відновлюються на диску перед завантаженням.
- Блоки Claude thinking із відсутніми, порожніми або пробільними сигнатурами повторного програвання
видаляються перед повторним програванням Converse. Якщо це спорожнює хід асистента, OpenClaw
зберігає форму ходу, використовуючи непорожній текст пропущеного reasoning.
- Старіші ходи асистента, що містять лише thinking і мають бути видалені, замінюються
непорожнім текстом пропущеного reasoning, щоб повторне програвання Converse зберігало сувору форму ходу.
- Повторне програвання фільтрує ходи асистента delivery-mirror OpenClaw і gateway-injected.
- Санітизація зображень застосовується через глобальне правило.
- Порожні репліки асистента з помилкою stream ремонтуються в непорожній fallback текстовий блок
перед повторним відтворенням. Bedrock Converse відхиляє повідомлення асистента з `content: []`, тому
збережені репліки асистента з `stopReason: "error"` і порожнім контентом також
ремонтуються на диску перед завантаженням.
- Блоки мислення Claude з відсутніми, порожніми або blank підписами повторного відтворення
видаляються перед повторним відтворенням Converse. Якщо це спорожнює репліку асистента, OpenClaw
зберігає форму репліки з непорожнім текстом про пропущене reasoning.
- Старіші репліки асистента лише з мисленням, які потрібно видалити, замінюються
непорожнім текстом про пропущене reasoning, щоб повторне відтворення Converse зберігало сувору форму реплік.
- Повторне відтворення фільтрує delivery-mirror OpenClaw і вставлені gateway репліки асистента.
- Очищення зображень застосовується через глобальне правило.
**Mistral (включно з виявленням за model-id)**
**Mistral (зокрема виявлення на основі ідентифікатора моделі)**
- Санітизація ідентифікаторів викликів інструментів: strict9 (алфавітно-цифрові, довжина 9).
- Очищення ідентифікаторів викликів інструментів: strict9 (літерно-цифрові довжиною 9).
**OpenRouter Gemini**
- Очищення сигнатур думок: видалення значень `thought_signature`, які не є base64 (base64 зберігається).
- Очищення підписів думок: видаляти не-base64 значення `thought_signature` (залишати base64).
**Усе інше**
- Лише санітизація зображень.
- Лише очищення зображень.
---
## Історична поведінка (до 2026.1.22)
До релізу 2026.1.22 OpenClaw застосовував кілька шарів гігієни транскриптів:
До випуску 2026.1.22 OpenClaw застосовував кілька шарів гігієни транскриптів:
- **Розширення transcript-sanitize** запускалося під час кожної побудови контексту й могло:
- Відновлювати парування використання інструментів/результатів.
- Санітизувати ідентифікатори викликів інструментів (зокрема в нестрогому режимі, який зберігав `_`/`-`).
- Ранер також виконував санітизацію, специфічну для постачальника, що дублювало роботу.
- Додаткові мутації відбувалися поза політикою постачальника, зокрема:
- **transcript-sanitize extension** виконувався під час кожної побудови контексту і міг:
- Ремонтувати зіставлення використання/результатів інструментів.
- Очищати ідентифікатори викликів інструментів (зокрема несуворий режим, який зберігав `_`/`-`).
- Runner також виконував специфічне для провайдера очищення, що дублювало роботу.
- Додаткові мутації відбувалися поза політикою провайдера, зокрема:
- Видалення тегів `<final>` із тексту асистента перед збереженням.
- Відкидання порожніх ходів помилки асистента.
- Відкидання порожніх помилкових реплік асистента.
- Обрізання контенту асистента після викликів інструментів.
Ця складність спричиняла регресії між постачальниками (особливо для парування
`openai-responses` `call_id|fc_id`). Очищення 2026.1.22 прибрало розширення, централізувало
логіку в ранері та зробило OpenAI **без втручання** поза санітизацією зображень.
Ця складність спричиняла регресії між провайдерами (особливо для зіставлення `openai-responses`
`call_id|fc_id`). Очищення 2026.1.22 видалило extension, централізувало
логіку в runner і зробило OpenAI **без змін** поза очищенням зображень.
## Пов’язане