Жизненный цикл сессии
Сессия — это единица работы Whisperer: промежуток времени, за который клиент слушает встречу, транскрибирует речь и получает ответы от LLM. Понимание жизненного цикла помогает правильно использовать старт/паузу, интерпретировать статусы в кабинете и диагностировать неполадки.
Когда использовать
Читайте эту статью, если хотите понять:
- что происходит с данными в каждой фазе встречи;
- почему ответ иногда задерживается и когда стенограмма сохраняется;
- как устроена связь между клиентом и сервером.
Фазы сессии
1. Запуск
Нажатие кнопки «Старт» (или горячей клавиши) переводит клиент в активный режим:
- Клиент открывает соединение с сервером и отправляет идентификатор устройства и токен.
- Сервер проверяет подписку и квоту минут. Если проверка пройдена — подтверждает начало сессии и возвращает её идентификатор.
- Клиент активирует захват аудио и начинает запись.
2. Запись (streaming)
Аудио передаётся короткими фрагментами каждые ~0,8 секунды. Каждый фрагмент помечен говорящим: пользователь или собеседник.
Сервер буферизует фрагменты и отправляет их на распознавание. Транскрипт возвращается клиенту в реальном времени и отображается в LiveTranscriptStrip.
3. Запрос и ответ
Когда пользователь нажимает «Спросить» (или горячую клавишу), клиент отправляет фрейм ask с текущим контекстом стенограммы.
Сервер собирает системный промпт (гарантии безопасности → роль → контекст пользователя → RAG из базы знаний) и запрашивает LLM. Ответ приходит потоком: текст появляется по мере генерации и сразу отображается в AnswerArea с поддержкой Markdown и пагинацией (если ответов несколько).
4. Пауза
Нажатие «Пауза» останавливает захват аудио, но WebSocket-соединение остаётся открытым. Таймер сессии приостанавливается. Возобновление — кнопкой «Продолжить».
5. Завершение
Нажатие «Стоп» или закрытие клиента:
- Клиент отправляет фрейм
session.end. - Сервер флашит буферизованные транскрипты и список исполненных ответов в базу данных.
- WebSocket закрывается.
- В веб-кабинете сессия появляется в разделе История с полным транскриптом и аналитикой.
📸 [Скриншот: панель Whisperer в режиме записи — видны LiveTranscriptStrip и кнопки управления]
Хранение данных
По умолчанию транскрипт и ответы LLM сохраняются в базе данных и доступны в кабинете. Если включён режим no-logs, данные удаляются после завершения сессии — но потраченные минуты засчитываются.
Частые ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| Сессия не стартует | Не подтверждён e-mail или нет активной подписки | Проверьте статус аккаунта и квоту |
| «Не слышу собеседника» | Не выдано разрешение на запись экрана (macOS) или захват системного звука (Windows) | Разрешения macOS / Windows |
| Транскрипт не появляется | Плохое интернет-соединение или потеря WebSocket | Проверьте сеть; перезапустите сессию |
| Ответ LLM долго не приходит | AI-провайдер перегружен или выбрана медленная модель | Переключите модель в настройках |
Лучшие практики
- Останавливайте сессию явно кнопкой «Стоп» — это гарантирует запись данных в историю.
- Делайте паузы на длинных паузах встречи — таймер остановится и минуты не уйдут вхолостую.
- Используйте no-logs для конфиденциальных встреч, где важно не хранить транскрипт.