From a515008e197b9114956943009ab563677b4068bb Mon Sep 17 00:00:00 2001 From: Porfiry Date: Fri, 18 Sep 2026 23:57:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=B8=D0=B7=D0=B0=D0=B9=D0=BD=20=D0=B4?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D1=82=D0=BE=D0=BF=D0=BD=D0=BE=D0=B3=D0=BE=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0:=203=20=D0=B2=D0=B0?= =?UTF-8?q?=D1=80=D0=B8=D0=B0=D0=BD=D1=82=D0=B0=20(sidebar=20/=20voice-fir?= =?UTF-8?q?st=20/=20three-pane)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 49 ++- sketches/001-sidebar-utility/README.md | 24 ++ sketches/001-sidebar-utility/index.html | 362 +++++++++++++++++++++ sketches/002-rail-voice-first/README.md | 25 ++ sketches/002-rail-voice-first/index.html | 342 +++++++++++++++++++ sketches/003-three-pane-command/README.md | 25 ++ sketches/003-three-pane-command/index.html | 345 ++++++++++++++++++++ 7 files changed, 1170 insertions(+), 2 deletions(-) create mode 100644 sketches/001-sidebar-utility/README.md create mode 100644 sketches/001-sidebar-utility/index.html create mode 100644 sketches/002-rail-voice-first/README.md create mode 100644 sketches/002-rail-voice-first/index.html create mode 100644 sketches/003-three-pane-command/README.md create mode 100644 sketches/003-three-pane-command/index.html diff --git a/README.md b/README.md index eaec0c0..14a4b73 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,48 @@ -# agentik-desktop +# agentik-desktop — дизайн десктопного клиента -Десктопный клиент агента agentik (Jetpack Compose Desktop). Ходит в :client-библиотеку. Голосовое управление. \ No newline at end of file +Десктопный клиент агента **agentik** (Jetpack Compose Desktop). UI общается с агентом +через опубликованную библиотеку `pw.binom.agentik:client` — она даёт готовые +`Agent` / `Conversation`, живой поток событий и `interrupt()` для кнопки «Стоп». + +Это пока **только дизайн**, не код приложения. Три варианта лежат рядом, чтобы +сравнить и выбрать один; после выбора лишние удаляются. + +## Как смотреть + +Открыть в браузере любой из трёх файлов — каждый самодостаточный, без сборки: + +``` +sketches/001-sidebar-utility/index.html # привычный мессенджер +sketches/002-rail-voice-first/index.html # голос — главное действие +sketches/003-three-pane-command/index.html # три панели + состояние агента +``` + +Кнопка микрофона работает: клик — запись, идёт волна и живая расшифровка, +«Остановить и отправить» кладёт текст в поле. Так видно, как это будет ощущаться. + +## Чем отличаются + +| | 1. Sidebar | 2. Voice-first | 3. Command center | +|---|---|---|---| +| Экран | список + чат | рейка + список + чат | три панели | +| Голос | круглая кнопка у поля | большая кнопка, живая расшифровка | компактная, строка записи снизу | +| Работа агента | видна в переписке | в переписке | отдельные сворачиваемые шаги | +| Кому | просто чат | кто диктует | кто следит за расходом | + +## Общее для всех (решено и не обсуждается) + +- Стиль — тёмный, из уже принятой темы клиента assistent: фон `#121218`, + панели `#17212B`, акцент `#6AB2F2`, текст `#EBEBEB`. +- Слева — список диалогов; выбран один; открывается конкретный чат. +- Внизу — поле ввода, кнопка «Отправить» и отдельная кнопка записи микрофона. +- Голос расшифровывается в текст **до** отправки — ошибку видно сразу. +- Для агента важны прерывание ответа («Стоп») и показ хода работы. + +## Что предстоит решить + +1. **Откуда берётся распознавание речи.** В библиотеке `client` сейчас только текст + и картинки — аудио в протоколе нет. Варианты: звать распознавание напрямую + (у нас поднято на 88.125) либо сначала выяснить, как это делается на сервере агента. +2. **Запись на удержание** (говоришь, пока держишь) или **по нажатию** (нажал — + говоришь — нажал). В варианте 2 работает удержание пробела. +3. **Нужны ли папки** для диалогов, как в мобильном клиенте, или хватит поиска. diff --git a/sketches/001-sidebar-utility/README.md b/sketches/001-sidebar-utility/README.md new file mode 100644 index 0000000..00c048c --- /dev/null +++ b/sketches/001-sidebar-utility/README.md @@ -0,0 +1,24 @@ +# Вариант 1 — Sidebar / Utility + +## Суть +Привычный мессенджер: одна колонка диалогов слева, чат справа. Ничего лишнего — +сделано так, чтобы не пришлось учиться заново. + +## Ключевые решения +- **Раскладка:** список диалогов (320) + чат. Плюс лента папок, как в мобильном клиенте. +- **Подача работы агента:** «думает» — свёрнутый блок с левой цветной полосой, вызов + инструмента — серая плашка с командой. Видно, но не мешает. +- **Кнопка записи:** круглая, рядом с полем ввода. При записи — панель над полем + с волной, таймером и «Остановить и отправить». +- **Куда попадает распознанное:** в поле ввода. Проверил глазами — потом отправил. + +## Что хорошо +- Меньше всего удивляет; подходит как «рабочая лошадь» на каждый день. +- Кнопка отправки крупная и явная. + +## Что слабо +- Работа агента показана бедно — видно только то, что попало в переписку. +- При большом числе диалогов одна колонка тесновата. + +## Кому +Тому, кто хочет чат с агентом, а не пульт управления агентом. diff --git a/sketches/001-sidebar-utility/index.html b/sketches/001-sidebar-utility/index.html new file mode 100644 index 0000000..ae7a2d9 --- /dev/null +++ b/sketches/001-sidebar-utility/index.html @@ -0,0 +1,362 @@ + + + + +Вариант 1 — Sidebar / Utility + + + +
+ + + + +
+
+
АГ
+
+
agentik · рабочий
+
● на связи · модель codding-big
+
+ +
+ +
+
Проверь, почему падает CI в agentik14:18
+ +
+ Думает: 42 прогона, красных 40. Смотрю имена тестов… похоже на проблему кодировки при создании файлов классов. +
+ +
⚙ grep -rnP 'fun `[^`]*[^\x00-\x7F]' --include='*.kt'
+ +
Нашёл причину: в именах тестов стоит длинное тире «—», а сборка работает в ASCII-кодировке. Отсюда падение компилятора. Починил, CI зелёный.14:22
+ +
Отлично. Сделай релиз «3»14:23
+ +
+ Думает: создаю тег, запускаю публикацию… проверю, что в Nexus появилась версия 3. +
+
+ + +
+
+ +
+ распознаю: +
+ +
+ +
+ 0:00 +
+ +
+
+ +
+
+ +
+ + +
+ +
+ Ctrl+R — запись голоса · Enter — отправить · Shift+Enter — новая строка + готов +
+
+
+
+ + + + diff --git a/sketches/002-rail-voice-first/README.md b/sketches/002-rail-voice-first/README.md new file mode 100644 index 0000000..1f4b899 --- /dev/null +++ b/sketches/002-rail-voice-first/README.md @@ -0,0 +1,25 @@ +# Вариант 2 — Rail / Voice-first + +## Суть +Голос — главное действие, а не дополнение к клавиатуре. Огромная кнопка микрофона +слева в панели ввода, живая расшифровка на экране, пока говоришь. + +## Ключевые решения +- **Раскладка:** рейка иконок (76) + диалоги (296) + чат. Рейка — вход в память агента + и инструменты, это не просто мессенджер. +- **Голос:** кнопка 58 px, при записи краснеет и пульсирует. Над полем раскрывается + панель: волна, таймер и **текст, который появляется по мере речи**. +- **Три выхода из записи:** «Отправить» / «В поле ввода» (поправить руками) / «Отменить». + Голосовое сообщение в ленте рисуется с волной и кнопкой проигрывания. +- **Горячие клавиши:** Ctrl+R — запись, удержание пробела — говорить, Esc — отмена. + +## Что хорошо +- Голосом пользоваться реально удобно: видно, что тебя услышали, до отправки. +- Ошибка распознавания не улетает агенту — сначала показывается текст. + +## Что слабо +- Больше элементов на экране, надо разбираться. +- «Пробел на удержание» конфликтует с обычным набором текста — нужна аккуратность. + +## Кому +Тому, кто в основном диктует, а не печатает. diff --git a/sketches/002-rail-voice-first/index.html b/sketches/002-rail-voice-first/index.html new file mode 100644 index 0000000..b041e3a --- /dev/null +++ b/sketches/002-rail-voice-first/index.html @@ -0,0 +1,342 @@ + + + + +Вариант 2 — Rail / Voice-first + + + +
+ + + + +
+
+

