chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-04 05:39:08 +00:00
parent 1d039a880e
commit 83910253b1

View File

@ -1,41 +1,48 @@
---
read_when:
- Вам потрібна фонова або паралельна робота через агента
- Ви змінюєте політику інструмента sessions_spawn або під-агента
- Ви впроваджуєте або усуваєте несправності в сеансах субагентів, прив’язаних до потоку
- Ви змінюєте політику sessions_spawn або інструмента субагента
- Ви реалізуєте або усуваєте несправності сеансів субагентів, прив’язаних до потоку.
sidebarTitle: Sub-agents
summary: Запускайте ізольовані фонові запуски агента, які повідомляють результати назад у чат запитувача
summary: Запускайте ізольовані фонові виконання агентів, які повідомляють результати назад у чат запитувача
title: Субагенти
x-i18n:
generated_at: "2026-05-03T22:25:54Z"
generated_at: "2026-05-04T05:37:26Z"
model: gpt-5.5
provider: openai
source_hash: d0df39e06b952def3eb0b296f36c7dc8c0b0a115785d865236a970c5d453fc37
source_hash: 65d60bf6813d667b7311aa28109d4bd6be012a16e638c64cfff130831db88cd8
source_path: tools/subagents.md
workflow: 16
---
Sub-agents — це фонові запуски агентів, породжені з наявного запуску агента.
Вони працюють у власному сеансі (`agent:<agentId>:subagent:<uuid>`) і,
після завершення, **оголошують** свій результат назад у канал чату
запитувача. Кожен запуск sub-agent відстежується як
Субагенти — це фонові запуски агентів, породжені з наявного запуску агента.
Вони працюють у власній сесії (`agent:<agentId>:subagent:<uuid>`) і,
після завершення, **повідомляють** свій результат назад у чат-канал
запитувача. Кожен запуск субагента відстежується як
[фонове завдання](/uk/automation/tasks).
Основні цілі:
- Паралелізувати роботу з "дослідження / довге завдання / повільний інструмент", не блокуючи основний запуск.
- Ізолювати sub-agents за замовчуванням (розділення сеансів + необов’язкова пісочниця).
- Зробити поверхню інструментів складною для неправильного використання: sub-agents за замовчуванням **не** отримують інструменти сеансу.
- Підтримувати налаштовувану глибину вкладеності для патернів оркестратора.
- Паралелити роботу типу "дослідження / довге завдання / повільний інструмент", не блокуючи основний запуск.
- Тримати субагентів ізольованими за замовчуванням (розділення сесій + необов’язкова пісочниця).
- Зробити поверхню інструментів складною для неправильного використання: субагенти **не** отримують сесійні інструменти за замовчуванням.
- Підтримувати налаштовувану глибину вкладеності для шаблонів оркестратора.
<Note>
**Примітка щодо вартості:** кожен sub-agent за замовчуванням має власний контекст і використання токенів. Для важких або повторюваних завдань задайте дешевшу модель для sub-agents і залиште основного агента на якіснішій моделі. Налаштовуйте через `agents.defaults.subagents.model` або перевизначення для окремого агента. Коли дочірньому агенту справді потрібен поточний транскрипт запитувача, агент може запросити `context: "fork"` для цього одного породження. Сеанси subagent, прив’язані до треду, за замовчуванням використовують `context: "fork"`, бо вони відгалужують поточну розмову в подальший тред.
**Примітка щодо вартості:** кожен субагент за замовчуванням має власний
контекст і використання токенів. Для важких або повторюваних завдань задайте
дешевшу модель для субагентів, а основного агента залиште на моделі вищої
якості. Налаштовуйте через `agents.defaults.subagents.model` або перевизначення
для окремого агента. Коли дочірньому агенту справді потрібен поточний транскрипт
запитувача, агент може запросити `context: "fork"` для цього одного породження.
Сесії субагентів, прив’язані до треду, за замовчуванням використовують
`context: "fork"`, бо вони відгалужують поточну розмову в подальший тред.
</Note>
## Slash-команда
Використовуйте `/subagents`, щоб переглядати або керувати запусками sub-agent для **поточного
сеансу**:
Використовуйте `/subagents`, щоб переглядати або керувати запусками субагентів для **поточної
сесії**:
```text
/subagents list
@ -47,15 +54,16 @@ Sub-agents — це фонові запуски агентів, породжен
/subagents spawn <agentId> <task> [--model <model>] [--thinking <level>]
```
Використовуйте верхньорівневу [`/steer <message>`](/uk/tools/steer), щоб спрямувати активний запуск поточного сеансу запитувача. Використовуйте `/subagents steer <id|#> <message>`, коли ціллю є дочірній запуск.
Використовуйте верхньорівневу [`/steer <message>`](/uk/tools/steer), щоб скеровувати активний запуск поточної сесії запитувача. Використовуйте `/subagents steer <id|#> <message>`, коли ціль — дочірній запуск.
`/subagents info` показує метадані запуску (статус, часові позначки, id сеансу,
шлях до транскрипту, очищення). Використовуйте `sessions_history` для обмеженого,
відфільтрованого з міркувань безпеки перегляду пригадування; перевіряйте шлях до транскрипту на диску, коли потрібен сирий повний транскрипт.
`/subagents info` показує метадані запуску (статус, часові позначки, id сесії,
шлях транскрипту, очищення). Використовуйте `sessions_history` для обмеженого,
відфільтрованого з міркувань безпеки перегляду пам’яті; переглядайте шлях транскрипту на диску, коли
потрібен сирий повний транскрипт.
### Керування прив’язкою до треду
### Елементи керування прив’язкою до треду
Ці команди працюють у каналах, які підтримують постійні прив’язки до тредів.
Ці команди працюють у каналах, що підтримують постійні прив’язки до тредів.
Див. [Канали з підтримкою тредів](#thread-supporting-channels) нижче.
```text
@ -68,82 +76,83 @@ Sub-agents — це фонові запуски агентів, породжен
### Поведінка породження
`/subagents spawn` запускає фоновий sub-agent як команду користувача (а не внутрішню
ретрансляцію) і надсилає одне фінальне оновлення про завершення назад у
`/subagents spawn` запускає фонового субагента як користувацьку команду (а не
внутрішню ретрансляцію) і надсилає одне фінальне оновлення про завершення назад у
чат запитувача, коли запуск завершується.
<AccordionGroup>
<Accordion title="Non-blocking, push-based completion">
- Команда породження не блокує виконання; вона одразу повертає id запуску.
- Після завершення sub-agent оголошує повідомлення з підсумком/результатом назад у канал чату запитувача.
- Завершення працює за push-моделлю. Після породження **не** опитуйте `/subagents list`, `sessions_list` або `sessions_history` у циклі лише для очікування завершення; перевіряйте статус лише на вимогу для налагодження або втручання.
- Після завершення OpenClaw у режимі best-effort закриває відстежувані вкладки браузера/процеси, відкриті цим сеансом sub-agent, перш ніж потік очищення оголошення продовжиться.
- Після завершення субагент повідомляє зведення/результат назад у чат-канал запитувача.
- Завершення працює через push. Після породження **не** опитуйте `/subagents list`, `sessions_list` або `sessions_history` у циклі лише для очікування завершення; переглядайте статус тільки за потреби для налагодження або втручання.
- Після завершення OpenClaw у режимі best-effort закриває відстежувані вкладки браузера/процеси, відкриті цією сесією субагента, перш ніж продовжиться потік очищення оголошення.
</Accordion>
<Accordion title="Manual-spawn delivery resilience">
- OpenClaw спочатку пробує пряму доставку `agent` зі стабільним ключем ідемпотентності.
- Якщо пряма доставка не вдається, він переходить до маршрутизації через чергу.
- Якщо маршрутизація через чергу все ще недоступна, оголошення повторюється з коротким експоненційним backoff перед остаточною відмовою.
- Доставка завершення зберігає розв’язаний маршрут запитувача: маршрути завершення, прив’язані до треду або розмови, мають пріоритет, коли доступні; якщо джерело завершення надає лише канал, OpenClaw заповнює відсутню ціль/обліковий запис із розв’язаного маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все одно працювала.
- Якщо крок завершення агента-запитувача завершується помилкою, не створює видимого виводу або повертає явно неповний префікс захопленого результату дочірнього агента, OpenClaw повертається до прямої доставки завершення із захопленого результату дочірнього агента.
- Якщо пряму доставку використати неможливо, застосовується резервна маршрутизація через чергу.
- Якщо маршрутизація через чергу все ще недоступна, оголошення повторюється з коротким експоненційним відступом перед остаточною відмовою.
- Доставка завершення зберігає визначений маршрут запитувача: маршрути завершення, прив’язані до треду або розмови, мають пріоритет, коли доступні; якщо джерело завершення надає лише канал, OpenClaw заповнює відсутню ціль/обліковий запис із визначеного маршруту сесії запитувача (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все одно працювала.
</Accordion>
<Accordion title="Completion handoff metadata">
Передавання завершення до сеансу запитувача — це згенерований під час виконання
внутрішній контекст (не текст, створений користувачем), який містить:
Передавання завершення до сесії запитувача — це згенерований під час виконання
внутрішній контекст (не текст, написаний користувачем), що містить:
- `Result` — найновіший видимий текст відповіді `assistant`, інакше очищений найновіший текст tool/toolResult. Термінально невдалі запуски не повторно використовують захоплений текст відповіді.
- `Result` — найновіший видимий текст відповіді `assistant`, інакше санітизований найновіший текст tool/toolResult. Термінально невдалі запуски не використовують повторно захоплений текст відповіді.
- `Status``completed successfully` / `failed` / `timed out` / `unknown`.
- Компактну статистику виконання/токенів.
- Інструкцію доставки, яка каже агенту-запитувачу переписати відповідь звичайним голосом асистента (а не пересилати сирі внутрішні метадані).
</Accordion>
<Accordion title="Modes and ACP runtime">
- `--model` і `--thinking` перевизначають стандартні значення для цього конкретного запуску.
- Використовуйте `info`/`log`, щоб переглянути деталі та вивід після завершення.
- `/subagents spawn` — це одноразовий режим (`mode: "run"`). Для постійних сеансів, прив’язаних до треду, використовуйте `sessions_spawn` з `thread: true` і `mode: "session"`.
- Для сеансів ACP harness (Claude Code, Gemini CLI, OpenCode або явний Codex ACP/acpx) використовуйте `sessions_spawn` з `runtime: "acp"`, коли інструмент оголошує цю runtime. Див. [модель доставки ACP](/uk/tools/acp-agents#delivery-model) під час налагодження завершень або циклів agent-to-agent. Коли Plugin `codex` увімкнено, керування чатом/тредами Codex має віддавати перевагу `/codex ...` над ACP, якщо користувач явно не просить ACP/acpx.
- OpenClaw приховує `runtime: "acp"`, доки ACP не увімкнено, запитувач не перебуває в пісочниці, а backend Plugin, наприклад `acpx`, не завантажено. `runtime: "acp"` очікує зовнішній id ACP harness або запис `agents.list[]` з `runtime.type="acp"`; використовуйте стандартну runtime sub-agent для звичайних агентів конфігурації OpenClaw з `agents_list`.
- `--model` і `--thinking` перевизначають значення за замовчуванням для цього конкретного запуску.
- Використовуйте `info`/`log`, щоб переглядати подробиці та вивід після завершення.
- `/subagents spawn` — це одноразовий режим (`mode: "run"`). Для постійних сесій, прив’язаних до треду, використовуйте `sessions_spawn` з `thread: true` і `mode: "session"`.
- Для сесій ACP harness (Claude Code, Gemini CLI, OpenCode або явний Codex ACP/acpx) використовуйте `sessions_spawn` з `runtime: "acp"`, коли інструмент оголошує таке середовище виконання. Див. [модель доставки ACP](/uk/tools/acp-agents#delivery-model) під час налагодження завершень або циклів агент-агент. Коли plugin `codex` увімкнено, керування чатом/тредом Codex має віддавати перевагу `/codex ...` замість ACP, якщо користувач явно не просить ACP/acpx.
- OpenClaw приховує `runtime: "acp"`, доки ACP не увімкнено, запитувач не перебуває в пісочниці, а backend plugin, наприклад `acpx`, не завантажено. `runtime: "acp"` очікує зовнішній id ACP harness або запис `agents.list[]` з `runtime.type="acp"`; використовуйте стандартне середовище виконання субагентів для звичайних агентів конфігурації OpenClaw з `agents_list`.
</Accordion>
</AccordionGroup>
## Режими контексту
Нативні sub-agents стартують ізольовано, якщо викликач явно не просить відгалузити
Нативні субагенти стартують ізольовано, якщо викликач явно не просить відгалужити
поточний транскрипт.
| Режим | Коли використовувати | Поведінка |
| Режим | Коли його використовувати | Поведінка |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `isolated` | Нове дослідження, незалежна реалізація, повільна інструментальна робота або будь-що, що можна коротко описати в тексті завдання | Створює чистий дочірній транскрипт. Це стандартний режим, який зменшує використання токенів. |
| `fork` | Робота, що залежить від поточної розмови, попередніх результатів інструментів або нюансованих інструкцій, уже наявних у транскрипті запитувача | Відгалужує транскрипт запитувача в дочірній сеанс перед запуском дочірнього агента. |
| `isolated` | Нове дослідження, незалежна реалізація, робота з повільними інструментами або будь-що, що можна коротко описати в тексті завдання | Створює чистий дочірній транскрипт. Це значення за замовчуванням і воно знижує використання токенів. |
| `fork` | Робота, що залежить від поточної розмови, попередніх результатів інструментів або тонких інструкцій, уже наявних у транскрипті запитувача | Відгалужує транскрипт запитувача в дочірню сесію перед стартом дочірнього агента. |
Використовуйте `fork` помірковано. Він призначений для делегування, чутливого до контексту, а не як
заміна чіткому промпту завдання.
Використовуйте `fork` ощадливо. Він призначений для делегування, чутливого до контексту, а не як
заміна написанню чіткого промпта завдання.
## Інструмент: `sessions_spawn`
Запускає sub-agent з `deliver: false` на глобальній лінії `subagent`,
потім виконує крок оголошення та публікує відповідь оголошення в канал чату
Запускає субагента з `deliver: false` у глобальній смузі `subagent`,
потім виконує крок оголошення та публікує відповідь оголошення в чат-канал
запитувача.
Доступність залежить від ефективної політики інструментів викликача. Профілі `coding` і
`full` за замовчуванням відкривають `sessions_spawn`. Профіль `messaging`
Доступність залежить від чинної політики інструментів викликача. Профілі `coding` і
`full` відкривають `sessions_spawn` за замовчуванням. Профіль `messaging`
не відкриває; додайте `tools.alsoAllow: ["sessions_spawn", "sessions_yield",
"subagents"]` або використовуйте `tools.profile: "coding"` для агентів, які мають делегувати
роботу. Політики каналу/групи, провайдера, пісочниці та allow/deny для окремого агента можуть
усе ще прибрати інструмент після етапу профілю. Використовуйте `/tools` з того самого
сеансу, щоб підтвердити ефективний список інструментів.
роботу. Політики дозволу/заборони для каналу/групи, провайдера, пісочниці та окремого агента все ще можуть
прибрати інструмент після етапу профілю. Використовуйте `/tools` з тієї самої
сесії, щоб підтвердити чинний список інструментів.
**Стандартні значення:**
**Значення за замовчуванням:**
- **Модель:** успадковує викликача, якщо не задано `agents.defaults.subagents.model` (або `agents.list[].subagents.model` для окремого агента); явне `sessions_spawn.model` усе одно має пріоритет.
- **Thinking:** успадковує викликача, якщо не задано `agents.defaults.subagents.thinking` (або `agents.list[].subagents.thinking` для окремого агента); явне `sessions_spawn.thinking` усе одно має пріоритет.
- **Таймаут запуску:** якщо `sessions_spawn.runTimeoutSeconds` пропущено, OpenClaw використовує `agents.defaults.subagents.runTimeoutSeconds`, коли задано; інакше повертається до `0` (без таймауту).
- **Модель:** успадковується від викликача, якщо не задано `agents.defaults.subagents.model` (або `agents.list[].subagents.model` для окремого агента); явне `sessions_spawn.model` усе одно має пріоритет.
- **Thinking:** успадковується від викликача, якщо не задано `agents.defaults.subagents.thinking` (або `agents.list[].subagents.thinking` для окремого агента); явне `sessions_spawn.thinking` усе одно має пріоритет.
- **Тайм-аут запуску:** якщо `sessions_spawn.runTimeoutSeconds` пропущено, OpenClaw використовує `agents.defaults.subagents.runTimeoutSeconds`, коли його задано; інакше повертається до `0` (без тайм-ауту).
### Параметри інструмента
<ParamField path="task" type="string" required>
Опис завдання для sub-agent.
Опис завдання для субагента.
</ParamField>
<ParamField path="label" type="string">
Необов’язкова людиночитна мітка.
@ -152,37 +161,37 @@ Sub-agents — це фонові запуски агентів, породжен
Породжувати під іншим id агента, коли це дозволено `subagents.allowAgents`.
</ParamField>
<ParamField path="runtime" type='"subagent" | "acp"' default="subagent">
`acp` призначено лише для зовнішніх ACP harnesses (`claude`, `droid`, `gemini`, `opencode` або явно запитаного Codex ACP/acpx) і для записів `agents.list[]`, у яких `runtime.type` дорівнює `acp`.
`acp` призначено лише для зовнішніх ACP harness (`claude`, `droid`, `gemini`, `opencode` або явно запитаного Codex ACP/acpx) і для записів `agents.list[]`, у яких `runtime.type` `acp`.
</ParamField>
<ParamField path="resumeSessionId" type="string">
Лише ACP. Відновлює наявний сеанс ACP harness, коли `runtime: "acp"`; ігнорується для нативних породжень sub-agent.
Лише ACP. Відновлює наявну сесію ACP harness, коли `runtime: "acp"`; ігнорується для нативних породжень субагентів.
</ParamField>
<ParamField path="streamTo" type='"parent"'>
Лише ACP. Транслює вивід запуску ACP до батьківського сеансу, коли `runtime: "acp"`; пропускайте для нативних породжень sub-agent.
Лише ACP. Транслює вивід запуску ACP у батьківську сесію, коли `runtime: "acp"`; пропустіть для нативних породжень субагентів.
</ParamField>
<ParamField path="model" type="string">
Перевизначає модель sub-agent. Некоректні значення пропускаються, а sub-agent запускається на стандартній моделі з попередженням у результаті інструмента.
Перевизначає модель субагента. Некоректні значення пропускаються, і субагент запускається на моделі за замовчуванням із попередженням у результаті інструмента.
</ParamField>
<ParamField path="thinking" type="string">
Перевизначає рівень thinking для запуску sub-agent.
Перевизначає рівень thinking для запуску субагента.
</ParamField>
<ParamField path="runTimeoutSeconds" type="number">
За замовчуванням дорівнює `agents.defaults.subagents.runTimeoutSeconds`, коли задано, інакше `0`. Коли задано, запуск sub-agent переривається після N секунд.
За замовчуванням використовує `agents.defaults.subagents.runTimeoutSeconds`, коли задано, інакше `0`. Коли задано, запуск субагента переривається після N секунд.
</ParamField>
<ParamField path="thread" type="boolean" default="false">
Коли `true`, запитує прив’язку треду каналу для цього сеансу sub-agent.
Коли `true`, запитує прив’язку сесії цього субагента до треду каналу.
</ParamField>
<ParamField path="mode" type='"run" | "session"' default="run">
Якщо `thread: true` і `mode` пропущено, стандартним стає `session`. `mode: "session"` потребує `thread: true`.
Якщо `thread: true` і `mode` пропущено, стандартним значенням стає `session`. `mode: "session"` потребує `thread: true`.
</ParamField>
<ParamField path="cleanup" type='"delete" | "keep"' default="keep">
`"delete"` архівує одразу після оголошення (транскрипт усе одно зберігається через перейменування).
</ParamField>
<ParamField path="sandbox" type='"inherit" | "require"' default="inherit">
`require` відхиляє породження, якщо цільова дочірня runtime не перебуває в пісочниці.
`require` відхиляє породження, якщо цільове дочірнє середовище виконання не перебуває в пісочниці.
</ParamField>
<ParamField path="context" type='"isolated" | "fork"' default="isolated">
`fork` відгалужує поточний транскрипт запитувача в дочірній сеанс. Лише нативні sub-agents. Породження, прив’язані до треду, за замовчуванням використовують `fork`; породження без треду `isolated`.
`fork` відгалужує поточний транскрипт запитувача в дочірню сесію. Лише нативні субагенти. Породження, прив’язані до треду, за замовчуванням використовують `fork`; породження без треду за замовчуванням використовують `isolated`.
</ParamField>
<Warning>
@ -191,17 +200,17 @@ Sub-agents — це фонові запуски агентів, породжен
`message`/`sessions_send` із породженого запуску.
</Warning>
## Сеанси, прив’язані до треду
## Сесії, прив’язані до треду
Коли для каналу ввімкнено прив’язки до тредів, sub-agent може залишатися прив’язаним
до треду, щоб подальші повідомлення користувача в цьому треді й надалі маршрутизувалися до
того самого сеансу sub-agent.
Коли прив’язки до тредів увімкнені для каналу, субагент може залишатися прив’язаним
до треду, щоб подальші повідомлення користувача в цьому треді продовжували маршрутизуватися до тієї самої
сесії субагента.
### Канали з підтримкою тредів
**Discord** наразі є єдиним підтримуваним каналом. Він підтримує
постійні сеанси subagent, прив’язані до тредів (`sessions_spawn` з
`thread: true`), ручне керування тредами (`/focus`, `/unfocus`, `/agents`,
постійні сесії субагентів, прив’язані до треду (`sessions_spawn` з
`thread: true`), ручні елементи керування тредами (`/focus`, `/unfocus`, `/agents`,
`/session idle`, `/session max-age`) і ключі адаптера
`channels.discord.threadBindings.enabled`,
`channels.discord.threadBindings.idleHours`,
@ -211,80 +220,80 @@ Sub-agents — це фонові запуски агентів, породжен
### Швидкий потік
<Steps>
<Step title="Spawn">
`sessions_spawn` з `thread: true` (і необов’язково `mode: "session"`).
<Step title="Створення">
`sessions_spawn` з `thread: true` (і, за бажанням, `mode: "session"`).
</Step>
<Step title="Bind">
OpenClaw створює або прив’язує тред до цільового сеансу в активному каналі.
<Step title="Прив’язування">
OpenClaw створює або прив’язує тред до цієї цільової сесії в активному каналі.
</Step>
<Step title="Route follow-ups">
Відповіді та подальші повідомлення в цьому треді маршрутизуються до прив’язаного сеансу.
<Step title="Маршрутизація подальших повідомлень">
Відповіді та подальші повідомлення в цьому треді спрямовуються до прив’язаної сесії.
</Step>
<Step title="Inspect timeouts">
Використовуйте `/session idle`, щоб переглянути/оновити автоматичне скасування фокуса через неактивність, і
`/session max-age`, щоб керувати жорстким лімітом.
<Step title="Перегляд тайм-аутів">
Використовуйте `/session idle`, щоб переглянути/оновити автоматичне зняття фокуса після неактивності, і
`/session max-age`, щоб керувати жорстким обмеженням.
</Step>
<Step title="Detach">
<Step title="Від’єднання">
Використовуйте `/unfocus`, щоб від’єднати вручну.
</Step>
</Steps>
### Ручне керування
| Команда | Дія |
| Команда | Ефект |
| ------------------ | --------------------------------------------------------------------- |
| `/focus <target>` | Прив’язати поточний потік (або створити його) до цілі під-агента/сеансу |
| `/unfocus` | Видалити прив’язку для поточного прив’язаного потоку |
| `/agents` | Перелічити активні запуски та стан прив’язки (`thread:<id>` або `unbound`) |
| `/session idle` | Переглянути/оновити автоматичне зняття фокуса через бездіяльність (лише сфокусовані прив’язані потоки) |
| `/session max-age` | Переглянути/оновити жорстке обмеження часу (лише сфокусовані прив’язані потоки) |
| `/focus <target>` | Прив’язати поточний тред (або створити його) до цільового субагента/сесії |
| `/unfocus` | Видалити прив’язку для поточного прив’язаного треду |
| `/agents` | Показати активні запуски та стан прив’язки (`thread:<id>` або `unbound`) |
| `/session idle` | Переглянути/оновити автоматичне зняття фокуса через бездіяльність (лише прив’язані треди у фокусі) |
| `/session max-age` | Переглянути/оновити жорстке обмеження (лише прив’язані треди у фокусі) |
### Перемикачі конфігурації
- **Глобальне значення за замовчуванням:** `session.threadBindings.enabled`, `session.threadBindings.idleHours`, `session.threadBindings.maxAgeHours`.
- **Перевизначення каналу та ключі автоматичної прив’язки під час створення** залежать від адаптера. Див. [Канали з підтримкою потоків](#thread-supporting-channels) вище.
- **Перевизначення каналу та ключі автоматичного прив’язування під час створення** залежать від адаптера. Див. [Канали з підтримкою тредів](#thread-supporting-channels) вище.
Див. [Довідник конфігурації](/uk/gateway/configuration-reference) і
[Slash-команди](/uk/tools/slash-commands) для поточних деталей адаптерів.
[Slash-команди](/uk/tools/slash-commands), щоб дізнатися поточні відомості про адаптери.
### Список дозволених
<ParamField path="agents.list[].subagents.allowAgents" type="string[]">
Список ідентифікаторів агентів, на які можна націлюватися через явний `agentId` (`["*"]` дозволяє будь-який). За замовчуванням: лише агент-запитувач. Якщо ви задаєте список і все одно хочете, щоб запитувач міг створювати самого себе з `agentId`, додайте ідентифікатор запитувача до списку.
Список ідентифікаторів агентів, на які можна націлюватися через явний `agentId` (`["*"]` дозволяє будь-який). За замовчуванням: лише агент-запитувач. Якщо ви задаєте список і все одно хочете, щоб запитувач міг створювати себе через `agentId`, додайте ідентифікатор запитувача до списку.
</ParamField>
<ParamField path="agents.defaults.subagents.allowAgents" type="string[]">
Типовий список дозволених цільових агентів, який використовується, коли агент-запитувач не задає власний `subagents.allowAgents`.
Стандартний список дозволених цільових агентів, який використовується, коли агент-запитувач не задає власний `subagents.allowAgents`.
</ParamField>
<ParamField path="agents.defaults.subagents.requireAgentId" type="boolean" default="false">
Блокувати виклики `sessions_spawn`, які пропускають `agentId` (примушує явно вибирати профіль). Перевизначення для окремого агента: `agents.list[].subagents.requireAgentId`.
Блокувати виклики `sessions_spawn`, які не вказують `agentId` (примушує до явного вибору профілю). Перевизначення для окремого агента: `agents.list[].subagents.requireAgentId`.
</ParamField>
Якщо сеанс запитувача працює в пісочниці, `sessions_spawn` відхиляє цілі,
які запускалися б без пісочниці.
Якщо сесія запитувача ізольована в sandbox, `sessions_spawn` відхиляє цілі,
які запускалися б без sandbox.
### Виявлення
Використовуйте `agents_list`, щоб побачити, які ідентифікатори агентів наразі дозволені для
`sessions_spawn`. Відповідь містить ефективну модель кожного переліченого агента
та вбудовані метадані середовища виконання, щоб виклики могли відрізняти PI, сервер застосунку Codex
`sessions_spawn`. Відповідь містить ефективну
модель кожного переліченого агента та вбудовані метадані середовища виконання, щоб виклики могли відрізняти PI, сервер застосунку Codex
та інші налаштовані нативні середовища виконання.
### Автоархівація
### Автоматичне архівування
- Сеанси під-агентів автоматично архівуються після `agents.defaults.subagents.archiveAfterMinutes` (за замовчуванням `60`).
- Архівація використовує `sessions.delete` і перейменовує транскрипт на `*.deleted.<timestamp>` (у тій самій папці).
- Сесії субагентів автоматично архівуються після `agents.defaults.subagents.archiveAfterMinutes` (за замовчуванням `60`).
- Архівування використовує `sessions.delete` і перейменовує транскрипт на `*.deleted.<timestamp>` (у тій самій папці).
- `cleanup: "delete"` архівує одразу після оголошення (транскрипт усе одно зберігається через перейменування).
- Автоархівація виконується за принципом найкращого зусилля; очікувані таймери втрачаються, якщо Gateway перезапускається.
- `runTimeoutSeconds` **не** виконує автоархівацію; він лише зупиняє запуск. Сеанс залишається до автоархівації.
- Автоархівація однаково застосовується до сеансів глибини 1 і глибини 2.
- Очищення браузера відокремлене від очищення архіву: відстежувані вкладки/процеси браузера закриваються за принципом найкращого зусилля після завершення запуску, навіть якщо транскрипт/запис сеансу зберігається.
- Автоматичне архівування виконується за принципом найкращої спроби; очікувані таймери втрачаються, якщо gateway перезапускається.
- `runTimeoutSeconds` **не** виконує автоматичне архівування; він лише зупиняє запуск. Сесія залишається до автоматичного архівування.
- Автоматичне архівування однаково застосовується до сесій глибини 1 і глибини 2.
- Очищення браузера окреме від очищення архіву: відстежувані вкладки/процеси браузера закриваються за принципом найкращої спроби після завершення запуску, навіть якщо запис транскрипта/сесії зберігається.
## Вкладені під-агенти
## Вкладені субагенти
За замовчуванням під-агенти не можуть створювати власних під-агентів
(`maxSpawnDepth: 1`). Задайте `maxSpawnDepth: 2`, щоб увімкнути один рівень
вкладеності — **шаблон оркестратора**: основний → під-агент-оркестратор →
робочі під-під-агенти.
За замовчуванням субагенти не можуть створювати власних субагентів
(`maxSpawnDepth: 1`). Установіть `maxSpawnDepth: 2`, щоб увімкнути один рівень
вкладеності — **патерн оркестратора**: головний → субагент-оркестратор →
робочі субсубагенти.
```json5
{
@ -303,153 +312,153 @@ Sub-agents — це фонові запуски агентів, породжен
### Рівні глибини
| Глибина | Форма ключа сеансу | Роль | Може створювати? |
| Глибина | Форма ключа сесії | Роль | Може створювати? |
| ----- | -------------------------------------------- | --------------------------------------------- | ---------------------------- |
| 0 | `agent:<id>:main` | Основний агент | Завжди |
| 1 | `agent:<id>:subagent:<uuid>` | Під-агент (оркестратор, коли дозволена глибина 2) | Лише якщо `maxSpawnDepth >= 2` |
| 2 | `agent:<id>:subagent:<uuid>:subagent:<uuid>` | Під-під-агент (листовий робітник) | Ніколи |
| 0 | `agent:<id>:main` | Головний агент | Завжди |
| 1 | `agent:<id>:subagent:<uuid>` | Субагент (оркестратор, коли дозволена глибина 2) | Лише якщо `maxSpawnDepth >= 2` |
| 2 | `agent:<id>:subagent:<uuid>:subagent:<uuid>` | Субсубагент (кінцевий виконавець) | Ніколи |
### Ланцюг оголошень
### Ланцюжок оголошень
Результати передаються назад угору ланцюгом:
Результати передаються вгору ланцюжком:
1. Робітник глибини 2 завершується → оголошує своєму батьківському сеансу (оркестратору глибини 1).
2. Оркестратор глибини 1 отримує оголошення, синтезує результати, завершується → оголошує основному.
3. Основний агент отримує оголошення та доставляє його користувачу.
1. Виконавець глибини 2 завершує роботу → оголошує своєму батьківському елементу (оркестратору глибини 1).
2. Оркестратор глибини 1 отримує оголошення, синтезує результати, завершує роботу → оголошує головному агенту.
3. Головний агент отримує оголошення й доставляє його користувачу.
Кожен рівень бачить лише оголошення від своїх безпосередніх дочірніх сеансів.
Кожен рівень бачить лише оголошення від своїх безпосередніх дочірніх елементів.
<Note>
**Операційні настанови:** запускайте дочірню роботу один раз і чекайте подій
завершення замість побудови циклів опитування навколо `sessions_list`,
`sessions_history`, `/subagents list` або команд `exec` зі сном.
`sessions_list` і `/subagents list` утримують зв’язки дочірніх сеансів
зосередженими на живій роботі — живі дочірні сеанси залишаються прикріпленими, завершені дочірні сеанси
залишаються видимими протягом короткого недавнього вікна, а застарілі посилання лише зі сховища
ігноруються після завершення їхнього вікна свіжості. Це запобігає тому, щоб старі метадані `spawnedBy` /
`parentSessionKey` воскресали примарні дочірні сеанси після
перезапуску. Якщо подія завершення дочірнього сеансу надходить після того, як ви вже надіслали
фінальну відповідь, правильне подальше повідомлення — точний мовчазний токен
**Операційні рекомендації:** запускайте дочірню роботу один раз і чекайте подій
завершення, а не будуйте цикли опитування навколо `sessions_list`,
`sessions_history`, `/subagents list` або команд `exec` sleep.
`sessions_list` і `/subagents list` утримують зв’язки дочірніх сесій
сфокусованими на живій роботі — активні дочірні елементи залишаються приєднаними, завершені дочірні елементи залишаються
видимими протягом короткого останнього вікна, а застарілі посилання лише зі сховища на дочірні елементи
ігноруються після завершення їхнього вікна актуальності. Це запобігає відновленню старих метаданих `spawnedBy` /
`parentSessionKey` як фантомних дочірніх елементів після
перезапуску. Якщо подія завершення дочірнього елемента надходить після того, як ви вже надіслали
остаточну відповідь, правильна подальша відповідь — точний мовчазний токен
`NO_REPLY` / `no_reply`.
</Note>
### Політика інструментів за глибиною
- Роль і область керування записуються в метадані сеансу під час створення. Це не дає плоским або відновленим ключам сеансів випадково знову отримати привілеї оркестратора.
- **Глибина 1 (оркестратор, коли `maxSpawnDepth >= 2`):** отримує `sessions_spawn`, `subagents`, `sessions_list`, `sessions_history`, щоб керувати своїми дочірніми сеансами. Інші інструменти сеансу/системи залишаються забороненими.
- **Глибина 1 (лист, коли `maxSpawnDepth == 1`):** без інструментів сеансу (поточна типова поведінка).
- **Глибина 2 (листовий робітник):** без інструментів сеансу`sessions_spawn` завжди заборонено на глибині 2. Не може створювати подальших дочірніх сеансів.
- Роль і область керування записуються в метадані сесії під час створення. Це не дає плоским або відновленим ключам сесій випадково знову отримати привілеї оркестратора.
- **Глибина 1 (оркестратор, коли `maxSpawnDepth >= 2`):** отримує `sessions_spawn`, `subagents`, `sessions_list`, `sessions_history`, щоб керувати своїми дочірніми елементами. Інші інструменти сесії/системи залишаються забороненими.
- **Глибина 1 (кінцевий елемент, коли `maxSpawnDepth == 1`):** без інструментів сесії (поточна поведінка за замовчуванням).
- **Глибина 2 (кінцевий виконавець):** без інструментів сесії`sessions_spawn` завжди заборонено на глибині 2. Не може створювати подальших дочірніх елементів.
### Ліміт створення для окремого агента
Кожен сеанс агента (на будь-якій глибині) може мати не більше `maxChildrenPerAgent`
(за замовчуванням `5`) активних дочірніх сеансів одночасно. Це запобігає неконтрольованому розгортанню
Кожна сесія агента (на будь-якій глибині) може мати щонайбільше `maxChildrenPerAgent`
(за замовчуванням `5`) активних дочірніх елементів одночасно. Це запобігає неконтрольованому розгалуженню
від одного оркестратора.
### Каскадна зупинка
Зупинка оркестратора глибини 1 автоматично зупиняє всі його дочірні сеанси глибини 2:
Зупинка оркестратора глибини 1 автоматично зупиняє всі його дочірні елементи глибини 2:
- `/stop` в основному чаті зупиняє всіх агентів глибини 1 і каскадно зупиняє їхні дочірні сеанси глибини 2.
- `/subagents kill <id>` зупиняє конкретного під-агента і каскадно зупиняє його дочірні сеанси.
- `/subagents kill all` зупиняє всіх під-агентів для запитувача і виконує каскадну зупинку.
- `/stop` у головному чаті зупиняє всіх агентів глибини 1 і каскадно зупиняє їхні дочірні елементи глибини 2.
- `/subagents kill <id>` зупиняє конкретного субагента та каскадно зупиняє його дочірні елементи.
- `/subagents kill all` зупиняє всіх субагентів для запитувача та виконує каскадну зупинку.
## Автентифікація
Автентифікація під-агента визначається за **ідентифікатором агента**, а не за типом сеансу:
Автентифікація субагента визначається за **ідентифікатором агента**, а не за типом сесії:
- Ключ сеансу під-агента: `agent:<agentId>:subagent:<uuid>`.
- Ключ сесії субагента має вигляд `agent:<agentId>:subagent:<uuid>`.
- Сховище автентифікації завантажується з `agentDir` цього агента.
- Профілі автентифікації основного агента об’єднуються як **резервний варіант**; профілі агента перевизначають основні профілі у разі конфліктів.
- Профілі автентифікації головного агента об’єднуються як **резервні**; профілі агента перевизначають головні профілі в разі конфліктів.
Об’єднання є додавальним, тому основні профілі завжди доступні як
резервні. Повністю ізольована автентифікація для кожного агента ще не підтримується.
Об’єднання є додатковим, тому головні профілі завжди доступні як
резервні. Повністю ізольована автентифікація для кожного агента поки не підтримується.
## Оголошення
Під-агенти звітують назад через крок оголошення:
Субагенти звітують назад через крок оголошення:
- Крок оголошення виконується всередині сеансу під-агента (не сеансу запитувача).
- Якщо під-агент відповідає точно `ANNOUNCE_SKIP`, нічого не публікується.
- Крок оголошення виконується всередині сесії субагента (не сесії запитувача).
- Якщо субагент відповідає точно `ANNOUNCE_SKIP`, нічого не публікується.
- Якщо останній текст асистента є точним мовчазним токеном `NO_REPLY` / `no_reply`, вивід оголошення пригнічується, навіть якщо раніше був видимий прогрес.
Доставка залежить від глибини запитувача:
- Сеанси запитувача верхнього рівня використовують подальший виклик `agent` із зовнішньою доставкою (`deliver=true`).
- Вкладені сеанси під-агента-запитувача отримують внутрішнє подальше вставлення (`deliver=false`), щоб оркестратор міг синтезувати результати дочірніх сеансів у межах сеансу.
- Якщо вкладений сеанс під-агента-запитувача зник, OpenClaw повертається до запитувача цього сеансу, коли він доступний.
- Сесії запитувача верхнього рівня використовують подальший виклик `agent` із зовнішньою доставкою (`deliver=true`).
- Вкладені сесії субагентів-запитувачів отримують внутрішнє впровадження подальшого повідомлення (`deliver=false`), щоб оркестратор міг синтезувати дочірні результати в межах сесії.
- Якщо вкладена сесія субагента-запитувача зникла, OpenClaw повертається до запитувача цієї сесії, коли він доступний.
Для сеансів запитувача верхнього рівня пряма доставка в режимі завершення спочатку
розв’язує будь-який маршрут прив’язаної розмови/потоку та перевизначення hook, а потім заповнює
відсутні поля цілі каналу зі збереженого маршруту сеансу запитувача.
Це утримує завершення у правильному чаті/темі, навіть коли джерело завершення
Для сесій запитувача верхнього рівня пряма доставка в режимі завершення спочатку
визначає будь-який прив’язаний маршрут розмови/треду та перевизначення hook, а потім заповнює
відсутні поля цілі каналу зі збереженого маршруту сесії запитувача.
Це утримує завершення в правильному чаті/темі, навіть коли джерело завершення
ідентифікує лише канал.
Агрегація завершення дочірніх сеансів обмежена поточним запуском запитувача під час
побудови вкладених результатів завершення, запобігаючи просочуванню виводів дочірніх сеансів
із попередніх застарілих запусків у поточне оголошення. Відповіді оголошення зберігають
маршрутизацію потоку/теми, коли вона доступна в адаптерах каналів.
Агрегація завершень дочірніх елементів обмежується поточним запуском запитувача під час
побудови вкладених знахідок завершення, запобігаючи потраплянню застарілих вихідних даних дочірніх елементів із попередніх запусків
у поточне оголошення. Відповіді оголошень зберігають
маршрутизацію треду/теми, коли вона доступна в адаптерах каналів.
### Контекст оголошення
Контекст оголошення нормалізується до стабільного внутрішнього блока події:
Контекст оголошення нормалізується до стабільного внутрішнього блоку події:
| Поле | Джерело |
| Поле | Джерело |
| -------------- | ------------------------------------------------------------------------------------------------------------- |
| Джерело | `subagent` або `cron` |
| Ідентифікатори сеансу | Ключ/ідентифікатор дочірнього сеансу |
| Тип | Тип оголошення + мітка завдання |
| Стан | Виведено з результату середовища виконання (`success`, `error`, `timeout` або `unknown`) — **не** виводиться з тексту моделі |
| Вміст результату | Останній видимий текст асистента, інакше очищений останній текст інструмента/toolResult |
| Подальша дія | Інструкція, що описує, коли відповідати, а коли залишатися мовчазним |
| Джерело | `subagent` або `cron` |
| Ідентифікатори сесій | Ключ/ідентифікатор дочірньої сесії |
| Тип | Тип оголошення + мітка завдання |
| Статус | Виведено з результату виконання (`success`, `error`, `timeout` або `unknown`) — **не** виводиться з тексту моделі |
| Вміст результату | Останній видимий текст асистента, інакше очищений останній текст tool/toolResult |
| Подальша дія | Інструкція, що описує, коли відповідати, а коли мовчати |
Термінальні невдалі запуски повідомляють стан помилки без повторного відтворення захопленого
тексту відповіді. У разі тайм-ауту, якщо дочірній сеанс встиг лише виконати виклики інструментів, оголошення
Кінцеві невдалі запуски повідомляють статус помилки без повторного відтворення захопленого
тексту відповіді. У разі тайм-ауту, якщо дочірній елемент дійшов лише до викликів інструментів, оголошення
може згорнути цю історію в короткий підсумок часткового прогресу замість
відтворення сирого виводу інструментів.
повторного відтворення сирого виводу інструментів.
### Рядок статистики
Корисні навантаження оголошень містять рядок статистики в кінці (навіть коли загорнуті):
Payload оголошення містить рядок статистики наприкінці (навіть коли обгорнутий):
- Час виконання (наприклад, `runtime 5m12s`).
- Використання токенів (вхідні/вихідні/усього).
- Орієнтовна вартість, коли налаштовано ціни моделей (`models.providers.*.models[].cost`).
- `sessionKey`, `sessionId` і шлях транскрипту, щоб основний агент міг отримати історію через `sessions_history` або переглянути файл на диску.
- Використання токенів (вхідні/вихідні/загалом).
- Орієнтовна вартість, коли налаштовано ціни моделі (`models.providers.*.models[].cost`).
- `sessionKey`, `sessionId` і шлях транскрипта, щоб головний агент міг отримати історію через `sessions_history` або переглянути файл на диску.
Внутрішні метадані призначені лише для оркестрації; відповіді для користувача
Внутрішні метадані призначені лише для оркестрації; відповіді для користувачів
слід переписувати звичайним голосом асистента.
### Чому варто надавати перевагу `sessions_history`
### Чому варто віддавати перевагу `sessions_history`
`sessions_history` — безпечніший шлях оркестрації:
`sessions_history` є безпечнішим шляхом оркестрації:
- Спогади асистента спочатку нормалізуються: теги мислення видаляються; каркас `<relevant-memories>` / `<relevant_memories>` видаляється; XML-блоки корисного навантаження викликів інструментів у plain-text (`<tool_call>`, `<function_call>`, `<tool_calls>`, `<function_calls>`) видаляються, включно з обрізаними корисними навантаженнями, які ніколи коректно не закриваються; знижений каркас викликів/результатів інструментів і маркери історичного контексту видаляються; витеклі керівні токени моделі (`<|assistant|>`, інші ASCII `<|...|>`, повноширинні `<...>`) видаляються; некоректний XML викликів інструментів MiniMax видаляється.
- Спершу нормалізується згадування асистента: теги мислення видаляються; каркас `<relevant-memories>` / `<relevant_memories>` видаляється; простотекстові XML-блоки payload викликів інструментів (`<tool_call>`, `<function_call>`, `<tool_calls>`, `<function_calls>`) видаляються, включно з обрізаними payload, які ніколи коректно не закриваються; понижений каркас виклику/результату інструмента та маркери історичного контексту видаляються; витеклі токени керування моделі (`<|assistant|>`, інші ASCII `<|...|>`, повноширинні `<...>`) видаляються; некоректний XML викликів інструментів MiniMax видаляється.
- Текст, схожий на облікові дані/токени, редагується.
- Довгі блоки можуть обрізатися.
- Дуже великі історії можуть відкидати старіші рядки або замінювати надмірно великий рядок на `[sessions_history omitted: message too large]`.
- Перегляд сирого транскрипту на диску є резервним варіантом, коли потрібен повний побайтово точний транскрипт.
- Перегляд сирого транскрипта на диску є резервним варіантом, коли потрібен повний побайтово точний транскрипт.
## Політика інструментів
Під-агенти спочатку використовують той самий профіль і конвеєр політики інструментів, що й батьківський
або цільовий агент. Після цього OpenClaw застосовує шар обмежень
під-агента.
Субагенти спершу використовують той самий профіль і конвеєр політик інструментів, що й батьківський або
цільовий агент. Після цього OpenClaw застосовує шар обмежень
для субагентів.
Без обмежувального `tools.profile` під-агенти отримують **усі інструменти, крім
інструментів сеансу** та системних інструментів:
Без обмежувального `tools.profile` субагенти отримують **усі інструменти, крім
інструментів сесії** та системних інструментів:
- `sessions_list`
- `sessions_history`
- `sessions_send`
- `sessions_spawn`
`sessions_history` тут також залишається обмеженим, очищеним поданням пригадування — це
не сирий дамп транскрипту.
`sessions_history` і тут залишається обмеженим, очищеним поданням пригадування —
це не необроблений дамп транскрипту.
Коли `maxSpawnDepth >= 2`, під-агенти-оркестратори глибини 1 додатково
Коли `maxSpawnDepth >= 2`, субагенти-оркестратори глибини 1 додатково
отримують `sessions_spawn`, `subagents`, `sessions_list` і
`sessions_history`, щоб керувати своїми дочірніми сеансами.
`sessions_history`, щоб вони могли керувати своїми дочірніми агентами.
### Перевизначення через конфігурацію
@ -475,11 +484,11 @@ Sub-agents — це фонові запуски агентів, породжен
}
```
`tools.subagents.tools.allow` — це фінальний фільтр лише для дозволеного. Він може звузити
вже визначений набір інструментів, але не може **повернути** інструмент, вилучений
`tools.subagents.tools.allow` є остаточним фільтром лише дозволених інструментів. Він може звузити
вже визначений набір інструментів, але не може **додати назад** інструмент, вилучений
через `tools.profile`. Наприклад, `tools.profile: "coding"` включає
`web_search`/`web_fetch`, але не інструмент `browser`. Щоб дозволити
субагентам із coding-профілем використовувати автоматизацію браузера, додайте browser на
субагентам із профілем coding використовувати автоматизацію браузера, додайте browser на
етапі профілю:
```json5
@ -494,62 +503,62 @@ Sub-agents — це фонові запуски агентів, породжен
Використовуйте `agents.list[].tools.alsoAllow: ["browser"]` для окремого агента, коли лише один
агент має отримати автоматизацію браузера.
## Паралельність
## Конкурентність
Субагенти використовують окрему внутрішньопроцесну чергу:
Субагенти використовують виділену чергу в межах процесу:
- **Назва черги:** `subagent`
- **Паралельність:** `agents.defaults.subagents.maxConcurrent` (за замовчуванням `8`)
- **Назва лінії:** `subagent`
- **Конкурентність:** `agents.defaults.subagents.maxConcurrent` (типово `8`)
## Живучість і відновлення
## Активність і відновлення
OpenClaw не вважає відсутність `endedAt` постійним доказом того, що
субагент досі активний. Незавершені запуски, старші за вікно застарілого запуску,
перестають враховуватися як активні/очікувані в `/subagents list`, зведеннях статусу,
блокуванні завершення нащадків і перевірках паралельності для сесії.
субагент досі активний. Незавершені запуски, старші за вікно застарілих запусків,
перестають рахуватися як активні/очікувані в `/subagents list`, зведеннях стану,
блокуванні завершення нащадків і перевірках конкурентності для кожної сесії.
Після перезапуску Gateway застарілі незавершені відновлені запуски видаляються, якщо
Після перезапуску gateway застарілі незавершені відновлені запуски вилучаються, якщо
їхня дочірня сесія не позначена як `abortedLastRun: true`. Такі
дочірні сесії, перервані перезапуском, лишаються придатними до відновлення через потік
відновлення осиротілих субагентів, який надсилає синтетичне повідомлення відновлення перед
перервані під час перезапуску дочірні сесії залишаються відновлюваними через потік
відновлення осиротілих субагентів, який надсилає синтетичне повідомлення для відновлення перед
очищенням маркера переривання.
Автоматичне відновлення після перезапуску обмежене для кожної дочірньої сесії. Якщо той самий
дочірній субагент неодноразово приймається для відновлення осиротілої сесії в межах
швидкого вікна повторного зависання, OpenClaw зберігає tombstone відновлення для цієї
сесії та припиняє автоматично відновлювати її під час наступних перезапусків. Виконайте
дочірній субагент неодноразово приймається для відновлення сироти в межах
вікна швидкого повторного зависання, OpenClaw зберігає recovery tombstone у цій
сесії та припиняє автоматично відновлювати її під час подальших перезапусків. Запустіть
`openclaw tasks maintenance --apply`, щоб узгодити запис завдання, або
`openclaw doctor --fix`, щоб очистити застарілі прапорці перерваного відновлення в
сесіях із tombstone.
tombstoned-сесіях.
<Note>
Якщо створення субагента завершується помилкою Gateway `PAIRING_REQUIRED` /
`scope-upgrade`, перевірте викликача RPC перед редагуванням стану сполучення.
`scope-upgrade`, перевірте викликача RPC, перш ніж змінювати стан спарювання.
Внутрішня координація `sessions_spawn` має підключатися як
`client.id: "gateway-client"` із `client.mode: "backend"` через пряму
автентифікацію спільним токеном/паролем через loopback; цей шлях не залежить від
базового рівня області дії сполученого пристрою CLI. Віддаленим викликачам, явним
`deviceIdentity`, явним шляхам device-token і клієнтам browser/node
усе ще потрібне звичайне схвалення пристрою для підвищення області дії.
`client.id: "gateway-client"` з `client.mode: "backend"` через прямий
loopback із автентифікацією спільним токеном/паролем; цей шлях не залежить від
базової області спареного пристрою CLI. Віддалені викликачі, явні
`deviceIdentity`, явні шляхи device-token і клієнти browser/node
все ще потребують звичайного схвалення пристрою для підвищення scope.
</Note>
## Зупинка
- Надсилання `/stop` у чаті запитувача перериває сесію запитувача та зупиняє всі активні запуски субагентів, створені з неї, каскадно поширюючись на вкладених нащадків.
- `/subagents kill <id>` зупиняє конкретного субагента та каскадно поширюється на його нащадків.
- Надсилання `/stop` у чаті запитувача перериває сесію запитувача й зупиняє всі активні запуски субагентів, створені з неї, каскадно поширюючись на вкладених дочірніх агентів.
- `/subagents kill <id>` зупиняє конкретного субагента й каскадно поширюється на його дочірніх агентів.
## Обмеження
- Оголошення субагента виконується **за найкращих зусиль**. Якщо gateway перезапускається, очікувана робота "announce back" втрачається.
- Оголошення субагента виконується **за принципом найкращої спроби**. Якщо gateway перезапускається, відкладена робота "announce back" втрачається.
- Субагенти все ще спільно використовують ресурси того самого процесу gateway; розглядайте `maxConcurrent` як запобіжний клапан.
- `sessions_spawn` завжди неблокувальний: він негайно повертає `{ status: "accepted", runId, childSessionKey }`.
- Контекст субагента вставляє лише `AGENTS.md` + `TOOLS.md` (без `SOUL.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md` або `BOOTSTRAP.md`).
- Максимальна глибина вкладення становить 5 (діапазон `maxSpawnDepth`: 15). Для більшості випадків використання рекомендовано глибину 2.
- `maxChildrenPerAgent` обмежує кількість активних дочірніх елементів на сесію (за замовчуванням `5`, діапазон `120`).
- Контекст субагента додає лише `AGENTS.md` + `TOOLS.md` (без `SOUL.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md` або `BOOTSTRAP.md`).
- Максимальна глибина вкладення становить 5 (діапазон `maxSpawnDepth`: 15). Глибину 2 рекомендовано для більшості випадків використання.
- `maxChildrenPerAgent` обмежує кількість активних дочірніх агентів на сесію (типово `5`, діапазон `120`).
## Пов’язане
- [Агенти ACP](/uk/tools/acp-agents)
- [агенти ACP](/uk/tools/acp-agents)
- [Надсилання агенту](/uk/tools/agent-send)
- [Фонові завдання](/uk/automation/tasks)
- [Інструменти пісочниці для кількох агентів](/uk/tools/multi-agent-sandbox-tools)