# Требования к десктопному клиенту agentik **Статус:** накидываем. Это черновик — ни один пункт не является обязательным к исполнению в том виде, как записан. Позже пересматриваем. **Основа дизайна:** вариант 1 (`sketches/001-sidebar-utility`). Варианты 2 и 3 остаются рядом как источник идей. **Сейчас описываем только поведение.** Кода нет и не пишем, пока требования не устоятся. --- ## 1. Общее - **R1.** Клиент — только для одного ассистента, не для переписки с людьми. Никаких «пользователей», «контактов», «групп» — их нет и не должно быть. - **R2.** Стиль — тёмная тема, уже принятая в клиентах пользователя (фон `#121218`, панели `#17212B`, текст `#EBEBEB`). - **R3.** Что видно на экране в любой момент: список диалогов, выбранный диалог и поле ввода. Больше ничего обязательного нет. ## 2. Раскладка и адаптивность - **R4.** **Широкое окно** — две части: список диалогов слева, открытый диалог справа. - **R5.** **Узкое окно** — на экране что-то одно: либо список диалогов, либо конкретный диалог. Переключение — как в Телеграме. - **R6.** В узком окне у открытого диалога сверху слева — кнопка «Назад». Нажатие возвращает к списку диалогов на всю ширину. - **R7.** Порог «широкое/узкое» — по ширине окна, одна величина. Какой именно размер считать порогом — решим позже. ## 3. Список диалогов - **R8.** Список диалогов — это список бесед с одним и тем же ассистентом, различающихся темой (задача, контекст, история). - **R9.** Группировка диалогов остаётся: «Работа», «Дом» и подобное. Подпись и состав групп — настраиваемые. - **R10.** В строке диалога: название, последнее сообщение, время, счётчик непрочитанных. - **R11.** Есть поиск по диалогам. ## 4. Открытый диалог - **R12.** Показ сообщений: мои и ассистента, с временем. - **R13.** Ответ ассистента можно прервать — на видном месте кнопка «Стоп». - **R14.** Сообщения приходят вживую, по мере генерации (текст дотекает). ## 5. Панель ввода - **R15.** Поле ввода, кнопка «Отправить» и **отдельная кнопка записи микрофона**. - **R16.** Подсказка о горячих клавишах под полем **убирается** — её не должно быть. (Убрать «Ctrl+R — запись · Enter — отправить · Shift+Enter — новая строка».) - **R17.** Пока идёт запись, ввод текста не должен вводить в заблуждение: должно быть понятно, что сейчас пишется голос. - **R18.** Отмена записи — явная. ## 6. Голос - **R19.** Кнопка записи включает микрофон и останавливает его. Точная механика (по нажатию или на удержание) — см. раздел 10. - **R20.** Распознавание речи — **отдельная тема, здесь не решается.** В интерфейсе важно только: где кнопка, что видно во время записи, что происходит после. ## 7. Состояние агента - **R21.** Показывать, **сколько токенов израсходовано** за диалог целиком. - **R22.** Показывать, **сколько занято сейчас** и **сколько всего доступно**. - **R23.** Показывать это **кольцом заполнения** — как сильно заполнено. - **R24.** По умолчанию состояние **свёрнуто**; по нажатию — разворачивается с подробностями. - **R25.** Место и точный вид — решим позже. ## 8. Ход работы агента - **R26.** Показывать не только ответы ассистента, но и происходящее вокруг них: вызовы инструментов, рассуждения, ошибки. - **R27.** Свёрнутый вид — одна строка: кратко, что происходит (например, «вызов инструмента: такой-то»). - **R28.** Развёрнутый вид — подробности этого шага: аргументы, результат, время. - **R29.** Сворачивание/разворачивание — по нажатию на строку. - **R30.** Что именно показывать в строке — решим позже. ## 9. Отдельным списком: чего в библиотеке agentik СЕЙЧАС нет Проверено по коду `pw.binom.agentik:client` (версия 3): - **Токенов нет вообще.** Ни в сообщениях, ни в событиях, ни в диалоге. То есть R21–R23 сейчас не из чего взять — потребуется доработка на стороне агента и протокола. Это не задача дизайна, но без неё кольцо нарисовать нечем. - **Есть события** (их и показываем в R26–R30): начало ответа, рассуждение, текст по мере генерации, картинка, вызов инструмента, результат инструмента, конец хода, прерывание, ошибка. - **Есть события о диалогах целиком:** создан, удалён, переименован. - **Есть:** прерывание ответа, история сообщений, список диалогов. ## 10. Решения, которые ещё не приняты - Запись: по нажатию (нажал — говоришь — нажал) или на удержание. - Нужны ли вложения (картинки) в этом клиенте. - Как именно выглядит кольцо токенов и где живёт. ## 11. Как проверяем Проверка — **живой прогон**, а не «собралось». Правило пользователя: перед показом гонять сценарий руками. Сценарии по этим требованиям будут отдельно.