browser-harness
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.
Оригинален текст · няма потвърден превод на българскиПърво прочетете инструкцията.
Файлът се зарежда от посочения източник само по ваше действие. Можете да го прочетете тук, да го копирате или да го запазите като .md.
GitHub хранилище- Звезди на репото
- 18 053
- Лиценз
- MIT
- Последна проверка на записа
- 20.09.2026 г.
Добавете в своя инструмент.
Командата отваря избора на skills от репозитория. Прочетете файла и условията на автора преди изпълнение.
npx skills add browser-use/browser-harnessСтраницата копира текст. Не инсталира и не изпълнява нищо на устройството ви.
Откъс от SKILL.md
Началото на файла на автора, без превод.
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.
If BH_DOMAIN_SKILLS=1 and the task is site-specific, read every file in the matching $BH_AGENT_WORKSPACE/domain-skills/<site>/ directory before inventing an approach.
Usage
browser-harness <<'PY'
print(page_info())
PY
- Invoke as
browser-harness. Use heredocs for multi-line commands. - Helpers are pre-imported.
run.pycallsensure_daemon()beforeexec. - First navigation for a task is
new_tab(url), notgoto_url(url). The daemon preserves the attached tab across separate CLI invocations, so do not callnew_tab()again in every script. - Keep one working tab per task/site. Before opening another, inspect
current_tab()andlist_tabs()and useswitch_tab()to reuse a matching tab. Do not leave duplicate tabs on the same URL or close tabs you did not create. - At task completion, close tabs created for the task that are no longer needed. Keep a tab open if the user needs to see it, it is needed for a known follow-up, or closing it could discard unsaved work or other important state.
new_tab()andswitch_tab()attach and move the horse marker without changing Chrome's visible tab. Screenshots and normal CDP input work in the background. Never callactivate_tab(target)automatically: it brings Chrome to the foreground. Call it only when the user explicitly asks to see or visibly switch to that tab. Do not pairswitch_tab()withactivate_tab().- A local daemon is a connection to the whole Chrome instance, not to one site,
task, card, or agent. Omit
BU_NAMEand reuse the default daemon for normal sequential local work across websites, tabs, screenshots, and Codex turns. Do not invent per-job names such asgmail1375or `slack137