Gyred
Пульт управления AI-агентами как нативное окно на рабочем столе, отрисованное без браузера (Rust + Dioxus). Одно место для всех сессий: что ждет, что работает, что запланировано и весь разговор. Тот же код компилируется и под другие платформы.
Нативное десктопное окно для ведения множества сессий AI-агентов одновременно, собранное на Rust + Dioxus и рендерящееся без браузера. Все сессии в одном месте - что ждёт решения, что работает, что запланировано, плюс полный диалог с каждой - вместо десятков вкладок и постоянного переключения.
Введение
Gyred - это десктопное воплощение пульта управления AI-агентами из семейства Gyre. Gyre - это одно место, в котором ведут множество сессий одновременно: вы видите их, общаетесь с ними, планируете работу и получаете сигнал, когда что-то требует человека. Этот кейс посвящён десктопному клиенту - окну, в котором этот пульт живёт весь день, рядом с остальными инструментами разработчика.
Важный принцип всего Gyre: панель никогда не владеет сессией. Что бы вы ни видели в окне, вы откроете это и в своём собственном терминале - Gyred это удобный вид на сессии, а не клетка для них. Для того же workflow есть отдельный клиент для телефона; десктоп делает ставку на плотность информации и клавиатуру за столом.
Проблема десяти вкладок
Когда вы ведёте одну сессию агента, достаточно вкладки браузера. Когда ведёте десять, вкладка превращается в ловушку. Вы не видите сразу, какая сессия остановилась и ждёт вашего решения, а какая всё ещё мелет своё. Вы переключаетесь по кругу, теряете нить и пропускаете момент, когда агент застрял на вопросе - а именно этот момент самый дорогой, потому что сессия стоит и ничего не делает, пока вы не ответите.
Gyred переворачивает эту компоновку. Вместо одного окна на сессию - одно окно на все сессии, с чётким разделением на то, что требует человека сейчас, и то, что спокойно работает дальше. Список слева показывает состояние всего, панель справа - полный диалог с выбранной сессией. Вам не нужно помнить, где спряталась та одна, что ждёт; она сама выходит наверх.
Это разница между управлением вниманием и его рассеиванием. Десять вкладок требуют, чтобы вы сами то и дело проверяли каждую по отдельности. Одно окно с ясным состоянием делает это за вас и освобождает вас от необходимости следить.
Rust и Dioxus вместо второго браузера
Приложение, которое должно работать в фоне весь день и обновлять состояние многих сессий в прямом эфире, не может пожирать ресурсы как второй браузер. Поэтому вместо Electron мы пошли в Rust с Dioxus. Dioxus позволяет писать интерфейс в стиле компонентов, знакомом по фронту, но компилируется в нативный бинарник - без упаковки целого движка Chromium только для того, чтобы нарисовать список и текстовое поле.
На практике это означает окно, которое стартует сразу и держит низкий след памяти даже при десятке открытых сессий. Для инструмента, который должен быть включён всё время, это не косметика - это разница между программой, о которой вы забываете, и такой, которая греет ноутбук в фоне.
След памяти на старте (ориентировочно, МБ)
Одно ядро, много воплощений
Gyred - не отдельная программа рядом с панелью и мобильным приложением. Ядро сессии - соединение, очередь событий, состояние каждого диалога, правила того, что требует человека - живёт в слое на Rust, независимом от того, что его рисует. Вид на Dioxus - это оболочка над этим ядром, связанная с ним через общие типы, а не через отдельный API к самому себе.
То же решение даёт бонус, который выпал как бы по пути: код компонентов целится и в другие платформы. Вы пишете вид один раз, а логика сессии одна для всех воплощений Gyre. Новое правило или новое состояние сессии ловится в ядре и появляется везде одним и тем же коммитом, вместо того чтобы быть переписанным три раза и сломанным три раза по-разному.
Кто ждёт, тот наверху
Вся ценность такого окна сводится к одному: никогда не пропустить сессию, которая ждёт вас. Поэтому сортировка идёт не по времени создания, а по тому, требует ли сессия человека. Один агент, заблокированный на вопросе, должен быть наверху списка, а не зарыт среди десяти, которые всё ещё работают.
Простое правило, которое меняет комфорт работы: сортируйте сессии по тому, ждут ли они человека, а не по времени создания. Очередь выстраивается сама, а вы смотрите только на верх списка вместо того, чтобы сканировать всё в поисках той одной, которая остановилась.
соединение, очередь событий и состояние каждой сессии в слое, независимом от вида.
список сессий и полный диалог как компоненты, связанные с ядром через общие типы.
сессии, ждущие решения, попадают наверх, остальные ниже, чтобы ничего не потерялось.
компиляция в нативное окно, которое быстро стартует и держит низкий след памяти.
Каков итоговый результат
Вместо охоты по вкладкам вы получаете один экран, на котором сразу видно, где ваша очередь. Вы отвечаете сессии прямо из окна, возвращаетесь к своей работе, а агенты работают дальше. Меньше переключений, меньше пропущенных решений, меньше сессий, стоящих в пустоте только потому, что вы не заметили вопрос.
А поскольку это нативный бинарник, а не обёрнутая страница, окно ведёт себя как остальные программы на рабочем столе: стартует мгновенно, не давит на память и не теряется в гуще вкладок. Ядро на Rust одно для всех воплощений Gyre, поэтому десктоп - не отдельный проект для поддержки - он растёт вместе с панелью и мобильным приложением.
Одно окно, в котором сразу видно, чья очередь - остальное само выстраивается в очередь.
Больше проектов
Другие работы из той же категории - посмотрите, как мы решаем похожие задачи.
Есть похожий проект?
Напишите нам - смета бесплатна и приходит в течение часа.



