Browser Harness — скилл
Скилл и CLI от Browser Use: агент управляет вашим настоящим Chrome через DevTools Protocol, под вашей учетной записью, и сам дописывает недостающие функции
- 18 586 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Агент управляет вашим настоящим Chrome и видит все открытые вкладки, входы и куки, а не один сайт
- Через CDP он выполняет произвольный код на страницах, нажимает кнопки, вводит текст и загружает файлы под вашей учетной записью
- Включенные записи сохраняют на диск снимки экрана и трассы действий с содержимым страниц
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/browser-harnessОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Агент управляет вашим настоящим Chrome и видит все открытые вкладки, входы и куки, а не один сайт
- Через CDP он выполняет произвольный код на страницах, нажимает кнопки, вводит текст и загружает файлы под вашей учетной записью
- Включенные записи сохраняют на диск снимки экрана и трассы действий с содержимым страниц
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Browser Harness позволяет Claude Code, Codex или Cursor управлять браузером Chrome, в котором вы уже вошли в свои сервисы. Команда `browser-harness` подключается к работающему Chrome по протоколу DevTools (CDP) и принимает короткие скрипты на Python через стандартный ввод. В них заранее подключены функции для вкладок, кликов, ввода, прокрутки, снимков экрана, загрузки файлов и произвольного кода на странице. Если нужной функции нет, агент пишет ее сам в файл `agent-workspace/agent_helpers.py`, а каталог `src/browser_harness/` остается защищенным от правок. Рабочий порядок описан в `SKILL.md`. Простые публичные страницы агент берет через `curl`, а браузер включает, когда нужны клики, ваш сеанс, отрисовка JavaScript или обход защиты от ботов. Элементы он ищет по дереву доступности, а не по снимкам экрана, держит по одной вкладке на задачу и закрывает созданные им лишние вкладки. На экране входа агент останавливается и спрашивает вас: пароли и многофакторные коды вводите вы. При первом подключении Chrome просит разрешить удаленную отладку на странице `chrome://inspect/#remote-debugging`; на macOS помогает команда `browser-harness mac-approve`. Команда `browser-harness-mcp` показывает те же функции как MCP-инструменты с префиксом `browser_`: открыть вкладку, кликнуть, ввести текст, сделать снимок, выполнить код, загрузить файл, начать и закончить запись. Для параллельной работы в проект встроено подключение к облачным браузерам Browser Use, но им нужен ключ и оплата.
Для кого. Для разработчиков и тех, кто поручает агенту работу в веб-сервисах под своей учетной записью: заполнение форм, выгрузку данных, проверку страниц, скачивание файлов.
Подходит, если
- Агенту нужно сделать что-то в сервисе, куда вы уже вошли, и отдельный вход для робота не настроен
- Страница отрисовывается JavaScript, и обычный запрос возвращает пустую оболочку
- Нужно скачать набор файлов или записей из личного кабинета, где нет программного интерфейса
- Нужна запись действий агента, чтобы потом разобрать, что он делал на странице: ее включает команда `browser-harness recordings enable`
- Хочется подключить управление браузером к Claude Code, Cursor или другому клиенту как MCP-сервер
Не подходит, если
- Нужно прочитать публичную страницу или обратиться к API: скилл сам советует `curl`, браузер здесь избыточен
- В Chrome открыты сервисы с платежами, почтой или рабочими кабинетами, куда агенту нельзя: он получает доступ ко всему браузеру, а не к одному сайту
- На машине нет Python 3.11 или новее: инструмент написан на Python
- Нужна изоляция нескольких параллельных задач: в локальном Chrome вкладки общие, для изоляции автор предлагает облачные браузеры Browser Use
- Агент должен работать на удаленной машине без экрана: без облачных браузеров потребуется локальный Chrome с разрешенной удаленной отладкой
Пример запроса к агенту
Открой в моем Chrome личный кабинет магазина, найди последние десять заказов и сохрани их номера и суммы в таблицуОграничения
Проект на стадии `alpha`: в манифесте пакета версия 0.1.13 и пометка `Development Status :: 3 - Alpha`. Нужен Python 3.11 или новее, установщик из `install.md` берет `uv` и Python 3.12.
Локальное подключение работает только с Chrome или Chromium, где вы разрешили удаленную отладку. На macOS для каждого нового подключения Chrome показывает окно с кнопкой разрешения, а чтобы агент нажал ее сам, терминалу нужен доступ в разделе «Универсальный доступ» системных настроек. Один локальный демон держит одну текущую вкладку, поэтому два агента, переключающих вкладки одновременно, могут перепутать их.
Записи действий по умолчанию выключены. После включения командой `browser-harness recordings enable` на диск сохраняются снимки экрана и трассы действий, и в них может оказаться содержимое страниц. Описания сайтов в `agent-workspace/domain-skills` (151 файл Markdown) подключаются только с переменной `BH_DOMAIN_SKILLS=1`.
Облачные браузеры Browser Use требуют ключа `BROWSER_USE_API_KEY` или входа командой `browser-harness auth login` и тарифицируются, пока их не остановят. Лицензия MIT.
Как отключить. Удалите программу командой `uv tool uninstall browser-harness` и файл скилла `browser-harness` из папки скиллов агента. В Chrome снимите отметку разрешения на странице `chrome://inspect/#remote-debugging`. Записи выключаются командой `browser-harness recordings disable`, MCP-сервер убирается командой `claude mcp remove browser-harness`. Если запускали облачный браузер, остановите его вызовом `stop_remote_daemon(name)`.
Частые вопросы
Чем это отличается от запуска отдельного браузера для агента?
Агент подключается к вашему работающему Chrome и видит те же входы и куки, что вы. Отдельный профиль ему не нужен: работа идет под вашей учетной записью.
Что делает агент на странице входа?
Останавливается и спрашивает вас. Исключение одно: если Chrome уже вошел через единый вход, агент использует этот вход автоматически. Он не вводит пароли и многофакторные коды и не подтверждает согласия.
Какие инструменты дает MCP-сервер?
Двадцать три инструмента с префиксом `browser_`, среди них `browser_new_tab`, `browser_click`, `browser_type`, `browser_screenshot`, `browser_js`, `browser_cdp`, `browser_upload_file` и `browser_http_get`. Запуск через `uvx --from 'browser-harness[mcp]' browser-harness-mcp`.
Что такое описания сайтов?
Каталог `agent-workspace/domain-skills` с заметками по конкретным сайтам, например по Amazon, Booking и arXiv. Они выключены, пока не задана переменная `BH_DOMAIN_SKILLS=1`; после этого агент читает файлы нужного сайта перед работой.
Нужно ли платить?
Локальная работа бесплатна: пакет под лицензией MIT. Платными становятся только облачные браузеры Browser Use, которые нужны для параллельных задач и обхода защиты от ботов.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыСкилл cdp: агент управляет вашим Chrome напрямую через протокол DevTools, 652 типизированных метода без готовых click и goto
CLI, скилл и Python-библиотека для управления браузером: агент кликает, заполняет формы и читает страницы через CDP
Локальная платформа автоматизации браузера: MCP-сервер, CLI и скиллы, чтобы агент управлял Chrome, заполнял формы и доставал данные со страниц
Отдельный браузер для агентов со скиллом и MCP: Claude Code и Codex работают в ваших аккаунтах, каждый сеанс записывается и доступен для просмотра
Скилл для Amp, Claude Code и Cursor: агент управляет вашим живым Chrome с открытыми вкладками и входами в аккаунты через один переключатель отладки
Быстрый CLI на Rust для автоматизации браузера агентами: снимки доступности со ссылками на элементы, MCP-сервер и скиллы
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| Browser Harness (эта запись) | нет | 18 586 | |
| bb-browser | нет | 6 249 | CLI и MCP-сервер, через которые агент управляет вашим настоящим Chrome с сохраненными входами |
| dev-browser | нет | 6 694 | CLI, скилл и MCP для управления Chrome короткими скриптами Puppeteer, вкладки сохраняют состояние между запусками |
| BrowserOS neo | нет | 14 072 | отдельный браузер для агентов со скиллом и MCP |
Коротко о README
В репозитории лежат `SKILL.md` с рабочим порядком агента, `install.md` с быстрой установкой и ручной проверкой подключения, документ `docs/MCP.md` и каталог `interaction-skills` с приемами для типовых затруднений. Пакет Python с ядром находится в `src/browser_harness/`, а пользовательские функции агента лежат отдельно в `agent-workspace`, там же заметки по сайтам. В корне лежат файлы `AGENTS.md` и `CLAUDE.md` для разработки проекта, манифест плагина Claude Code и правила участия в проекте.
Бейдж для README
Исходный SKILL.md
--- name: browser-harness description: "Control a real browser via CDP: clicking, typing, navigation, logged-in sessions, JS-rendered or bot-protected pages. Not for plain HTTP fetches of public content - use curl for those." --- # browser-harness Direct browser control via CDP. For task-specific edits, use `agent-workspace/agent_helpers.py`. For setup, install, or connection problems, read https://github.com/browser-use/browser-harness/blob/main/install.md. ## When Not to Use A basic fetch of public information needs no browser. If a plain HTTP request can read it — a public page, an API, docs — use `curl` or your fetch tool, and leave the browser alone. Use browser-harness when the task needs interaction (click, type, navigate), the user's logged-in session, JS rendering, or a bot-protected page. If a direct fetch fails or returns a shell page, then escalate to the browser. Domain skills are off by default. Set `BH_DOMAIN_SKILLS=1` to enable them; see the bottom section. ## Usage ```bash browser-harness <<'PY' print(page_info()) PY ``` - Invoke as `browser-harness`. Use heredocs for multi-line commands. - Helpers are pre-imported. `run.py` calls `ensure_daemon()` before `exec`. - First navigation for a task is `new_tab(url)`, not `goto_url(url)`.