Статья

ИИ-агент в браузере: как Schai GPT сам открывает сайт и почему ходит шагами

ИИ-агент в браузере: как Schai GPT сам открывает сайт и почему ходит шагами

ProfileProfile·2 ч назад·
1
··0·
Если коротко: Schai GPT умеет не только искать в интернете, но и работать с сайтом, как человек: открыть адрес, прочитать страницу, нажать кнопку, заполнить форму, дождаться результата. Делает он это не на нашем сервере, а в браузере Schai на вашем компьютере — в той вкладке, которую вы видите рядом с панелью чата. Модель при этом не смотрит на экран, а получает текстовый «план» страницы с метками у каждой кнопки и поля. Ходит она строго по одному действию за раз, а вместо вопроса «вы уверены?» перед каждым кликом в коде стоят запреты: банки и платёжные сайты, домашняя сеть и системные страницы для агента закрыты.
Это Profile. Я разбираю, как устроены инструменты Schai, по коду, а не по рекламным обещаниям. Сегодня — шесть инструментов, которые в коде называются `page_open`, `page_read`, `page_click`, `page_type`, `page_fill` и `page_wait`. Расскажу, что из этого следует на практике, где проходят границы и почему агент в браузере устроен иначе, чем поиск.

Поиск приносит ответ, агент делает действие

Когда вы спрашиваете нейросеть «где купить наушники подешевле», обычный путь — веб-поиск: модель отправляет запрос поисковику, получает выдачу со сниппетами и пересказывает её. Это чтение чужого пересказа. Страница магазина, фильтры, корзина, форма заявки до модели не доходят, а нажать на сайте она ничего не может.
Агент в браузере работает по-другому. Он не пересказывает выдачу, а сам заходит на сайт и пользуется им: печатает запрос в поле поиска, переключает раздел, ставит галочку, отправляет форму и читает, что ответил сайт. Поэтому в Schai GPT это отдельный набор инструментов. В описании `page_open` прямо сказано, когда за него браться: просят «открой сайт», «зайди на…», «найди на ozon/авито/яндексе…». Адрес можно передать сразу с поисковым запросом, например страницу поиска маркетплейса с нужным словом. Тогда первый же шаг приносит готовую выдачу магазина.
Отсюда и главная разница. Поиск отвечает на вопрос «что известно в интернете». Агент отвечает на вопрос «что сейчас на этой странице и что будет, если на ней что-то сделать». Это два разных инструмента, и Schai GPT выбирает между ними по смыслу просьбы.

Где на самом деле работает браузер

Здесь легко ошибиться, поэтому сразу по фактам. Ни один браузер на сервере Schai по вашей просьбе не запускается. Сервер отвечает за мышление: модель на нём смотрит на задачу и на итоги прошлых шагов и выбирает следующее действие. Само действие выполняет Schai, наш браузер для Windows и macOS. Он скачивается с browser.schai.ru, и чат с ИИ живёт в нём боковой панелью.
Панель получает от сервера команду вроде «нажми e7» и передаёт её браузеру. Браузер выполняет её во вкладке рядом и возвращает снимок страницы. Этот снимок уходит модели, и она решает, что делать дальше.
Из такой схемы следует несколько вещей, которые полезно знать заранее.
Во-первых, агент работает с вашей вкладкой и вашими входами. Если вы уже залогинены на сайте, он видит страницу так же, как вы. Если нет, он упрётся в страницу входа, как и вы бы упёрлись.
Во-вторых, в обычном Chrome, на телефоне и на сайте schai.ru этих инструментов нет вовсе. Сервер убирает их из списка доступных, если не получил от браузера Schai адрес открытой вкладки. Без вкладки модели даже запрещено упоминать «нажать на сайте» как возможность.
В-третьих, для `page_open` нужна достаточно свежая версия браузера: в коде панели прописано, что открывать сайты по просьбе умеет версия 0.45.174 и новее. На старой агент ответит, что браузер нужно обновить.
Модель думает на сервере, а кнопки нажимает браузер Schai на вашем компьютере. Между ними — панель чата

Что ИИ видит на странице: не картинку, а опись

Распространённое представление об агентах в браузере такое: модель «смотрит на скриншот» и тычет курсором в координаты. В Schai устроено иначе. Браузер обходит страницу и собирает текстовую опись: адрес, заголовок, основной текст, подзаголовки, выделенный вами фрагмент. Отдельно идут интерактивные элементы, и у каждого есть короткая метка `e1`, `e2`, `e3`. Например: «e5 поле "Город" = "Казань"», «e8 галочка [не отмечено]», «e12 список, варианты: Москва | Казань | Пермь».
Это близко к тому, как браузер описывает страницу программам экранного доступа. В дереве доступности у элемента есть роль (кнопка, ссылка, поле), имя и состояние, и агенту нужно примерно то же самое. Опись короче картинки и точнее координат. Нажимая «e12», модель не промахнётся на соседнюю кнопку, даже если страница сдвинулась.

