From 83910253b1ed1d03d10bc613dc04979a78f0147a Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Mon, 4 May 2026 05:39:08 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/tools/subagents.md | 445 +++++++++++++++++++------------------ 1 file changed, 227 insertions(+), 218 deletions(-) diff --git a/docs/uk/tools/subagents.md b/docs/uk/tools/subagents.md index d9037069c..b05e6c8fd 100644 --- a/docs/uk/tools/subagents.md +++ b/docs/uk/tools/subagents.md @@ -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::subagent:`) і, -після завершення, **оголошують** свій результат назад у канал чату -запитувача. Кожен запуск sub-agent відстежується як +Субагенти — це фонові запуски агентів, породжені з наявного запуску агента. +Вони працюють у власній сесії (`agent::subagent:`) і, +після завершення, **повідомляють** свій результат назад у чат-канал +запитувача. Кожен запуск субагента відстежується як [фонове завдання](/uk/automation/tasks). Основні цілі: -- Паралелізувати роботу з "дослідження / довге завдання / повільний інструмент", не блокуючи основний запуск. -- Ізолювати sub-agents за замовчуванням (розділення сеансів + необов’язкова пісочниця). -- Зробити поверхню інструментів складною для неправильного використання: sub-agents за замовчуванням **не** отримують інструменти сеансу. -- Підтримувати налаштовувану глибину вкладеності для патернів оркестратора. +- Паралелити роботу типу "дослідження / довге завдання / повільний інструмент", не блокуючи основний запуск. +- Тримати субагентів ізольованими за замовчуванням (розділення сесій + необов’язкова пісочниця). +- Зробити поверхню інструментів складною для неправильного використання: субагенти **не** отримують сесійні інструменти за замовчуванням. +- Підтримувати налаштовувану глибину вкладеності для шаблонів оркестратора. -**Примітка щодо вартості:** кожен sub-agent за замовчуванням має власний контекст і використання токенів. Для важких або повторюваних завдань задайте дешевшу модель для sub-agents і залиште основного агента на якіснішій моделі. Налаштовуйте через `agents.defaults.subagents.model` або перевизначення для окремого агента. Коли дочірньому агенту справді потрібен поточний транскрипт запитувача, агент може запросити `context: "fork"` для цього одного породження. Сеанси subagent, прив’язані до треду, за замовчуванням використовують `context: "fork"`, бо вони відгалужують поточну розмову в подальший тред. +**Примітка щодо вартості:** кожен субагент за замовчуванням має власний +контекст і використання токенів. Для важких або повторюваних завдань задайте +дешевшу модель для субагентів, а основного агента залиште на моделі вищої +якості. Налаштовуйте через `agents.defaults.subagents.model` або перевизначення +для окремого агента. Коли дочірньому агенту справді потрібен поточний транскрипт +запитувача, агент може запросити `context: "fork"` для цього одного породження. +Сесії субагентів, прив’язані до треду, за замовчуванням використовують +`context: "fork"`, бо вони відгалужують поточну розмову в подальший тред. ## Slash-команда -Використовуйте `/subagents`, щоб переглядати або керувати запусками sub-agent для **поточного -сеансу**: +Використовуйте `/subagents`, щоб переглядати або керувати запусками субагентів для **поточної +сесії**: ```text /subagents list @@ -47,15 +54,16 @@ Sub-agents — це фонові запуски агентів, породжен /subagents spawn [--model ] [--thinking ] ``` -Використовуйте верхньорівневу [`/steer `](/uk/tools/steer), щоб спрямувати активний запуск поточного сеансу запитувача. Використовуйте `/subagents steer `, коли ціллю є дочірній запуск. +Використовуйте верхньорівневу [`/steer `](/uk/tools/steer), щоб скеровувати активний запуск поточної сесії запитувача. Використовуйте `/subagents steer `, коли ціль — дочірній запуск. -`/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` запускає фонового субагента як користувацьку команду (а не +внутрішню ретрансляцію) і надсилає одне фінальне оновлення про завершення назад у чат запитувача, коли запуск завершується. - Команда породження не блокує виконання; вона одразу повертає 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 закриває відстежувані вкладки браузера/процеси, відкриті цією сесією субагента, перш ніж продовжиться потік очищення оголошення. - OpenClaw спочатку пробує пряму доставку `agent` зі стабільним ключем ідемпотентності. - - Якщо пряма доставка не вдається, він переходить до маршрутизації через чергу. - - Якщо маршрутизація через чергу все ще недоступна, оголошення повторюється з коротким експоненційним backoff перед остаточною відмовою. - - Доставка завершення зберігає розв’язаний маршрут запитувача: маршрути завершення, прив’язані до треду або розмови, мають пріоритет, коли доступні; якщо джерело завершення надає лише канал, OpenClaw заповнює відсутню ціль/обліковий запис із розв’язаного маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все одно працювала. + - Якщо крок завершення агента-запитувача завершується помилкою, не створює видимого виводу або повертає явно неповний префікс захопленого результату дочірнього агента, OpenClaw повертається до прямої доставки завершення із захопленого результату дочірнього агента. + - Якщо пряму доставку використати неможливо, застосовується резервна маршрутизація через чергу. + - Якщо маршрутизація через чергу все ще недоступна, оголошення повторюється з коротким експоненційним відступом перед остаточною відмовою. + - Доставка завершення зберігає визначений маршрут запитувача: маршрути завершення, прив’язані до треду або розмови, мають пріоритет, коли доступні; якщо джерело завершення надає лише канал, OpenClaw заповнює відсутню ціль/обліковий запис із визначеного маршруту сесії запитувача (`lastChannel` / `lastTo` / `lastAccountId`), щоб пряма доставка все одно працювала. - Передавання завершення до сеансу запитувача — це згенерований під час виконання - внутрішній контекст (не текст, створений користувачем), який містить: + Передавання завершення до сесії запитувача — це згенерований під час виконання + внутрішній контекст (не текст, написаний користувачем), що містить: - - `Result` — найновіший видимий текст відповіді `assistant`, інакше очищений найновіший текст tool/toolResult. Термінально невдалі запуски не повторно використовують захоплений текст відповіді. + - `Result` — найновіший видимий текст відповіді `assistant`, інакше санітизований найновіший текст tool/toolResult. Термінально невдалі запуски не використовують повторно захоплений текст відповіді. - `Status` — `completed successfully` / `failed` / `timed out` / `unknown`. - Компактну статистику виконання/токенів. - Інструкцію доставки, яка каже агенту-запитувачу переписати відповідь звичайним голосом асистента (а не пересилати сирі внутрішні метадані). - - `--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`. ## Режими контексту -Нативні 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` (без тайм-ауту). ### Параметри інструмента - Опис завдання для sub-agent. + Опис завдання для субагента. Необов’язкова людиночитна мітка. @@ -152,37 +161,37 @@ Sub-agents — це фонові запуски агентів, породжен Породжувати під іншим id агента, коли це дозволено `subagents.allowAgents`. - `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`. - Лише ACP. Відновлює наявний сеанс ACP harness, коли `runtime: "acp"`; ігнорується для нативних породжень sub-agent. + Лише ACP. Відновлює наявну сесію ACP harness, коли `runtime: "acp"`; ігнорується для нативних породжень субагентів. - Лише ACP. Транслює вивід запуску ACP до батьківського сеансу, коли `runtime: "acp"`; пропускайте для нативних породжень sub-agent. + Лише ACP. Транслює вивід запуску ACP у батьківську сесію, коли `runtime: "acp"`; пропустіть для нативних породжень субагентів. - Перевизначає модель sub-agent. Некоректні значення пропускаються, а sub-agent запускається на стандартній моделі з попередженням у результаті інструмента. + Перевизначає модель субагента. Некоректні значення пропускаються, і субагент запускається на моделі за замовчуванням із попередженням у результаті інструмента. - Перевизначає рівень thinking для запуску sub-agent. + Перевизначає рівень thinking для запуску субагента. - За замовчуванням дорівнює `agents.defaults.subagents.runTimeoutSeconds`, коли задано, інакше `0`. Коли задано, запуск sub-agent переривається після N секунд. + За замовчуванням використовує `agents.defaults.subagents.runTimeoutSeconds`, коли задано, інакше `0`. Коли задано, запуск субагента переривається після N секунд. - Коли `true`, запитує прив’язку треду каналу для цього сеансу sub-agent. + Коли `true`, запитує прив’язку сесії цього субагента до треду каналу. - Якщо `thread: true` і `mode` пропущено, стандартним стає `session`. `mode: "session"` потребує `thread: true`. + Якщо `thread: true` і `mode` пропущено, стандартним значенням стає `session`. `mode: "session"` потребує `thread: true`. `"delete"` архівує одразу після оголошення (транскрипт усе одно зберігається через перейменування). - `require` відхиляє породження, якщо цільова дочірня runtime не перебуває в пісочниці. + `require` відхиляє породження, якщо цільове дочірнє середовище виконання не перебуває в пісочниці. - `fork` відгалужує поточний транскрипт запитувача в дочірній сеанс. Лише нативні sub-agents. Породження, прив’язані до треду, за замовчуванням використовують `fork`; породження без треду — `isolated`. + `fork` відгалужує поточний транскрипт запитувача в дочірню сесію. Лише нативні субагенти. Породження, прив’язані до треду, за замовчуванням використовують `fork`; породження без треду за замовчуванням використовують `isolated`. @@ -191,17 +200,17 @@ Sub-agents — це фонові запуски агентів, породжен `message`/`sessions_send` із породженого запуску. -## Сеанси, прив’язані до треду +## Сесії, прив’язані до треду -Коли для каналу ввімкнено прив’язки до тредів, 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 — це фонові запуски агентів, породжен ### Швидкий потік - - `sessions_spawn` з `thread: true` (і необов’язково `mode: "session"`). + + `sessions_spawn` з `thread: true` (і, за бажанням, `mode: "session"`). - - OpenClaw створює або прив’язує тред до цільового сеансу в активному каналі. + + OpenClaw створює або прив’язує тред до цієї цільової сесії в активному каналі. - - Відповіді та подальші повідомлення в цьому треді маршрутизуються до прив’язаного сеансу. + + Відповіді та подальші повідомлення в цьому треді спрямовуються до прив’язаної сесії. - - Використовуйте `/session idle`, щоб переглянути/оновити автоматичне скасування фокуса через неактивність, і - `/session max-age`, щоб керувати жорстким лімітом. + + Використовуйте `/session idle`, щоб переглянути/оновити автоматичне зняття фокуса після неактивності, і + `/session max-age`, щоб керувати жорстким обмеженням. - + Використовуйте `/unfocus`, щоб від’єднати вручну. ### Ручне керування -| Команда | Дія | +| Команда | Ефект | | ------------------ | --------------------------------------------------------------------- | -| `/focus ` | Прив’язати поточний потік (або створити його) до цілі під-агента/сеансу | -| `/unfocus` | Видалити прив’язку для поточного прив’язаного потоку | -| `/agents` | Перелічити активні запуски та стан прив’язки (`thread:` або `unbound`) | -| `/session idle` | Переглянути/оновити автоматичне зняття фокуса через бездіяльність (лише сфокусовані прив’язані потоки) | -| `/session max-age` | Переглянути/оновити жорстке обмеження часу (лише сфокусовані прив’язані потоки) | +| `/focus ` | Прив’язати поточний тред (або створити його) до цільового субагента/сесії | +| `/unfocus` | Видалити прив’язку для поточного прив’язаного треду | +| `/agents` | Показати активні запуски та стан прив’язки (`thread:` або `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), щоб дізнатися поточні відомості про адаптери. ### Список дозволених - Список ідентифікаторів агентів, на які можна націлюватися через явний `agentId` (`["*"]` дозволяє будь-який). За замовчуванням: лише агент-запитувач. Якщо ви задаєте список і все одно хочете, щоб запитувач міг створювати самого себе з `agentId`, додайте ідентифікатор запитувача до списку. + Список ідентифікаторів агентів, на які можна націлюватися через явний `agentId` (`["*"]` дозволяє будь-який). За замовчуванням: лише агент-запитувач. Якщо ви задаєте список і все одно хочете, щоб запитувач міг створювати себе через `agentId`, додайте ідентифікатор запитувача до списку. - Типовий список дозволених цільових агентів, який використовується, коли агент-запитувач не задає власний `subagents.allowAgents`. + Стандартний список дозволених цільових агентів, який використовується, коли агент-запитувач не задає власний `subagents.allowAgents`. - Блокувати виклики `sessions_spawn`, які пропускають `agentId` (примушує явно вибирати профіль). Перевизначення для окремого агента: `agents.list[].subagents.requireAgentId`. + Блокувати виклики `sessions_spawn`, які не вказують `agentId` (примушує до явного вибору профілю). Перевизначення для окремого агента: `agents.list[].subagents.requireAgentId`. -Якщо сеанс запитувача працює в пісочниці, `sessions_spawn` відхиляє цілі, -які запускалися б без пісочниці. +Якщо сесія запитувача ізольована в sandbox, `sessions_spawn` відхиляє цілі, +які запускалися б без sandbox. ### Виявлення Використовуйте `agents_list`, щоб побачити, які ідентифікатори агентів наразі дозволені для -`sessions_spawn`. Відповідь містить ефективну модель кожного переліченого агента -та вбудовані метадані середовища виконання, щоб виклики могли відрізняти PI, сервер застосунку Codex +`sessions_spawn`. Відповідь містить ефективну +модель кожного переліченого агента та вбудовані метадані середовища виконання, щоб виклики могли відрізняти PI, сервер застосунку Codex та інші налаштовані нативні середовища виконання. -### Автоархівація +### Автоматичне архівування -- Сеанси під-агентів автоматично архівуються після `agents.defaults.subagents.archiveAfterMinutes` (за замовчуванням `60`). -- Архівація використовує `sessions.delete` і перейменовує транскрипт на `*.deleted.` (у тій самій папці). +- Сесії субагентів автоматично архівуються після `agents.defaults.subagents.archiveAfterMinutes` (за замовчуванням `60`). +- Архівування використовує `sessions.delete` і перейменовує транскрипт на `*.deleted.` (у тій самій папці). - `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::main` | Основний агент | Завжди | -| 1 | `agent::subagent:` | Під-агент (оркестратор, коли дозволена глибина 2) | Лише якщо `maxSpawnDepth >= 2` | -| 2 | `agent::subagent::subagent:` | Під-під-агент (листовий робітник) | Ніколи | +| 0 | `agent::main` | Головний агент | Завжди | +| 1 | `agent::subagent:` | Субагент (оркестратор, коли дозволена глибина 2) | Лише якщо `maxSpawnDepth >= 2` | +| 2 | `agent::subagent::subagent:` | Субсубагент (кінцевий виконавець) | Ніколи | -### Ланцюг оголошень +### Ланцюжок оголошень -Результати передаються назад угору ланцюгом: +Результати передаються вгору ланцюжком: -1. Робітник глибини 2 завершується → оголошує своєму батьківському сеансу (оркестратору глибини 1). -2. Оркестратор глибини 1 отримує оголошення, синтезує результати, завершується → оголошує основному. -3. Основний агент отримує оголошення та доставляє його користувачу. +1. Виконавець глибини 2 завершує роботу → оголошує своєму батьківському елементу (оркестратору глибини 1). +2. Оркестратор глибини 1 отримує оголошення, синтезує результати, завершує роботу → оголошує головному агенту. +3. Головний агент отримує оголошення й доставляє його користувачу. -Кожен рівень бачить лише оголошення від своїх безпосередніх дочірніх сеансів. +Кожен рівень бачить лише оголошення від своїх безпосередніх дочірніх елементів. -**Операційні настанови:** запускайте дочірню роботу один раз і чекайте подій -завершення замість побудови циклів опитування навколо `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`. ### Політика інструментів за глибиною -- Роль і область керування записуються в метадані сеансу під час створення. Це не дає плоским або відновленим ключам сеансів випадково знову отримати привілеї оркестратора. -- **Глибина 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 ` зупиняє конкретного під-агента і каскадно зупиняє його дочірні сеанси. -- `/subagents kill all` зупиняє всіх під-агентів для запитувача і виконує каскадну зупинку. +- `/stop` у головному чаті зупиняє всіх агентів глибини 1 і каскадно зупиняє їхні дочірні елементи глибини 2. +- `/subagents kill ` зупиняє конкретного субагента та каскадно зупиняє його дочірні елементи. +- `/subagents kill all` зупиняє всіх субагентів для запитувача та виконує каскадну зупинку. ## Автентифікація -Автентифікація під-агента визначається за **ідентифікатором агента**, а не за типом сеансу: +Автентифікація субагента визначається за **ідентифікатором агента**, а не за типом сесії: -- Ключ сеансу під-агента: `agent::subagent:`. +- Ключ сесії субагента має вигляд `agent::subagent:`. - Сховище автентифікації завантажується з `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` є безпечнішим шляхом оркестрації: -- Спогади асистента спочатку нормалізуються: теги мислення видаляються; каркас `` / `` видаляється; XML-блоки корисного навантаження викликів інструментів у plain-text (``, ``, ``, ``) видаляються, включно з обрізаними корисними навантаженнями, які ніколи коректно не закриваються; знижений каркас викликів/результатів інструментів і маркери історичного контексту видаляються; витеклі керівні токени моделі (`<|assistant|>`, інші ASCII `<|...|>`, повноширинні `<|...|>`) видаляються; некоректний XML викликів інструментів MiniMax видаляється. +- Спершу нормалізується згадування асистента: теги мислення видаляються; каркас `` / `` видаляється; простотекстові XML-блоки payload викликів інструментів (``, ``, ``, ``) видаляються, включно з обрізаними 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-сесіях. Якщо створення субагента завершується помилкою 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. ## Зупинка -- Надсилання `/stop` у чаті запитувача перериває сесію запитувача та зупиняє всі активні запуски субагентів, створені з неї, каскадно поширюючись на вкладених нащадків. -- `/subagents kill ` зупиняє конкретного субагента та каскадно поширюється на його нащадків. +- Надсилання `/stop` у чаті запитувача перериває сесію запитувача й зупиняє всі активні запуски субагентів, створені з неї, каскадно поширюючись на вкладених дочірніх агентів. +- `/subagents kill ` зупиняє конкретного субагента й каскадно поширюється на його дочірніх агентів. ## Обмеження -- Оголошення субагента виконується **за найкращих зусиль**. Якщо 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`: 1–5). Для більшості випадків використання рекомендовано глибину 2. -- `maxChildrenPerAgent` обмежує кількість активних дочірніх елементів на сесію (за замовчуванням `5`, діапазон `1–20`). +- Контекст субагента додає лише `AGENTS.md` + `TOOLS.md` (без `SOUL.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md` або `BOOTSTRAP.md`). +- Максимальна глибина вкладення становить 5 (діапазон `maxSpawnDepth`: 1–5). Глибину 2 рекомендовано для більшості випадків використання. +- `maxChildrenPerAgent` обмежує кількість активних дочірніх агентів на сесію (типово `5`, діапазон `1–20`). ## Пов’язане -- [Агенти ACP](/uk/tools/acp-agents) +- [агенти ACP](/uk/tools/acp-agents) - [Надсилання агенту](/uk/tools/agent-send) - [Фонові завдання](/uk/automation/tasks) - [Інструменти пісочниці для кількох агентів](/uk/tools/multi-agent-sandbox-tools)