> ## Documentation Index
> Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Чернетки перебігу

Чернетки прогресу роблять тривалі ходи агента живими в чаті, не перетворюючи
розмову на стос тимчасових відповідей зі статусом.

Коли чернетки прогресу ввімкнено, OpenClaw створює одне видиме повідомлення
про роботу в процесі лише після того, як хід доводить, що виконує реальну роботу,
оновлює його, поки агент читає, планує, викликає інструменти або чекає на
схвалення, а потім перетворює цю чернетку на фінальну відповідь, коли канал може
зробити це безпечно.

```text theme={"theme":{"light":"min-light","dark":"min-dark"}}
Shelling...
📖 from docs/concepts/progress-drafts.md
🔎 Web Search: for "discord edit message"
🛠️ Bash: run tests
```

Використовуйте чернетки прогресу, коли потрібне одне охайне повідомлення зі
статусом під час інтенсивної роботи з інструментами та фінальна відповідь після
завершення ходу.

## Швидкий старт

Увімкніть чернетки прогресу для кожного каналу за допомогою `streaming.mode: "progress"`:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
      },
    },
  },
}
```

Зазвичай цього достатньо. OpenClaw вибере автоматичну мітку з одного слова,
зачекає, доки робота триватиме щонайменше п'ять секунд або згенерує другу подію
роботи, додаватиме компактні рядки прогресу, поки відбувається корисна робота, і
пригнічуватиме дубльовані окремі повідомлення про прогрес для цього ходу.

## Що бачать користувачі

Чернетка прогресу має дві частини:

| Частина        | Призначення                                                                                                 |
| -------------- | ----------------------------------------------------------------------------------------------------------- |
| Мітка          | Короткий початковий рядок або рядок статусу, як-от `Working` чи `Shelling`.                                 |
| Рядки прогресу | Компактні оновлення запуску з тими самими іконками інструментів і форматером деталей, що й докладний вивід. |

Мітка з'являється після того, як агент починає змістовну роботу й або лишається
зайнятим п'ять секунд, або генерує другу подію роботи. Вона є частиною рухомого
списку рядків прогресу, тому початковий статус прокручується вгору, коли
з'являється достатньо конкретної роботи. Відповіді лише звичайним текстом не
показують чернетку прогресу. Рядки прогресу додаються лише тоді, коли агент
генерує корисні оновлення роботи, наприклад `🛠️ Bash: run tests`,
`🔎 Web Search: for "discord edit message"` або `✍️ Write: to /tmp/file`.
За замовчуванням вони використовують той самий компактний режим пояснення, що й
`/verbose`; установіть `agents.defaults.toolProgressDetail: "raw"` під час
налагодження, якщо також хочете додавати сирі команди або деталі.
Фінальна відповідь замінює чернетку, коли це можливо; інакше OpenClaw надсилає
фінальну відповідь звичайним способом і очищає чернетку або припиняє її
оновлення відповідно до транспорту каналу.

## Вибір режиму

`channels.<channel>.streaming.mode` керує видимою поведінкою під час виконання:

| Режим      | Найкраще для                                                  | Що з'являється в чаті                                                 |
| ---------- | ------------------------------------------------------------- | --------------------------------------------------------------------- |
| `off`      | Тихі канали                                                   | Лише фінальна відповідь.                                              |
| `partial`  | Спостереження за появою тексту відповіді                      | Одна чернетка, редагована з найновішим текстом відповіді.             |
| `block`    | Більші фрагменти попереднього перегляду відповіді             | Один попередній перегляд, оновлений або доданий більшими фрагментами. |
| `progress` | Ходи з великою кількістю інструментів або тривалим виконанням | Одна чернетка статусу, потім фінальна відповідь.                      |

Виберіть `progress`, коли користувачам важливіше знати, "що відбувається", ніж
спостерігати за потоковою появою тексту відповіді токен за токеном.

Виберіть `partial`, коли сама відповідь є сигналом прогресу.

Виберіть `block`, коли потрібні оновлення попереднього перегляду чернетки
більшими текстовими фрагментами. У Discord і Telegram `streaming.mode: "block"`
і далі означає потоковий попередній перегляд, а не звичайну блокову доставку.
Використовуйте `streaming.block.enabled` або застарілий `blockStreaming`, коли
потрібні звичайні блокові відповіді.

## Налаштування міток

Мітки прогресу розташовані в `channels.<channel>.streaming.progress`.

Типова мітка — `auto`, яка вибирає з вбудованого в OpenClaw набору міток з одного
слова:

```text theme={"theme":{"light":"min-light","dark":"min-dark"}}
Working
Shelling
Scuttling
Clawing
Pinching
Molting
Bubbling
Tiding
Reefing
Cracking
Sifting
Brining
Nautiling
Krilling
Barnacling
Lobstering
Tidepooling
Pearling
Snapping
Surfacing
```

Використайте фіксовану мітку:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: "Investigating",
        },
      },
    },
  },
}
```

