Возможности
- Полноценный браузер внутри приложения: вкладки, закладки, история, поиск по странице, скачивание файлов.
- Ввод адреса или поискового запроса в одну строку: приложение само решает, это ссылка или запрос, и ищет его в выбранном поисковике.
- Несколько вкладок одновременно. Вкладки, закладки, история и сохранённые сессии переживают перезапуск приложения.
- Стартовая страница с плитками часто открываемых сайтов — исчезает после первого перехода.
- Поиск по тексту страницы с подсветкой и переходом между совпадениями.
- Именованные сессии: можно сохранить набор вкладок под именем и вернуться к нему позже.
- Режим рабочего стола: сайт открывается как на компьютере, а не как на телефоне.
- Масштаб текста на странице — увеличить или уменьшить независимо от системного.
- Скачивание файлов в обычную папку «Загрузки» телефона, с уведомлением о завершении.
- Снимок всей длинной страницы целиком, а не только видимого куска.
Технические данные
| Параметр | Значение |
|---|---|
| Движок | системный Android WebView |
| Переключение вкладок | тапом по вкладке снизу |
| Стартовая страница | плитки часто открываемых сайтов |
| Хранение вкладок, закладок, истории | настройки приложения |
| Куки и хранилище страниц | общий профиль: один CookieManager и одно хранилище на приложение |
| Поисковик | настраивается пользователем |
| Скачивания | системная папка «Загрузки» |
| Ошибки SSL | перехватываются, показывается страница-заглушка |
Два браузера внутри приложения
Браузер работает в двух режимах:
- Видимый — то, что видите вы: обычные вкладки и вход на сайты.
- Скрытый — невидимое окно, которым пользуется ИИ-агент. Экран телефона не переключается, окно вынесено за границу экрана.
Куки и хранилище у режимов общие: это один профиль приложения, поэтому вход, сделанный вами в видимой вкладке, видит и агент, а вход, сделанный агентом, появляется в ваших вкладках. Отдельного «второго набора кук» нет — иначе один сайт видел бы с одного IP два разных устройства.
Что агент умеет с браузером
Агент работает с браузером через инструменты: в видимой сессии — если нужно показать страницу вам, в скрытой — для всей остальной работы. Скрытая сессия живёт в окне за границей экрана: экран не переключается, вы продолжаете работать в чате, а агент в это время открывает страницы, кликает и читает.
Открытие и чтение
- Открыть страницу по адресу — в видимом или скрытом браузере.
- Перейти на другой адрес, перезагрузить текущую (с обходом кэша или без).
- Получить состояние страницы: адрес, заголовок, готовность, счётчики ошибок.
- Прочитать содержимое страницы — текст целиком или часть, чтобы агент мог прочитать статью, инструкцию, документацию.
- Достать текст со скрытых фреймов страницы — например, содержимое блока, который вложен в iframe. Для этого агент сначала получает список фреймов страницы, а потом обращается к нужному по номеру.
Действия на странице
- Кликнуть по элементу, в том числе внутри конкретного фрейма.
- Ввести текст в поле, с предварительной очисткой поля.
- Выбрать значение в выпадающем списке.
- Нажать клавишу, навести курсор на элемент.
- Выполнить свой JavaScript на странице и получить результат.
- Внести свой CSS — например, чтобы временно подсветить элемент.
- Прокрутить страницу: на конкретные координаты, на смещение или к нужному элементу.
- Заполнить и отправить форму, а также прочитать её поля перед отправкой.
- Найти элемент по тексту на странице или по CSS-селектору — чтобы узнать, что именно можно нажать.
Ожидания
Вместо фиксированных пауз агент умеет ждать события:
- появления нужного элемента на странице,
- полной загрузки страницы,
- окончания сетевой активности — страница «устала» грузить.
У каждого ожидания есть ограничение по времени. Если элемент так и не появился, агент получает явную ошибку вместо того, чтобы висеть.
Диагностика «страница пустая» или «страница висит»
Четыре инструмента, которые объясняют, что происходит со страницей:
- Хронология загрузки — снимок состояния страницы во времени: что менялось, какие запросы ушли, какие зависли, и в конце — список упавших запросов с причинами. Это ответ на вопрос «открылось, но висит».
- Консоль — ошибки и предупреждения JavaScript с указанием источника.
- Сеть — все запросы страницы: адрес, код ответа, признак ошибки, причина сбоя (например, истекло время ожидания), сколько занял.
- Диалоги — всплывающие окна, которые страница пытается показать: alert, confirm, запрос текста, запрос пароля, запрос разрешений. По умолчанию простые подтверждения подтверждаются, а вопросы с выбором и вводом — отклоняются, чтобы сессия не зависла на чужом вопросе. Если нужно наоборот, агент задаёт это правило явно.
Снимки страницы
- Обычный снимок видимой области страницы.
- Снимок всей страницы — длинная страница склеивается в один кадр.
- Снимок с ожиданием — сначала дождаться нужного элемента, и только потом снимать. Иначе в кадр попадёт страница, которая ещё не отрисовалась.
- Кроп — снимок только выбранной области страницы.
- Плитки — длинная страница режется на несколько экранов, чтобы прочитать мелкий текст, который неразличим на одном кадре.
- Сравнение с предыдущим — снимок делается и сравнивается с эталоном: возвращается картинка с отмеченными различиями и процент изменившейся области. Это способ убедиться, что правка действительно что-то поменяла.
- Размер экрана на выбор — одна и та же страница проверяется в двух размерах сразу, как на компьютере и как на телефоне.
Проверка вёрстки
Отдельный инструмент проверяет страницу как продукт, в нескольких размерах экрана сразу. По каждому размеру он сообщает:
- горизонтальный вылет — какая часть страницы не помещается в экран и какой именно элемент за это отвечает. Это самая частая жалоба «сайт кривой на телефоне».
- размеры интерактивных элементов — мелкие кнопки, в которые невозможно попасть пальцем.
- заголовки — есть ли главный заголовок, какова структура заголовков.
- язык страницы — объявлен ли язык, влияющий на переносы и озвучку.
- ошибки — из консоли, страницы и сети.
Проверку можно настроить: какой размер кнопки ещё считается удобным для нажатия пальцем и сколько ждать перед началом проверки.
Просмотр глазами
Три способа посмотреть на страницу и описать её содержимое:
- посмотреть страницу — снимок и описание страницы браузера;
- посмотреть экран приложения — снимок и описание того, что сейчас на экране телефона;
- распознать картинку — описание произвольного файла изображения.
У всех трёх можно вырезать интересующий кусок кадра, чтобы не отправлять на разбор страницу целиком. Важная деталь: агенту уходит текст описания и путь к картинке, а не сама картинка в переписке — так страница не расходует токены на каждом шаге диалога.
Очистка сессии
Скрытая сессия закрывается сама через 5 минут простоя. Вручную можно закрыть её сразу и заодно стереть её данные — куки, хранилище, кэш и базу WebView. Отдельно доступна частичная очистка: только куки, только хранилище или только кэш.
Сколько всего команд
- 17 инструментов агента — то, чем он пользуется сам: открытие, навигация, чтение, клики, ввод, JavaScript, ожидания, консоль, сеть, диалоги, хронология, снимки, проверка вёрстки, очистка данных, просмотр глазами.
- около 90 команд скрытой и видимой сессии — полный низкоуровневый набор: работа с фреймами, HTML отдельных элементов, сертификаты, разрешения, загрузка файлов, сервисы, скрытая сессия целиком. Агент обращается к этому набору через мост разработчика, когда обычных инструментов не хватает.
Ограничения
- Полноэкранный снимок длинной страницы расходует заметно больше памяти, чем обычный снимок экрана.
- Сброс настроек приложения стирает вкладки, закладки, историю и сессии — они лежат в настройках, а не в отдельной базе.
- Имя скачиваемого файла приводится к безопасному виду: произвольное имя из сети на диск не пишется как есть.
- Страница с проблемным сертификатом не откроется молча — вместо неё показывается заглушка с ошибкой.