Браузерная автоматизация давно упирается в одно и то же ограничение: инструменты вроде Playwright и Chrome DevTools Protocol (CDP) работают исключительно с DOM-деревом страницы. Всё, что операционная система рендерит поверх браузера — диалог печати после вызова window.print(), запрос прав доступа macOS, окно выбора сертификата в Windows, контекстное меню по правой кнопке мыши — для этих инструментов попросту не существует. Агент видит скриншот, модель понимает, что нужно сделать, но выполнить действие нечем.
AWS решает эту проблему через OS Level Actions в сервисе AgentCore Browser. Новый набор действий передаётся через уже существующий API InvokeBrowser и работает на уровне операционной системы, а не браузерного слоя. Каждый вызов содержит ровно одно действие и возвращает статус SUCCESS или FAILED. Сессия идентифицируется через заголовок x-amzn-browser-session-id, что позволяет привязывать OS-команды к конкретному браузерному сеансу.
| Действие | Обязательные поля | Необязательные поля | Примечание |
|---|---|---|---|
| mouseClick | — | x, y, button, clickCount | По умолчанию: текущая позиция, LEFT, один клик. clickCount: 1–10 |
| mouseMove | x, y | — | Перемещает курсор к координатам |
| mouseDrag | endX, endY | startX, startY, button | Перетаскивание. button по умолчанию LEFT |
| mouseScroll | — | x, y, deltaX, deltaY | deltaY отрицательный = прокрутка вниз. Диапазон: −1000 до 1000 |
| keyType | text | — | Набор строки. Максимум 10 000 символов |
| keyPress | key | presses | Нажатие клавиши N раз. presses: 1–100, по умолчанию 1 |
| keyShortcut | keys | — | Массив клавиш. До пяти клавиш, например ["ctrl", "a"] |
| screenshot | — | format | Снимок всего рабочего стола. Возвращает PNG в base64 |
Всего поддерживается восемь действий, разбитых на три группы. Управление мышью включает mouseClick, mouseMove, mouseDrag и mouseScroll. Координаты для mouseClick необязательны — если их не указать, клик происходит в текущей позиции курсора. Прокрутка принимает значения deltaY от −1000 до 1000, где отрицательные значения соответствуют прокрутке вниз. Клавиатурный ввод разделён на три действия: keyType для набора строк длиной до 10 000 символов, keyPress для повторного нажатия одной клавиши (до 100 раз) и keyShortcut для одновременного нажатия до пяти клавиш — например, ["ctrl", "a"] для выделения всего текста. Восьмое действие — screenshot — единственное, которое возвращает данные: полный снимок рабочего стола в виде PNG в кодировке base64, включая всё, что находится за пределами окна браузера.
Скриншот захватывает весь рабочий стол целиком, включая нативные диалоги ОС, и возвращает PNG в кодировке base64.
Центральный паттерн работы — цикл «действие → скриншот → реакция». Агент выполняет действие, запрашивает скриншот, отправляет его в мультимодальную модель, получает инструкцию и переходит к следующему шагу. Такой подход позволяет реагировать на динамический интерфейс: нативные диалоги могут появляться в середине рабочего процесса, и агент их увидит через скриншот и сможет с ними взаимодействовать.
Для начала работы требуются два клиента AWS SDK: bedrock-agentcore-control для управления ресурсами браузера и bedrock-agentcore для отправки действий во время сессии. Роль IAM должна иметь разрешения bedrock-agentcore:InvokeBrowser, StartBrowserSession и StopBrowserSession. Функция доступна без дополнительной настройки для новых и существующих конфигураций AgentCore Browser в регионе us-west-2.
Контекст важен: проблема нативных диалогов — давняя боль в enterprise-автоматизации. Корпоративные веб-приложения нередко вызывают системные окна при работе с файлами, сертификатами или принтерами, и именно в таких сценариях роботизированные процессы ломаются в продакшне, хотя в тестовой среде всё работало. OS Level Actions закрывают этот gap, не требуя переписывать логику агента — достаточно добавить обработку скриншота и соответствующие вызовы API в существующий цикл автоматизации.