Сколько страницы доходит до модели

Браузер собирает много, до 30 тысяч знаков текста, но модели передаётся выжимка. Это до 6000 знаков текста страницы, до 25 подзаголовков и до 80 элементов с метками. После каждого действия приходит короткий снимок: до 2500 знаков и до 60 элементов. Поэтому на длинных страницах агент видит начало, а не всё подряд. Если нужное ниже, ему придётся перейти в раздел или нажать «показать ещё».

Чего модель не видит

Значения полей с паролями, токенами, одноразовыми кодами и данными карт в опись не попадают. Браузер распознаёт такие поля по типу и названию и отдаёт модели только подпись поля, без содержимого. Ваш сохранённый пароль в форме входа модель не прочитает, даже если он уже подставлен.

Почему агент ходит шагами, а не делает всё сразу

Кажется, что быстрее было бы составить сценарий целиком: «открой, введи, нажми, прочитай» за один вызов. Но страница непредсказуема. После клика может выскочить окно с cookie, сайт может перерисовать раздел, подставить подсказку или выдать ошибку. Сценарий, написанный заранее, ломается на первом же сюрпризе.
Поэтому Schai GPT работает по схеме, которую в исследованиях называют чередованием рассуждения и действия. Её хорошо описали авторы работы ReAct: модель думает, делает одно действие, смотрит на результат и думает снова. В коде это видно буквально. Каждый шаг — отдельный запрос к серверу, на который модель отвечает ровно одним инструментом или финальным ответом. Действие на странице сразу возвращает снимок «после», и модели не нужно гадать, сработало ли.
Есть тонкость со скоростью сайтов. После клика современная страница ещё секунду-две дорисовывается. Если прочитать её сразу, можно увидеть только меню и решить, что «ничего не открылось». Поэтому панель после действия перечитывает страницу несколько раз, примерно до четырёх секунд, пока текст и адрес не перестанут меняться. Плашку «Загрузка…» она не считает готовой страницей. Для совсем медленных сайтов есть `page_wait`: ждать появления нужного текста или элемента. По умолчанию браузер ждёт 8 секунд, максимум 30.

Предохранители от хождения по кругу

Каждый шаг — это вызов модели, а значит деньги и время. Обычная задача агента ограничена 10 шагами. Как только агент начинает действовать на странице, потолок поднимается до 20: отписаться от сервиса в личном кабинете — это найти раздел, раскрыть, нажать, подтвердить и проверить. Вдобавок сервер обрывает цикл, если тот же инструмент с теми же аргументами уже успешно отработал. Исключение сделано только для повторного чтения после клика или ввода, ведь это уже другая страница. Подробнее о том, как Schai GPT ведёт план и проверяет себя в конце, мы писали в разборе агентного режима.

А где подтверждение? Честный ответ

В SSH-инструменте Schai GPT каждая команда ждёт, пока вы нажмёте «Выполнить». В браузере такой кнопки перед каждым кликом нет. Это сознательное решение: агенту для одной задачи нужно несколько мелких действий подряд, и окно «вы уверены?» на каждое превратило бы помощника в анкету. Контроль устроен по-другому, в несколько слоёв.
Общий выключатель. В шапке панели есть переключатель «Агент управляет страницей». Пока панель открыта, он по умолчанию включён. Если его выключить, агент сможет читать страницу, но кликать, вводить и открывать сайты браузер ему не даст и ответит, что управление выключено пользователем.
Видимость. Каждое действие агента браузер показывает всплывающей подсказкой вида «Агент: клик e7» или «Агент: заполнение формы (3)». Происходит всё в видимой вкладке, а не в фоне.
Стоп и подсказки по ходу. Работу можно остановить кнопкой «Стоп». Можно и дописать указание, не дожидаясь конца: оно попадёт к модели на следующем шаге как «указание пользователя по ходу задачи».
Запреты в самом браузере. Это главный слой, потому что он не зависит от того, что «решила» модель. Браузер отказывается действовать на банковских и платёжных сайтах: в списке Сбер, Т-Банк, Альфа, ВТБ, ЮKassa, ЮMoney, СБП, PayPal, Stripe и десятки других. Он не открывает localhost и адреса домашней сети (роутер, NAS) и не трогает системные страницы вроде `file:` и `chrome:`. Файл в поле загрузки агент не подставит: такое поле заполнить нельзя.
Почему запреты важнее вежливого «вы уверены?». Агент читает текст чужих страниц, а в тексте может оказаться что угодно, включая фразы, написанные для нейросетей. OWASP в своём перечне рисков языковых моделей называет это непрямой промпт-инъекцией: инструкция приходит не от пользователя, а из сайта или файла и может изменить поведение модели. Полностью защититься от этого словами в промпте нельзя. Поэтому самые опасные места закрыты на уровне браузера, куда текст страницы не дотягивается. Ещё одна деталь: метки элементов и служебный код агента браузер держит в изолированном контексте, куда скрипты сайта не дотягиваются. Это тот же принцип, что и изоляция контекстов в Electron, на котором построен браузер. Текст страницы для агента — только данные, он не исполняется. Где вообще проходит граница между «агенту можно» и «агенту нельзя», когда дело касается денег, мы разбирали отдельно.
Что агенту разрешено на странице, что закрыто кодом браузера и какие рычаги остаются у вас

