Продолжение начало https://habr.com/ru/articles/956272/
Привет! Прошло время с момента выхода первой версии моего мобильного клиента для LM Studio. Приложение получило отклик, и появились идеи по его улучшению. В этой статье я расскажу о двух главных нововведениях, которые делают работу с локальными моделями ещё удобнее: мультичат и возможность выбирать модель на лету прямо в процессе диалога.
Ключевые изменения:
Основная цель обновления — сделать работу с LM Studio более гибкой и приближенной к десктопному опыту. Теперь вы не ограничены одним диалогом и можете легко переключаться между моделями, не прерывая рабочий поток. Эти функции особенно полезны, когда нужно быстро протестировать разные модели на одной задаче или вести несколько независимых проектов одновременно.
Что нового?
1. Мультичат (Управление сессиями)
Первая версия поддерживала только один непрерывный диалог. Теперь появилась полноценная система управления чатами.
Как это работает:
-
Создание: В любое время можно начать новый чат. Все диалоги автоматически сохраняются локально на устройстве.
-
Управление: У каждого чата есть заголовок (формируется автоматически из первого сообщения). Вы можете переключаться между ними, удалять ненужные или очищать историю в любой момент.
-
Интерфейс: Список всех чатов скрыт за иконкой и выезжает сверху, не загромождая основной интерфейс. Активный чат визуально выделен. Это напоминает работу с вкладками в браузере или мессенджере.
Зачем это нужно:
-
Разные задачи: Вы можете вести отдельные чаты для работы, учёбы и личных экспериментов.
-
А/Б тестирование: Легко сравнить ответы разных моделей, быстро переключаясь между чатами.
-
Сохранение контекста: Важные диалоги сохраняются и доступны в любой момент, даже после перезапуска приложения.
2. Выбор модели на лету (Без перезапуска)
Это, пожалуй, самое востребованное улучшение. Раньше, чтобы сменить модель, нужно было заходить в настройки. Теперь всё происходит прямо в главном окне чата.
Как это работает:
-
Индикатор: В заголовке экрана чата отображается название текущей активной модели.
-
Переключение: Нажав на этот индикатор, вы открываете выпадающий список со всеми загруженными в данный момент в LM Studio моделями.
-
Мгновенная смена: Выбираете новую модель из списка — и все последующие сообщения в этом же чате будут обрабатываться уже ей.
Зачем это нужно:
-
Эксперименты: Можно задать вопрос большой модели, а затем тут же уточнить его у более лёгкой, не теряя контекст диалога.
-
Скорость: Не нужно каждый раз лезть в настройки, что экономит время и делает работу более плавной.
-
Удобство: Весь процесс занимает два касания, что идеально для мобильного использования.
Техническая реализация
С архитектурной точки зрения, оба нововведения — это развитие клиентской части без изменения API LM Studio.
-
Мультичат: Вся история чатов (сообщения, заголовки, дата создания) хранится локально в структурированном виде (
SharedPreferences). Каждый чат — это независимая сессия со своим идентификатором. Переключение между ними — это просто загрузка соответствующего набора сообщений в интерфейс. -
Выбор модели на лету: При смене модели в интерфейсе приложение просто изменяет параметр
modelв JSON-теле запроса, который отправляется наPOST /v1/chat/completions. Так как LM Studio принимает название модели в каждом запросе, это работает «из коробки» и не требует никаких дополнительных действий на стороне сервера.
Для удобства использование для каждой отдельной модели нужно создать свое подключением к серверу. То есть сколько моделей столько подключений.
Заключение
Новая версия приложения делает его значительно более удобным для повседневного использования. Мультичат и быстрая смена модели — это те функции, которых не хватало для комфортной работы с LM Studio на мобильных устройствах. Приложение продолжает развиваться, и в планах — поддержка вложений (изображения, файлы) и улучшенная работа с прокси.
Исходный код, как всегда, доступен. Проект живёт, и я открыт к идеям и предложениям по улучшению. Приятного использования!
ссылка для скачивания https://www.rustore.ru/catalog/app/com.example.lm_studio_client
Что дальше? Размышления об AI-агентах
Текущая версия приложения решает задачу «поговорить с LM Studio» на мобильном устройстве. Но в процессе использования и общения с пользователями появилась следующая логичная идея: а что, если модель не просто отвечает, а выполняет реальные действия?
Сейчас LLM — это «говорящий» интерфейс. Она может написать код, но не может его выполнить. Может подсказать, как обработать файл, но не может открыть его и сделать это сама. Следующим шагом для приложения видится создание интерфейса для AI-агентов, которые умеют не только говорить, но и делать.
Что такое AI-агент в контексте этого приложения?
Агент — это расширение возможностей LLM. Пользователь даёт задачу на естественном языке, а агент:
-
Анализирует запрос.
-
Самостоятельно пишет код (например, Python).
-
Выполняет этот код в изолированной среде.
-
Возвращает готовый результат (число, файл, таблицу).
Проще говоря, из пассивного «советчика» модель превращается в активного «исполнителя».
Как это может выглядеть в интерфейсе
На данном этапе это не готовое решение, а направление для размышлений и экспериментов. Основная идея — не создавать агента с нуля, а сделать универсальный клиент, который сможет подключаться к уже существующим агентным системам.
Вариант концепции: «Выполнить задачу»
Основной сценарий выглядит так:
-
Пользователь общается с моделью в обычном чате.
-
В какой-то момент он понимает, что задачу нужно не просто обсудить, а выполнить (например, «посчитай среднее значение в этом файле»).
-
В интерфейсе появляется кнопка «Выполнить задачу».
Что видит пользователь
После нажатия кнопки открывается отдельный экран, где отображается:
-
Задача: Текст запроса, который был в чате.
-
Выбор агента: Список доступных источников выполнения (пока что теоретически — свой локальный сервер, облачный сервис, или даже OpenClaw).
-
Статус выполнения: Прозрачный лог шагов — «Читаю файл…», «Вычисляю…», «Формирую результат…».
-
Результат: Итоговый ответ, который затем можно отправить обратно в чат как сообщение от модели.
Пожелания и открытые вопросы
Реализация этой функции ставит несколько интересных задач, которые я сейчас обдумываю:
-
Универсальный протокол: Как сделать так, чтобы клиент мог работать с разными агентами (OpenClaw, собственный сервер, A2A-совместимые системы)? Сейчас видится решение через архитектуру «адаптеров», когда для каждого типа агента пишется свой небольшой слой-переходник.
-
Безопасность: Выполнение произвольного кода — это всегда риск. Необходимо продумать изоляцию (песочницу), особенно если агент будет работать с файлами пользователя.
-
Управление агентами: Пользователю нужен понятный интерфейс для подключения и настройки источников выполнения (URL, API-ключ, выбор агента из списка).
Я рассматриваю эту функцию как способ дать пользователям возможность переходить от диалога к действию максимально плавно, не покидая приложение и не погружаясь в технические детали.
Если у вас есть идеи, как это могло бы выглядеть удобнее, или какие сценарии использования агентов были бы наиболее востребованы — пишите в комментарии. Это поможет сделать приложение по-настоящему полезным инструментом.
в качестве прототипа агента на сервере я думаю использовать это https://habr.com/ru/articles/965312/
ссылка на оригинал статьи https://habr.com/ru/articles/1065272/