y83 code / справочник

Браузер

Браузер внутри приложения: вкладки, закладки, история и скачивание файлов — плюс скрытый браузер, в котором работает агент, не переключая ваш экран.

раздел
Подсистемы приложения
пунктов возможностей
54
источник
docs/about/browser.md

Возможности

  • Полноценный браузер внутри приложения: вкладки, закладки, история, поиск по странице, скачивание файлов.
  • Ввод адреса или поискового запроса в одну строку: приложение само решает, это ссылка или запрос, и ищет его в выбранном поисковике.
  • Несколько вкладок одновременно. Вкладки, закладки, история и сохранённые сессии переживают перезапуск приложения.
  • Стартовая страница с плитками часто открываемых сайтов — исчезает после первого перехода.
  • Поиск по тексту страницы с подсветкой и переходом между совпадениями.
  • Именованные сессии: можно сохранить набор вкладок под именем и вернуться к нему позже.
  • Режим рабочего стола: сайт открывается как на компьютере, а не как на телефоне.
  • Масштаб текста на странице — увеличить или уменьшить независимо от системного.
  • Скачивание файлов в обычную папку «Загрузки» телефона, с уведомлением о завершении.
  • Снимок всей длинной страницы целиком, а не только видимого куска.

Технические данные

ПараметрЗначение
Движоксистемный Android WebView
Переключение вкладоктапом по вкладке снизу
Стартовая страницаплитки часто открываемых сайтов
Хранение вкладок, закладок, историинастройки приложения
Куки и хранилище страницобщий профиль: один CookieManager и одно хранилище на приложение
Поисковикнастраивается пользователем
Скачиваниясистемная папка «Загрузки»
Ошибки SSLперехватываются, показывается страница-заглушка

Два браузера внутри приложения

Браузер работает в двух режимах:

  • Видимый — то, что видите вы: обычные вкладки и вход на сайты.
  • Скрытый — невидимое окно, которым пользуется ИИ-агент. Экран телефона не переключается, окно вынесено за границу экрана.

Куки и хранилище у режимов общие: это один профиль приложения, поэтому вход, сделанный вами в видимой вкладке, видит и агент, а вход, сделанный агентом, появляется в ваших вкладках. Отдельного «второго набора кук» нет — иначе один сайт видел бы с одного IP два разных устройства.

Что агент умеет с браузером

Агент работает с браузером через инструменты: в видимой сессии — если нужно показать страницу вам, в скрытой — для всей остальной работы. Скрытая сессия живёт в окне за границей экрана: экран не переключается, вы продолжаете работать в чате, а агент в это время открывает страницы, кликает и читает.

Открытие и чтение

  • Открыть страницу по адресу — в видимом или скрытом браузере.
  • Перейти на другой адрес, перезагрузить текущую (с обходом кэша или без).
  • Получить состояние страницы: адрес, заголовок, готовность, счётчики ошибок.
  • Прочитать содержимое страницы — текст целиком или часть, чтобы агент мог прочитать статью, инструкцию, документацию.
  • Достать текст со скрытых фреймов страницы — например, содержимое блока, который вложен в iframe. Для этого агент сначала получает список фреймов страницы, а потом обращается к нужному по номеру.

Действия на странице

  • Кликнуть по элементу, в том числе внутри конкретного фрейма.
  • Ввести текст в поле, с предварительной очисткой поля.
  • Выбрать значение в выпадающем списке.
  • Нажать клавишу, навести курсор на элемент.
  • Выполнить свой JavaScript на странице и получить результат.
  • Внести свой CSS — например, чтобы временно подсветить элемент.
  • Прокрутить страницу: на конкретные координаты, на смещение или к нужному элементу.
  • Заполнить и отправить форму, а также прочитать её поля перед отправкой.
  • Найти элемент по тексту на странице или по CSS-селектору — чтобы узнать, что именно можно нажать.

Ожидания

Вместо фиксированных пауз агент умеет ждать события:

  • появления нужного элемента на странице,
  • полной загрузки страницы,
  • окончания сетевой активности — страница «устала» грузить.

У каждого ожидания есть ограничение по времени. Если элемент так и не появился, агент получает явную ошибку вместо того, чтобы висеть.

Диагностика «страница пустая» или «страница висит»