Використайте власний автоматичний набір міток:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: "auto",
          labels: ["Checking", "Reading", "Testing", "Finishing"],
        },
      },
    },
  },
}
```

Приховайте мітку й показуйте лише рядки прогресу:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          label: false,
        },
      },
    },
  },
}
```

## Керування рядками прогресу

Рядки прогресу ввімкнено за замовчуванням у режимі прогресу. Вони походять із
реальних подій запуску: стартів інструментів, оновлень елементів, планів
завдань, схвалень, виводу команд, підсумків патчів і подібної активності агента.

Інструменти також можуть генерувати типізований прогрес, поки один виклик
інструмента ще виконується. Саме так повільне отримання даних або пошук може
оновити видиму чернетку до того, як інструмент поверне свій фінальний результат.
Оновлення прогресу — це частковий результат інструмента з порожнім модельним
вмістом і явними метаданими публічного каналу:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  "content": [],
  "progress": {
    "text": "Fetching page content...",
    "visibility": "channel",
    "privacy": "public",
    "id": "web_fetch:fetching"
  }
}
```

OpenClaw відтворює в інтерфейсі прогресу каналу лише `progress.text`. Звичайний
результат інструмента все одно надходить пізніше як `content` і `details`, і
лише ця частина повертається моделі.

Додаючи прогрес до інструмента, використовуйте коротке, загальне повідомлення та
затримуйте його, доки операція не очікує достатньо довго, щоб це було корисно:

```typescript theme={"theme":{"light":"min-light","dark":"min-dark"}}
const clearProgressTimer = scheduleToolProgress(
  onUpdate,
  { text: "Fetching page content...", id: "web_fetch:fetching" },
  5_000,
  { signal },
);

try {
  return await runToolWork();
} finally {
  clearProgressTimer();
}
```

Цей шаблон означає, що швидкі виклики не показують рядок прогресу, тривалі
виклики показують його, поки вони ще очікують, а скасовані виклики очищають
таймер до появи застарілого прогресу. Текст прогресу є публічним побічним
каналом інтерфейсу, тому він не повинен містити секрети, сирі аргументи,
отриманий вміст, вивід команд або текст сторінки.

OpenClaw використовує той самий форматер для чернеток прогресу та `/verbose`:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  agents: {
    defaults: {
      toolProgressDetail: "explain", // explain | raw
    },
  },
}
```

`"explain"` є типовим значенням і зберігає чернетки стабільними з лаконічними
мітками, як-от `🛠️ check JS syntax for /tmp/app.js`. `"raw"` додає базову
команду або деталь, коли вона доступна, що корисно під час налагодження, але
створює більше шуму в чаті.

Наприклад, та сама команда виглядає по-різному залежно від режиму деталей:

| Режим     | Рядок прогресу                                                  |
| --------- | --------------------------------------------------------------- |
| `explain` | `🛠️ check JS syntax for /tmp/app.js`                           |
| `raw`     | `🛠️ check JS syntax for /tmp/app.js, node --check /tmp/app.js` |

Обмежте кількість рядків, що залишаються видимими:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          maxLines: 4,
        },
      },
    },
  },
}
```

Рядки прогресу автоматично ущільнюються, щоб зменшити перекомпонування бульбашки
чату під час редагування чернетки.

OpenClaw за замовчуванням обрізає довгі рядки прогресу, щоб повторні редагування
чернетки не переносилися по-різному під час кожного оновлення. Типовий бюджет на
рядок — 120 символів. Проза обрізається на межі слова, а довгі деталі, як-от
шляхи або сирі команди, скорочуються з багатокрапкою посередині, щоб суфікс
лишався видимим.

Налаштуйте бюджет на рядок:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          maxLineChars: 160,
        },
      },
    },
  },
}
```

