Files
agentik-desktop/REQUIREMENTS.md
T

7.7 KiB

Требования к десктопному клиенту agentik

Статус: накидываем. Это черновик — ни один пункт не является обязательным к исполнению в том виде, как записан. Позже пересматриваем.

Основа дизайна: вариант 1 (sketches/001-sidebar-utility) — выбран. Что в нём уже показано вживую: убрана подсказка под полем ввода, кольцо токенов с раскрытием, узкое окно с кнопкой «назад».

Сейчас описываем только поведение. Кода нет и не пишем, пока требования не устоятся.


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. Как проверяем

Проверка — живой прогон, а не «собралось». Правило пользователя: перед показом гонять сценарий руками. Сценарии по этим требованиям будут отдельно.