Четыре инструмента, которые объясняют, что происходит со страницей:

  • Хронология загрузки — снимок состояния страницы во времени: что менялось, какие запросы ушли, какие зависли, и в конце — список упавших запросов с причинами. Это ответ на вопрос «открылось, но висит».
  • Консоль — ошибки и предупреждения JavaScript с указанием источника.
  • Сеть — все запросы страницы: адрес, код ответа, признак ошибки, причина сбоя (например, истекло время ожидания), сколько занял.
  • Диалоги — всплывающие окна, которые страница пытается показать: alert, confirm, запрос текста, запрос пароля, запрос разрешений. По умолчанию простые подтверждения подтверждаются, а вопросы с выбором и вводом — отклоняются, чтобы сессия не зависла на чужом вопросе. Если нужно наоборот, агент задаёт это правило явно.

Снимки страницы

  • Обычный снимок видимой области страницы.
  • Снимок всей страницы — длинная страница склеивается в один кадр.
  • Снимок с ожиданием — сначала дождаться нужного элемента, и только потом снимать. Иначе в кадр попадёт страница, которая ещё не отрисовалась.
  • Кроп — снимок только выбранной области страницы.
  • Плитки — длинная страница режется на несколько экранов, чтобы прочитать мелкий текст, который неразличим на одном кадре.
  • Сравнение с предыдущим — снимок делается и сравнивается с эталоном: возвращается картинка с отмеченными различиями и процент изменившейся области. Это способ убедиться, что правка действительно что-то поменяла.
  • Размер экрана на выбор — одна и та же страница проверяется в двух размерах сразу, как на компьютере и как на телефоне.

Проверка вёрстки

Отдельный инструмент проверяет страницу как продукт, в нескольких размерах экрана сразу. По каждому размеру он сообщает:

  • горизонтальный вылет — какая часть страницы не помещается в экран и какой именно элемент за это отвечает. Это самая частая жалоба «сайт кривой на телефоне».
  • размеры интерактивных элементов — мелкие кнопки, в которые невозможно попасть пальцем.
  • заголовки — есть ли главный заголовок, какова структура заголовков.
  • язык страницы — объявлен ли язык, влияющий на переносы и озвучку.
  • ошибки — из консоли, страницы и сети.

Проверку можно настроить: какой размер кнопки ещё считается удобным для нажатия пальцем и сколько ждать перед началом проверки.

Просмотр глазами

Три способа посмотреть на страницу и описать её содержимое:

  • посмотреть страницу — снимок и описание страницы браузера;
  • посмотреть экран приложения — снимок и описание того, что сейчас на экране телефона;
  • распознать картинку — описание произвольного файла изображения.

У всех трёх можно вырезать интересующий кусок кадра, чтобы не отправлять на разбор страницу целиком. Важная деталь: агенту уходит текст описания и путь к картинке, а не сама картинка в переписке — так страница не расходует токены на каждом шаге диалога.

Очистка сессии

Скрытая сессия закрывается сама через 5 минут простоя. Вручную можно закрыть её сразу и заодно стереть её данные — куки, хранилище, кэш и базу WebView. Отдельно доступна частичная очистка: только куки, только хранилище или только кэш.

Сколько всего команд

  • 17 инструментов агента — то, чем он пользуется сам: открытие, навигация, чтение, клики, ввод, JavaScript, ожидания, консоль, сеть, диалоги, хронология, снимки, проверка вёрстки, очистка данных, просмотр глазами.
  • около 90 команд скрытой и видимой сессии — полный низкоуровневый набор: работа с фреймами, HTML отдельных элементов, сертификаты, разрешения, загрузка файлов, сервисы, скрытая сессия целиком. Агент обращается к этому набору через мост разработчика, когда обычных инструментов не хватает.

Ограничения

  • Полноэкранный снимок длинной страницы расходует заметно больше памяти, чем обычный снимок экрана.
  • Сброс настроек приложения стирает вкладки, закладки, историю и сессии — они лежат в настройках, а не в отдельной базе.
  • Имя скачиваемого файла приводится к безопасному виду: произвольное имя из сети на диск не пишется как есть.
  • Страница с проблемным сертификатом не откроется молча — вместо неё показывается заглушка с ошибкой.

Источник: docs/about/browser.md. Страница собрана из документации проекта при сборке сайта — без пересказа.