May 23

15. browser_cdp: запасной вариант на случай, когда обычные инструменты браузера не работают

Доступ к необработанному протоколу Chrome DevTools для iframe, встроенных диалоговых окон, проверки файлов cookie, оценки JS и отладки, когда инструментов браузера недостаточно.

У Hermes есть лазейка в браузере, которой нет у большинства агентовБольшинство браузерных агентов с искусственным интеллектом дают сбой, когда страница выглядит странно.Кнопка скрыта внутри iframe. Встроенный диалог блокирует выполнение. Проблема с файлами cookie приводит к сбою сеанса. Приложение с большим количеством JS-кода не отображает нужное состояние.У Hermes есть технический ответ на этот вопрос: browser_cdp.Это не обычный инструмент для работы с браузером. Это аварийный выход.Большинство браузерных агентов основаны на высокоуровневых действиях:

  • перейдите на страницу
  • нажмите на кнопку
  • введите в поле
  • прокрутка
  • прочтите страницу
  • сделайте снимок экрана

Это работает, пока не перестанет.

Современные веб-сайты устроены сложно. В них есть теневые DOM, iframe, встроенные диалоговые окна, скрытое состояние, маршрутизация на стороне клиента, странные схемы аутентификации, проблемы с файлами cookie, динамический рендеринг и ошибки JavaScript, которые никогда не отображаются на видимой части страницы.

Hermes Agent обеспечивает обычную работу браузера с такими высокоуровневыми инструментами, как:

browser_navigate
browser_snapshot
browser_click
browser_type
browser_console
browser_vision

Но когда этого недостаточно, Hermes показывает кое-что на более низком уровне:

browser_cdp

Это означает:

Протокол Chrome DevTools.

Это позволяет Hermes отправлять необработанные команды CDP напрямую в подключенный экземпляр Chrome.

На простом английском:

Hermes может опуститься ниже уровня «управления браузером с помощью искусственного интеллекта» и взаимодействовать с браузером так же, как DevTools. Это серьезная функция для опытных пользователей.

Почему инструментов браузера высокого уровня недостаточно

Высокоуровневые браузерные инструменты отлично подходят для большинства рабочих процессов с участием агентов.

Они позволяют модели отображать страницу в виде чистого дерева доступности. Hermes может распознавать интерактивные элементы и присваивать им ссылки, такие как @e1

или @e2

, нажимайте на кнопки, заполняйте формы, прокручивайте страницы и изучайте их содержимое.

Именно это и нужно для обычного просмотра. Но за абстракцией могут скрываться важные детали.

Например:

  • Дерево доступности может не содержать нужный вам элемент
  • Для iframe может потребоваться проверка целевого объекта
  • Встроенный диалоговый интерфейс JavaScript может блокировать страницу
  • Ошибка во внешнем интерфейсе может отображаться только в консоли
  • Сайт может сохранять критически важные данные в файлах cookie или локальном хранилище
  • SPA может отображать данные после завершения сетевых вызовов
  • Визуальное состояние может отличаться от текстового

Большинство агентов либо терпят здесь неудачу, либо видят галлюцинации.

Гермес указывает агенту путь более низкого уровня.

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

Что на самом деле делает browser_cdp

browser_cdp — это необработанный протокол Chrome DevTools.

Это означает, что Hermes может вызывать такие методы CDP, как:

Target.getTargets
Runtime.evaluate
Page.handleJavaScriptDialog
Network.getAllCookies
DOM.*
Emulation.*
Storage.*
Browser.*

В официальной документации Hermes этот инструмент описывается как запасной вариант для операций в браузере, которые не поддерживаются обычными инструментами.

Общие области применения включают:

  • встроенная обработка диалоговых окон
  • оценка в рамках iframe
  • проверка файлов cookie
  • сетевой контроль
  • прямая оценка JavaScript
  • проверка цели браузера / вкладки
  • низкоуровневые операции DOM
  • состояние страницы отладки

Пример:

browser_cdp(method="Target.getTargets")

Здесь перечислены доступные цели/вкладки браузера.

Затем команда на уровне страницы может быть направлена на конкретную вкладку:

browser_cdp(
  method="Runtime.evaluate",
  params={
    "expression": "document.title",
    "returnByValue": true
  },
  target_id="<tabId>"
)

Это не просто «нажми на кнопку».

Это значит «спросить у Chrome напрямую, что делает страница».

Вывод: browser_cdp превращает Hermes из браузера в браузерный отладчик.

Настройка намеренно явная

Функция browser_cdp доступна не всегда.

Hermes предоставляет к нему доступ только в том случае, если при запуске сеанса существует доступная конечная точка CDP.

Чистый путь — это локальная версия Chrome через:

/browser connect