Что реально можно попросить

Ниже только то, что поддерживает код. Никаких «закажи мне ужин и оплати».
Ответить про открытую вкладку. «Что у меня тут открыто?», «какие треки на этой странице?», «какой тариф здесь дешевле?». Агент один раз читает страницу и отвечает по ней. В коде даже есть отдельный самотест на такой случай: страница артиста в Яндекс Музыке и вопрос «какие треки у меня сейчас открыты».
Найти на сайте. «Найди на озоне беспроводные наушники». Агент откроет страницу поиска с запросом и перечислит, что показал магазин. Цены он берёт со страницы, а не из памяти модели.
Найти расписание или раздел. Открыть сайт, нажать нужный пункт меню, дождаться загрузки и пересказать. Например, расписание занятий на сайте секции или условия доставки в магазине.
Заполнить форму. Заявка, анкета, обратная связь. `page_fill` заполняет несколько полей за один шаг: текстовые поля, выпадающие списки по тексту варианта, галочки и переключатели. Тем же шагом можно нажать кнопку отправки, и в ответе будет страница после отправки с номером заявки или текстом ошибки.

Где агент споткнётся

Сравнение нескольких сайтов в одной просьбе. Описание `page_open` предлагает открывать «другой сайт», но предохранитель от повторов не числит его среди повторяемых инструментов. Второй `page_open` в той же задаче после пары шагов может оборвать работу фразой «больше ничего нового». Надёжнее разбить: сначала один магазин, потом отдельной просьбой второй.
Капчи и проверки «вы не робот». Обходить их код не пытается. Клики агент делает программно, а у таких событий, как описывает MDN, признак `isTrusted` равен false, так что сайт технически может отличить их от ваших. Капчу проходите сами, дальше агент продолжит.
Вход и оплата. Пароль модель не видит, а платёжные страницы для неё закрыты. Войти в аккаунт и заплатить — ваша часть работы.
Длинные страницы. До модели доходит начало текста, поэтому «прочитай весь каталог на 40 экранов» не получится. А «найди в каталоге конкретную модель» — нормальная задача.

Кому это доступно

Нужен браузер Schai для Windows или macOS с открытой панелью чата и аккаунт Schai. Отдельного тарифа именно под браузерного агента в коде нет. Каждый шаг агента — обычный вызов модели, он списывается из токенов Schai так же, как остальная работа Schai GPT. Это ещё одна причина, зачем нужны предохранители от кружения: агент, который бесконечно перечитывает одну страницу, тратил бы ваш баланс впустую. Если хотите посмотреть на агента в деле, можно попробовать Schai GPT на главной, а для действий во вкладке открыть его в браузере Schai.
Если вам ближе контроль «каждое действие — по кнопке», посмотрите, как мы сделали это для серверов. Там цена ошибки выше, поэтому и подтверждение строже.

Коротко

• Поиск пересказывает интернет, агент в браузере пользуется сайтом сам: открывает, читает, жмёт, заполняет. • Думает модель на сервере, а действует браузер Schai на вашем компьютере, в вашей вкладке и с вашими входами. В обычном Chrome и на телефоне этого нет. • Модель видит не скриншот, а опись страницы с метками элементов. Значения паролей и карт в неё не попадают. • Агент ходит по одному действию и после каждого смотрит на результат. Потолок 10 шагов, на странице 20. • Подтверждения на каждый клик нет. Вместо него есть выключатель, «Стоп», видимые подсказки и жёсткие запреты: банки и платёжные сайты, домашняя сеть, системные страницы, загрузка файлов. • Лучшие задачи: «что тут открыто», «найди на сайте», «заполни заявку». Сравнение нескольких магазинов разбивайте на отдельные просьбы.
0

Пока нет комментариев

ИИ-агент в браузере: как Schai GPT сам работает с сайтом