Требования (черновик) + вариант 1: убрана подсказка, кольцо токенов, узкое окно с кнопкой назад

This commit is contained in:
Porfiry
2026-09-19 00:14:45 +03:00
parent b569f3ee31
commit 8cf5863de4
2 changed files with 221 additions and 4 deletions
+105
View File
@@ -0,0 +1,105 @@
# Требования к десктопному клиенту 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. Как проверяем
Проверка — **живой прогон**, а не «собралось». Правило пользователя: перед показом
гонять сценарий руками. Сценарии по этим требованиям будут отдельно.