Есть проект: агент на базе Ollama живет на телефоне, а управлять им можно из браузера. Стек простой: Python Flask, ADB для связи с устройством и веб-интерфейс в виде чата. Вся магия происходит на localhost — никаких внешних серверов.
Почему это интересно
Обычно AI-агенты работают в облаке: вы отправляете запрос на сервер, он думает и возвращает ответ. Здесь всё наоборот: модель запущена прямо на телефоне, команды уходят через ADB, а браузер служит только пультом. Это означает, что данные не покидают устройство, нет задержек сети и не нужен интернет для работы. Плюс такой стек можно использовать для автоматизации: написал команду на естественном языке — агент выполнил действие на телефоне.
Как устроен проект
Серверная часть написана на Flask и обернута в REST API. Три эндпоинта:
- /status — проверяет, подключены ли Ollama и ADB;
- /command — принимает команду на естественном языке и возвращает результат;
- /history — отдает последние 20 команд.
Веб-интерфейс — это отдельный HTML-файл в стиле чата: темная терминальная тема, золотые акценты. Вверху строка статуса, в середине история диалога, внизу поле ввода. Есть примеры команд, которые можно кликнуть, состояния загрузки и сообщения об ошибках.
Интерфейс общается с Flask на localhost:5000. Flask — с агентом, агент — с телефоном через ADB. Вся цепочка работает локально.
Что пошло не так
В блог-логе проекта честно перечислены проблемы, с которыми сталкивается почти каждый разработчик. Они того стоят, чтобы их запомнить.
- Flask отказывался отдавать HTML-файл 45 минут, потому что send_file требует абсолютный путь.
- Статус определ ADB возвращал false из-за неправильной строки в выводе.
- CORS-ошибки из-за забытого flask-cors — десять минут на одну строчку.
- Кнопка отправки не работала из-за опечатки в getElementById — тридцать минут на один символ.
Эта часть особенно полезна, если вы собираете такой же проект. Ошибки типичны, и лучше сразу знать, где их искать.
Компоненты системы
| Компонент | Роль | Что делает |
|---|---|---|
| Flask (server.py) | Бэкенд | Отдает API, обслуживает веб-интерфейс |
| Web interface (interface.html) | Фронтенд | Чат для ввода команд, отображение статуса |
| Ollama | Языковая модель | Выполняет команды, генерирует ответы |
| ADB | Мост к телефону | Позволяет агенту выполнять действия на устройстве |
Как повторить
Сейчас процесс установки всё еще ручной. Выглядит так: установить Termux, стянуть Ollama, настроить ADB, запустить сервер, открыть браузер. Много шагов, и каждый можно забыть или перепутать. Автор проекта планирует написать скрипт, который сделает всё одной командой.
Если хотите попробовать сами, начните с проверки, что ADB видит ваш телефон, а Ollama отвечает на простой запрос. Потом поднимайте Flask и привязывайте интерфейс. Ошибки из лога — ваши лучшие подсказки.
Что дальше
План следующий: день 21 — скрипт установки, день 22 — end-to-end тесты, день 23 — релиз v1.0. End-to-end тестирование пока не проводилось: агент работает в контролируемых сценариях, но реальная надежность еще проверяется.
Это не просто очередная поделка. Это пример, как связать локальную языковую модель с реальным устройством и получить удобный интерфейс. Без облаков, без лишних серверов, только телефон и код.
Комментарии (0)
Войдите, чтобы комментировать.
Пока нет комментариев. Будьте первым.