chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-12 18:29:29 +00:00
parent e447d6b021
commit a8898e4969
9 changed files with 3150 additions and 1951 deletions

View File

@ -1,36 +1,36 @@
---
read_when:
- Зміна правил групових повідомлень або згадок
summary: Поведінка та конфігурація для обробки групових повідомлень WhatsApp (`mentionPatterns` є спільними для різних поверхонь)
summary: Поведінка та конфігурація для обробки групових повідомлень WhatsApp (mentionPatterns спільні для всіх поверхонь)
title: Групові повідомлення
x-i18n:
generated_at: "2026-04-05T17:57:38Z"
generated_at: "2026-04-12T18:22:01Z"
model: gpt-5.4
provider: openai
source_hash: 2543be5bc4c6f188f955df580a6fef585ecbfc1be36ade5d34b1a9157e021bc5
source_hash: 5d9484dd1de74d42f8dce4c3ac80d60c24864df30a7802e64893ef55506230fe
source_path: channels/group-messages.md
workflow: 15
---
# Групові повідомлення (канал WhatsApp web)
# Групові повідомлення (веб-канал WhatsApp)
Мета: дати змогу Clawd бути в групах WhatsApp, прокидатися лише коли його згадують, і тримати цей тред окремо від особистої DM-сесії.
Мета: дозволити Clawd бути присутнім у групах WhatsApp, прокидатися лише коли його пінгують, і тримати цей потік окремо від особистої сесії в DM.
Примітка: `agents.list[].groupChat.mentionPatterns` тепер також використовується в Telegram/Discord/Slack/iMessage; цей документ зосереджений на поведінці, специфічній для WhatsApp. Для конфігурацій із кількома агентами задавайте `agents.list[].groupChat.mentionPatterns` для кожного агента окремо (або використовуйте `messages.groupChat.mentionPatterns` як глобальний резервний варіант).
Примітка: `agents.list[].groupChat.mentionPatterns` тепер також використовується для Telegram/Discord/Slack/iMessage; цей документ зосереджений на поведінці, специфічній для WhatsApp. Для конфігурацій із кількома агентами задавайте `agents.list[].groupChat.mentionPatterns` для кожного агента окремо (або використовуйте `messages.groupChat.mentionPatterns` як глобальний запасний варіант).
## Поточна реалізація (2025-12-03)
- Режими активації: `mention` (типово) або `always`. `mention` вимагає згадки (справжні @-згадки WhatsApp через `mentionedJids`, безпечні regex-шаблони або E.164 номер бота будь-де в тексті). `always` пробуджує агента на кожне повідомлення, але він має відповідати лише тоді, коли може додати справді корисну цінність; інакше він повертає точний тихий токен `NO_REPLY` / `no_reply`. Типові значення можна задати в конфігурації (`channels.whatsapp.groups`) і перевизначити для кожної групи через `/activation`. Якщо задано `channels.whatsapp.groups`, це також працює як allowlist груп (включіть `"*"` , щоб дозволити всі).
- Політика для груп: `channels.whatsapp.groupPolicy` визначає, чи приймаються групові повідомлення (`open|disabled|allowlist`). Для `allowlist` використовується `channels.whatsapp.groupAllowFrom` (резервно: явний `channels.whatsapp.allowFrom`). Типове значення — `allowlist` (заблоковано, доки ви не додасте відправників).
- Сесії для кожної групи: ключі сесій мають вигляд `agent:<agentId>:whatsapp:group:<jid>`, тому команди на кшталт `/verbose on` або `/think high` (надіслані як окремі повідомлення) застосовуються лише до цієї групи; стан особистих DM не змінюється. Heartbeat для групових тредів пропускаються.
- Ін’єкція контексту: групові повідомлення зі статусом **pending-only** (типово 50), які е_ запустили виконання, додаються на початок у блоці `[Chat messages since your last reply - for context]`, а повідомлення-тригер — у блоці `[Current message - respond to this]`. Повідомлення, які вже є в сесії, не додаються повторно.
- Відображення відправника: кожна групова партія тепер завершується рядком `[from: Ім’я відправника (+E164)]`, щоб Pi знав, хто говорить.
- Ephemeral/view-once: ми розгортаємо їх перед витягуванням тексту/згадок, тож згадки всередині них теж запускають спрацювання.
- Системний промпт групи: на першому ході групової сесії (і щоразу, коли `/activation` змінює режим) ми додаємо короткий фрагмент до системного промпта, наприклад `You are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), … Activation: trigger-only … Address the specific sender noted in the message context.` Якщо метадані недоступні, ми все одно повідомляємо агенту, що це груповий чат.
- Режими активації: `mention` (типово) або `always`. `mention` вимагає пінг (справжні @-згадки WhatsApp через `mentionedJids`, безпечні regex-шаблони або E.164 номер бота будь-де в тексті). `always` пробуджує агента на кожне повідомлення, але він має відповідати лише тоді, коли може додати змістовну цінність; інакше він повертає точний тихий токен `NO_REPLY` / `no_reply`. Типові значення можна задати в конфігурації (`channels.whatsapp.groups`) і перевизначити для кожної групи через `/activation`. Коли задано `channels.whatsapp.groups`, це також працює як список дозволених груп (додайте `"*"` для дозволу всіх).
- Політика груп: `channels.whatsapp.groupPolicy` керує тим, чи приймаються групові повідомлення (`open|disabled|allowlist`). `allowlist` використовує `channels.whatsapp.groupAllowFrom` (запасний варіант: явний `channels.whatsapp.allowFrom`). Типове значення — `allowlist` (блокується, доки ви не додасте відправників).
- Сесії для кожної групи: ключі сесій мають вигляд `agent:<agentId>:whatsapp:group:<jid>`, тому такі команди, як `/verbose on`, `/trace on` або `/think high` (надіслані як окремі повідомлення), обмежуються цією групою; стан особистих DM не змінюється. Heartbeat для групових потоків пропускаються.
- Додавання контексту: групові повідомлення **лише в очікуванні** (типово 50), які е_ запустили виконання, додаються на початку під `[Chat messages since your last reply - for context]`, а рядок, що спрацював як тригер, — під `[Current message - respond to this]`. Повідомлення, які вже є в сесії, не додаються повторно.
- Відображення відправника: кожен пакет групових повідомлень тепер завершується рядком `[from: Sender Name (+E164)]`, щоб Pi знав, хто говорить.
- Ephemeral/view-once: ми розгортаємо їх перед витягуванням тексту/згадок, тому пінги всередині них також спрацьовують.
- Системний prompt групи: на першому ході групової сесії (і щоразу, коли `/activation` змінює режим) ми додаємо короткий фрагмент у системний prompt, наприклад `You are replying inside the WhatsApp group "<subject>". Group members: Alice (+44...), Bob (+43...), … Activation: trigger-only … Address the specific sender noted in the message context.` Якщо метадані недоступні, ми все одно повідомляємо агенту, що це груповий чат.
## Приклад конфігурації (WhatsApp)
Додайте блок `groupChat` до `~/.openclaw/openclaw.json`, щоб згадки за відображуваним іменем працювали навіть тоді, коли WhatsApp прибирає візуальний `@` із тексту повідомлення:
Додайте блок `groupChat` до `~/.openclaw/openclaw.json`, щоб згадки за відображуваним іменем працювали навіть тоді, коли WhatsApp прибирає візуальний `@` з тексту повідомлення:
```json5
{
@ -57,8 +57,8 @@ x-i18n:
Примітки:
- Ці regex нечутливі до регістру та використовують ті самі захисні обмеження safe-regex, що й інші поверхні конфігурації regex; недійсні шаблони та небезпечні вкладені повторення ігноруються.
- WhatsApp усе ще надсилає канонічні згадки через `mentionedJids`, коли хтось торкається контакту, тож резервний варіант із номером рідко потрібен, але є корисною страховкою.
- Ці regex є нечутливими до регістру та використовують ті самі захисні обмеження safe-regex, що й інші поверхні конфігурації regex; недійсні шаблони та небезпечні вкладені повторення ігноруються.
- WhatsApp усе ще надсилає канонічні згадки через `mentionedJids`, коли хтось торкається контакту, тож запасний варіант із номером рідко потрібен, але є корисною страховкою.
### Команда активації (лише для власника)
@ -67,25 +67,25 @@ x-i18n:
- `/activation mention`
- `/activation always`
Змінювати це може лише номер власника (з `channels.whatsapp.allowFrom`, або власний E.164 номер бота, якщо не задано). Надішліть `/status` як окреме повідомлення в групі, щоб побачити поточний режим активації.
Лише номер власника (з `channels.whatsapp.allowFrom`, або власний E.164 бота, якщо не задано) може це змінити. Надішліть `/status` як окреме повідомлення в групу, щоб побачити поточний режим активації.
## Як використовувати
1. Додайте свій обліковий запис WhatsApp (той, на якому працює OpenClaw) до групи.
2. Напишіть `@openclaw …` (або вкажіть номер). Лише відправники з allowlist можуть його запускати, якщо ви не встановили `groupPolicy: "open"`.
3. Промпт агента включатиме нещодавній груповий контекст і завершальний маркер `[from: …]`, щоб він міг звернутися до правильної людини.
4. Директиви рівня сесії (`/verbose on`, `/think high`, `/new` або `/reset`, `/compact`) застосовуються лише до сесії цієї групи; надсилайте їх як окремі повідомлення, щоб вони зареєструвалися. Ваша особиста DM-сесія залишається незалежною.
2. Скажіть `@openclaw …` (або вкажіть номер). Лише відправники зі списку дозволених можуть його запускати, якщо тільки ви не встановите `groupPolicy: "open"`.
3. Prompt агента міститиме нещодавній груповий контекст плюс кінцевий маркер `[from: …]`, щоб він міг звернутися до правильної людини.
4. Директиви рівня сесії (`/verbose on`, `/trace on`, `/think high`, `/new` або `/reset`, `/compact`) застосовуються лише до сесії цієї групи; надсилайте їх як окремі повідомлення, щоб вони зареєструвалися. Ваша особиста DM-сесія залишається незалежною.
## Тестування / перевірка
- Ручна перевірка:
- Надішліть згадку `@openclaw` у групі й переконайтеся, що відповідь посилається на ім’я відправника.
- Надішліть другу згадку й перевірте, що блок історії включається, а потім очищується на наступному ході.
- Ручний smoke-тест:
- Надішліть пінг `@openclaw` у групі та підтвердьте відповідь, яка посилається на ім’я відправника.
- Надішліть другий пінг і перевірте, що блок історії включається, а потім очищується на наступному ході.
- Перевірте журнали gateway (запустіть із `--verbose`), щоб побачити записи `inbound web message`, які показують `from: <groupJid>` і суфікс `[from: …]`.
## Відомі особливості
- Heartbeat навмисно пропускаються для груп, щоб уникнути шумних широкомовних повідомлень.
- Придушення ехо використовує об’єднаний рядок партії; якщо ви двічі надсилаєте однаковий текст без згадок, відповідь буде лише на перше повідомлення.
- Записи в сховищі сесій матимуть вигляд `agent:<agentId>:whatsapp:group:<jid>` у сховищі сесій (типово `~/.openclaw/agents/<agentId>/sessions/sessions.json`); відсутній запис просто означає, що група ще не запускала виконання.
- Індикатори набору в групах дотримуються `agents.defaults.typingMode` (типово: `message`, коли немає згадки).
- Придушення ехо використовує об’єднаний рядок пакета; якщо ви двічі надішлете однаковий текст без згадок, відповідь буде лише на перший раз.
- Записи в сховищі сесій відображатимуться як `agent:<agentId>:whatsapp:group:<jid>` у сховищі сесій (`~/.openclaw/agents/<agentId>/sessions/sessions.json` типово); відсутній запис лише означає, що група ще не запускала виконання.
- Індикатори набору тексту в групах дотримуються `agents.defaults.typingMode` (типово: `message`, коли немає згадки).

View File

@ -1,36 +1,36 @@
---
read_when:
- Ви хочете зрозуміти, для чого потрібна активна пам’ять
- Ви хочете ввімкнути активну пам’ять для розмовного агента
- Ви хочете налаштувати поведінку активної пам’яті, не вмикаючи її всюди
summary: Підлеглий агент блокувальної пам’яті, що належить плагіну, який впроваджує релевантну пам’ять в інтерактивні сеанси чату
title: Активна пам’ять
- Ви хочете зрозуміти, для чого потрібна Active Memory
- Ви хочете ввімкнути Active Memory для розмовного агента
- Ви хочете налаштувати поведінку Active Memory, не вмикаючи її всюди
summary: Керований Plugin блокувальний підагент пам’яті, який впроваджує релевантну пам’ять в інтерактивні сеанси чату
title: Active Memory
x-i18n:
generated_at: "2026-04-12T04:23:29Z"
generated_at: "2026-04-12T18:22:02Z"
model: gpt-5.4
provider: openai
source_hash: 59456805c28daaab394ba2a7f87e1104a1334a5cf32dbb961d5d232d9c471d84
source_hash: dc15b2139618d9dbb0ba4d9951fb82a4d86076f7b8dc1a6bf2013bcce61878c4
source_path: concepts/active-memory.md
workflow: 15
---
# Активна пам’ять
# Active Memory
Активна пам’ять — це необов’язковий підлеглий агент блокувальної пам’яті, що належить плагіну й запускається
перед основною відповіддю для відповідних розмовних сеансів.
Active Memory — це необов’язковий керований Plugin блокувальний підагент пам’яті, який запускається
перед основною відповіддю для придатних розмовних сеансів.
Вона існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на
те, що основний агент сам вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось
на кшталт «запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б
зробити відповідь природнішою, уже минула.
Він існує тому, що більшість систем пам’яті є потужними, але реактивними. Вони покладаються на те,
що головний агент вирішить, коли шукати в пам’яті, або на те, що користувач скаже щось на кшталт
«запам’ятай це» чи «пошукай у пам’яті». На той момент мить, коли пам’ять могла б зробити відповідь
природною, уже минула.
Активна пам’ять дає системі одну обмежену можливість підставити релевантну пам’ять
Active Memory дає системі одну обмежену можливість показати релевантну пам’ять
до того, як буде згенеровано основну відповідь.
## Вставте це у свого агента
## Вставте це у свій агент
Вставте це у свого агента, якщо хочете ввімкнути Активну пам’ять із
самодостатнім налаштуванням із безпечними значеннями за замовчуванням:
Вставте це у свій агент, якщо хочете ввімкнути Active Memory із
самодостатнім і безпечним типово налаштуванням:
```json5
{
@ -56,30 +56,30 @@ x-i18n:
}
```
Це вмикає плагін для агента `main`, за замовчуванням обмежує його
сеансами у стилі прямих повідомлень, дає змогу спочатку успадкувати модель поточного сеансу
та використовує налаштовану резервну модель лише тоді, коли немає
явно заданої або успадкованої моделі.
Це вмикає Plugin для агента `main`, типово обмежує його сеансами
у стилі прямих повідомлень, дає йому змогу спочатку успадковувати модель поточного сеансу та
використовує налаштовану резервну модель лише якщо жодна явна або успадкована модель недоступна.
Після цього перезапустіть шлюз:
Після цього перезапустіть Gateway:
```bash
openclaw gateway
```
Щоб перевірити це наживо в розмові:
Щоб переглянути це наживо в розмові:
```text
/verbose on
/trace on
```
## Увімкнення активної пам’яті
## Увімкнення active memory
Найбезпечніше налаштування таке:
Найбезпечніше налаштування:
1. увімкнути плагін
1. увімкнути Plugin
2. націлити його на одного розмовного агента
3. залишити журналювання ввімкненим лише під час налаштування
3. залишати журналювання увімкненим лише під час налаштування
Почніть із цього в `openclaw.json`:
@ -106,7 +106,7 @@ openclaw gateway
}
```
Потім перезапустіть шлюз:
Потім перезапустіть Gateway:
```bash
openclaw gateway
@ -114,22 +114,22 @@ openclaw gateway
Що це означає:
- `plugins.entries.active-memory.enabled: true` вмикає плагін
- `config.agents: ["main"]` підключає до активної пам’яті лише агента `main`
- `config.allowedChatTypes: ["direct"]` за замовчуванням залишає активну пам’ять увімкненою лише для сеансів у стилі прямих повідомлень
- якщо `config.model` не задано, активна пам’ять спочатку успадковує модель поточного сеансу
- `config.modelFallback` за бажанням надає власний резервний постачальник/модель для пригадування
- `plugins.entries.active-memory.enabled: true` вмикає Plugin
- `config.agents: ["main"]` підключає до active memory лише агента `main`
- `config.allowedChatTypes: ["direct"]` типово залишає active memory увімкненою лише для сеансів у стилі прямих повідомлень
- якщо `config.model` не задано, active memory спочатку успадковує модель поточного сеансу
- `config.modelFallback` за бажанням надає вашу резервну модель провайдера для відновлення пам’яті
- `config.promptStyle: "balanced"` використовує типовий універсальний стиль підказки для режиму `recent`
- активна пам’ять усе одно запускається лише для відповідних інтерактивних постійних сеансів чату
- active memory однаково запускається лише в придатних інтерактивних постійних сеансах чату
## Як це побачити
Активна пам’ять підставляє прихований системний контекст для моделі. Вона не показує
Active Memory впроваджує прихований системний контекст для моделі. Вона не показує
сирі теги `<active_memory_plugin>...</active_memory_plugin>` клієнту.
## Перемикач сеансу
Використовуйте команду плагіна, якщо хочете призупинити або відновити активну пам’ять для
Використовуйте команду Plugin, коли хочете призупинити або відновити active memory для
поточного сеансу чату без редагування конфігурації:
```text
@ -138,11 +138,11 @@ openclaw gateway
/active-memory on
```
Це діє в межах сеансу. Воно не змінює
`plugins.entries.active-memory.enabled`, націлювання на агента чи іншу глобальну
Це має область дії сеансу. Це не змінює
`plugins.entries.active-memory.enabled`, націлення на агентів чи іншу глобальну
конфігурацію.
Якщо ви хочете, щоб команда записувала конфігурацію та призупиняла або відновлювала активну пам’ять для
Якщо ви хочете, щоб команда записувала конфігурацію й призупиняла або відновлювала active memory для
всіх сеансів, використовуйте явну глобальну форму:
```text
@ -152,32 +152,36 @@ openclaw gateway
```
Глобальна форма записує `plugins.entries.active-memory.config.enabled`. Вона залишає
`plugins.entries.active-memory.enabled` увімкненим, щоб команда й надалі була доступною для
повторного ввімкнення активної пам’яті пізніше.
`plugins.entries.active-memory.enabled` увімкненим, щоб команда залишалася доступною для
повторного ввімкнення active memory пізніше.
Якщо ви хочете побачити, що робить активна пам’ять у живому сеансі, увімкніть докладний режим
для цього сеансу:
Якщо ви хочете побачити, що active memory робить у живому сеансі, увімкніть
перемикачі сеансу, які відповідають потрібному вам виводу:
```text
/verbose on
/trace on
```
Коли докладний режим увімкнено, OpenClaw може показувати:
Коли вони ввімкнені, OpenClaw може показувати:
- рядок стану активної пам’яті, наприклад `Active Memory: ok 842ms recent 34 chars`
- читабельний підсумок налагодження, наприклад `Active Memory Debug: Lemon pepper wings with blue cheese.`
- рядок стану active memory на кшталт `Active Memory: ok 842ms recent 34 chars`, коли ввімкнено `/verbose on`
- зручне для читання підсумкове налагодження на кшталт `Active Memory Debug: Lemon pepper wings with blue cheese.`, коли ввімкнено `/trace on`
Ці рядки походять із того самого проходу активної пам’яті, який формує прихований
системний контекст, але відформатовані для людей замість показу сирої розмітки
підказки.
Ці рядки походять із того самого проходу active memory, який подає прихований
системний контекст, але вони відформатовані для людей замість показу сирої
розмітки підказки. Вони надсилаються як діагностичне повідомлення після
звичайної відповіді асистента, щоб клієнти каналів, як-от Telegram, не показували окрему
діагностичну бульбашку перед відповіддю.
За замовчуванням стенограма підлеглого агента блокувальної пам’яті є тимчасовою та видаляється
після завершення запуску.
Типово транскрипт блокувального підагента пам’яті є тимчасовим і видаляється
після завершення виконання.
Приклад потоку:
```text
/verbose on
/trace on
what wings should i order?
```
@ -190,37 +194,37 @@ what wings should i order?
🔎 Active Memory Debug: Lemon pepper wings with blue cheese.
```
## Коли вона запускається
## Коли це запускається
Активна пам’ять використовує два бар’єри:
Active Memory використовує два шлюзи:
1. **Увімкнення в конфігурації**
Плагін має бути ввімкнений, а поточний ідентифікатор агента має бути присутній у
1. **Явне ввімкнення в конфігурації**
Plugin має бути ввімкнений, а ідентифікатор поточного агента має бути присутній у
`plugins.entries.active-memory.config.agents`.
2. **Сувора відповідність під час виконання**
Навіть якщо її ввімкнено й націлено, активна пам’ять запускається лише для відповідних
2. **Сувора придатність під час виконання**
Навіть коли Active Memory ввімкнено й націлено, вона запускається лише для придатних
інтерактивних постійних сеансів чату.
Фактичне правило таке:
```text
плагін увімкнено
plugin enabled
+
ідентифікатор агента націлено
agent id targeted
+
дозволений тип чату
allowed chat type
+
відповідний інтерактивний постійний сеанс чату
eligible interactive persistent chat session
=
активна пам’ять запускається
active memory runs
```
Якщо будь-яка з цих умов не виконується, активна пам’ять не запускається.
Якщо будь-яка з цих умов не виконується, active memory не запускається.
## Типи сеансів
`config.allowedChatTypes` визначає, у яких типах розмов узагалі може запускатися Активна
пам’ять.
`config.allowedChatTypes` керує тим, у яких типах розмов узагалі може запускатися Active
Memory.
Типове значення:
@ -228,8 +232,8 @@ what wings should i order?
allowedChatTypes: ["direct"]
```
Це означає, що Активна пам’ять за замовчуванням запускається в сеансах у стилі прямих повідомлень, але
не в групових сеансах або сеансах каналів, якщо ви явно не ввімкнете їх.
Це означає, що Active Memory типово працює в сеансах у стилі прямих повідомлень, але
не в групових сеансах чи сеансах каналів, якщо ви не ввімкнете їх явно.
Приклади:
@ -245,44 +249,44 @@ allowedChatTypes: ["direct", "group"]
allowedChatTypes: ["direct", "group", "channel"]
```
## Де вона запускається
## Де це працює
Активна пам’ять — це функція збагачення розмови, а не загальноплатформна
Active memory — це функція покращення розмов, а не загальноплатформна
функція інференсу.
| Поверхня | Активна пам’ять запускається? |
| ------------------------------------------------------------------- | ------------------------------------------------------ |
| Постійні сеанси Control UI / вебчату | Так, якщо плагін увімкнений і агент націлений |
| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо плагін увімкнений і агент націлений |
| Безголові одноразові запуски | Ні |
| Запуски heartbeat/фонові запуски | Ні |
| Загальні внутрішні шляхи `agent-command` | Ні |
| Виконання підлеглих агентів/внутрішніх допоміжних засобів | Ні |
| Поверхня | Active memory запускається? |
| ------------------------------------------------------------------- | -------------------------------------------------------- |
| Постійні сеанси Control UI / вебчату | Так, якщо Plugin увімкнено та агент націлено |
| Інші інтерактивні сеанси каналів на тому самому шляху постійного чату | Так, якщо Plugin увімкнено та агент націлено |
| Headless одноразові запуски | Ні |
| Запуски Heartbeat/у фоновому режимі | Ні |
| Загальні внутрішні шляхи `agent-command` | Ні |
| Виконання підагента/внутрішнього допоміжного компонента | Ні |
## Навіщо це використовувати
Використовуйте активну пам’ять, коли:
Використовуйте active memory, коли:
- сеанс є постійним і орієнтованим на користувача
- сеанс є постійним і призначеним для користувача
- агент має змістовну довготривалу пам’ять для пошуку
- безперервність і персоналізація важливіші за чисту детермінованість підказки
- безперервність і персоналізація важливіші за чистий детермінізм підказок
Вона особливо добре працює для:
Це особливо добре працює для:
- сталих уподобань
- стабільних уподобань
- повторюваних звичок
- довготривалого користувацького контексту, який має природно проявлятися
- довготривалого контексту користувача, який має проявлятися природно
Вона погано підходить для:
Це погано підходить для:
- автоматизації
- внутрішніх працівників
- внутрішніх воркерів
- одноразових API-завдань
- місць, де прихована персоналізація була б несподіваною
## Як це працює
Форма під час виконання така:
Форма виконання така:
```mermaid
flowchart LR
@ -293,7 +297,7 @@ flowchart LR
I --> M["Main Reply"]
```
Підлеглий агент блокувальної пам’яті може використовувати лише:
Блокувальний підагент пам’яті може використовувати лише:
- `memory_search`
- `memory_get`
@ -302,21 +306,21 @@ flowchart LR
## Режими запиту
`config.queryMode` визначає, яку частину розмови бачить підлеглий агент блокувальної пам’яті.
`config.queryMode` керує тим, скільки розмови бачить блокувальний підагент пам’яті.
## Стилі підказок
`config.promptStyle` визначає, наскільки охоче чи суворо підлеглий агент блокувальної пам’яті
`config.promptStyle` керує тим, наскільки охоче чи суворо блокувальний підагент пам’яті
вирішує, чи повертати пам’ять.
Доступні стилі:
- `balanced`: універсальне типове значення для режиму `recent`
- `strict`: найменш охочий; найкраще, коли ви хочете мінімізувати проникнення сусіднього контексту
- `contextual`: найбільш дружній до безперервності; найкраще, коли історія розмови має більше значення
- `balanced`: типовий універсальний варіант для режиму `recent`
- `strict`: найменш охочий; найкраще, коли ви хочете мінімального впливу сусіднього контексту
- `contextual`: найкращий для безперервності; найкраще, коли історія розмови має більше значення
- `recall-heavy`: охочіше показує пам’ять за м’якших, але все ще правдоподібних збігів
- `precision-heavy`: агресивно віддає перевагу `NONE`, якщо збіг не є очевидним
- `preference-only`: оптимізовано для улюбленого, звичок, рутин, смаків і повторюваних особистих фактів
- `preference-only`: оптимізований для улюбленого, звичок, рутин, смаків і повторюваних особистих фактів
Типове зіставлення, якщо `config.promptStyle` не задано:
@ -326,7 +330,7 @@ recent -> balanced
full -> contextual
```
Якщо ви явно задаєте `config.promptStyle`, цей пріоритет має перевагу.
Якщо ви явно задаєте `config.promptStyle`, саме це перевизначення і використовується.
Приклад:
@ -336,13 +340,13 @@ promptStyle: "preference-only"
## Політика резервної моделі
Якщо `config.model` не задано, Активна пам’ять намагається визначити модель у такому порядку:
Якщо `config.model` не задано, Active Memory намагається визначити модель у такому порядку:
```text
явно задана модель плагіна
-> модель поточного сеансу
-> основна модель агента
-> необов’язкова налаштована резервна модель
explicit plugin model
-> current session model
-> agent primary model
-> optional configured fallback model
```
`config.modelFallback` керує кроком налаштованої резервної моделі.
@ -353,17 +357,17 @@ promptStyle: "preference-only"
modelFallback: "google/gemini-3-flash"
```
Якщо не вдається визначити жодну явно задану, успадковану або налаштовану резервну модель, Активна пам’ять
пропускає пригадування для цього ходу.
Якщо не вдається визначити явну, успадковану чи налаштовану резервну модель, Active Memory
пропускає відновлення пам’яті для цього ходу.
`config.modelFallbackPolicy` збережено лише як застаріле поле сумісності
для старіших конфігурацій. Воно більше не змінює поведінку під час виконання.
## Розширені аварійні обходи
## Розширені аварійні опції
Ці параметри навмисно не входять до рекомендованого налаштування.
`config.thinking` може перевизначити рівень мислення підлеглого агента блокувальної пам’яті:
`config.thinking` може перевизначати рівень thinking блокувального підагента пам’яті:
```json5
thinking: "medium"
@ -375,74 +379,74 @@ thinking: "medium"
thinking: "off"
```
Не вмикайте це за замовчуванням. Активна пам’ять запускається на шляху відповіді, тож додатковий
час на мислення безпосередньо збільшує видиму для користувача затримку.
Не вмикайте це типово. Active Memory запускається на шляху відповіді, тому додатковий
час thinking безпосередньо збільшує видиму для користувача затримку.
`config.promptAppend` додає додаткові інструкції оператора після типової підказки Активної
пам’яті та перед контекстом розмови:
`config.promptAppend` додає додаткові інструкції оператора після типової підказки Active
Memory і перед контекстом розмови:
```json5
promptAppend: "Prefer stable long-term preferences over one-off events."
```
`config.promptOverride` замінює типову підказку Активної пам’яті. OpenClaw
усе одно додає контекст розмови після цього:
`config.promptOverride` замінює типову підказку Active Memory. OpenClaw
все одно додає контекст розмови після неї:
```json5
promptOverride: "You are a memory search agent. Return NONE or one compact user fact."
```
Налаштування підказок не рекомендується, якщо ви не тестуєте навмисно
інший контракт пригадування. Типова підказка налаштована так, щоб повертати або `NONE`,
або компактний контекст користувацького факту для основної моделі.
Налаштування підказки не рекомендується, якщо тільки ви свідомо не тестуєте
інший контракт відновлення пам’яті. Типову підказку налаштовано так, щоб повертати або `NONE`,
або компактний контекст фактів про користувача для основної моделі.
### `message`
Надсилається лише останнє повідомлення користувача.
```text
Тільки останнє повідомлення користувача
Latest user message only
```
Використовуйте це, коли:
- вам потрібна найшвидша поведінка
- вам потрібен найсильніший ухил у бік пригадування сталих уподобань
- наступні ходи не потребують розмовного контексту
- ви хочете найшвидшої поведінки
- ви хочете найсильнішого ухилу в бік відновлення стабільних уподобань
- наступні ходи не потребують контексту розмови
Рекомендований час очікування:
Рекомендований тайм-аут:
- починайте приблизно з `3000` до `5000` мс
### `recent`
Надсилається останнє повідомлення користувача плюс невеликий хвіст недавньої розмови.
Надсилається останнє повідомлення користувача разом із невеликим хвостом недавньої розмови.
```text
Хвіст недавньої розмови:
Recent conversation tail:
user: ...
assistant: ...
user: ...
Останнє повідомлення користувача:
Latest user message:
...
```
Використовуйте це, коли:
- вам потрібен кращий баланс між швидкістю та прив’язкою до розмови
- запитання в наступних ходах часто залежать від кількох останніх ходів
- ви хочете кращого балансу між швидкістю та прив’язкою до розмовного контексту
- уточнювальні запитання часто залежать від кількох останніх ходів
Рекомендований час очікування:
Рекомендований тайм-аут:
- починайте приблизно з `15000` мс
### `full`
До підлеглого агента блокувальної пам’яті надсилається вся розмова.
До блокувального підагента пам’яті надсилається вся розмова.
```text
Повний контекст розмови:
Full conversation context:
user: ...
assistant: ...
user: ...
@ -451,33 +455,33 @@ user: ...
Використовуйте це, коли:
- найвища якість пригадування важливіша за затримку
- розмова містить важливі налаштування далеко вище в гілці
- найвища якість відновлення пам’яті важливіша за затримку
- розмова містить важливий вступний контекст далеко вище в гілці
Рекомендований час очікування:
Рекомендований тайм-аут:
- суттєво збільшіть його порівняно з `message` або `recent`
- суттєво збільшуйте його порівняно з `message` або `recent`
- починайте приблизно з `15000` мс або вище залежно від розміру гілки
Загалом час очікування має зростати разом із розміром контексту:
Загалом тайм-аут має зростати разом із розміром контексту:
```text
message < recent < full
```
## Постійність стенограм
## Збереження транскриптів
Запуски підлеглого агента блокувальної пам’яті активної пам’яті створюють справжню
стенограму `session.jsonl` під час виклику підлеглого агента блокувальної пам’яті.
Запуски блокувального підагента пам’яті active memory створюють реальний
транскрипт `session.jsonl` під час виклику блокувального підагента пам’яті.
За замовчуванням ця стенограма є тимчасовою:
Типово цей транскрипт є тимчасовим:
- вона записується до тимчасового каталогу
- вона використовується лише для запуску підлеглого агента блокувальної пам’яті
- вона видаляється одразу після завершення запуску
- він записується до тимчасового каталогу
- він використовується лише для запуску блокувального підагента пам’яті
- він видаляється одразу після завершення запуску
Якщо ви хочете зберігати ці стенограми підлеглого агента блокувальної пам’яті на диску для налагодження або
перевірки, явно ввімкніть постійність:
Якщо ви хочете зберігати ці транскрипти блокувального підагента пам’яті на диску для налагодження або
перевірки, явно ввімкніть збереження:
```json5
{
@ -496,11 +500,11 @@ message < recent < full
}
```
Коли це ввімкнено, активна пам’ять зберігає стенограми в окремому каталозі в папці
сеансів цільового агента, а не в основному шляху стенограми користувацької
розмови.
Коли це ввімкнено, active memory зберігає транскрипти в окремому каталозі в
теці сеансів цільового агента, а не в основному шляху транскрипту
розмови користувача.
Типовий макет концептуально такий:
Типова структура концептуально виглядає так:
```text
agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jsonl
@ -510,13 +514,13 @@ agents/<agent>/sessions/active-memory/<blocking-memory-sub-agent-session-id>.jso
Використовуйте це обережно:
- стенограми підлеглого агента блокувальної пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту `full` може дублювати великий обсяг контексту розмови
- ці стенограми містять прихований контекст підказок і пригадані спогади
- транскрипти блокувального підагента пам’яті можуть швидко накопичуватися в активних сеансах
- режим запиту `full` може дублювати велику кількість контексту розмови
- ці транскрипти містять прихований контекст підказки та відновлені спогади
## Конфігурація
Уся конфігурація активної пам’яті міститься в:
Уся конфігурація active memory розміщується в:
```text
plugins.entries.active-memory
@ -524,36 +528,36 @@ plugins.entries.active-memory
Найважливіші поля:
| Key | Type | Значення |
| --------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| `enabled` | `boolean` | Вмикає сам плагін |
| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати активну пам’ять |
| `config.model` | `string` | Необов’язкове посилання на модель підлеглого агента блокувальної пам’яті; якщо не задано, активна пам’ять використовує модель поточного сеансу |
| `config.queryMode` | `"message" \| "recent" \| "full"` | Керує тим, яку частину розмови бачить підлеглий агент блокувальної пам’яті |
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Керує тим, наскільки охоче чи суворо підлеглий агент блокувальної пам’яті вирішує, чи повертати пам’ять |
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Розширене перевизначення рівня мислення для підлеглого агента блокувальної пам’яті; типове значення `off` для швидкості |
| `config.promptOverride` | `string` | Розширена повна заміна підказки; не рекомендується для звичайного використання |
| `config.promptAppend` | `string` | Розширені додаткові інструкції, додані до типової або перевизначеної підказки |
| `config.timeoutMs` | `number` | Жорсткий час очікування для підлеглого агента блокувальної пам’яті |
| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
| `config.logging` | `boolean` | Виводить журнали активної пам’яті під час налаштування |
| `config.persistTranscripts` | `boolean` | Зберігає стенограми підлеглого агента блокувальної пам’яті на диску замість видалення тимчасових файлів |
| `config.transcriptDir` | `string` | Відносний каталог стенограм підлеглого агента блокувальної пам’яті в папці сеансів агента |
| Key | Type | Meaning |
| --------------------------- | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| `enabled` | `boolean` | Вмикає сам Plugin |
| `config.agents` | `string[]` | Ідентифікатори агентів, які можуть використовувати active memory |
| `config.model` | `string` | Необов’язкове посилання на модель блокувального підагента пам’яті; якщо не задано, active memory використовує модель поточного сеансу |
| `config.queryMode` | `"message" \| "recent" \| "full"` | Керує тим, скільки розмови бачить блокувальний підагент пам’яті |
| `config.promptStyle` | `"balanced" \| "strict" \| "contextual" \| "recall-heavy" \| "precision-heavy" \| "preference-only"` | Керує тим, наскільки охоче чи суворо блокувальний підагент пам’яті вирішує, чи повертати пам’ять |
| `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Розширене перевизначення thinking для блокувального підагента пам’яті; типово `off` для швидкості |
| `config.promptOverride` | `string` | Розширена повна заміна підказки; не рекомендовано для звичайного використання |
| `config.promptAppend` | `string` | Розширені додаткові інструкції, додані в кінець типової або перевизначеної підказки |
| `config.timeoutMs` | `number` | Жорсткий тайм-аут для блокувального підагента пам’яті |
| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
| `config.logging` | `boolean` | Виводить журнали active memory під час налаштування |
| `config.persistTranscripts` | `boolean` | Зберігає транскрипти блокувального підагента пам’яті на диску замість видалення тимчасових файлів |
| `config.transcriptDir` | `string` | Відносний каталог транскриптів блокувального підагента пам’яті в теці сеансів агента |
Корисні поля для налаштування:
Корисні поля налаштування:
| Key | Type | Значення |
| ----------------------------- | -------- | ------------------------------------------------------------- |
| Key | Type | Meaning |
| ----------------------------- | -------- | ---------------------------------------------------------------- |
| `config.maxSummaryChars` | `number` | Максимальна загальна кількість символів, дозволена в підсумку active-memory |
| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включати, коли `queryMode` має значення `recent` |
| `config.recentAssistantTurns` | `number` | Попередні ходи асистента, які слід включати, коли `queryMode` має значення `recent` |
| `config.recentUserChars` | `number` | Максимальна кількість символів на один недавній хід користувача |
| `config.recentAssistantChars` | `number` | Максимальна кількість символів на один недавній хід асистента |
| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних однакових запитів |
| `config.recentUserTurns` | `number` | Попередні ходи користувача, які слід включити, коли `queryMode` дорівнює `recent` |
| `config.recentAssistantTurns` | `number` | Попередні ходи асистента, які слід включити, коли `queryMode` дорівнює `recent` |
| `config.recentUserChars` | `number` | Максимум символів на один нещодавній хід користувача |
| `config.recentAssistantChars` | `number` | Максимум символів на один нещодавній хід асистента |
| `config.cacheTtlMs` | `number` | Повторне використання кешу для повторюваних ідентичних запитів |
## Рекомендоване налаштування
Почніть із `recent`.
Починайте з `recent`.
```json5
{
@ -575,37 +579,91 @@ plugins.entries.active-memory
}
```
Якщо ви хочете перевіряти поведінку наживо під час налаштування, використовуйте `/verbose on` у
сеансі замість пошуку окремої команди налагодження active-memory.
Якщо ви хочете перевіряти поведінку наживо під час налаштування, використовуйте `/verbose on` для
звичайного рядка стану та `/trace on` для підсумку налагодження active-memory замість
пошуку окремої команди налагодження active-memory. У каналах чату ці
діагностичні рядки надсилаються після основної відповіді асистента, а не перед нею.
Потім переходьте до:
- `message`, якщо хочете меншу затримку
- `full`, якщо вирішите, що додатковий контекст вартий повільнішого підлеглого агента блокувальної пам’яті
- `message`, якщо хочете меншої затримки
- `full`, якщо вирішите, що додатковий контекст вартий повільнішого блокувального підагента пам’яті
## Налагодження
Якщо активна пам’ять не з’являється там, де ви очікуєте:
Якщо active memory не з’являється там, де ви очікуєте:
1. Переконайтеся, що плагін увімкнений у `plugins.entries.active-memory.enabled`.
2. Переконайтеся, що поточний ідентифікатор агента вказаний у `config.agents`.
1. Переконайтеся, що Plugin увімкнено в `plugins.entries.active-memory.enabled`.
2. Переконайтеся, що ідентифікатор поточного агента вказано в `config.agents`.
3. Переконайтеся, що ви тестуєте через інтерактивний постійний сеанс чату.
4. Увімкніть `config.logging: true` і перегляньте журнали шлюзу.
4. Увімкніть `config.logging: true` і перегляньте журнали Gateway.
5. Перевірте, що сам пошук у пам’яті працює, за допомогою `openclaw memory status --deep`.
Якщо збіги пам’яті занадто шумні, зменште:
Якщо збіги в пам’яті шумні, зменште:
- `maxSummaryChars`
Якщо активна пам’ять працює надто повільно:
Якщо active memory працює надто повільно:
- зменште `queryMode`
- зменште `timeoutMs`
- зменште кількість недавніх ходів
- зменште кількість нещодавніх ходів
- зменште ліміти символів на хід
## Поширені проблеми
### Провайдер вбудовувань неочікувано змінився
Active Memory покладається на звичайний провайдер вбудовувань для пошуку в пам’яті в
`agents.defaults.memorySearch`. Якщо ви не задаєте цей провайдер явно,
OpenClaw автоматично виявляє перший доступний провайдер вбудовувань.
Це може збивати з пантелику в реальних розгортаннях:
- новий доступний API-ключ може змінити провайдера, який використовує пошук у пам’яті
- одна команда або поверхня діагностики може створювати враження, що вибраний провайдер
інший, ніж шлях, який ви фактично використовуєте під час живої синхронізації пам’яті або
ініціалізації пошуку
- хостовані провайдери можуть завершуватися помилками квоти або обмеження швидкості, які проявляються лише
коли Active Memory починає надсилати запити на відновлення пам’яті перед кожною відповіддю
Якщо для вас важлива передбачувана поведінка, явно закріпіть провайдера вбудовувань для пам’яті
замість покладання на автовиявлення.
Приклад:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "ollama",
model: "nomic-embed-text",
},
},
},
}
```
Або, якщо ви хочете вбудовування Gemini:
```json5
{
agents: {
defaults: {
memorySearch: {
provider: "gemini",
},
},
},
}
```
Після зміни провайдера перезапустіть Gateway і виконайте новий тест з
`/trace on`, щоб рядок налагодження Active Memory відображав новий шлях вбудовувань.
## Пов’язані сторінки
- [Пошук у пам’яті](/uk/concepts/memory-search)
- [Memory Search](/uk/concepts/memory-search)
- [Довідник із конфігурації пам’яті](/uk/reference/memory-config)
- [Налаштування Plugin SDK](/uk/plugins/sdk-setup)

View File

@ -4,10 +4,10 @@ read_when:
summary: Життєвий цикл циклу агента, потоки та семантика очікування
title: Цикл агента
x-i18n:
generated_at: "2026-04-10T07:10:45Z"
generated_at: "2026-04-12T18:22:00Z"
model: gpt-5.4
provider: openai
source_hash: b6831a5b11e9100e49f650feca51ab44a2bef242ce1b5db2766d0b3b5c5ba729
source_hash: 3c2986708b444055340e0c91b8fce7d32225fcccf3d197b797665fd36b1991a5
source_path: concepts/agent-loop.md
workflow: 15
---
@ -16,161 +16,161 @@ x-i18n:
Агентний цикл — це повний «реальний» запуск агента: прийом → збирання контексту → інференс моделі →
виконання інструментів → потокові відповіді → збереження. Це авторитетний шлях, який перетворює повідомлення
на дії та фінальну відповідь, водночас підтримуючи узгоджений стан сесії.
на дії та фінальну відповідь, водночас зберігаючи узгоджений стан сесії.
У OpenClaw цикл — це один серіалізований запуск на сесію, який генерує події життєвого циклу та потокові події,
поки модель думає, викликає інструменти та передає вихідні дані потоком. У цьому документі пояснюється, як цей
автентичний цикл з'єднаний наскрізно.
В OpenClaw цикл — це один серіалізований запуск на сесію, який створює події життєвого циклу та потокові події,
поки модель думає, викликає інструменти й передає в потоці вихідні дані. У цьому документі пояснюється, як цей
автентичний цикл з’єднано наскрізно.
## Точки входу
- Gateway RPC: `agent` і `agent.wait`.
- CLI: команда `agent`.
## Як це працює (високий рівень)
## Як це працює (на високому рівні)
1. RPC `agent` перевіряє параметри, визначає сесію (sessionKey/sessionId), зберігає метадані сесії та одразу повертає `{ runId, acceptedAt }`.
1. RPC `agent` перевіряє параметри, визначає сесію (`sessionKey/sessionId`), зберігає метадані сесії та відразу повертає `{ runId, acceptedAt }`.
2. `agentCommand` запускає агента:
- визначає стандартні значення model + thinking/verbose
- визначає типові значення model + thinking/verbose/trace
- завантажує знімок Skills
- викликає `runEmbeddedPiAgent` (середовище виконання pi-agent-core)
- генерує **lifecycle end/error**, якщо вбудований цикл сам цього не згенерував
- створює **lifecycle end/error**, якщо вбудований цикл цього не створив
3. `runEmbeddedPiAgent`:
- серіалізує запуски через черги для кожної сесії та глобальну чергу
- визначає model + профіль auth і будує pi session
- підписується на події pi та передає потоком assistant/tool deltas
- застосовує тайм-аут -> перериває запуск, якщо його перевищено
- повертає payloads + метадані usage
4. `subscribeEmbeddedPiSession` з'єднує події pi-agent-core з потоком OpenClaw `agent`:
- визначає профіль model + auth і будує pi-сесію
- підписується на події pi та передає assistant/tool deltas у потоці
- примусово застосовує timeout -> перериває запуск, якщо його перевищено
- повертає корисні навантаження та метадані usage
4. `subscribeEmbeddedPiSession` зєднує події pi-agent-core з потоком OpenClaw `agent`:
- події інструментів => `stream: "tool"`
- assistant deltas => `stream: "assistant"`
- події життєвого циклу => `stream: "lifecycle"` (`phase: "start" | "end" | "error"`)
5. `agent.wait` використовує `waitForAgentRun`:
- очікує **lifecycle end/error** для `runId`
- чекає на **lifecycle end/error** для `runId`
- повертає `{ status: ok|error|timeout, startedAt, endedAt, error? }`
## Черги + паралельність
- Запуски серіалізуються для кожного ключа сесії (лінія сесії) і, за потреби, через глобальну лінію.
- Це запобігає гонкам інструментів/сесій і підтримує узгоджену історію сесії.
- Канали обміну повідомленнями можуть вибирати режими черги (collect/steer/followup), які подають дані в цю систему ліній.
- Запуски серіалізуються для кожного ключа сесії (доріжка сесії) та, за потреби, через глобальну доріжку.
- Це запобігає конфліктам інструментів/сесій і підтримує узгодженість історії сесії.
- Канали обміну повідомленнями можуть вибирати режими черги (collect/steer/followup), які подаються в цю систему доріжок.
Див. [Черга команд](/uk/concepts/queue).
## Підготовка сесії + робочого простору
- Робочий простір визначається та створюється; у sandbox-запусках він може бути перенаправлений до кореня робочого простору sandbox.
- Робочий простір визначається та створюється; ізольовані запуски можуть перенаправлятися до кореня ізольованого робочого простору.
- Skills завантажуються (або повторно використовуються зі знімка) та впроваджуються в env і prompt.
- Bootstrap/context-файли визначаються та впроваджуються у звіт системного prompt.
- Отримується блокування запису сесії; перед початком потокової передачі відкривається та готується `SessionManager`.
- Bootstrap/context файли визначаються та впроваджуються у звіт системного prompt.
- Отримується блокування запису сесії; `SessionManager` відкривається та підготовлюється до потокової передачі.
## Збирання prompt + системний prompt
- Системний prompt будується з базового prompt OpenClaw, prompt Skills, bootstrap-контексту та перевизначень для конкретного запуску.
- Застосовуються специфічні для моделі ліміти та резервні токени для compaction.
- Див. [Системний prompt](/uk/concepts/system-prompt), щоб зрозуміти, що бачить модель.
- Застосовуються обмеження, специфічні для моделі, і резервні токени для Compaction.
- Див. [Системний prompt](/uk/concepts/system-prompt), щоб побачити, що бачить модель.
## Точки hook (де можна перехопити)
## Точки перехоплення (де можна втрутитися)
OpenClaw має дві системи hook:
OpenClaw має дві системи хуків:
- **Внутрішні hooks** (Gateway hooks): скрипти, керовані подіями, для команд і подій життєвого циклу.
- **Plugin hooks**: точки розширення всередині життєвого циклу агента/інструмента та конвеєра gateway.
- **Внутрішні хуки** (хуки Gateway): скрипти на основі подій для команд і подій життєвого циклу.
- **Plugin hooks**: точки розширення всередині циклу агента/інструментів і конвеєра gateway.
### Внутрішні hooks (Gateway hooks)
### Внутрішні хуки (хуки Gateway)
- **`agent:bootstrap`**: виконується під час побудови bootstrap-файлів до остаточного формування системного prompt.
Використовуйте це, щоб додавати/видаляти bootstrap context-файли.
- **Command hooks**: `/new`, `/reset`, `/stop` та інші події команд (див. документацію про Hooks).
- **`agent:bootstrap`**: запускається під час побудови bootstrap-файлів до того, як буде фіналізовано системний prompt.
Використовуйте це, щоб додавати/видаляти bootstrap-файли контексту.
- **Хуки команд**: `/new`, `/reset`, `/stop` та інші події команд (див. документ про Hooks).
Див. [Hooks](/uk/automation/hooks) для налаштування та прикладів.
Див. [Hooks](/uk/automation/hooks), щоб переглянути налаштування та приклади.
### Plugin hooks (життєвий цикл агента + gateway)
Вони виконуються всередині циклу агента або конвеєра gateway:
Вони запускаються всередині циклу агента або конвеєра gateway:
- **`before_model_resolve`**: виконується до сесії (без `messages`), щоб детерміновано перевизначити provider/model до визначення моделі.
- **`before_prompt_build`**: виконується після завантаження сесії (з `messages`), щоб впровадити `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` перед надсиланням prompt. Використовуйте `prependContext` для динамічного тексту на кожен хід, а поля системного контексту — для стабільних вказівок, які мають розміщуватися в просторі системного prompt.
- **`before_agent_start`**: застарілий hook сумісності, який може виконуватися в будь-якій фазі; віддавайте перевагу явним hooks вище.
- **`before_agent_reply`**: виконується після вбудованих дій і перед викликом LLM, дозволяючи plugin перехопити хід і повернути синтетичну відповідь або повністю приглушити хід.
- **`agent_end`**: перевіряє фінальний список повідомлень і метадані запуску після завершення.
- **`before_compaction` / `after_compaction`**: спостерігає або анотує цикли compaction.
- **`before_model_resolve`**: запускається до сесії (без `messages`), щоб детерміновано перевизначити provider/model до визначення моделі.
- **`before_prompt_build`**: запускається після завантаження сесії (з `messages`), щоб впровадити `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` до надсилання prompt. Використовуйте `prependContext` для динамічного тексту на кожен хід, а поля системного контексту — для стабільних вказівок, які мають перебувати в просторі системного prompt.
- **`before_agent_start`**: застарілий хук сумісності, який може запускатися в будь-якій фазі; віддавайте перевагу наведеним вище явним хукам.
- **`before_agent_reply`**: запускається після вбудованих дій і перед викликом LLM, дозволяючи Plugin перехопити хід і повернути синтетичну відповідь або повністю приглушити хід.
- **`agent_end`**: дає змогу перевірити фінальний список повідомлень і метадані запуску після завершення.
- **`before_compaction` / `after_compaction`**: дає змогу спостерігати або анотувати цикли Compaction.
- **`before_tool_call` / `after_tool_call`**: перехоплює параметри/результати інструментів.
- **`before_install`**: перевіряє результати вбудованого сканування та, за потреби, блокує встановлення skill або plugin.
- **`tool_result_persist`**: синхронно перетворює результати інструментів перед їх записом до транскрипту сесії.
- **`message_received` / `message_sending` / `message_sent`**: hooks вхідних і вихідних повідомлень.
- **`before_install`**: дає змогу перевірити результати вбудованого сканування й за потреби заблокувати встановлення Skill або Plugin.
- **`tool_result_persist`**: синхронно трансформує результати інструментів перед тим, як вони будуть записані до транскрипту сесії.
- **`message_received` / `message_sending` / `message_sent`**: вхідні та вихідні хуки повідомлень.
- **`session_start` / `session_end`**: межі життєвого циклу сесії.
- **`gateway_start` / `gateway_stop`**: події життєвого циклу gateway.
Правила рішень hook для вихідних повідомлень/захисту інструментів:
Правила рішень хуків для вихідних даних/запобіжників інструментів:
- `before_tool_call`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `before_tool_call`: `{ block: false }` не виконує жодної дії та не скасовує попереднє блокування.
- `before_install`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_install`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `before_install`: `{ block: false }` не виконує жодної дії та не скасовує попереднє блокування.
- `message_sending`: `{ cancel: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` нічого не робить і не скасовує попереднє скасування.
- `message_sending`: `{ cancel: false }` не виконує жодної дії та не скасовує попереднє скасування.
Див. [Plugin hooks](/uk/plugins/architecture#provider-runtime-hooks), щоб дізнатися про API hooks і подробиці реєстрації.
Див. [Plugin hooks](/uk/plugins/architecture#provider-runtime-hooks), щоб переглянути API хуків і деталі реєстрації.
## Потокова передача + часткові відповіді
- Assistant deltas передаються потоком із pi-agent-core та генеруються як події `assistant`.
- Block streaming може передавати часткові відповіді або на `text_end`, або на `message_end`.
- Потокова передача reasoning може генеруватися як окремий потік або як block replies.
- Див. [Потокова передача](/uk/concepts/streaming) для інформації про chunking і поведінку block reply.
- Assistant deltas передаються в потоці з pi-agent-core і створюються як події `assistant`.
- Потокова передача блоків може створювати часткові відповіді або на `text_end`, або на `message_end`.
- Потокова передача міркувань може створюватися як окремий потік або як блокові відповіді.
- Див. [Потокова передача](/uk/concepts/streaming), щоб дізнатися про розбиття на частини та поведінку блокових відповідей.
## Виконання інструментів + інструменти обміну повідомленнями
## Виконання інструментів + інструменти повідомлень
- Події початку/оновлення/завершення інструментів генеруються в потоці `tool`.
- Результати інструментів очищуються з урахуванням розміру та image payloads перед логуванням/генерацією.
- Надсилання через інструменти обміну повідомленнями відстежуються, щоб не дублювати підтвердження assistant.
- Події початку/оновлення/завершення інструментів створюються в потоці `tool`.
- Результати інструментів очищуються з урахуванням обмежень розміру та корисних навантажень зображень перед логуванням/створенням подій.
- Надсилання інструментів повідомлень відстежуються, щоб пригнічувати дубльовані підтвердження assistant.
## Формування відповіді + приглушення
## Формування відповіді + пригнічення
- Фінальні payloads збираються з:
- assistant text (і, за потреби, reasoning)
- вбудованих підсумків інструментів (коли verbose увімкнено та це дозволено)
- тексту помилки assistant, якщо модель завершується з помилкою
- Точний silent token `NO_REPLY` / `no_reply` відфільтровується з вихідних
payloads.
- Дублікати з інструментів обміну повідомленнями видаляються з фінального списку payload.
- Якщо не лишилося payloads для відображення, а інструмент завершився з помилкою, генерується резервна відповідь про помилку інструмента
(якщо тільки інструмент обміну повідомленнями вже не надіслав видиму для користувача відповідь).
- Фінальні корисні навантаження збираються з:
- тексту assistant (та, за потреби, reasoning)
- вбудованих зведень інструментів (коли verbose увімкнено + дозволено)
- тексту помилки assistant, якщо модель повернула помилку
- Точний маркер безмовності `NO_REPLY` / `no_reply` відфільтровується з вихідних
корисних навантажень.
- Дублікати інструментів повідомлень видаляються з фінального списку корисних навантажень.
- Якщо не лишилося жодних придатних до відображення корисних навантажень і інструмент повернув помилку, створюється резервна відповідь про помилку інструмента
(якщо тільки інструмент повідомлень ще не надіслав видиму для користувача відповідь).
## Compaction + повторні спроби
- Автоматичний compaction генерує потокові події `compaction` і може спричинити повторну спробу.
- Під час повторної спроби буфери в пам'яті та підсумки інструментів скидаються, щоб уникнути дубльованого виводу.
- Див. [Compaction](/uk/concepts/compaction), щоб дізнатися про конвеєр compaction.
- Автоматичний Compaction створює події потоку `compaction` і може ініціювати повторну спробу.
- Під час повторної спроби буфери в пам’яті та зведення інструментів скидаються, щоб уникнути дубльованого виводу.
- Див. [Compaction](/uk/concepts/compaction), щоб ознайомитися з конвеєром Compaction.
## Потоки подій (зараз)
- `lifecycle`: генерується `subscribeEmbeddedPiSession` (і як резервний варіант — `agentCommand`)
- `assistant`: потокові deltas із pi-agent-core
- `lifecycle`: створюється `subscribeEmbeddedPiSession` (і як резервний варіант — `agentCommand`)
- `assistant`: потокові deltas з pi-agent-core
- `tool`: потокові події інструментів із pi-agent-core
## Обробка chat-каналу
## Обробка чат-каналу
- Assistant deltas буферизуються в chat-повідомлення `delta`.
- Chat `final` генерується на **lifecycle end/error**.
- Assistant deltas буферизуються в чат-повідомлення `delta`.
- Чат `final` створюється на **lifecycle end/error**.
## Тайм-аути
- Стандартне значення для `agent.wait`: 30 с (лише очікування). Перевизначається параметром `timeoutMs`.
- Час виконання агента: стандартне значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується в таймері переривання `runEmbeddedPiAgent`.
- Тайм-аут бездіяльності LLM: `agents.defaults.llm.idleTimeoutSeconds` перериває запит до моделі, якщо до завершення вікна бездіяльності не надходять жодні chunks відповіді. Установіть його явно для повільних локальних моделей або providers reasoning/tool-call; установіть 0, щоб вимкнути. Якщо його не встановлено, OpenClaw використовує `agents.defaults.timeoutSeconds`, якщо він налаштований, інакше — 120 с. Запуски, ініційовані cron, без явного LLM- або агентського тайм-ауту вимикають watchdog бездіяльності та покладаються на зовнішній тайм-аут cron.
- Типове значення `agent.wait`: 30 с (лише очікування). Параметр `timeoutMs` його перевизначає.
- Час виконання агента: типове значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується в таймері переривання `runEmbeddedPiAgent`.
- Тайм-аут бездіяльності LLM: `agents.defaults.llm.idleTimeoutSeconds` перериває запит до моделі, якщо жодні фрагменти відповіді не надходять до завершення вікна бездіяльності. Установіть його явно для повільних локальних моделей або provider-ів reasoning/tool-call; установіть 0, щоб вимкнути. Якщо його не задано, OpenClaw використовує `agents.defaults.timeoutSeconds`, якщо його налаштовано, інакше 120 с. Запуски, ініційовані Cron, без явного тайм-ауту LLM або агента вимикають watchdog бездіяльності й покладаються на зовнішній тайм-аут Cron.
## Де все може завершитися раніше
## Де все може завершитися завчасно
- Тайм-аут агента (переривання)
- AbortSignal (скасування)
- Відключення gateway або тайм-аут RPC
- Від’єднання Gateway або тайм-аут RPC
- Тайм-аут `agent.wait` (лише очікування, не зупиняє агента)
## Пов'язане
## Пов’язані теми
- [Інструменти](/uk/tools) — доступні інструменти агента
- [Hooks](/uk/automation/hooks) — скрипти, керовані подіями, які запускаються подіями життєвого циклу агента
- [Compaction](/uk/concepts/compaction) — як підсумовуються довгі розмови
- [Exec Approvals](/uk/tools/exec-approvals) — бар'єри погодження для shell-команд
- [Thinking](/uk/tools/thinking) — конфігурація рівня thinking/reasoning
- [Hooks](/uk/automation/hooks) — скрипти на основі подій, що спрацьовують на подіях життєвого циклу агента
- [Compaction](/uk/concepts/compaction) — як узагальнюються довгі розмови
- [Погодження Exec](/uk/tools/exec-approvals) — барєри погодження для shell-команд
- [Thinking](/uk/tools/thinking) — налаштування рівня thinking/reasoning

View File

@ -2,114 +2,114 @@
read_when:
- Ви хочете зрозуміти, що означає «контекст» в OpenClaw
- Ви налагоджуєте, чому модель «знає» щось (або забула це)
- Ви хочете зменшити накладні витрати контексту (`/context`, `/status`, `/compact`)
summary: 'Контекст: що бачить модель, як він формується та як його перевірити'
- Ви хочете зменшити накладні витрати контексту (/context, /status, /compact)
summary: 'Контекст: що бачить модель, як її побудовано та як її перевірити'
title: Контекст
x-i18n:
generated_at: "2026-04-06T12:42:54Z"
generated_at: "2026-04-12T18:22:02Z"
model: gpt-5.4
provider: openai
source_hash: a75b4cd65bf6385d46265b9ce1643310bc99d220e35ec4b4924096bed3ca4aa0
source_hash: 3620db1a8c1956d91a01328966df491388d3a32c4003dc4447197eb34316c77d
source_path: concepts/context.md
workflow: 15
---
# Контекст
«Контекст» — це **все, що OpenClaw надсилає моделі для запуску**. Він обмежений **вікном контексту** моделі (лімітом токенів).
«Контекст» — це **все, що OpenClaw надсилає моделі для одного запуску**. Його обмежує **вікно контексту** моделі (ліміт токенів).
Проста ментальна модель для початківців:
Ментальна модель для початківців:
- **Системний prompt** (збудований OpenClaw): правила, інструменти, список Skills, час/середовище виконання та вбудовані файли робочого простору.
- **Історія розмови**: ваші повідомлення + повідомлення асистента для цієї сесії.
- **Системний промпт** (побудований OpenClaw): правила, інструменти, список Skills, час/середовище виконання та впроваджені файли робочого простору.
- **Історія розмови**: ваші повідомлення + повідомлення помічника в цій сесії.
- **Виклики/результати інструментів + вкладення**: вивід команд, читання файлів, зображення/аудіо тощо.
Контекст _це не те саме_, що «пам’ять»: пам’ять може зберігатися на диску та повторно завантажуватися пізніше; контекст — це те, що знаходиться всередині поточного вікна моделі.
Контекст _не є тим самим_, що й «пам’ять»: пам’ять може зберігатися на диску та повторно завантажуватися пізніше; контекст — це те, що знаходиться всередині поточного вікна моделі.
## Швидкий старт (перевірка контексту)
- `/status` → швидкий перегляд «наскільки заповнене моє вікно?» + налаштування сесії.
- `/context list` → що вбудовано + приблизні розміри (для кожного файла + загалом).
- `/context detail`детальніший розподіл: пофайлово, розміри схем кожного інструмента, розміри записів кожного skill та розмір системного prompt.
- `/usage tokens` → додає нижній колонтитул із використанням до звичайних відповідей.
- `/context list` → що впроваджується + приблизні розміри (для кожного файлу + підсумки).
- `/context detail`глибший розбір: розміри для кожного файлу, для кожної схеми інструмента, для кожного запису Skills і розмір системного промпту.
- `/usage tokens` → додає виноску з використанням токенів до звичайних відповідей.
- `/compact` → підсумовує старішу історію в компактний запис, щоб звільнити місце у вікні.
Див. також: [Slash commands](/uk/tools/slash-commands), [Використання токенів і витрати](/uk/reference/token-use), [Стиснення](/uk/concepts/compaction).
Див. також: [Косі команди](/uk/tools/slash-commands), [Використання токенів і вартість](/uk/reference/token-use), [Compaction](/uk/concepts/compaction).
## Приклад виводу
Значення відрізняються залежно від моделі, провайдера, політики інструментів і вмісту вашого робочого простору.
Значення відрізняються залежно від моделі, провайдера, політики інструментів і того, що є у вашому робочому просторі.
### `/context list`
```
🧠 Розподіл контексту
Робочий простір: <workspaceDir>
Максимум bootstrap на файл: 20,000 символів
Пісочниця: mode=non-main sandboxed=false
Системний prompt (запуск): 38,412 символів (~9,603 ток) (Контекст проєкту 23,901 символів (~5,976 ток))
🧠 Розбір контексту
Workspace: <workspaceDir>
Bootstrap max/file: 20,000 chars
Sandbox: mode=non-main sandboxed=false
System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok))
Вбудовані файли робочого простору:
- AGENTS.md: OK | raw 1,742 символів (~436 ток) | injected 1,742 символів (~436 ток)
- SOUL.md: OK | raw 912 символів (~228 ток) | injected 912 символів (~228 ток)
- TOOLS.md: TRUNCATED | raw 54,210 символів (~13,553 ток) | injected 20,962 символів (~5,241 ток)
- IDENTITY.md: OK | raw 211 символів (~53 ток) | injected 211 символів (~53 ток)
- USER.md: OK | raw 388 символів (~97 ток) | injected 388 символів (~97 ток)
Injected workspace files:
- AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok)
- SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok)
- TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok)
- IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok)
- USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok)
- HEARTBEAT.md: MISSING | raw 0 | injected 0
- BOOTSTRAP.md: OK | raw 0 символів (~0 ток) | injected 0 символів (~0 ток)
- BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok)
Список Skills (текст системного prompt): 2,184 символів (~546 ток) (12 skills)
Інструменти: read, edit, write, exec, process, browser, message, sessions_send, …
Список інструментів (текст системного prompt): 1,032 символів (~258 ток)
Схеми інструментів (JSON): 31,988 символів (~7,997 ток) (враховуються в контексті; не показані як текст)
Інструменти: (ті самі, що вище)
Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills)
Tools: read, edit, write, exec, process, browser, message, sessions_send, …
Tool list (system prompt text): 1,032 chars (~258 tok)
Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text)
Tools: (same as above)
Токени сесії (кешовані): 14,250 усього / ctx=32,000
Session tokens (cached): 14,250 total / ctx=32,000
```
### `/context detail`
```
🧠 Розподіл контексту (детально)
🧠 Детальний розбір контексту
Найбільші skills (розмір запису в prompt):
- frontend-design: 412 символів (~103 ток)
- oracle: 401 символ (~101 ток)
Top skills (prompt entry size):
- frontend-design: 412 chars (~103 tok)
- oracle: 401 chars (~101 tok)
… (+10 more skills)
Найбільші інструменти (розмір схеми):
- browser: 9,812 символів (~2,453 ток)
- exec: 6,240 символів (~1,560 ток)
Top tools (schema size):
- browser: 9,812 chars (~2,453 tok)
- exec: 6,240 chars (~1,560 tok)
… (+N more tools)
```
## Що враховується у вікні контексту
## Що зараховується до вікна контексту
Усе, що отримує модель, враховується, зокрема:
Зараховується все, що отримує модель, зокрема:
- Системний prompt (усі розділи).
- Системний промпт (усі розділи).
- Історія розмови.
- Виклики інструментів + результати інструментів.
- Вкладення/транскрипти (зображення/аудіо/файли).
- Підсумки стиснення та артефакти обрізання.
- «Обгортки» провайдера або приховані заголовки (не видимі, але все одно враховуються).
- Підсумки Compaction і артефакти обрізання.
- «Обгортки» провайдера або приховані заголовки (не видно, але все одно зараховуються).
## Як OpenClaw будує системний prompt
## Як OpenClaw будує системний промпт
Системний prompt **належить OpenClaw** і перебудовується для кожного запуску. Він містить:
Системний промпт **належить OpenClaw** і перебудовується для кожного запуску. Він містить:
- Список інструментів + короткі описи.
- Список Skills (лише метадані; див. нижче).
- Розташування робочого простору.
- Час (UTC + перетворений час користувача, якщо налаштовано).
- Метадані середовища виконання (хост/ОС/модель/thinking).
- Вбудовані bootstrap-файли робочого простору в розділі **Контекст проєкту**.
- Метадані середовища виконання (хост/ОС/модель/мислення).
- Впроваджені файли bootstrap робочого простору в розділі **Project Context**.
Повний розбір: [System Prompt](/uk/concepts/system-prompt).
Повний розбір: [Системний промпт](/uk/concepts/system-prompt).
## Вбудовані файли робочого простору (Контекст проєкту)
## Впроваджені файли робочого простору (Project Context)
Типово OpenClaw вбудовує фіксований набір файлів робочого простору (якщо вони є):
Типово OpenClaw впроваджує фіксований набір файлів робочого простору (якщо вони є):
- `AGENTS.md`
- `SOUL.md`
@ -119,69 +119,68 @@ x-i18n:
- `HEARTBEAT.md`
- `BOOTSTRAP.md` (лише під час першого запуску)
Великі файли обрізаються для кожного файла окремо за допомогою `agents.defaults.bootstrapMaxChars` (типове значення `20000` символів). OpenClaw також застосовує загальне обмеження на вбудовування bootstrap для всіх файлів через `agents.defaults.bootstrapTotalMaxChars` (типове значення `150000` символів). `/context` показує розміри **raw vs injected** і те, чи відбулося обрізання.
Великі файли обрізаються для кожного файлу окремо за допомогою `agents.defaults.bootstrapMaxChars` (типово `20000` символів). OpenClaw також застосовує загальне обмеження на сумарний обсяг впровадження bootstrap для всіх файлів через `agents.defaults.bootstrapTotalMaxChars` (типово `150000` символів). `/context` показує розміри **raw vs injected** і те, чи відбулося обрізання.
Коли відбувається обрізання, середовище виконання може вставити в prompt блок попередження в розділі Контекст проєкту. Це налаштовується через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типове значення `once`).
Коли відбувається обрізання, середовище виконання може впровадити попереджувальний блок прямо в промпт у розділі Project Context. Налаштуйте це через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово `once`).
## Skills: вбудовані чи завантажувані на вимогу
## Skills: впроваджуються чи завантажуються на вимогу
Системний prompt містить компактний **список Skills** (назва + опис + розташування). Цей список має реальні накладні витрати.
Системний промпт містить компактний **список Skills** (назва + опис + розташування). Цей список має реальні накладні витрати.
Інструкції skill е_ включаються типово. Очікується, що модель прочитає `SKILL.md` відповідного skill через `read` **лише за потреби**.
Інструкції Skills _типово не включаються_. Очікується, що модель викличе `read` для `SKILL.md` цього Skills **лише за потреби**.
## Інструменти: є дві складові витрат
## Інструменти: є дві складові вартості
Інструменти впливають на контекст двома способами:
1. **Текст списку інструментів** у системному prompt (те, що ви бачите як «Інструменти»).
2. **Схеми інструментів** (JSON). Вони надсилаються моделі, щоб вона могла викликати інструменти. Вони враховуються в контексті, хоча ви не бачите їх як звичайний текст.
1. **Текст списку інструментів** у системному промпті (те, що ви бачите як «Tooling»).
2. **Схеми інструментів** (JSON). Вони надсилаються моделі, щоб вона могла викликати інструменти. Вони зараховуються до контексту, навіть якщо ви не бачите їх як звичайний текст.
`/context detail` розбиває найбільші схеми інструментів, щоб ви могли побачити, що домінує.
## Команди, директиви та "вбудовані скорочення"
Slash-команди обробляються Gateway. Є кілька різних варіантів поведінки:
Косі команди обробляє Gateway. Є кілька різних варіантів поведінки:
- **Окремі команди**: повідомлення, що складається лише з `/...`, виконується як команда.
- **Директиви**: `/think`, `/verbose`, `/reasoning`, `/elevated`, `/model`, `/queue` видаляються до того, як модель побачить повідомлення.
- **Окремі команди**: повідомлення, яке складається лише з `/...`, виконується як команда.
- **Директиви**: `/think`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/model`, `/queue` видаляються до того, як модель побачить повідомлення.
- Повідомлення, що містять лише директиви, зберігають налаштування сесії.
- Вбудовані директиви у звичайному повідомленні діють як підказки для конкретного повідомлення.
- **Вбудовані скорочення** (лише для відправників із allowlist): певні токени `/...` всередині звичайного повідомлення можуть виконуватися негайно (наприклад: «hey /status»), і видаляються до того, як модель побачить решту тексту.
- Вбудовані директиви у звичайному повідомленні діють як підказки лише для цього повідомлення.
- **Вбудовані скорочення** (лише для відправників із allowlist): певні токени `/...` усередині звичайного повідомлення можуть виконуватися негайно (наприклад: “hey /status”), і видаляються до того, як модель побачить решту тексту.
Докладніше: [Slash commands](/uk/tools/slash-commands).
Докладніше: [Косі команди](/uk/tools/slash-commands).
## Сесії, стиснення та обрізання (що зберігається)
## Сесії, Compaction та обрізання (що зберігається)
Що саме зберігається між повідомленнями, залежить від механізму:
Що зберігається між повідомленнями, залежить від механізму:
- **Звичайна історія** зберігається в транскрипті сесії, доки не буде стиснена/обрізана згідно з політикою.
- **Стиснення** зберігає підсумок у транскрипті та залишає недоторканими нещодавні повідомлення.
- **Обрізання** видаляє старі результати інструментів із prompt _у памяті_ для запуску, але не переписує транскрипт.
- **Compaction** зберігає підсумок у транскрипті й залишає недавні повідомлення недоторканими.
- **Pruning** видаляє старі результати інструментів із _внутрішньопамятного_ промпту для запуску, але не переписує транскрипт.
Документація: [Сесія](/uk/concepts/session), [Стиснення](/uk/concepts/compaction), [Обрізання сесії](/uk/concepts/session-pruning).
Документація: [Сесія](/uk/concepts/session), [Compaction](/uk/concepts/compaction), [Обрізання сесії](/uk/concepts/session-pruning).
Типово OpenClaw використовує вбудований рушій контексту `legacy` для складання
та стиснення. Якщо ви встановите plugin, який надає `kind: "context-engine"`, і
Типово OpenClaw використовує вбудований рушій контексту `legacy` для збирання
та compaction. Якщо ви встановите Plugin, який надає `kind: "context-engine"` і
виберете його через `plugins.slots.contextEngine`, OpenClaw натомість делегує
складання контексту, `/compact` і пов’язані гачки життєвого циклу контексту
підлеглого агента цьому рушію. `ownsCompaction: false` не викликає
автоматичного повернення до рушія `legacy`; активний рушій усе одно має
коректно реалізовувати `compact()`. Див.
збирання контексту, `/compact` і пов’язані хуки життєвого циклу контексту
субагента цьому рушію. `ownsCompaction: false` не викликає автоматичного
повернення до рушія legacy; активний рушій усе одно має правильно реалізовувати `compact()`. Див.
[Context Engine](/uk/concepts/context-engine), щоб ознайомитися з повним
підключуваним інтерфейсом, гачками життєвого циклу та конфігурацією.
підключуваним інтерфейсом, хуками життєвого циклу та конфігурацією.
## Що насправді показує `/context`
`/context` за можливості віддає перевагу найновішому звіту про системний prompt, **побудований під час запуску**:
`/context` надає перевагу найновішому звіту про системний промпт, **побудованому під час запуску**, якщо він доступний:
- `System prompt (run)` = захоплений з останнього вбудованого запуску (із підтримкою інструментів) і збережений у сховищі сесії.
- `System prompt (estimate)` = обчислений на льоту, коли звіт про запуск відсутній (або під час роботи через бекенд CLI, який не генерує цей звіт).
- `System prompt (run)` = захоплено з останнього вбудованого запуску (з підтримкою інструментів) і збережено в сховищі сесії.
- `System prompt (estimate)` = обчислено на льоту, коли звіт про запуск відсутній (або під час запуску через бекенд CLI, який не генерує цей звіт).
У будь-якому разі він повідомляє розміри та найбільші складові; він **не** виводить повний системний prompt або схеми інструментів.
У будь-якому разі він повідомляє про розміри та найбільших учасників; він **не** виводить повний системний промпт або схеми інструментів.
## Пов’язане
- [Context Engine](/uk/concepts/context-engine) — користувацьке вбудовування контексту через plugins
- [Стиснення](/uk/concepts/compaction) — підсумовування довгих розмов
- [System Prompt](/uk/concepts/system-prompt) — як будується системний prompt
- [Context Engine](/uk/concepts/context-engine) — власне впровадження контексту через plugins
- [Compaction](/uk/concepts/compaction) — підсумовування довгих розмов
- [Системний промпт](/uk/concepts/system-prompt) — як будується системний промпт
- [Цикл агента](/uk/concepts/agent-loop) — повний цикл виконання агента

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,15 @@
---
read_when:
- Вам потрібно перевірити сирий вивід моделі на витік міркувань
- Ви хочете запускати Gateway у режимі watch під час ітерацій
- Вам потрібно перевірити сирий вивід моделі на наявність витоку міркувань
- Ви хочете запускати Gateway у режимі спостереження під час ітерації
- Вам потрібен відтворюваний робочий процес налагодження
summary: 'Інструменти налагодження: режим watch, сирі потоки моделі та відстеження витоку міркувань'
summary: 'Інструменти налагодження: режим спостереження, сирі потоки моделі та трасування витоку міркувань'
title: Налагодження
x-i18n:
generated_at: "2026-04-05T22:36:52Z"
generated_at: "2026-04-12T18:22:02Z"
model: gpt-5.4
provider: openai
source_hash: 4bc72e8d6cad3a1acaad066f381c82309583fabf304c589e63885f2685dc704e
source_hash: bc31ce9b41e92a14c4309f32df569b7050b18024f83280930e53714d3bfcd5cc
source_path: help/debugging.md
workflow: 15
---
@ -21,9 +21,9 @@ x-i18n:
## Перевизначення налагодження під час виконання
Використовуйте `/debug` у чаті, щоб задавати перевизначення конфігурації **лише на час виконання** (у пам’яті, не на диску).
`/debug` вимкнено за замовчуванням; увімкніть його за допомогою `commands.debug: true`.
Це зручно, коли потрібно перемкнути маловідомі налаштування без редагування `openclaw.json`.
Використовуйте `/debug` у чаті, щоб установити перевизначення конфігурації **лише для поточного виконання** (у пам’яті, не на диску).
`/debug` за замовчуванням вимкнено; увімкніть його за допомогою `commands.debug: true`.
Це зручно, коли потрібно перемикати малопомітні налаштування без редагування `openclaw.json`.
Приклади:
@ -34,43 +34,60 @@ x-i18n:
/debug reset
```
`/debug reset` очищує всі перевизначення та повертає конфігурацію з диска.
`/debug reset` очищає всі перевизначення та повертає конфігурацію з диска.
## Режим watch для Gateway
## Вивід трасування сесії
Для швидких ітерацій запускайте gateway під наглядом засобу відстеження файлів:
Використовуйте `/trace`, коли хочете бачити рядки trace/debug, що належать plugin, в одній сесії
без увімкнення повного режиму verbose.
Приклади:
```text
/trace
/trace on
/trace off
```
Використовуйте `/trace` для діагностики plugin, наприклад зведень налагодження Active Memory.
Продовжуйте використовувати `/verbose` для звичайного виводу статусу/інструментів у режимі verbose, а також
продовжуйте використовувати `/debug` для перевизначень конфігурації лише під час виконання.
## Режим спостереження Gateway
Для швидкої ітерації запускайте Gateway під файловим спостерігачем:
```bash
pnpm gateway:watch
```
Це відповідає такому:
Це відповідає:
```bash
node scripts/watch-node.mjs gateway --force
```
Засіб відстеження перезапускається при змінах у важливих для збірки файлах у `src/`, вихідних файлах розширень,
метаданих розширень `package.json` і `openclaw.plugin.json`, `tsconfig.json`,
`package.json` і `tsdown.config.ts`. Зміни в метаданих розширень перезапускають
gateway без примусового перебудування `tsdown`; зміни у вихідних файлах і конфігурації, як і раніше,
Спостерігач перезапускається при змінах у файлах, важливих для збірки, у `src/`, вихідних файлах extension,
метаданих extension `package.json` і `openclaw.plugin.json`, `tsconfig.json`,
`package.json` і `tsdown.config.ts`. Зміни метаданих extension перезапускають
Gateway без примусового `tsdown`-перезбирання; зміни у вихідному коді та конфігурації, як і раніше,
спочатку перебудовують `dist`.
Додайте будь-які прапорці CLI для gateway після `gateway:watch`, і вони передаватимуться під час
кожного перезапуску. Повторний запуск тієї самої команди watch для того самого репозиторію/набору прапорців тепер
замінює старіший засіб відстеження, замість того щоб залишати дубльовані батьківські процеси спостерігача.
Додайте будь-які прапорці CLI Gateway після `gateway:watch`, і вони передаватимуться далі
під час кожного перезапуску. Повторний запуск тієї самої команди watch для того самого набору repo/прапорців
тепер замінює старіший спостерігач замість того, щоб залишати дубльовані батьківські процеси спостерігача.
## Профіль dev + dev gateway (--dev)
Використовуйте профіль dev, щоб ізолювати стан і підняти безпечне, тимчасове середовище для
налагодження. Існує **два** прапорці `--dev`:
налагодження. Є **два** прапорці `--dev`:
- **Глобальний `--dev` (профіль):** ізолює стан у `~/.openclaw-dev` і
за замовчуванням встановлює порт gateway на `19001` (похідні порти зміщуються разом із ним).
за замовчуванням встановлює порт Gateway на `19001` (пов’язані порти зміщуються разом із ним).
- **`gateway --dev`:** вказує Gateway автоматично створити типову конфігурацію +
робочу область, якщо вони відсутні (і пропустити BOOTSTRAP.md).
workspace, якщо їх немає (і пропустити BOOTSTRAP.md).
Рекомендований процес (профіль dev + dev bootstrap):
Рекомендований сценарій (профіль dev + dev bootstrap):
```bash
pnpm gateway:dev
@ -88,31 +105,31 @@ OPENCLAW_PROFILE=dev openclaw tui
- `OPENCLAW_GATEWAY_PORT=19001` (порти browser/canvas відповідно зміщуються)
2. **Dev bootstrap** (`gateway --dev`)
- Записує мінімальну конфігурацію, якщо її немає (`gateway.mode=local`, прив’язка до loopback).
- Встановлює `agent.workspace` на dev-робочу область.
- Встановлює `agent.skipBootstrap=true` (без BOOTSTRAP.md).
- Ініціалізує файли робочої області, якщо їх немає:
- Записує мінімальну конфігурацію, якщо її немає (`gateway.mode=local`, bind loopback).
- Установлює `agent.workspace` на dev workspace.
- Установлює `agent.skipBootstrap=true` (без BOOTSTRAP.md).
- Заповнює файли workspace, якщо їх немає:
`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`.
- Типова ідентичність: **C3PO** (протокольний дроїд).
- Пропускає провайдери каналів у режимі dev (`OPENCLAW_SKIP_CHANNELS=1`).
- У режимі dev пропускає канальні провайдери (`OPENCLAW_SKIP_CHANNELS=1`).
Процес скидання (чистий старт):
Сценарій скидання (чистий старт):
```bash
pnpm gateway:dev:reset
```
Примітка: `--dev` — це **глобальний** прапорець профілю, і деякі засоби запуску його поглинають.
Примітка: `--dev` — це **глобальний** прапорець профілю, і деякі раннери його поглинають.
Якщо потрібно вказати його явно, використовуйте форму зі змінною середовища:
```bash
OPENCLAW_PROFILE=dev openclaw gateway --dev --reset
```
`--reset` очищує конфігурацію, облікові дані, сесії та dev-робочу область (з використанням
`--reset` очищає конфігурацію, облікові дані, сесії та dev workspace (за допомогою
`trash`, а не `rm`), а потім заново створює типове dev-середовище.
Порада: якщо вже запущено gateway не в режимі dev (launchd/systemd), спочатку зупиніть його:
Порада: якщо вже запущено не-dev Gateway (launchd/systemd), спочатку зупиніть його:
```bash
openclaw gateway stop
@ -120,7 +137,7 @@ openclaw gateway stop
## Логування сирого потоку (OpenClaw)
OpenClaw може журналювати **сирий потік помічника** до будь-якої фільтрації/форматування.
OpenClaw може журналювати **сирий потік асистента** до будь-якої фільтрації/форматування.
Це найкращий спосіб побачити, чи надходять міркування як звичайні текстові дельти
(або як окремі блоки thinking).
@ -149,8 +166,8 @@ OPENCLAW_RAW_STREAM_PATH=~/.openclaw/logs/raw-stream.jsonl
## Логування сирих чанків (pi-mono)
Щоб захопити **сирі OpenAI-сумісні чанки** до того, як вони буде розібрано на блоки,
pi-mono надає окремий журналювальник:
Щоб захопити **сирі OpenAI-сумісні чанки** до того, як їх буде розібрано на блоки,
pi-mono надає окремий журналювач:
```bash
PI_RAW_STREAM=1
@ -166,11 +183,11 @@ PI_RAW_STREAM_PATH=~/.pi-mono/logs/raw-openai-completions.jsonl
`~/.pi-mono/logs/raw-openai-completions.jsonl`
> Примітка: це виводиться лише процесами, які використовують провайдер
> `openai-completions` у pi-mono.
> Примітка: це виводиться лише процесами, які використовують провайдер pi-mono
> `openai-completions`.
## Примітки щодо безпеки
- Журнали сирого потоку можуть містити повні запити, вивід інструментів і дані користувача.
- Журнали сирого потоку можуть містити повні підказки, вивід інструментів і дані користувача.
- Зберігайте журнали локально та видаляйте їх після налагодження.
- Якщо ви ділитеся журналами, спочатку очистьте з них секрети та персональні дані.
- Якщо ділитеся журналами, спочатку очищуйте з них секрети та PII.

File diff suppressed because it is too large Load Diff

View File

@ -2,35 +2,35 @@
read_when:
- Використання або налаштування команд чату
- Налагодження маршрутизації команд або дозволів
summary: 'Слеш-команди: текстові vs нативні, конфігурація та підтримувані команди'
summary: 'Слеш-команди: текстові чи нативні, конфігурація та підтримувані команди'
title: Слеш-команди
x-i18n:
generated_at: "2026-04-10T21:20:33Z"
generated_at: "2026-04-12T18:22:04Z"
model: gpt-5.4
provider: openai
source_hash: 2cc346361c3b1a63aae9ec0f28706f4cb0b866b6c858a3999101f6927b923b4a
source_hash: 9ef6f54500fa2ce3b873a8398d6179a0882b8bf6fba38f61146c64671055505e
source_path: tools/slash-commands.md
workflow: 15
---
# Слеш-команди
Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`.
Команда чату bash лише для хоста використовує `! <cmd>` (із псевдонімом `/bash <cmd>`).
Команди обробляються Gateway. Більшість команд треба надсилати як **окреме** повідомлення, що починається з `/`.
Команда чату bash лише для хоста використовує `! <cmd>` (з псевдонімом `/bash <cmd>`).
Є дві пов’язані системи:
- **Команди**: окремі повідомлення `/...`.
- **Директиви**: `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- Директиви видаляються з повідомлення до того, як його побачить модель.
- У звичайних повідомленнях чату (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сесії.
- У повідомленнях, що містять лише директиви (повідомлення складається тільки з директив), вони зберігаються в сесії та відповідають підтвердженням.
- **Директиви**: `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
- Директиви прибираються з повідомлення до того, як його побачить модель.
- У звичайних повідомленнях чату (не лише з директив), вони розглядаються як «вбудовані підказки» і **не** зберігають налаштування сесії.
- У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сесії та повертають підтвердження.
- Директиви застосовуються лише для **авторизованих відправників**. Якщо задано `commands.allowFrom`, це єдиний
список дозволених; інакше авторизація походить зі списків дозволених каналів/парування разом із `commands.useAccessGroups`.
Для неавторизованих відправників директиви трактуються як звичайний текст.
список дозволених джерел; інакше авторизація визначається списками дозволених джерел/паруванням каналу плюс `commands.useAccessGroups`.
Неавторизовані відправники бачитимуть директиви як звичайний текст.
Також є кілька **вбудованих скорочень** (лише для відправників зі списку дозволених/авторизованих): `/help`, `/commands`, `/status`, `/whoami` (`/id`).
Вони виконуються негайно, видаляються до того, як повідомлення побачить модель, а решта тексту продовжує оброблятися звичайним потоком.
Вони виконуються негайно, прибираються до того, як повідомлення побачить модель, а решта тексту проходить через звичайний потік.
## Конфігурація
@ -62,104 +62,105 @@ x-i18n:
- `commands.text` (типово `true`) вмикає розбір `/...` у повідомленнях чату.
- На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення в `false`.
- `commands.native` (типово `"auto"`) реєструє нативні команди.
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки.
- Щоб перевизначити для конкретного провайдера, задайте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native` (bool або `"auto"`).
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (поки ви не додасте slash-команди); ігнорується для провайдерів без нативної підтримки.
- Щоб перевизначити значення для окремого провайдера, задайте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native` (булеве значення або `"auto"`).
- `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично.
- `commands.nativeSkills` (типово `"auto"`) реєструє команди **Skills** нативно, коли це підтримується.
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (у Slack потрібно створювати окрему slash command для кожного skill).
- Щоб перевизначити для конкретного провайдера, задайте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills` (bool або `"auto"`).
- `commands.bash` (типово `false`) вмикає `! <cmd>` для запуску команд оболонки хоста (`/bash <cmd>` є псевдонімом; потрібні списки дозволених `tools.elevated`).
- `commands.bashForegroundMs` (типово `2000`) визначає, скільки часу bash чекає перед перемиканням у фоновий режим (`0` одразу переводить у фон).
- `commands.nativeSkills` (типово `"auto"`) реєструє команди **Skills** нативно, якщо це підтримується.
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (у Slack потрібно створювати slash-команду для кожного skill).
- Щоб перевизначити значення для окремого провайдера, задайте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills` (булеве значення або `"auto"`).
- `commands.bash` (типово `false`) вмикає `! <cmd>` для виконання команд оболонки на хості (`/bash <cmd>` — псевдонім; потрібні списки дозволених `tools.elevated`).
- `commands.bashForegroundMs` (типово `2000`) визначає, як довго bash очікує перед переходом у фоновий режим (`0` одразу переводить у фон).
- `commands.config` (типово `false`) вмикає `/config` (читання/запис `openclaw.json`).
- `commands.mcp` (типово `false`) вмикає `/mcp` (читання/запис конфігурації MCP, якою керує OpenClaw, у `mcp.servers`).
- `commands.plugins` (типово `false`) вмикає `/plugins` (виявлення/статус plugins, а також елементи керування встановленням і ввімкненням/вимкненням).
- `commands.debug` (типово `false`) вмикає `/debug` (лише перевизначення під час виконання).
- `commands.restart` (типово `true`) вмикає `/restart`, а також дії інструментів перезапуску gateway.
- `commands.ownerAllowFrom` (необов’язково) задає явний список дозволених власника для поверхонь команд/інструментів, доступних лише власнику. Це окремо від `commands.allowFrom`.
- `commands.ownerDisplay` визначає, як ідентифікатори власника відображаються в системному prompt: `raw` або `hash`.
- `commands.ownerDisplaySecret` необов’язково задає HMAC-секрет, який використовується, коли `commands.ownerDisplay="hash"`.
- `commands.allowFrom` (необов’язково) задає список дозволених для авторизації команд окремо для кожного провайдера. Якщо його налаштовано, це
єдине джерело авторизації для команд і директив (списки дозволених каналів/парування та `commands.useAccessGroups`
ігноруються). Використовуйте `"*"` як глобальне типове значення; ключі конкретних провайдерів мають пріоритет.
- `commands.useAccessGroups` (типово `true`) застосовує списки дозволених/політики для команд, якщо `commands.allowFrom` не задано.
- `commands.mcp` (типово `false`) вмикає `/mcp` (читання/запис конфігурації MCP, керованої OpenClaw, у `mcp.servers`).
- `commands.plugins` (типово `false`) вмикає `/plugins` (виявлення/стан plugins, а також керування встановленням і ввімкненням/вимкненням).
- `commands.debug` (типово `false`) вмикає `/debug` (перевизначення лише під час виконання).
- `commands.restart` (типово `true`) вмикає `/restart` і дії інструментів перезапуску gateway.
- `commands.ownerAllowFrom` (необов’язково) задає явний список дозволених джерел для власника для поверхонь команд/інструментів, доступних лише власнику. Це окремо від `commands.allowFrom`.
- `commands.ownerDisplay` визначає, як ідентифікатори власника відображаються в системному промпті: `raw` або `hash`.
- `commands.ownerDisplaySecret` необов’язково задає секрет HMAC, який використовується, коли `commands.ownerDisplay="hash"`.
- `commands.allowFrom` (необов’язково) задає список дозволених джерел для авторизації команд окремо для кожного провайдера. Якщо налаштовано, це
єдине джерело авторизації для команд і директив (списки дозволених джерел/парування каналу та `commands.useAccessGroups`
ігноруються). Використовуйте `"*"` для глобального значення за замовчуванням; ключі окремих провайдерів мають вищий пріоритет.
- `commands.useAccessGroups` (типово `true`) примусово застосовує списки дозволених джерел/політики до команд, якщо `commands.allowFrom` не задано.
## Список команд
Поточне джерело істини:
- вбудовані core-команди походять із `src/auto-reply/commands-registry.shared.ts`
- згенеровані dock-команди походять із `src/auto-reply/commands-registry.data.ts`
- plugin-команди походять із викликів plugin `registerCommand()`
- фактична доступність на вашому gateway усе ще залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins
- вбудовані core-команди беруться з `src/auto-reply/commands-registry.shared.ts`
- згенеровані dock-команди беруться з `src/auto-reply/commands-registry.data.ts`
- plugin-команди надходять із викликів plugin `registerCommand()`
- фактична доступність на вашому gateway усе одно залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins
### Вбудовані core-команди
Вбудовані команди, доступні зараз:
Доступні сьогодні вбудовані команди:
- `/new [model]` запускає нову сесію; `/reset`це псевдонім скидання.
- `/compact [instructions]` стискає контекст сесії. Див. [/concepts/compaction](/uk/concepts/compaction).
- `/new [model]` запускає нову сесію; `/reset` — псевдонім для скидання.
- `/compact [instructions]` виконує Compaction контексту сесії. Див. [/concepts/compaction](/uk/concepts/compaction).
- `/stop` перериває поточний запуск.
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують строком дії прив’язки до потоку.
- `/think <off|minimal|low|medium|high|xhigh>` задає рівень thinking. Псевдоніми: `/thinking`, `/t`.
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують завершенням прив’язки до потоку за строком дії.
- `/think <off|minimal|low|medium|high|xhigh>` задає рівень мислення. Псевдоніми: `/thinking`, `/t`.
- `/verbose on|off|full` перемикає докладний вивід. Псевдонім: `/v`.
- `/fast [status|on|off]` показує або задає швидкий режим.
- `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`.
- `/elevated [on|off|ask|full]` перемикає elevated mode. Псевдонім: `/elev`.
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або задає типові значення exec.
- `/model [name|#|status]` показує або задає модель.
- `/models [provider] [page] [limit=<n>|size=<n>|all]` виводить список провайдерів або моделей для провайдера.
- `/trace on|off` перемикає вивід трасування Plugin для поточної сесії.
- `/fast [status|on|off]` показує або встановлює швидкий режим.
- `/reasoning [on|off|stream]` перемикає видимість міркувань. Псевдонім: `/reason`.
- `/elevated [on|off|ask|full]` перемикає підвищений режим. Псевдонім: `/elev`.
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або встановлює типові значення exec.
- `/model [name|#|status]` показує або встановлює модель.
- `/models [provider] [page] [limit=<n>|size=<n>|all]` перелічує провайдерів або моделі для провайдера.
- `/queue <mode>` керує поведінкою черги (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`), а також параметрами на кшталт `debounce:2s cap:25 drop:summarize`.
- `/help` показує короткий підсумок довідки.
- `/help` показує коротку довідку.
- `/commands` показує згенерований каталог команд.
- `/tools [compact|verbose]` показує, що поточний агент може використовувати просто зараз.
- `/status` показує статус під час виконання, зокрема використання/квоту провайдера, якщо доступно.
- `/tasks` виводить активні/нещодавні фонові завдання для поточної сесії.
- `/tools [compact|verbose]` показує, що поточний агент може використовувати прямо зараз.
- `/status` показує стан виконання, зокрема використання/квоту провайдера, якщо доступно.
- `/tasks` перелічує активні/нещодавні фонові завдання для поточної сесії.
- `/context [list|detail|json]` пояснює, як збирається контекст.
- `/export-session [path]` експортує поточну сесію в HTML. Псевдонім: `/export`.
- `/whoami` показує ваш ідентифікатор відправника. Псевдонім: `/id`.
- `/skill <name> [input]` запускає skill за назвою.
- `/allowlist [list|add|remove] ...` керує записами списку дозволених. Лише текстова команда.
- `/approve <id> <decision>` опрацьовує запити на підтвердження exec.
- `/allowlist [list|add|remove] ...` керує записами списку дозволених джерел. Лише текстова команда.
- `/approve <id> <decision>` обробляє запити на погодження exec.
- `/btw <question>` ставить побічне запитання без зміни майбутнього контексту сесії. Див. [/tools/btw](/uk/tools/btw).
- `/subagents list|kill|log|info|send|steer|spawn` керує запусками sub-agent для поточної сесії.
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сесіями ACP і параметрами під час виконання.
- `/subagents list|kill|log|info|send|steer|spawn` керує запусками субагентів для поточної сесії.
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сесіями ACP і параметрами виконання.
- `/focus <target>` прив’язує поточний потік Discord або тему/розмову Telegram до цілі сесії.
- `/unfocus` знімає поточну прив’язку.
- `/agents` виводить список агентів, прив’язаних до потоку, для поточної сесії.
- `/kill <id|#|all>` перериває один або всі запущені sub-agent.
- `/steer <id|#> <message>` надсилає керувальне повідомлення запущеному sub-agent. Псевдонім: `/tell`.
- `/agents` перелічує агентів, прив’язаних до потоку, для поточної сесії.
- `/kill <id|#|all>` перериває один або всі запущені субагенти.
- `/steer <id|#> <message>` надсилає керуюче повідомлення запущеному субагенту. Псевдонім: `/tell`.
- `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потрібно `commands.config: true`.
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, якою керує OpenClaw, у `mcp.servers`. Лише для власника. Потрібно `commands.mcp: true`.
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` це псевдонім. Запис — лише для власника. Потрібно `commands.plugins: true`.
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потрібно `commands.mcp: true`.
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugins. `/plugin` — псевдонім. Запис — лише для власника. Потрібно `commands.plugins: true`.
- `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише під час виконання. Лише для власника. Потрібно `commands.debug: true`.
- `/usage off|tokens|full|cost` керує нижнім колонтитулом використання для кожної відповіді або виводить локальний підсумок витрат.
- `/usage off|tokens|full|cost` керує нижнім колонтитулом використання для кожної відповіді або виводить локальний зведений звіт про вартість.
- `/tts on|off|status|provider|limit|summary|audio|help` керує TTS. Див. [/tools/tts](/uk/tools/tts).
- `/restart` перезапускає OpenClaw, якщо це ввімкнено. Типово: увімкнено; встановіть `commands.restart: false`, щоб вимкнути.
- `/activation mention|always` задає режим активації групи.
- `/restart` перезапускає OpenClaw, якщо ввімкнено. Типово: увімкнено; щоб вимкнути, задайте `commands.restart: false`.
- `/activation mention|always` задає режим активації в групі.
- `/send on|off|inherit` задає політику надсилання. Лише для власника.
- `/bash <command>` запускає команду оболонки хоста. Лише текстова команда. Псевдонім: `! <command>`. Потрібно `commands.bash: true` плюс списки дозволених `tools.elevated`.
- `/bash <command>` виконує команду оболонки на хості. Лише текстова команда. Псевдонім: `! <command>`. Потрібно `commands.bash: true` і списки дозволених `tools.elevated`.
- `!poll [sessionId]` перевіряє фонове завдання bash.
- `!stop [sessionId]` зупиняє фонове завдання bash.
### Згенеровані dock-команди
Dock-команди генеруються з channel plugins із підтримкою native-command. Поточний вбудований набір:
Dock-команди генеруються з channel plugins із підтримкою нативних команд. Поточний вбудований набір:
- `/dock-discord` (псевдонім: `/dock_discord`)
- `/dock-mattermost` (псевдонім: `/dock_mattermost`)
- `/dock-slack` (псевдонім: `/dock_slack`)
- `/dock-telegram` (псевдонім: `/dock_telegram`)
### Команди bundled plugin
### Команди вбудованих plugins
Bundled plugins можуть додавати більше слеш-команд. Поточні bundled-команди в цьому репозиторії:
Вбудовані plugins можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії:
- `/dreaming [on|off|status|help]` перемикає memory dreaming. Див. [Dreaming](/uk/concepts/dreaming).
- `/dreaming [on|off|status|help]` перемикає Dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming).
- `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком парування/налаштування пристрою. Див. [Pairing](/uk/channels/pairing).
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово вмикає високоризикові команди phone node.
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово вмикає команди вузла телефона з високим рівнем ризику.
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord нативна назва команди — `/talkvoice`.
- `/card ...` надсилає шаблони LINE rich card. Див. [LINE](/uk/channels/line).
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` перевіряє та керує bundled harness сервера застосунку Codex. Див. [Codex Harness](/uk/plugins/codex-harness).
- `/codex status|models|threads|resume|compact|review|account|mcp|skills` перевіряє та керує вбудованим harness сервера застосунку Codex. Див. [Codex Harness](/uk/plugins/codex-harness).
- Команди лише для QQBot:
- `/bot-ping`
- `/bot-version`
@ -167,72 +168,73 @@ Bundled plugins можуть додавати більше слеш-команд
- `/bot-upgrade`
- `/bot-logs`
### Динамічні skill-команди
### Динамічні команди Skills
Skills, які може викликати користувач, також доступні як слеш-команди:
Skills, які може викликати користувач, також доступні як slash-команди:
- `/skill <name> [input]` завжди працює як універсальна точка входу.
- skills також можуть з’являтися як прямі команди, наприклад `/prose`, коли skill/plugin їх реєструє.
- skills також можуть з’являтися як прямі команди, наприклад `/prose`, коли їх реєструє skill/plugin.
- нативна реєстрація skill-команд керується через `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
Примітки:
- Команди приймають необов’язковий символ `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечітке зіставлення); якщо збігу немає, текст трактується як тіло повідомлення.
- Для повного розподілу використання провайдера використовуйте `openclaw status --usage`.
- `/allowlist add|remove` вимагає `commands.config=true` і враховує канал `configWrites`.
- У каналах із кількома обліковими записами `/allowlist --account <id>`, націлений на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний підсумок витрат із журналів сесій OpenClaw.
- `/restart` увімкнено типово; встановіть `commands.restart: false`, щоб вимкнути його.
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст розглядається як тіло повідомлення.
- Для повного розподілу використання провайдера скористайтеся `openclaw status --usage`.
- `/allowlist add|remove` вимагає `commands.config=true` і враховує `configWrites` каналу.
- У каналах із кількома акаунтами команди `/allowlist --account <id>`, націлені на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового акаунта.
- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний зведений звіт про вартість із журналів сесій OpenClaw.
- `/restart` увімкнено типово; щоб вимкнути, задайте `commands.restart: false`.
- `/plugins install <spec>` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:<pkg>`.
- `/plugins enable|disable` оновлює конфігурацію plugin і може запропонувати перезапуск.
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потрібні `channels.discord.voice` і нативні команди; недоступна як текстова команда).
- Команди прив’язки до потоку Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) вимагають, щоб ефективні прив’язки до потоку були увімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потрібні `channels.discord.voice` і нативні команди; недоступна як текстова).
- Команди прив’язки потоку Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) вимагають, щоб ефективні прив’язки потоку були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
- Довідник команд ACP і поведінка під час виконання: [ACP Agents](/uk/tools/acp-agents).
- `/verbose` призначено для налагодження та додаткової видимості; у звичайному використанні тримайте його **вимкненим**.
- `/fast on|off` зберігає перевизначення сесії. Щоб очистити його й повернутися до типових значень із конфігурації, використовуйте опцію `inherit` в інтерфейсі Sessions.
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних endpoints Responses, тоді як прямі публічні запити Anthropic, зокрема трафік з OAuth-автентифікацією, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст збоїв включається лише коли `/verbose` має значення `on` або `full`.
- `/reasoning` (і `/verbose`) ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування або вивід інструментів, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах.
- `/model` одразу зберігає нову модель сесії.
- Якщо агент неактивний, наступний запуск використає її одразу.
- Якщо запуск уже активний, OpenClaw позначає живе перемикання як відкладене та перезапускає на новій моделі лише в чистій точці повторної спроби.
- `/verbose` призначена для налагодження та додаткової видимості; у звичайному використанні тримайте її **вимкненою**.
- `/trace` вужча за `/verbose`: вона показує лише рядки trace/debug, що належать plugin, і не вмикає звичайний докладний вивід інструментів.
- `/fast on|off` зберігає перевизначення сесії. Щоб очистити його та повернутися до типових значень із конфігурації, використайте опцію `inherit` в інтерфейсі Sessions.
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють її з `service_tier=priority` у нативних endpoint Responses, тоді як прямі публічні запити Anthropic, включно з трафіком з OAuth-автентифікацією, надісланим до `api.anthropic.com`, зіставляють її з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст помилки включається лише тоді, коли `/verbose` має значення `on` або `full`.
- `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування, вивід інструментів або діагностику plugin, які ви не планували показувати. Краще залишати їх вимкненими, особливо в групових чатах.
- `/model` негайно зберігає нову модель сесії.
- Якщо агент простоює, наступний запуск використає її відразу.
- Якщо запуск уже активний, OpenClaw позначає живе перемикання як відкладене й перезапускає на нову модель лише в чистій точці повторної спроби.
- Якщо активність інструментів або вивід відповіді вже почалися, відкладене перемикання може залишатися в черзі до пізнішої можливості повторної спроби або до наступного ходу користувача.
- **Швидкий шлях:** повідомлення лише з командою від відправників зі списку дозволених обробляються негайно (в обхід черги й моделі).
- **Керування згадками в групі:** повідомлення лише з командою від відправників зі списку дозволених обходять вимоги щодо згадування.
- **Вбудовані скорочення (лише для відправників зі списку дозволених):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту.
- Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує оброблятися звичайним потоком.
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволених обробляються негайно (в обхід черги та моделі).
- **Обмеження згадування в групі:** повідомлення лише з командами від відправників зі списку дозволених обходять вимоги щодо згадування.
- **Вбудовані скорочення (лише для відправників зі списку дозволених):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і прибираються до того, як модель побачить решту тексту.
- Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту проходить через звичайний потік.
- Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
- Неавторизовані повідомлення лише з командою тихо ігноруються, а вбудовані токени `/...` трактуються як звичайний текст.
- **Skill-команди:** skills з позначкою `user-invocable` доступні як слеш-команди. Назви очищуються до `a-z0-9_` (максимум 32 символи); у разі колізій додаються числові суфікси (наприклад, `_2`).
- `/skill <name> [input]` запускає skill за назвою (це корисно, коли обмеження нативних команд не дають створити окремі команди для кожного skill).
- Неавторизовані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` розглядаються як звичайний текст.
- **Skill-команди:** Skills з позначкою `user-invocable` доступні як slash-команди. Назви санітизуються до `a-z0-9_` (максимум 32 символи); у разі колізій додаються числові суфікси (наприклад, `_2`).
- `/skill <name> [input]` запускає skill за назвою (це корисно, коли обмеження нативних команд не дозволяють мати окремі команди для кожного skill).
- Типово skill-команди пересилаються моделі як звичайний запит.
- Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб маршрутизувати команду безпосередньо до інструмента (детерміновано, без моделі).
- Приклад: `/prose` (plugin OpenProse) — див. [OpenProse](/uk/prose).
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і кнопкові меню, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують кнопкове меню, коли команда підтримує вибір значень і ви пропускаєте аргумент.
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви пропускаєте аргумент.
## `/tools`
`/tools` відповідає на запитання про стан під час виконання, а не про конфігурацію: **що цей агент може використовувати просто зараз у
`/tools` відповідає на запитання про виконання, а не про конфігурацію: **що цей агент може використовувати прямо зараз у
цій розмові**.
- Типовий `/tools` є компактним і оптимізованим для швидкого перегляду.
- `/tools verbose` додає короткі описи.
- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму як `compact|verbose`.
- Результати прив’язані до сесії, тому зміна агента, каналу, потоку, авторизації відправника або моделі може
- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`.
- Результати прив’язані до сесії, тож зміна агента, каналу, потоку, авторизації відправника або моделі може
змінити вивід.
- `/tools` включає інструменти, які реально доступні під час виконання, зокрема core-інструменти, підключені
plugin-інструменти та інструменти, що належать каналам.
plugin-інструменти та інструменти, що належать каналу.
Для редагування профілів і перевизначень використовуйте панель Tools у Control UI або поверхні конфігурації/каталогу, а не
трактуйте `/tools` як статичний каталог.
Для редагування профілю та перевизначень використовуйте панель Tools в інтерфейсі керування або поверхні конфігурації/каталогу,
а не сприймайте `/tools` як статичний каталог.
## Поверхні використання (що і де показується)
## Поверхні використання (що де показується)
- **Використання/квота провайдера** (наприклад, «Claude 80% left») показується в `/status` для провайдера поточної моделі, коли відстеження використання увімкнено. OpenClaw нормалізує вікна провайдера до `% left`; для MiniMax поля percent із лише залишком інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану з тегом моделі.
- **Рядки токенів/кешу** в `/status` можуть повертатися до останнього запису використання в транскрипті, коли живий знімок сесії неповний. Наявні ненульові живі значення все одно мають пріоритет, а резервний варіант із транскрипту також може відновити мітку активної моделі під час виконання та більшу загальну кількість, орієнтовану на prompt, коли збережені підсумки відсутні або менші.
- **Токени/вартість для кожної відповіді** контролюються через `/usage off|tokens|full` (додаються до звичайних відповідей).
- `/model status` стосується **моделей/автентифікації/endpoints**, а не використання.
- **Використання/квота провайдера** (наприклад, «Claude 80% left») показується в `/status` для поточного провайдера моделі, якщо відстеження використання ввімкнене. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax поля відсотка з лише залишком інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану, прив’язаній до моделі.
- **Рядки токенів/кешу** в `/status` можуть повертатися до останнього запису використання з транскрипту, якщо живий знімок сесії містить мало даних. Наявні ненульові живі значення все одно мають пріоритет, а резерв із транскрипту також може відновити мітку активної runtime-моделі плюс більший загальний обсяг, орієнтований на промпт, коли збережені підсумки відсутні або менші.
- **Токени/вартість для кожної відповіді** керуються через `/usage off|tokens|full` (додаються до звичайних відповідей).
- `/model status` стосується **моделей/автентифікації/endpoint**, а не використання.
## Вибір моделі (`/model`)
@ -252,13 +254,13 @@ Skills, які може викликати користувач, також до
Примітки:
- `/model` і `/model list` показують компактний нумерований вибір (сімейство моделей + доступні провайдери).
- У Discord `/model` і `/models` відкривають інтерактивний вибір зі спадними списками провайдера й моделі та кроком Submit.
- `/model <#>` вибирає зі списку цього вибору (і за можливості віддає перевагу поточному провайдеру).
- `/model status` показує докладний перегляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), коли доступно.
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера й моделі та кроком Submit.
- `/model <#>` вибирає зі списку вибору (і, коли можливо, надає перевагу поточному провайдеру).
- `/model status` показує докладний вигляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), якщо доступно.
## Перевизначення для налагодження
## Перевизначення налагодження
`/debug` дає змогу задавати **лише під час виконання** перевизначення конфігурації (у пам’яті, не на диску). Лише для власника. Типово вимкнено; увімкніть через `commands.debug: true`.
`/debug` дає змогу задавати **перевизначення конфігурації лише під час виконання** (у пам’яті, не на диску). Лише для власника. Типово вимкнено; увімкніть через `commands.debug: true`.
Приклади:
@ -272,8 +274,29 @@ Skills, які може викликати користувач, також до
Примітки:
- Перевизначення застосовуються негайно до нових читань конфігурації, але **не** записуються до `openclaw.json`.
- Використовуйте `/debug reset`, щоб очистити всі перевизначення та повернутися до конфігурації на диску.
- Перевизначення застосовуються негайно до нових читань конфігурації, але **не** записуються в `openclaw.json`.
- Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску.
## Вивід trace Plugin
`/trace` дає змогу перемикати **рядки trace/debug plugin у межах сесії** без увімкнення повного докладного режиму.
Приклади:
```text
/trace
/trace on
/trace off
```
Примітки:
- `/trace` без аргументу показує поточний стан trace для сесії.
- `/trace on` вмикає рядки trace plugin для поточної сесії.
- `/trace off` знову вимикає їх.
- Рядки trace plugin можуть з’являтися в `/status` і як додаткове діагностичне повідомлення після звичайної відповіді асистента.
- `/trace` не замінює `/debug`; `/debug` як і раніше керує перевизначеннями конфігурації лише під час виконання.
- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/статусу все ще належить до `/verbose`.
## Оновлення конфігурації
@ -291,12 +314,12 @@ Skills, які може викликати користувач, також до
Примітки:
- Перед записом конфігурація перевіряється; недійсні зміни відхиляються.
- Оновлення через `/config` зберігаються після перезапусків.
- Перед записом конфігурація проходить валідацію; некоректні зміни відхиляються.
- Оновлення `/config` зберігаються після перезапусків.
## Оновлення MCP
`/mcp` записує визначення MCP-серверів, якими керує OpenClaw, у `mcp.servers`. Лише для власника. Типово вимкнено; увімкніть через `commands.mcp: true`.
`/mcp` записує визначення MCP-серверів, керованих OpenClaw, у `mcp.servers`. Лише для власника. Типово вимкнено; увімкніть через `commands.mcp: true`.
Приклади:
@ -309,12 +332,12 @@ Skills, які може викликати користувач, також до
Примітки:
- `/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, якими керує Pi.
- Адаптери під час виконання визначають, які транспорти реально можна виконувати.
- `/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi.
- Адаптери runtime вирішують, які транспорти реально можна виконати.
## Оновлення plugin
## Оновлення plugins
`/plugins` дає операторам змогу перевіряти знайдені plugins і перемикати їх увімкнення в конфігурації. Для потоків лише читання можна використовувати `/plugin` як псевдонім. Типово вимкнено; увімкніть через `commands.plugins: true`.
`/plugins` дає змогу операторам перевіряти виявлені plugins і перемикати їх увімкнення в конфігурації. Для потоків лише читання можна використовувати `/plugin` як псевдонім. Типово вимкнено; увімкніть через `commands.plugins: true`.
Приклади:
@ -328,22 +351,22 @@ Skills, які може викликати користувач, також до
Примітки:
- `/plugins list` і `/plugins show` використовують реальне виявлення plugins для поточного робочого простору разом із конфігурацією на диску.
- `/plugins enable|disable` оновлює лише конфігурацію plugin; він не встановлює і не видаляє plugins.
- `/plugins list` і `/plugins show` використовують реальне виявлення plugins у поточному робочому просторі та конфігурації на диску.
- `/plugins enable|disable` оновлює лише конфігурацію plugin; воно не встановлює й не видаляє plugins.
- Після змін `enable/disable` перезапустіть gateway, щоб застосувати їх.
## Примітки щодо поверхонь
- **Текстові команди** виконуються в нормальній чат-сесії (DM використовують `main`, групи мають власну сесію).
- **Текстові команди** виконуються у звичайній сесії чату (DM ділять `main`, групи мають власну сесію).
- **Нативні команди** використовують ізольовані сесії:
- Discord: `agent:<agentId>:discord:slash:<userId>`
- Slack: `agent:<agentId>:slack:slash:<userId>` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`)
- Telegram: `telegram:slash:<userId>` (націлюється на чат-сесію через `CommandTargetSessionKey`)
- **`/stop`** націлюється на активну чат-сесію, щоб мати змогу перервати поточний запуск.
- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити по одній slash command у Slack для кожної вбудованої команди (з тими самими назвами, що й `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit.
- Нативний виняток Slack: реєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстовий `/status` у повідомленнях Slack усе ще працює.
- Telegram: `telegram:slash:<userId>` (націлюється на сесію чату через `CommandTargetSessionKey`)
- **`/stop`** націлюється на активну сесію чату, щоб можна було перервати поточний запуск.
- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (з тими самими назвами, що й `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit.
- Виняток для нативних команд Slack: реєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстовий `/status` у повідомленнях Slack усе одно працює.
## BTW side questions
## Побічні запитання BTW
`/btw` — це швидке **побічне запитання** про поточну сесію.
@ -356,13 +379,13 @@ Skills, які може викликати користувач, також до
- воно доставляється як живий побічний результат, а не як звичайне повідомлення асистента.
Це робить `/btw` корисним, коли вам потрібне тимчасове уточнення, поки основне
завдання продовжується.
завдання триває.
Приклад:
```text
/btw what are we doing right now?
/btw що ми зараз робимо?
```
Див. [BTW Side Questions](/uk/tools/btw), щоб дізнатися повну поведінку та
подробиці UX клієнта.
Див. [BTW Side Questions](/uk/tools/btw), щоб ознайомитися з повною поведінкою та
деталями клієнтського UX.

View File

@ -1,109 +1,118 @@
---
read_when:
- Налаштування розбору або значень за замовчуванням для директив thinking, fast-mode чи verbose
summary: Синтаксис директив для /think, /fast, /verbose і видимості reasoning
title: Рівні мислення
- Налаштування парсингу або значень за замовчуванням для директив thinking, fast-mode чи verbose
summary: Синтаксис директив для `/think`, `/fast`, `/verbose`, `/trace` і видимості міркувань
title: Рівні thinking
x-i18n:
generated_at: "2026-04-05T18:21:19Z"
generated_at: "2026-04-12T18:22:22Z"
model: gpt-5.4
provider: openai
source_hash: f60aeb6ab4c7ce858f725f589f54184b29d8c91994d18c8deafa75179b9a62cb
source_hash: 4f3b1341281f07ba4e9061e3355845dca234be04cc0d358594312beeb7676e68
source_path: tools/thinking.md
workflow: 15
---
# Рівні мислення (/think directives)
# Рівні thinking (/think директиви)
## Що це робить
- Вбудована директива в будь-якому вхідному тілі: `/t <level>`, `/think:<level>` або `/thinking <level>`.
- Рівні (псевдоніми): `off | minimal | low | medium | high | xhigh | adaptive`
- Рівні (аліаси): `off | minimal | low | medium | high | xhigh | adaptive`
- minimal → “think”
- low → “think hard”
- medium → “think harder”
- high → “ultrathink” (максимальний бюджет)
- xhigh → “ultrathink+” (лише моделі GPT-5.2 + Codex)
- adaptive → керований провайдером адаптивний бюджет reasoning (підтримується для сімейства моделей Anthropic Claude 4.6)
- `x-high`, `x_high`, `extra-high`, `extra high` і `extra_high` відповідають `xhigh`.
- `highest`, `max` відповідають `high`.
- xhigh → “ultrathink+” (лише GPT-5.2 + моделі Codex)
- adaptive → адаптивний бюджет міркувань, керований провайдером (підтримується для сімейства моделей Anthropic Claude 4.6)
- `x-high`, `x_high`, `extra-high`, `extra high` і `extra_high` зіставляються з `xhigh`.
- `highest`, `max` зіставляються з `high`.
- Примітки щодо провайдерів:
- Для моделей Anthropic Claude 4.6 за замовчуванням використовується `adaptive`, якщо явний рівень мислення не задано.
- Для MiniMax (`minimax/*`) на Anthropic-сумісному шляху потокової передачі за замовчуванням використовується `thinking: { type: "disabled" }`, якщо ви явно не задасте thinking у параметрах моделі або параметрах запиту. Це запобігає витоку дельт `reasoning_content` із ненативного формату потоку Anthropic у MiniMax.
- Z.AI (`zai/*`) підтримує лише бінарне мислення (`on`/`off`). Будь-який рівень, відмінний від `off`, трактується як `on` (зіставляється з `low`).
- Moonshot (`moonshot/*`) зіставляє `/think off` з `thinking: { type: "disabled" }`, а будь-який рівень, відмінний від `off`, — з `thinking: { type: "enabled" }`. Коли thinking увімкнено, Moonshot приймає для `tool_choice` лише `auto|none`; OpenClaw нормалізує несумісні значення до `auto`.
- Для моделей Anthropic Claude 4.6 значенням за замовчуванням є `adaptive`, якщо явний рівень thinking не задано.
- Для MiniMax (`minimax/*`) на Anthropic-сумісному шляху потокової передачі типовим є `thinking: { type: "disabled" }`, якщо ви явно не задасте thinking у параметрах моделі або параметрах запиту. Це запобігає витоку дельт `reasoning_content` із ненативного Anthropic-потоку MiniMax.
- Z.AI підтримує лише двійковий thinking (`on`/`off`). Будь-який рівень, відмінний від `off`, трактується як `on` (зіставляється з `low`).
- Moonshot зіставляє `/think off` з `thinking: { type: "disabled" }`, а будь-який рівень, відмінний від `off`, — з `thinking: { type: "enabled" }`. Коли thinking увімкнено, Moonshot приймає лише `tool_choice` `auto|none`; OpenClaw нормалізує несумісні значення до `auto`.
## Порядок визначення
1. Вбудована директива в повідомленні (застосовується лише до цього повідомлення).
2. Перевизначення сесії (встановлюється надсиланням повідомлення, що містить лише директиву).
3. Значення за замовчуванням для окремого агента (`agents.list[].thinkingDefault` у конфігурації).
4. Глобальне значення за замовчуванням (`agents.defaults.thinkingDefault` у конфігурації).
5. Резервний варіант: `adaptive` для моделей Anthropic Claude 4.6, `low` для інших моделей із підтримкою reasoning, і `off` — інакше.
3. Типове значення для конкретного агента (`agents.list[].thinkingDefault` у конфігурації).
4. Глобальне типове значення (`agents.defaults.thinkingDefault` у конфігурації).
5. Запасний варіант: `adaptive` для моделей Anthropic Claude 4.6, `low` для інших моделей із підтримкою міркувань, інакше `off`.
## Установлення значення сесії за замовчуванням
## Установлення типового значення для сесії
- Надішліть повідомлення, яке складається **лише** з директиви (пробіли дозволені), наприклад `/think:medium` або `/t high`.
- Це закріплюється для поточної сесії (за замовчуванням для конкретного відправника); скидається через `/think:off` або idle reset сесії.
- Надсилається відповідь-підтвердження (`Thinking level set to high.` / `Thinking disabled.`). Якщо рівень недійсний (наприклад `/thinking big`), команду буде відхилено з підказкою, а стан сесії залишиться без змін.
- Надішліть `/think` (або `/think:`) без аргументу, щоб побачити поточний рівень мислення.
- Надішліть повідомлення, яке **містить лише** директиву (дозволені пробіли), наприклад `/think:medium` або `/t high`.
- Це закріплюється для поточної сесії (типово для конкретного відправника); скидається через `/think:off` або скидання сесії через бездіяльність.
- Надсилається підтверджувальна відповідь (`Thinking level set to high.` / `Thinking disabled.`). Якщо рівень недійсний (наприклад, `/thinking big`), команду буде відхилено з підказкою, а стан сесії залишиться без змін.
- Надішліть `/think` (або `/think:`) без аргументу, щоб побачити поточний рівень thinking.
## Застосування агентом
## Застосування за агентом
- **Вбудований Pi**: визначений рівень передається до середовища виконання вбудованого агента Pi.
- **Вбудований Pi**: визначений рівень передається в runtime вбудованого агента Pi.
## Швидкий режим (/fast)
- Рівні: `on|off`.
- Повідомлення лише з директивою перемикає перевизначення швидкого режиму сесії та повертає `Fast mode enabled.` / `Fast mode disabled.`.
- Повідомлення лише з директивою перемикає перевизначення швидкого режиму для сесії та повертає `Fast mode enabled.` / `Fast mode disabled.`.
- Надішліть `/fast` (або `/fast status`) без режиму, щоб побачити поточний ефективний стан швидкого режиму.
- OpenClaw визначає швидкий режим у такому порядку:
1. Вбудований/директивний `/fast on|off`
1. Вбудована директива/повідомлення лише з директивою `/fast on|off`
2. Перевизначення сесії
3. Значення за замовчуванням для окремого агента (`agents.list[].fastModeDefault`)
4. Конфігурація для окремої моделі: `agents.defaults.models["<provider>/<model>"].params.fastMode`
5. Резервний варіант: `off`
- Для `openai/*` швидкий режим зіставляється з пріоритетною обробкою OpenAI шляхом надсилання `service_tier=priority` у підтримуваних запитах Responses.
3. Типове значення для конкретного агента (`agents.list[].fastModeDefault`)
4. Конфігурація для конкретної моделі: `agents.defaults.models["<provider>/<model>"].params.fastMode`
5. Запасний варіант: `off`
- Для `openai/*` швидкий режим зіставляється з пріоритетною обробкою OpenAI через надсилання `service_tier=priority` у підтримуваних запитах Responses.
- Для `openai-codex/*` швидкий режим надсилає той самий прапорець `service_tier=priority` у Codex Responses. OpenClaw зберігає один спільний перемикач `/fast` для обох шляхів автентифікації.
- Для прямих публічних запитів `anthropic/*`, включно з трафіком OAuth-автентифікації, надісланим до `api.anthropic.com`, швидкий режим зіставляється з рівнями сервісу Anthropic: `/fast on` встановлює `service_tier=auto`, `/fast off` встановлює `service_tier=standard_only`.
- Для прямих публічних запитів `anthropic/*`, включно з трафіком з OAuth-автентифікацією, надісланим до `api.anthropic.com`, швидкий режим зіставляється з рівнями сервісу Anthropic: `/fast on` задає `service_tier=auto`, `/fast off` задає `service_tier=standard_only`.
- Для `minimax/*` на Anthropic-сумісному шляху `/fast on` (або `params.fastMode: true`) переписує `MiniMax-M2.7` на `MiniMax-M2.7-highspeed`.
- Явні параметри моделі Anthropic `serviceTier` / `service_tier` перевизначають значення швидкого режиму за замовчуванням, коли задано обидва. OpenClaw, як і раніше, пропускає ін’єкцію рівня сервісу Anthropic для базових URL проксі, що не належать Anthropic.
- Явні параметри моделі Anthropic `serviceTier` / `service_tier` мають пріоритет над типовим значенням швидкого режиму, якщо задано обидва. OpenClaw, як і раніше, пропускає ін’єкцію рівня сервісу Anthropic для не-Anthropic проксі `base URL`.
## Директиви verbose (/verbose або /v)
- Рівні: `on` (minimal) | `full` | `off` (за замовчуванням).
- Повідомлення лише з директивою перемикає verbose режим сесії та повертає `Verbose logging enabled.` / `Verbose logging disabled.`; недійсні рівні повертають підказку без зміни стану.
- `/verbose off` зберігає явне перевизначення сесії; очистити його можна через інтерфейс Sessions, вибравши `inherit`.
- Вбудована директива впливає лише на це повідомлення; в інших випадках застосовуються значення за замовчуванням сесії/глобальні.
- Рівні: `on` (мінімальний) | `full` | `off` (типово).
- Повідомлення лише з директивою перемикає verbose для сесії та повертає `Verbose logging enabled.` / `Verbose logging disabled.`; недійсні рівні повертають підказку без зміни стану.
- `/verbose off` зберігає явне перевизначення сесії; очистьте його через UI Sessions, вибравши `inherit`.
- Вбудована директива впливає лише на це повідомлення; інакше застосовуються типові значення сесії/глобальні.
- Надішліть `/verbose` (або `/verbose:`) без аргументу, щоб побачити поточний рівень verbose.
- Коли verbose увімкнено, агенти, які видають структуровані результати інструментів (Pi, інші JSON-агенти), надсилають кожен виклик інструмента назад як окреме повідомлення лише з метаданими, з префіксом `<emoji> <tool-name>: <arg>`, коли доступно (path/command). Ці підсумки інструментів надсилаються щойно запускається кожен інструмент (окремими бульбашками), а не як потокові дельти.
- Підсумки збоїв інструментів залишаються видимими у звичайному режимі, але сирі суфікси з деталями помилок приховано, якщо verbose не дорівнює `on` або `full`.
- Коли verbose має значення `full`, вивід інструментів також пересилається після завершення (окрема бульбашка, усічена до безпечної довжини). Якщо ви перемикаєте `/verbose on|full|off`, поки виконання ще триває, наступні бульбашки інструментів враховують нове налаштування.
- Коли verbose увімкнено, агенти, які повертають структуровані результати інструментів (Pi, інші JSON-агенти), надсилають кожен виклик інструмента назад як окреме повідомлення лише з метаданими, з префіксом `<emoji> <tool-name>: <arg>`, коли доступно (шлях/команда). Ці зведення інструментів надсилаються щойно кожен інструмент запускається (окремими бульбашками), а не як потокові дельти.
- Зведення про збої інструментів залишаються видимими у звичайному режимі, але необроблені суфікси з деталями помилок приховуються, якщо verbose не дорівнює `on` або `full`.
- Коли verbose дорівнює `full`, виводи інструментів також пересилаються після завершення (окрема бульбашка, обрізана до безпечної довжини). Якщо ви перемкнете `/verbose on|full|off`, поки виконання ще триває, наступні бульбашки інструментів врахують нове налаштування.
## Видимість reasoning (/reasoning)
## Директиви trace для plugin (/trace)
- Рівні: `on` | `off` (типово).
- Повідомлення лише з директивою перемикає trace-вивід plugin для сесії та повертає `Plugin trace enabled.` / `Plugin trace disabled.`.
- Вбудована директива впливає лише на це повідомлення; інакше застосовуються типові значення сесії/глобальні.
- Надішліть `/trace` (або `/trace:`) без аргументу, щоб побачити поточний рівень trace.
- `/trace` вужчий, ніж `/verbose`: він показує лише рядки trace/debug, що належать plugin, наприклад зведення налагодження Active Memory.
- Рядки trace можуть з’являтися у `/status` і як додаткове діагностичне повідомлення після звичайної відповіді асистента.
## Видимість міркувань (/reasoning)
- Рівні: `on|off|stream`.
- Повідомлення лише з директивою перемикає, чи показуються блоки мислення у відповідях.
- Коли цю опцію ввімкнено, reasoning надсилається як **окреме повідомлення** з префіксом `Reasoning:`.
- `stream` (лише Telegram): транслює reasoning у чернетку-бульбашку Telegram під час генерації відповіді, а потім надсилає фінальну відповідь без reasoning.
- Псевдонім: `/reason`.
- Повідомлення лише з директивою перемикає, чи показуються блоки thinking у відповідях.
- Коли це ввімкнено, міркування надсилаються як **окреме повідомлення** з префіксом `Reasoning:`.
- `stream` (лише Telegram): транслює міркування в чернетку бульбашки Telegram під час генерації відповіді, а потім надсилає фінальну відповідь без міркувань.
- Аліас: `/reason`.
- Надішліть `/reasoning` (або `/reasoning:`) без аргументу, щоб побачити поточний рівень reasoning.
- Порядок визначення: вбудована директива, потім перевизначення сесії, потім значення за замовчуванням для окремого агента (`agents.list[].reasoningDefault`), потім резервний варіант (`off`).
- Порядок визначення: вбудована директива, потім перевизначення сесії, потім типове значення для конкретного агента (`agents.list[].reasoningDefault`), потім запасний варіант (`off`).
## Пов’язане
- Документація щодо підвищеного режиму міститься в [Elevated mode](/tools/elevated).
- Документація про підвищений режим міститься в [Підвищений режим](/uk/tools/elevated).
## Heartbeats
## Heartbeat
- Тіло heartbeat probe — це налаштований prompt heartbeat (за замовчуванням: `Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`). Вбудовані директиви в heartbeat-повідомленні застосовуються як зазвичай (але уникайте зміни значень сесії за замовчуванням із heartbeat-повідомлень).
- Для доставки heartbeat за замовчуванням використовується лише фінальний payload. Щоб також надсилати окреме повідомлення `Reasoning:` (коли воно доступне), установіть `agents.defaults.heartbeat.includeReasoning: true` або для окремого агента `agents.list[].heartbeat.includeReasoning: true`.
- Тіло probe Heartbeat — це налаштований запит Heartbeat (типово: `Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`). Вбудовані директиви в повідомленні Heartbeat застосовуються як завжди (але уникайте зміни типових значень сесії з Heartbeat).
- Доставка Heartbeat типово використовує лише фінальний payload. Щоб також надсилати окреме повідомлення `Reasoning:` (коли доступне), задайте `agents.defaults.heartbeat.includeReasoning: true` або для конкретного агента `agents.list[].heartbeat.includeReasoning: true`.
## Вебінтерфейс чату
## Веб-інтерфейс чату
- Селектор thinking у вебчаті відображає збережений рівень сесії зі сховища/config вхідної сесії під час завантаження сторінки.
- Вибір іншого рівня одразу записує перевизначення сесії через `sessions.patch`; він не чекає наступного надсилання й не є одноразовим перевизначенням `thinkingOnce`.
- Перший варіант завжди має вигляд `Default (<resolved level>)`, де визначене значення за замовчуванням береться з активної моделі сесії: `adaptive` для Claude 4.6 на Anthropic/Bedrock, `low` для інших моделей із підтримкою reasoning, `off` — інакше.
- Селектор залишається обізнаним про провайдера:
- Перемикач thinking у веб-чаті під час завантаження сторінки відображає збережений рівень сесії зі сховища вхідних сесій/конфігурації.
- Вибір іншого рівня одразу записує перевизначення сесії через `sessions.patch`; він не чекає наступного надсилання і не є одноразовим перевизначенням `thinkingOnce`.
- Перший варіант завжди має вигляд `Default (<resolved level>)`, де визначене типове значення береться з активної моделі сесії: `adaptive` для Claude 4.6 на Anthropic/Bedrock, `low` для інших моделей із підтримкою міркувань, інакше `off`.
- Вибір залишається обізнаним про провайдера:
- більшість провайдерів показують `off | minimal | low | medium | high | adaptive`
- Z.AI показує бінарний варіант `off | on`
- `/think:<level>` і далі працює та оновлює той самий збережений рівень сесії, тож директиви чату й селектор залишаються синхронізованими.
- Z.AI показує двійкові `off | on`
- `/think:<level>` як і раніше працює та оновлює той самий збережений рівень сесії, тож директиви чату і перемикач залишаються синхронізованими.