---
read_when:
    - Запуск проверки качества настольного приложения Slack для Mantis из GitHub или локально
    - Отладка медленных запусков Mantis в настольном приложении Slack
    - Выбор режима исходного кода, предварительной гидратации или прогретой аренды
    - Публикация скриншотов и видеодоказательств в PR
summary: 'Инструкция для оператора по проверке качества настольного приложения Mantis Slack: запуск через GitHub, локальный CLI, предварительно запущенные сеансы VNC, режимы подготовки среды, интерпретация времени выполнения, артефакты и обработка сбоев.'
title: Руководство по работе с Mantis в настольном приложении Slack
x-i18n:
    generated_at: "2026-07-13T18:04:41Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: b3e956d99fc43a7b6fe65e2e820812b0e0e8b9e32badd25be27c74d302ab30dc
    source_path: concepts/mantis-slack-desktop-runbook.md
    workflow: 16
---

Mantis Slack desktop QA — это сценарий тестирования через реальный интерфейс для ошибок класса Slack, требующих
рабочего стола Linux, аварийного доступа по VNC, Slack Web, реального Gateway OpenClaw, снимков экрана,
видеозаписей и комментария с доказательствами в PR. Используйте его, когда модульные тесты или безголовый
сценарий живого тестирования Slack не позволяют подтвердить ошибку.

## Модель хранения

Mantis использует три уровня хранения:

- **Образ провайдера** — принадлежит Crabbox и хранится в учётной записи облачного провайдера.
  Содержит возможности машины (Chrome/Chromium, ffmpeg, scrot,
  Node/corepack/pnpm, нативные инструменты сборки) и пустые каталоги кэша.
- **Состояние прогретой аренды** — принадлежит текущему сеансу оператора. Может содержать
  профиль браузера с выполненным входом, `/var/cache/crabbox/pnpm` и подготовленную рабочую копию
  исходного кода, пока аренда активна.
- **Артефакты Mantis** — принадлежат запуску OpenClaw. Находятся в
  `.artifacts/qa-e2e/mantis/...`; GitHub Actions загружает их, а приложение Mantis
  для GitHub добавляет встроенные доказательства в комментарий к PR.

Никогда не включайте секреты, файлы cookie браузера, состояние входа в Slack, рабочие копии репозитория,
`node_modules` или `dist/` в образ провайдера.

## Запуск через GitHub

Запустите рабочий процесс из `main`:

```bash
gh workflow run mantis-slack-desktop-smoke.yml \
  --ref main \
  -f candidate_ref=<trusted-ref-or-sha> \
  -f pr_number=<pr-number> \
  -f scenario_id=slack-canary \
  -f crabbox_provider=aws \
  -f keep_vm=false \
  -f hydrate_mode=source
```

`candidate_ref` ограничен, поскольку рабочий процесс использует реальные учётные данные: он
должен разрешаться в текущую цепочку предков `main`, тег выпуска или головной коммит открытого PR в
`openclaw/openclaw`.

Рабочий процесс создаёт:

- загруженный артефакт `mantis-slack-desktop-smoke-<run-id>-<attempt>`
- встроенный комментарий к PR от приложения Mantis для GitHub
- `slack-desktop-smoke.png`, `slack-desktop-smoke.mp4`
- `slack-desktop-smoke-preview.gif`, `slack-desktop-smoke-change.mp4`
- `mantis-slack-desktop-smoke-summary.json`, `mantis-slack-desktop-smoke-report.md`
- удалённые журналы: `slack-desktop-command.log`, `openclaw-gateway.log`, `chrome.log`, `ffmpeg.log`

Комментарий к PR обновляется на месте с помощью скрытого маркера `<!-- mantis-slack-desktop-smoke -->`.

## Локальный CLI

Проверка исходного кода с холодного запуска:

```bash
pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --class standard \
  --gateway-setup \
  --credential-source convex \
  --credential-role maintainer \
  --provider-mode live-frontier \
  --model openai/gpt-5.4 \
  --alt-model openai/gpt-5.4 \
  --scenario slack-canary \
  --hydrate-mode source
```

Сохранение виртуальной машины для аварийного доступа по VNC:

```bash
pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --class standard \
  --gateway-setup \
  --scenario slack-canary \
  --keep-lease
```

Открытие VNC:

```bash
crabbox vnc --provider aws --id <cbx_id> --open
```

Повторное использование прогретой аренды:

```bash
pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --lease-id <cbx_id-or-slug> \
  --gateway-setup \
  --scenario slack-canary \
  --hydrate-mode source
```

Используйте `--hydrate-mode prehydrated` только в том случае, если повторно используемое удалённое рабочее пространство уже
содержит `node_modules` и собранный `dist/`; в противном случае Mantis безопасно завершает работу с ошибкой.

Проверка нативного интерфейса подтверждения Slack:

```bash
pnpm openclaw qa mantis slack-desktop-smoke \
  --provider aws \
  --class standard \
  --approval-checkpoints \
  --credential-source convex \
  --credential-role maintainer \
  --hydrate-mode source
```

