chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-23 09:09:43 +00:00
parent 5de0f91ee0
commit d09a8c8f09
2 changed files with 578 additions and 582 deletions

View File

@ -2,14 +2,14 @@
read_when:
- Розширення qa-lab або qa-channel
- Додавання сценаріїв QA з підтримкою репозиторію
- Побудова більш реалістичної автоматизації QA навколо панелі керування Gateway
- Побудова реалістичнішої автоматизації QA навколо панелі Gateway
summary: Приватна форма автоматизації QA для qa-lab, qa-channel, сценаріїв із початковими даними та звітів протоколу
title: Автоматизація QA E2E
x-i18n:
generated_at: "2026-04-20T02:15:03Z"
generated_at: "2026-04-23T09:05:07Z"
model: gpt-5.4
provider: openai
source_hash: 34245ce871356caeab0d9e0eeeaa9fb4e408920a4a97ad27567fa365d8db17c7
source_hash: a967a74d2e70b042e9443c5ec954902b820d2e5a22cbecd9be74af13b9085553
source_path: concepts/qa-e2e-automation.md
workflow: 15
---
@ -17,20 +17,21 @@ x-i18n:
# Автоматизація QA E2E
Приватний стек QA призначений для перевірки OpenClaw у більш реалістичний,
каналоподібний спосіб, ніж це може зробити один модульний тест.
орієнтований на канали спосіб, ніж це може зробити один модульний тест.
Поточні складові:
- `extensions/qa-channel`: синтетичний канал повідомлень із поверхнями для DM, каналу, треду,
реакції, редагування та видалення.
- `extensions/qa-lab`: UI для налагодження та шина QA для спостереження за транскриптом,
інʼєкції вхідних повідомлень і експорту Markdown-звіту.
- `qa/`: ресурси з початковими даними з підтримкою репозиторію для стартового завдання та базових сценаріїв QA.
- `extensions/qa-channel`: синтетичний канал повідомлень із поверхнями DM, каналу, треду,
реакцій, редагування та видалення.
- `extensions/qa-lab`: UI налагодження та шина QA для спостереження за транскриптом,
інʼєкції вхідних повідомлень і експорту звіту у форматі Markdown.
- `qa/`: ресурси з початковими даними, що зберігаються в репозиторії, для стартового завдання та базових
сценаріїв QA.
Поточний робочий процес оператора QA — це сайт QA з двома панелями:
Поточний потік роботи оператора QA — це сайт QA з двома панелями:
- Ліворуч: панель керування Gateway (Control UI) з агентом.
- Праворуч: QA Lab, де показано транскрипт у стилі Slack та план сценарію.
- Ліворуч: панель Gateway (Control UI) з агентом.
- Праворуч: QA Lab, що показує транскрипт у стилі Slack і план сценарію.
Запустіть його так:
@ -40,10 +41,10 @@ pnpm qa:lab:up
Це збирає сайт QA, запускає лінію Gateway на базі Docker і відкриває
сторінку QA Lab, де оператор або цикл автоматизації може дати агенту QA-місію,
спостерігати реальну поведінку каналу та записувати, що спрацювало, що не спрацювало або
що залишилося заблокованим.
спостерігати реальну поведінку каналу та фіксувати, що спрацювало, що не спрацювало або
залишилося заблокованим.
Для швидшої ітерації UI QA Lab без повторного збирання Docker-образу щоразу
Для швидшої ітерації UI QA Lab без перебудови Docker-образу щоразу
запустіть стек із bind-mounted збіркою QA Lab:
```bash
@ -53,11 +54,12 @@ pnpm qa:lab:up:fast
pnpm qa:lab:watch
```
`qa:lab:up:fast` залишає Docker-сервіси на попередньо зібраному образі та bind-mount-ить
`qa:lab:up:fast` тримає сервіси Docker на попередньо зібраному образі та bind-mount-ить
`extensions/qa-lab/web/dist` у контейнер `qa-lab`. `qa:lab:watch`
перезбирає цю збірку при змінах, а браузер автоматично перезавантажується, коли змінюється хеш ресурсів QA Lab.
перебудовує цю збірку при зміні, а браузер автоматично перезавантажується, коли
змінюється хеш ресурсів QA Lab.
Для транспортно-реалістичної лінії smoke для Matrix виконайте:
Для smoke-лінії Matrix із реальним транспортом виконайте:
```bash
pnpm openclaw qa matrix
@ -65,67 +67,68 @@ pnpm openclaw qa matrix
Ця лінія розгортає одноразовий homeserver Tuwunel у Docker, реєструє
тимчасових користувачів driver, SUT та observer, створює одну приватну кімнату, а потім запускає
реальний Plugin Matrix усередині дочірнього процесу QA gateway. Лінія живого транспорту залишає
конфігурацію дочірнього процесу обмеженою транспортом, що тестується, тож Matrix працює без
`qa-channel` у конфігурації дочірнього процесу. Вона записує структуровані артефакти звіту та
обʼєднаний журнал stdout/stderr у вибраний каталог виводу Matrix QA. Щоб
також захопити зовнішній вивід збірки/запуску `scripts/run-node.mjs`, установіть
`OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` на файл журналу всередині репозиторію.
реальний Plugin Matrix всередині дочірнього процесу Gateway QA. Лінія з живим транспортом
утримує конфіг дочірнього процесу обмеженим транспортом, що перевіряється, тому Matrix працює без
`qa-channel` у конфігу дочірнього процесу. Вона записує структуровані артефакти звіту та
обʼєднаний лог stdout/stderr у вибраний каталог виводу Matrix QA. Щоб
також захопити зовнішній вивід збірки/запуску `scripts/run-node.mjs`, встановіть
`OPENCLAW_RUN_NODE_OUTPUT_LOG=<path>` у лог-файл усередині репозиторію.
Для транспортно-реалістичної лінії smoke для Telegram виконайте:
Для smoke-лінії Telegram із реальним транспортом виконайте:
```bash
pnpm openclaw qa telegram
```
Ця лінія націлюється на одну реальну приватну групу Telegram замість розгортання
одноразового сервера. Вона вимагає `OPENCLAW_QA_TELEGRAM_GROUP_ID`,
одноразового сервера. Для неї потрібні `OPENCLAW_QA_TELEGRAM_GROUP_ID`,
`OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN` і
`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, а також двох різних ботів в одній
приватній групі. Бот SUT повинен мати імʼя користувача Telegram, а спостереження бот-до-бота
працює найкраще, коли в обох ботів увімкнено Bot-to-Bot Communication Mode
`OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN`, а також два різні боти в одній
приватній групі. Бот SUT має мати імʼя користувача Telegram, а спостереження
bot-to-bot працює найкраще, коли в обох ботів увімкнено Bot-to-Bot Communication Mode
у `@BotFather`.
Команда завершується з ненульовим кодом, якщо будь-який сценарій завершується помилкою. Використовуйте `--allow-failures`, якщо
Команда завершується з ненульовим кодом, якщо будь-який сценарій завершується невдачею. Використовуйте `--allow-failures`, якщо
вам потрібні артефакти без коду завершення з помилкою.
Звіт і підсумок Telegram містять RTT для кожної відповіді — від запиту на надсилання повідомлення driver
до спостережуваної відповіді SUT, починаючи з canary.
Тепер лінії живого транспорту мають один спільний менший контракт замість того, щоб кожна
Тепер лінії з живим транспортом використовують один менший контракт замість того, щоб кожна
вигадувала власну форму списку сценаріїв:
`qa-channel` залишається широким синтетичним набором перевірок поведінки продукту і не входить
`qa-channel` залишається широким синтетичним набором перевірок поведінки продукту й не входить
до матриці покриття живого транспорту.
| Лінія | Canary | Гейтінг згадок | Блокування allowlist | Відповідь верхнього рівня | Відновлення після перезапуску | Подальша дія в треді | Ізоляція треду | Спостереження за реакціями | Команда help |
| -------- | ------ | -------------- | -------------------- | ------------------------- | ----------------------------- | -------------------- | -------------- | -------------------------- | ------------ |
| Matrix | x | x | x | x | x | x | x | x | |
| Telegram | x | | | | | | | | x |
| Лінія | Canary | Фільтрація за згадками | Блокування allowlist | Відповідь верхнього рівня | Відновлення після перезапуску | Подальша дія в треді | Ізоляція треду | Спостереження за реакціями | Команда help |
| -------- | ------ | ---------------------- | -------------------- | ------------------------- | ----------------------------- | -------------------- | -------------- | -------------------------- | ------------ |
| Matrix | x | x | x | x | x | x | x | x | |
| Telegram | x | | | | | | | | x |
Це зберігає `qa-channel` як широкий набір перевірок поведінки продукту, тоді як Matrix,
Telegram та майбутні живі транспорти мають один явний контрольний список транспортного контракту.
Telegram і майбутні живі транспорти використовують спільний явний контрольний список транспортного контракту.
Для одноразової лінії Linux VM без залучення Docker до шляху QA виконайте:
Для одноразової лінії Linux VM без використання Docker у QA-шляху виконайте:
```bash
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
```
Це завантажує нову гостьову систему Multipass, встановлює залежності, збирає OpenClaw
усередині гостя, запускає `qa suite`, а потім копіює звичайний звіт QA та
підсумок назад у `.artifacts/qa-e2e/...` на хості.
Вона повторно використовує ту саму поведінку вибору сценаріїв, що й `qa suite` на хості.
Запуски suite на хості й у Multipass за замовчуванням виконують кілька вибраних сценаріїв паралельно
з ізольованими воркерами gateway. `qa-channel` за замовчуванням має concurrency 4,
усередині гостя, запускає `qa suite`, а потім копіює звичайний звіт і підсумок QA назад у `.artifacts/qa-e2e/...`
на хості.
Вона використовує ту саму поведінку вибору сценаріїв, що й `qa suite` на хості.
Запуски suite на хості та в Multipass за замовчуванням виконують кілька вибраних сценаріїв паралельно з ізольованими worker-процесами Gateway. `qa-channel` за замовчуванням використовує конкурентність 4,
обмежену кількістю вибраних сценаріїв. Використовуйте `--concurrency <count>`, щоб налаштувати
кількість воркерів, або `--concurrency 1` для послідовного виконання.
Команда завершується з ненульовим кодом, якщо будь-який сценарій завершується помилкою. Використовуйте `--allow-failures`, якщо
кількість worker-процесів, або `--concurrency 1` для послідовного виконання.
Команда завершується з ненульовим кодом, якщо будь-який сценарій завершується невдачею. Використовуйте `--allow-failures`, якщо
вам потрібні артефакти без коду завершення з помилкою.
Живі запуски пересилають підтримувані вхідні дані автентифікації QA, які практично
використовувати в гостьовій системі: ключі провайдера через env, шлях до конфігурації живого провайдера QA і
Живі запуски передають підтримувані вхідні дані автентифікації QA, які практичні для
гостьової системи: ключі провайдера через env, шлях до конфігу провайдера QA live та
`CODEX_HOME`, якщо він присутній. Тримайте `--output-dir` у межах кореня репозиторію, щоб гість
міг записувати дані назад через змонтований workspace.
міг записувати назад через змонтований workspace.
## Початкові дані з підтримкою репозиторію
## Початкові дані з репозиторію
Ресурси з початковими даними зберігаються в `qa/`:
Ресурси з початковими даними знаходяться в `qa/`:
- `qa/scenarios/index.md`
- `qa/scenarios/<theme>/*.md`
@ -133,24 +136,22 @@ pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
Вони навмисно зберігаються в git, щоб план QA був видимий і людям, і
агенту.
`qa-lab` має залишатися загальним виконавцем markdown. Кожен markdown-файл сценарію є
джерелом істини для одного тестового запуску та має визначати:
`qa-lab` має залишатися загальним runner-ом Markdown. Кожен Markdown-файл сценарію є
джерелом істини для одного тестового запуску й має визначати:
- метадані сценарію
- необовʼязкові метадані категорії, можливості, лінії та ризику
- посилання на docs і код
- необовʼязкові метадані категорії, можливостей, лінії та ризику
- посилання на docs і code
- необовʼязкові вимоги до Plugin
- необовʼязковий patch конфігурації gateway
- необовʼязковий patch конфігурації Gateway
- виконуваний `qa-flow`
Багаторазова поверхня виконання, яка лежить в основі `qa-flow`, може залишатися загальною
і кросфункціональною. Наприклад, markdown-сценарії можуть поєднувати допоміжні засоби
з боку транспорту з допоміжними засобами з боку браузера, які керують вбудованим Control UI через
поверхню Gateway `browser.request`, не додаючи спеціалізованого виконавця.
Повторно використовувана поверхня runtime, що стоїть за `qa-flow`, може залишатися загальною
та наскрізною. Наприклад, Markdown-сценарії можуть поєднувати transport-side
хелпери з browser-side хелперами, які керують вбудованим Control UI через
поверхню Gateway `browser.request`, не додаючи спеціалізований runner.
Файли сценаріїв слід групувати за можливостями продукту, а не за папкою дерева
вихідного коду. Зберігайте ідентифікатори сценаріїв стабільними, коли файли переміщуються; використовуйте `docsRefs` і `codeRefs`
для трасування реалізації.
Файли сценаріїв слід групувати за можливостями продукту, а не за папкою вихідного дерева. Зберігайте стабільність ID сценаріїв при переміщенні файлів; використовуйте `docsRefs` і `codeRefs` для відстежуваності реалізації.
Базовий список має залишатися достатньо широким, щоб охоплювати:
@ -160,51 +161,49 @@ pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
- зворотні виклики Cron
- виклик памʼяті
- перемикання моделей
- передавання підзадачі субагенту
- передачу підагенту
- читання репозиторію та docs
- одне невелике завдання зі збирання, наприклад Lobster Invaders
- одне невелике завдання зі збірки, наприклад Lobster Invaders
## Лінії mock провайдерів
## Лінії з mock-провайдерами
`qa suite` має дві локальні лінії mock провайдерів:
`qa suite` має дві локальні лінії з mock-провайдерами:
- `mock-openai` — це сценарійно-орієнтований mock OpenClaw. Він залишається типовою
детермінованою лінією mock для QA з підтримкою репозиторію та перевірок паритету.
- `mock-openai` — це scenario-aware mock OpenClaw. Вона лишається типовою
детермінованою mock-лінією для QA з підтримкою репозиторію та перевірок паритету.
- `aimock` запускає сервер провайдера на базі AIMock для експериментального покриття протоколу,
фікстур, record/replay та chaos. Це доповнення, а не заміна диспетчера сценаріїв `mock-openai`.
фікстур, record/replay і chaos. Вона є додатковою й не замінює dispatcher сценаріїв `mock-openai`.
Реалізація ліній провайдерів розміщена в `extensions/qa-lab/src/providers/`.
Кожен провайдер володіє своїми типовими значеннями, запуском локального сервера, конфігурацією моделей gateway,
потребами підготовки профілів автентифікації та прапорцями можливостей live/mock. Спільний код suite і
gateway має маршрутизувати через реєстр провайдерів замість розгалуження за назвами провайдерів.
Реалізація ліній провайдера знаходиться в `extensions/qa-lab/src/providers/`.
Кожен провайдер володіє своїми типовими значеннями, запуском локального сервера, конфігом моделі Gateway,
потребами staging для auth-profile, а також прапорцями можливостей live/mock. Спільний код suite і Gateway має маршрутизувати через registry провайдерів замість розгалуження за іменами провайдерів.
## Адаптери транспорту
`qa-lab` володіє загальною транспортною поверхнею для markdown-сценаріїв QA.
`qa-lab` володіє загальною поверхнею транспорту для Markdown-сценаріїв QA.
`qa-channel` — перший адаптер на цій поверхні, але ціль дизайну ширша:
майбутні реальні або синтетичні канали мають підключатися до того самого виконавця suite
замість додавання виконавця QA, специфічного для транспорту.
майбутні реальні або синтетичні канали мають підключатися до того самого runner-а suite замість додавання транспортно-специфічного runner-а QA.
На рівні архітектури розподіл такий:
На рівні архітектури поділ такий:
- `qa-lab` володіє загальним виконанням сценаріїв, паралельністю воркерів, записом артефактів і звітністю.
- адаптер транспорту володіє конфігурацією gateway, готовністю, спостереженням за вхідними та вихідними подіями, транспортними діями та нормалізованим станом транспорту.
- markdown-файли сценаріїв у `qa/scenarios/` визначають тестовий запуск; `qa-lab` надає багаторазову поверхню виконання, яка його виконує.
- `qa-lab` володіє загальним виконанням сценаріїв, конкурентністю worker-процесів, записом артефактів і звітністю.
- адаптер транспорту володіє конфігом Gateway, готовністю, спостереженням за вхідними та вихідними подіями, транспортними діями й нормалізованим станом транспорту.
- Markdown-файли сценаріїв у `qa/scenarios/` визначають тестовий запуск; `qa-lab` надає повторно використовувану поверхню runtime, яка їх виконує.
Орієнтовані на мейнтейнерів вказівки з упровадження нових адаптерів каналів розміщені в
Орієнтовані на maintainer-ів рекомендації з упровадження нових адаптерів каналів знаходяться в
[Testing](/uk/help/testing#adding-a-channel-to-qa).
## Звітність
`qa-lab` експортує Markdown-звіт протоколу зі спостережуваної часової шкали шини.
Звіт має відповідати на запитання:
`qa-lab` експортує звіт протоколу у форматі Markdown зі спостережуваної часової шкали шини.
Звіт має відповідати на такі питання:
- Що спрацювало
- Що не спрацювало
- Що залишилося заблокованим
- Які подальші сценарії варто додати
Для перевірок характеру й стилю запустіть той самий сценарій для кількох живих ref моделей
Для перевірок характеру та стилю виконайте той самий сценарій на кількох live ref моделей
і запишіть оцінений Markdown-звіт:
```bash
@ -224,35 +223,35 @@ pnpm openclaw qa character-eval \
--judge-concurrency 16
```
Команда запускає локальні дочірні процеси QA gateway, а не Docker. Сценарії оцінювання характеру
мають задавати persona через `SOUL.md`, а потім виконувати звичайні користувацькі ходи,
такі як чат, допомога з workspace та невеликі файлові завдання. Моделі-кандидату
Команда запускає локальні дочірні процеси Gateway QA, а не Docker. Сценарії оцінки характеру
мають задавати persona через `SOUL.md`, а потім виконувати звичайні ходи користувача,
такі як чат, допомога з workspace і невеликі файлові завдання. Моделі-кандидату
не слід повідомляти, що її оцінюють. Команда зберігає кожен повний
транскрипт, записує базову статистику запуску, а потім просить моделі-суддів у швидкому режимі з
міркуванням `xhigh` ранжувати запуски за природністю, вайбом і гумором.
Використовуйте `--blind-judge-models` при порівнянні провайдерів: підказка для суддів усе одно отримує
кожен транскрипт і статус запуску, але ref кандидатів замінюються на нейтральні
мітки, такі як `candidate-01`; після парсингу звіт зіставляє рейтинги назад із реальними ref.
Запуски кандидатів за замовчуванням використовують рівень мислення `high`, а для моделей OpenAI, які це підтримують, — `xhigh`.
Щоб перевизначити конкретного кандидата, використовуйте inline-форму
`--model provider/model,thinking=<level>`. `--thinking <level>` і надалі задає
глобальне резервне значення, а старіша форма `--model-thinking <provider/model=level>` зберігається
транскрипт, записує базову статистику запуску, а потім просить моделі-судді в режимі fast з
міркуванням `xhigh` ранжувати запуски за природністю, vibe і гумором.
Використовуйте `--blind-judge-models` при порівнянні провайдерів: prompt судді все одно отримує
кожен транскрипт і статус запуску, але ref кандидатів замінюються нейтральними
мітками, такими як `candidate-01`; звіт зіставляє ранжування з реальними ref після
розбору.
Для запусків кандидатів за замовчуванням використовується рівень thinking `high`, а для моделей OpenAI, що це підтримують, — `xhigh`. Перевизначте конкретного кандидата inline через
`--model provider/model,thinking=<level>`. `--thinking <level>` як і раніше задає
глобальне резервне значення, а старіша форма `--model-thinking <provider/model=level>` збережена
для сумісності.
ref кандидатів OpenAI за замовчуванням працюють у швидкому режимі, щоб використовувати пріоритетну обробку там,
де це підтримується провайдером. Додайте `,fast`, `,no-fast` або `,fast=false` inline, коли
одному кандидату або судді потрібно перевизначення. Передавайте `--fast`, лише якщо хочете
примусово ввімкнути швидкий режим для кожної моделі-кандидата. Тривалість запусків кандидатів і суддів
записується у звіт для аналізу продуктивності, але підказки для суддів прямо кажуть
Для ref кандидатів OpenAI за замовчуванням використовується режим fast, щоб задіяти пріоритетну обробку там,
де провайдер це підтримує. Додайте `,fast`, `,no-fast` або `,fast=false` inline, коли
окремому кандидату або судді потрібно перевизначення. Передавайте `--fast`, лише якщо хочете
примусово ввімкнути режим fast для кожної моделі-кандидата. Тривалість запусків кандидатів і суддів
фіксується у звіті для аналізу продуктивності, але prompt-и суддів явно вказують
не ранжувати за швидкістю.
Запуски моделей-кандидатів і моделей-суддів за замовчуванням обидва використовують concurrency 16. Зменшуйте
`--concurrency` або `--judge-concurrency`, коли ліміти провайдера чи навантаження на локальний gateway
І для кандидатів, і для моделей-суддів за замовчуванням використовується конкурентність 16. Зменшуйте
`--concurrency` або `--judge-concurrency`, якщо ліміти провайдера або навантаження локального Gateway
роблять запуск надто шумним.
Коли не передано жодного кандидата `--model`, character eval за замовчуванням використовує
Якщо не передано жодного `--model` кандидата, character eval за замовчуванням використовує
`openai/gpt-5.4`, `openai/gpt-5.2`, `openai/gpt-5`, `anthropic/claude-opus-4-6`,
`anthropic/claude-sonnet-4-6`, `zai/glm-5.1`,
`moonshot/kimi-k2.5` і
`google/gemini-3.1-pro-preview`, якщо не передано `--model`.
Коли не передано `--judge-model`, за замовчуванням як судді використовуються
`google/gemini-3.1-pro-preview`, якщо `--model` не передано.
Якщо не передано жодного `--judge-model`, судді за замовчуванням:
`openai/gpt-5.4,thinking=xhigh,fast` і
`anthropic/claude-opus-4-6,thinking=high`.
@ -260,4 +259,4 @@ ref кандидатів OpenAI за замовчуванням працюють
- [Testing](/uk/help/testing)
- [QA Channel](/uk/channels/qa-channel)
- [Dashboard](/web/dashboard)
- [Dashboard](/uk/web/dashboard)

File diff suppressed because it is too large Load Diff