В интерфейсе командной строки Hermes можно выполнить следующую команду:

/browser connect
/browser status
/browser disconnect

По умолчанию Hermes подключается к:

ws://localhost:9222

Вы также можете указать конкретную конечную точку CDP:

/browser connect ws://host:port

Если Chrome еще не запущен с функцией удаленной отладки, Hermes может попытаться его запустить.

Путь в Linux вручную выглядит так:

google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir=$HOME/.hermes/chrome-debug \
  --no-first-run \
  --no-default-browser-check &

Затем запустите Hermes из терминала и выполните команду:

/browser connect

Важная деталь:

/browser connect — это интерактивная команда для интерфейса командной строки.

Она не распознается Telegram, Discord, WebUI и другими шлюзовыми чатами. Если вы введете ее в шлюзовой чат, она будет обработана как обычный текст, а не как команда со слэшем.

Вывод: browser_cdp — это функция интерфейса командной строки/оператора. Запускайте Hermes локально, если вам нужен полный контроль над браузером.

Ментальная модель: два уровня браузера

Автоматизация браузера Hermes имеет два уровня.

Уровень 1: браузерные инструменты для агентов

Используйте их для обычных рабочих процессов:

browser_navigate
browser_snapshot
browser_click
browser_type
browser_scroll
browser_press
browser_console
browser_vision

Этот слой оптимизирован для больших языковых моделей.

Hermes преобразует страницу в текстовое дерево специальных возможностей. Агент видит такие ссылки, как @e3

, нажимает на них, вводит данные в поля и проверяет результаты.

Это путь по умолчанию.

Уровень 2: необработанный сквозной CDP

Используйте этот вариант, если первый слой не может видеть или контролировать то, что вам нужно.

browser_cdp

Этот уровень оптимизирован для опытных пользователей. Он напрямую предоставляет доступ к протоколу Chrome DevTools.

Агент может проверять цели, оценивать код JavaScript, считывать файлы cookie, обрабатывать диалоговые окна и взаимодействовать с внутренними компонентами браузера.

Вывод: Hermes не заставляет выполнять каждую задачу браузера через одну и ту же абстракцию. Он предлагает чистый путь и низкоуровневый запасной вариант.

When I would use browser_cdp

Good use cases

1. Native JavaScript dialogs

If a site opens a blocking alert, confirm, or prompt, the normal click/type loop may get stuck.

CDP can handle it directly:

Page.handleJavaScriptDialog

2. Debugging frontend state

If the page looks wrong, ask the browser directly:

Runtime.evaluate

Example expression:

document.title

Or:

window.location.href

Or app-specific state if exposed globally.

3. Cookie/session inspection

For auth issues, CDP can inspect cookies:

Network.getAllCookies

That is much more precise than guessing whether a login “worked.”

4. Iframe problems

Some pages hide the useful interaction inside nested frames.

CDP gives the agent a way to inspect targets and work closer to the browser’s real structure.

5. Frontend QA

For local web-app testing, Hermes can combine:

browser_console
browser_snapshot
browser_cdp

That means it can see the page, check the console, and query browser internals.

Takeaway: Use browser_cdp when the browser state matters more than the visible page text.

The workflow I’d teach operators

Here is the practical Hermes browser-debug workflow.

Step 1: Start Chrome with CDP

google-chrome \
  --remote-debugging-port=9222 \
  --user-data-dir=$HOME/.hermes/chrome-debug \
  --no-first-run \
  --no-default-browser-check &

Step 2: Open Hermes locally

hermes

Step 3: Connect the browser

/browser connect

Step 4: Verify the connection

/browser status

Step 5: Use normal browser tools first

Ask Hermes to navigate, inspect, click, type, and read the page normally.

Example:

Open my local app at http://localhost:3000, inspect the login flow, and check for JS errors.

Step 6: Drop to CDP only when needed

If the normal browser tools cannot reach the right state, ask Hermes to use browser_cdp.

Example:

Use browser_cdp to list targets, identify the active tab, and evaluate document.title on that tab.

Step 7: Disconnect when done

/browser disconnect

Takeaway: Treat CDP as the escalation path, not the first move.

Final takeaway

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

Вот в чем разница.

Для решения обычных задач используйте простые высокоуровневые инструменты браузера. Но если страница ведет себя странно, Hermes может подключиться к протоколу Chrome DevTools и выполнить отладку браузера напрямую.

Вот почему browser_cdp — одна из самых сложных и недооценённых функций Hermes.

Это не броско, но лучше, чем броско. Это запасной вариант на случай, если настоящая веб-автоматизация не сработает.

Больше про агентов и нейросети вы можете прочитать на моеём канале

MAX-https://max.ru/id752703975446_biz

Телеграмм-https://t.me/Novopoltsev_Pavel