Files
agentik-desktop/REQUIREMENTS.md
T

107 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Требования к десктопному клиенту 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. Как проверяем
Проверка — **живой прогон**, а не «собралось». Правило пользователя: перед показом
гонять сценарий руками. Сценарии по этим требованиям будут отдельно.