Запускаем на телефоне мессенджер с ИИ-агентами на примере octo-android
В большинстве корпоративных чатов боты умеют разве что присылать алерты из системы мониторинга или просить подтверждение заявки на отпуск. Разработчики из Mininglamp-OSS решили пойти дальше и создали платформу OCTO. Концепция простая: рутинные задачи и первичные размышления берут на себя цифровые двойники, а человеку остается оценивать результат и принимать решения.
Репозиторий octo-android представляет собой официальный мобильный клиент этой платформы. В отличие от большинства современных корпоративных мессенджеров, авторы не стали заворачивать веб-приложение в WebView. Нам предлагают нативный софт на Kotlin и Java.
Чем интересна архитектура и реализация
За основу мобильного клиента авторы взяли проект TangSengDaoDaoAndroid и сетевой движок WuKongIM. Приложение общается с бэкендом через REST API и постоянное соединение по протоколу WebSocket.
Вот из чего собирается клиентская часть:
- Модуль
wukong-sdkотвечает за транспортировку сообщений в реальном времени. - Локальное хранилище организовано на Room DB. История переписки и некэшированные черновики сохраняются прямо на устройстве.
- Токены авторизации складываются в защищенный EncryptedSharedPreferences.
- Фоновые уведомления приходят через стандартный сервис и Firebase Cloud Messaging.
Интерфейс сверстан с соблюдением гайдлайнов Material 3. Часть экранов написана на Jetpack Compose, а часть использует классическую XML-разметку. Отдельный пакет agent содержит компоненты для работы с ИИ: отслеживание статуса генерации, предпросмотр вызова инструментов и визуализацию ответов в режиме стриминга.
Каково это собирать и кастомизировать
Разработчики декларируют принцип local-first. Все данные принадлежат пользователю, а бэкенд octo-server на Go легко разворачивается на собственном сервере.
Если захочется собрать приложение из исходников под нужды своей компании, придется пройти обязательный чек-лист. Проект выложен без встроенных секретов и чужих ключей:
- Изменить стандартный
applicationIdсcom.example.octoна домен своей организации. - Создать проект в Firebase и закинуть собственный
google-services.jsonв папочку модуля. - Сгенерировать keystore для подписи релизной сборки и прописать его в Gradle.
- Указать адрес своего инстанса
octo-serverв файлеconfig.xml.
Без выполнения первых трех пунктов Gradle откажется собирать финальный файл. Зато в коде точно нет посторонних зашитых закладок или тестовых сертификатов.
git clone https://github.com/Mininglamp-OSS/octo-android.git
cd octo-android
# Сборка отладочной версии через CLI
./gradlew :app:assembleDebug
# Установка на подключенное устройство
./gradlew :app:installDebug
Для быстрого знакомства можно не собирать проект вручную. В разделе Releases авторы выкладывают готовые APK. Достаточно установить приложение на смартфон и ввести адрес сервера при входе.
Экосистема и единый протокол
Сам репозиторий octo-android открывает лишь часть общей системы. Серверную логику держит octo-server, менеджер задач вынесен в octo-matter, а за автоматический саммари диалогов отвечает сервис octo-smart-summary.
Все клиенты — мобильные приложения и десктопная версия на React — работают по одному протоколу и используют общие ключи локализации. Это упрощает поддержку: логика работы ИИ-агентов или отображение статусов печати не требуют отдельных переработок под каждую платформу.
Кому пригодится проект
Репозиторий пригодится командам, которые ищут открытый мессенджер с возможностью селф-хостинга и нативной поддержкой LLM-агентов. Также исходники octo-android будут полезны Android-разработчикам. Здесь можно подсмотреть реализацию транспортного слоя на базе WuKongIM, организацию оффлайн-кэширования в Room и удобный интерфейс для стриминга ответов нейросети.