Диалоги

+

локальный агент · 3 непрочитанных

+
+ +
+
+
АГ
+
+
agentik14:22
+
Собрал отчёт, жду правок
+
+
+
+
ОЧ
+
+
Отчёт за квартал12:05
+
Файл лежит на диске
+
+
+
+
РЗ
+
+
Разбор логоввчера
+
Нашёл 3 ошибки 502
+
+
+
+
ПО
+
+
Solana-бэкендвчера
+
Девайс-нет стартовал
+
+
+
+
КН
+
+
Книгипн
+
Разложил по полкам
+
+
+
+
+ + +
+
+
+
agentik
+
на связи · codding-big
+
+
+ + +
+
+ +
+
Посмотри логи за вчера14:10
+
Проверил: 3 ошибки 502 около 04:20, все — обрыв соединения с upstream. Виновник — таймаут прокси. Поправить?14:12
+ +
+ +
+ 0:07 +
+ +
Понял: увеличить таймаут до 60 секунд и перезапустить прокси. Сделал — прокси поднят заново, ошибок за последний час нет.14:20
+
+ +
+
+
ЗАПИСЬ · 0:00
+
+
+
+ + + +
+
+ +
+ +
+
Говорите — текст появится в поле ниже. Можно править перед отправкой.
+
+ + +
+
+
+ +
+ Ctrl+R — начать/стоп · Пробел (удержание) — говорить · Enter — отправить · Esc — отменить запись +
+
+
+
+ + + + diff --git a/sketches/003-three-pane-command/README.md b/sketches/003-three-pane-command/README.md new file mode 100644 index 0000000..93d444a --- /dev/null +++ b/sketches/003-three-pane-command/README.md @@ -0,0 +1,25 @@ +# Вариант 3 — Three-pane / Command center + +## Суть +Три панели: диалоги, чат и **состояние агента**. Работа агента видна не как текст +в переписке, а как отдельные раскрывающиеся шаги. + +## Ключевые решения +- **Раскладка:** 268 + центр + 306. Третья панель — модель, контекст, инструменты, + память агента, файлы сессии. +- **Шаг агента** — сворачиваемый блок: что делал, сколько заняло, детали по клику. + Это то, чем агент отличается от собеседника, и здесь оно вынесено в структуру. +- **Кнопка записи:** компактная рядом с «Отправить»; при записи снизу появляется + строка: квадрат «стоп», индикатор уровня, текущая расшифровка, таймер. +- **Короткая диктовка** (от 2 с) уходит сразу, текст остаётся в поле. + +## Что хорошо +- Видно, что агент делает прямо сейчас и сколько это стоит. +- Удобно на широком экране, ничего не надо прятать. + +## Что слабо +- На узком экране (ноутбук 1366) третью панель придётся убирать. +- Настройки сессии — не то, на что хочется смотреть постоянно. + +## Кому +Тому, кто держит агента включённым весь день и следит за расходом. diff --git a/sketches/003-three-pane-command/index.html b/sketches/003-three-pane-command/index.html new file mode 100644 index 0000000..0883251 --- /dev/null +++ b/sketches/003-three-pane-command/index.html @@ -0,0 +1,345 @@ + + + + +Вариант 3 — Three-pane / Command center + + + +
+
+
+
agentik-desktop — agentik · рабочий
+
+ агент на связи + Память: 128 заметок +
+
+ +
+ + + + +
+
+
+
agentik · рабочий
+
codding-big · контекст 34%
+
+
+
+ +
+
Разберись, почему CI красный, и выпусти релиз 314:05
+ +
+
🔍Поиск причины + готово · 4 с▼
+
Нашёл: в именах тестов длинное тире, сборка идёт в ASCII.
+ InvalidPathException: unmappable characters
+
+ +
+
✎Правка 16 имён тестов + готово · 12 с▼
+
Заменено на обычный дефис в 4 файлах. Ничего другого не тронуто.
+
+ +
+
⚙Сборка и проверка + готово · 1 м 10 с▼
+
14 модулей, тесты зелёные, jar-ы собраны.
+
+ +
Готово. CI зелёный, релиз «3» опубликован: 101 артефакт в Nexus.14:22
+
+ +
+
+ +
+ слушаю… + 0:00 + +
+ +
+
+ + +
+
+ Ctrl+R запись + Enter отправить + Shift+Enter перенос +
+
+
+ + + +
+
+ + + +