Slack може відтворювати рядки прогресу як структуровані поля Block Kit замість
єдиного текстового тіла:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    slack: {
      streaming: {
        mode: "progress",
        progress: {
          render: "rich",
        },
      },
    },
  },
}
```

Розширене відтворення зберігає той самий резервний варіант звичайним текстом, щоб
канали й клієнти, які не підтримують багатшу форму, все одно могли показувати
компактний текст прогресу.

Збережіть одну чернетку прогресу, але приховайте рядки інструментів і завдань:

```json5 theme={"theme":{"light":"min-light","dark":"min-dark"}}
{
  channels: {
    discord: {
      streaming: {
        mode: "progress",
        progress: {
          toolProgress: false,
        },
      },
    },
  },
}
```

З `toolProgress: false` OpenClaw усе одно пригнічує старіші окремі повідомлення
про прогрес інструментів для цього ходу. Канал залишається візуально тихим до
фінальної відповіді, окрім мітки, якщо її налаштовано.

## Поведінка каналів

Кожен канал використовує найчистіший транспорт, який він підтримує:

| Канал           | Транспорт прогресу                                  | Примітки                                                                                                    |
| --------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Discord         | Надіслати одне повідомлення, потім редагувати його. | Фінальний текст редагується на місці, коли вміщується в одне безпечне повідомлення попереднього перегляду.  |
| Matrix          | Надіслати одну подію, потім редагувати її.          | Конфігурація потокового передавання на рівні облікового запису керує чернетками на рівні облікового запису. |
| Microsoft Teams | Нативний потік Teams в особистих чатах.             | `streaming.mode: "block"` зіставляється з блоковою доставкою Teams.                                         |
| Slack           | Нативний потік або редагований допис-чернетка.      | Доступність треду впливає на те, чи можна використовувати нативне потокове передавання.                     |
| Telegram        | Надіслати одне повідомлення, потім редагувати його. | Старіші видимі чернетки можуть бути замінені, щоб фінальні часові позначки лишалися корисними.              |
| Mattermost      | Редагований допис-чернетка.                         | Активність інструментів згортається в той самий допис у стилі чернетки.                                     |

Канали без безпечної підтримки редагування зазвичай повертаються до індикаторів
набору тексту або доставки лише фінальної відповіді.

## Фіналізація

Коли фінальна відповідь готова, OpenClaw намагається зберегти чат чистим:

* Якщо чернетка може безпечно стати фінальною відповіддю, OpenClaw редагує її на місці.
* Якщо канал використовує нативне потокове передавання прогресу, OpenClaw
  фіналізує цей потік, коли нативний транспорт приймає фінальний текст.
* Якщо фінальна відповідь має медіа, запит на схвалення, явну ціль відповіді,
  забагато фрагментів або невдале редагування чи надсилання, OpenClaw надсилає
  фінальну відповідь через звичайний шлях доставки каналу.

Резервний шлях є навмисним. Краще надіслати свіжу фінальну відповідь, ніж
втратити текст, помилково прив'язати відповідь до треду або перезаписати
чернетку payload, який канал не може безпечно представити.

## Усунення несправностей

**Я бачу лише фінальну відповідь.**

Перевірте, що `channels.<channel>.streaming.mode` встановлено в `progress` для
облікового запису або каналу, який обробив повідомлення. Деякі групові шляхи або
шляхи відповіді з цитуванням можуть вимикати попередні перегляди чернеток для
ходу, коли канал не може безпечно редагувати правильне повідомлення.

**Я бачу мітку, але не бачу рядків інструментів.**

Перевірте `streaming.progress.toolProgress`. Якщо значення `false`, OpenClaw
зберігає поведінку однієї чернетки, але приховує рядки прогресу інструментів і
завдань.

**Я бачу нове фінальне повідомлення замість відредагованої чернетки.**

Це резервний механізм безпеки. Таке може статися для відповідей із медіа,
довгих відповідей, явних цілей відповіді, старих чернеток Telegram, відсутніх
цілей тредів Slack, видалених повідомлень попереднього перегляду або невдалої
фіналізації нативного потоку.

**Я досі бачу окремі повідомлення про прогрес.**

Режим прогресу пригнічує типові окремі повідомлення про прогрес інструментів,
коли чернетка активна. Якщо окремі повідомлення все одно з'являються, перевірте,
що хід справді використовує режим прогресу, а не `streaming.mode: "off"` або шлях
каналу, який не може створити чернетку для цього повідомлення.

**Teams поводиться інакше, ніж Discord або Telegram.**

Microsoft Teams використовує нативний потік у особистих чатах замість універсального
транспорту попереднього перегляду з надсиланням і редагуванням. Teams також трактує `streaming.mode: "block"` як
блокову доставку Teams, оскільки він не має такого самого режиму блокового чернеткового перегляду,
який використовують Discord і Telegram.

## Пов’язане

* [Потокове передавання та поділ на фрагменти](/uk/concepts/streaming)
* [Повідомлення](/uk/concepts/messages)
* [Конфігурація каналів](/uk/gateway/config-channels)
* [Discord](/uk/channels/discord)
* [Matrix](/uk/channels/matrix)
* [Microsoft Teams](/uk/channels/msteams)
* [Slack](/uk/channels/slack)
* [Telegram](/uk/channels/telegram)
