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
Это позволяет 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
Используйте этот вариант, если первый слой не может видеть или контролировать то, что вам нужно.
Этот уровень оптимизирован для опытных пользователей. Он напрямую предоставляет доступ к протоколу Chrome DevTools.
Агент может проверять цели, оценивать код JavaScript, считывать файлы cookie, обрабатывать диалоговые окна и взаимодействовать с внутренними компонентами браузера.
Вывод: Hermes не заставляет выполнять каждую задачу браузера через одну и ту же абстракцию. Он предлагает чистый путь и низкоуровневый запасной вариант.
When I would use browser_cdp
If a site opens a blocking alert, confirm, or prompt, the normal click/type loop may get stuck.
Page.handleJavaScriptDialog
If the page looks wrong, ask the browser directly:
Runtime.evaluate
document.title
window.location.href
Or app-specific state if exposed globally.
For auth issues, CDP can inspect cookies:
Network.getAllCookies
That is much more precise than guessing whether a login “worked.”
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.
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.
google-chrome \ --remote-debugging-port=9222 \ --user-data-dir=$HOME/.hermes/chrome-debug \ --no-first-run \ --no-default-browser-check &
hermes
/browser connect
/browser status
Step 5: Use normal browser tools first
Ask Hermes to navigate, inspect, click, type, and read the page normally.
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.
Use browser_cdp to list targets, identify the active tab, and evaluate document.title on that tab.
/browser disconnect
Takeaway: Treat CDP as the escalation path, not the first move.
Final takeaway
Большинство браузерных агентов предоставляют вам руль управления. Hermes также предоставляет доступ к диагностическому порту.
Для решения обычных задач используйте простые высокоуровневые инструменты браузера. Но если страница ведет себя странно, Hermes может подключиться к протоколу Chrome DevTools и выполнить отладку браузера напрямую.
Вот почему browser_cdp — одна из самых сложных и недооценённых функций Hermes.
Это не броско, но лучше, чем броско. Это запасной вариант на случай, если настоящая веб-автоматизация не сработает.