`--approval-checkpoints` несовместим с `--gateway-setup`. Он запускает
сценарии `slack-approval-exec-native` и `slack-approval-plugin-native`, включаемые явно,
если не передан явный `--scenario` контрольной точки подтверждения; другие
сценарии Slack отклоняются до запуска виртуальной машины. Средство запуска QA для Slack записывает
JSON-файл каждой контрольной точки из реального сообщения API Slack, которое оно наблюдало, после чего
удалённый наблюдатель отображает это сообщение в
`approval-checkpoints/<scenario>-pending.png` и
`approval-checkpoints/<scenario>-resolved.png`. Запуск завершается с ошибкой, если какой-либо
JSON контрольной точки, доказательство сообщения, JSON подтверждения получения или отображённый снимок экрана отсутствует
либо пуст.

В холодных арендах GitHub Actions отсутствуют файлы cookie Slack Web, поэтому при захвате браузера
может отображаться экран входа в Slack. Для доказательства через контрольные точки подтверждения следует полагаться на
отображённые изображения контрольных точек и артефакты QA Slack, а не на
`slack-desktop-smoke.png`. Используйте сохранённую прогретую аренду с профилем
Slack Web, в котором вход выполнен вручную, только когда сам снимок экрана браузера должен показывать
Slack Web.

## Режимы подготовки

| Режим          | Когда использовать                                  | Поведение на удалённой машине                                                                       | Компромисс                                                 |
| ------------- | ----------------------------------------- | ------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `source`      | Обычная проверка PR, холодные машины, CI        | Запускает `pnpm install --frozen-lockfile --prefer-offline` и `pnpm build` внутри виртуальной машины | Самый медленный режим, наиболее надёжная проверка рабочей копии исходного кода                 |
| `prehydrated` | Повторно используемая аренда намеренно подготовлена | Требует существующие `node_modules` и `dist/`; пропускает установку и сборку                     | Быстро, но допустимо только для контролируемых оператором прогретых аренд |

GitHub Actions всегда подготавливает рабочую копию кандидата перед запуском виртуальной машины. Его
хранилище pnpm кэшируется по ОС, версии Node и файлу блокировки. Запуск `source` на виртуальной машине
также повторно использует `/var/cache/crabbox/pnpm`, если он присутствует.

## Интерпретация времени выполнения

`mantis-slack-desktop-smoke-report.md` содержит длительность этапов:

- `crabbox.warmup` — запуск облачного провайдера, готовность рабочего стола и браузера, SSH.
- `crabbox.inspect` — поиск метаданных аренды.
- `credentials.prepare` — получение аренды учётных данных Convex.
- `crabbox.remote_run` — синхронизация, запуск браузера, установка или сборка OpenClaw либо
  проверка подготовки, запуск Gateway, создание снимка экрана и запись видео.
- `artifacts.copy` — обратная синхронизация с виртуальной машины через rsync.

`crabbox.remote_run` может показывать `accepted`, когда Crabbox возвращает ненулевой
статус удалённого выполнения, но Mantis скопировал метаданные, подтверждающие, что либо настройка Gateway OpenClaw
завершилась, либо сама команда QA Slack успешно завершила работу. Считайте
`accepted` успешным результатом с пояснением, а не неудачным сценарием.

Если запуск выполняется медленно:

- Преобладает прогрев: предварительно соберите или продвиньте более подходящий образ провайдера Crabbox.
- В `source` преобладает `remote_run`: используйте прогретую аренду, улучшите повторное использование
  хранилища pnpm или перенесите системные зависимости машины в образ провайдера.
- В `prehydrated` преобладает `remote_run`: удалённое рабочее пространство в действительности
  не было готово либо настройка Gateway, браузера или Slack выполняется медленно.
- Преобладает копирование артефактов: проверьте размер видео и содержимое каталога артефактов.

## Контрольный список доказательств

Хороший комментарий к PR содержит:

- идентификатор сценария и SHA кандидата
- URL запуска GitHub Actions и URL артефакта
- встроенный снимок экрана контрольной точки подтверждения или снимок экрана Slack Web из
  прогретой аренды с выполненным входом
- встроенный анимированный предпросмотр, если доступен
- ссылки на полный и обрезанный MP4
- статус успеха или ошибки и сводку времени выполнения из отчёта

Не добавляйте снимки экрана или видеозаписи в репозиторий. Храните их в артефактах GitHub
Actions или в комментарии к PR.

## Обработка ошибок

Если рабочий процесс завершается с ошибкой до запуска виртуальной машины, сначала проверьте задание Actions.
Типичные причины: недоверенный `candidate_ref`, отсутствующие секреты окружения или
ошибка установки либо сборки кандидата.

Если запуск на виртуальной машине завершается с ошибкой, но снимки экрана были скопированы обратно, проверьте:

```bash
cat mantis-slack-desktop-smoke-report.md
cat mantis-slack-desktop-smoke-summary.json
cat slack-desktop-command.log
cat openclaw-gateway.log
cat chrome.log
cat ffmpeg.log
```

Если запуск сохранил аренду, откройте VNC с помощью команды `crabbox vnc ...`
из отчёта, а после завершения остановите аренду:

```bash
crabbox stop --provider aws <cbx_id-or-slug>
```

Если срок действия входа в Slack истёк, восстановите его через VNC в сохранённой аренде и повторите запуск с
`--lease-id`. Не включайте этот профиль браузера в образ провайдера.

## Связанные материалы

- [Обзор QA](/ru/concepts/qa-e2e-automation)
- [Канал Slack](/ru/channels/slack)
- [Тестирование](/ru/help/testing)
