chore(i18n): refresh uk translations
This commit is contained in:
parent
e447d6b021
commit
a8898e4969
@ -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`, коли немає згадки).
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
@ -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`.
|
||||
- Типова ідентичність: **C3‑PO** (протокольний дроїд).
|
||||
- Пропускає провайдери каналів у режимі 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.
|
||||
|
||||
2648
docs/uk/help/faq.md
2648
docs/uk/help/faq.md
File diff suppressed because it is too large
Load Diff
@ -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.
|
||||
|
||||
@ -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>` як і раніше працює та оновлює той самий збережений рівень сесії, тож директиви чату і перемикач залишаються синхронізованими.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user