Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计提醒

agent-browserAgent 浏览器自动化

Agent Skill

agent-browser 用于处理浏览器自动化、网页检查和页面信息提取,适合在 Codex、Claude、Cursor、Gemini CLI 中需要让 Agent 打开页面、读取网页或验证前端流程时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

881

周安装

36

GitHub Stars

64

下载量

282
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:agent-browser(Agent 浏览器自动化)
来源仓库:https://github.com/factory-ai/factory-plugins
仓库路径:skills/agent-browser
安装命令:
npx skills add https://github.com/factory-ai/factory-plugins --skill agent-browser
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/factory-ai/factory-plugins --skill agent-browser

简介

agent-browser 通过 Playwright 驱动 headless Chromium 实现网页自动化控制。

  • 适用于登录表单填写、数据提取与视觉 QA 等需要 DOM 级交互的场景。
  • 若目标为终端 TUI 界面,则改用 tuistory 或 true-input 更合适。
  • 运行前应关闭浏览器扩展干扰,并在无头模式下验证元素定位稳定性。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Agent-Browser Driver

The orchestrator routed you here. Use these mechanics to execute your plan.

Control web pages and Electron desktop apps via the agent-browser CLI. Uses Playwright under the hood with a headless Chromium instance managed by a background daemon.

When to use

  • Automating web app flows (login, form fill, data extraction, visual QA)
  • Driving Electron apps (VS Code, Slack, Discord, Figma, Notion, Spotify)
  • Visual verification -- screenshots and annotated element overlays
  • DOM-level assertions where terminal snapshots are irrelevant

If the target is a terminal TUI, use tuistory or true-input instead.

Prerequisites

agent-browser install   # one-time: downloads bundled Chromium

For Electron apps, the target app must be launched with --remote-debugging-port=<port>.

Core workflow

Every interaction follows the same loop:

agent-browser open <url>
agent-browser snapshot -i          # interactive elements only -> refs like @e1, @e2
agent-browser click @e3            # interact using refs
agent-browser snapshot -i          # re-snapshot (refs invalidate after navigation/DOM changes)
agent-browser close                # always close when done

Command chaining

Commands share a persistent daemon, so && chaining is safe:

agent-browser open https://example.com && agent-browser wait --load networkidle && agent-browser snapshot -i

Chain when you don't need intermediate output. Run separately when you need to parse refs before acting.

Command reference

Navigation

CommandPurpose
open <url>Navigate (auto-prepends https:// if no protocol)
back / forward / reloadHistory navigation
closeShut down browser session
connect <port>Attach to a running browser/Electron app via CDP

Snapshot (page analysis)

CommandPurpose
snapshotFull accessibility tree
snapshot -iInteractive elements only (recommended default)
snapshot -i -CInclude cursor-interactive elements (onclick divs)
snapshot -cCompact output
snapshot -d <n>Limit tree depth
snapshot -s "<selector>"Scope to CSS selector

Interactions (use @refs from snapshot)

CommandPurpose
click @e1Click (dblclick for double-click)
fill @e2 "text"Clear field and type
type @e2 "text"Type without clearing
press EnterPress key (combos: Control+a)
keyboard type "text"Type at current focus (no ref needed)
keyboard inserttext "text"Insert without key events (Electron custom inputs)
hover @e1Hover
check @e1 / uncheck @e1Toggle checkbox
select @e1 "value"Select dropdown option
scroll down 500Scroll page (--selector for containers)
scrollintoview @e1Scroll element into view
drag @e1 @e2Drag and drop
upload @e1 file.pdfUpload file

Semantic locators (when refs are unreliable)

agent-browser find role button click --name "Submit"
agent-browser find text "Sign In" click
agent-browser find label "Email" fill "user@test.com"
agent-browser find testid "submit-btn" click

Get information

CommandPurpose
get text @e1Element text (get text body > page.txt for full page)
get html @e1innerHTML
get value @e1Input value
get attr @e1 hrefElement attribute
get title / get urlPage title / URL
get count ".item"Count matching elements

Check state

agent-browser is visible @e1
agent-browser is enabled @e1
agent-browser is checked @e1

Wait

CommandPurpose
wait @e1Wait for element
wait 2000Wait milliseconds
wait --text "Success"Wait for text
wait --url "**/dashboard"Wait for URL pattern
wait --load networkidleWait for network idle (best for slow pages)
wait --fn "window.ready"Wait for JS condition

JavaScript (eval)

agent-browser eval 'document.title'

# Complex JS -- use --stdin to avoid shell quoting issues
agent-browser eval --stdin <<'EVALEOF'
JSON.stringify(Array.from(document.querySelectorAll("a")).map(a => a.href))
EVALEOF

Diff (compare page states)

agent-browser diff snapshot                          # current vs last snapshot
agent-browser diff snapshot --baseline before.txt    # current vs saved file
agent-browser diff screenshot --baseline before.png  # visual pixel diff
agent-browser diff url <url1> <url2>                 # compare two pages

Dialogs

agent-browser dialog accept [text]  # accept alert/confirm/prompt
agent-browser dialog dismiss        # dismiss dialog

Tabs & frames

agent-browser tab                 # list tabs
agent-browser tab new [url]       # new tab
agent-browser tab 2               # switch to tab by index
agent-browser tab close           # close current tab
agent-browser frame "#iframe"     # switch to iframe
agent-browser frame main          # back to main frame

Screenshots & recording

agent-browser screenshot                      # save to temp directory
agent-browser screenshot path.png             # save to specific path
agent-browser screenshot --full               # full-page screenshot
agent-browser screenshot --annotate           # annotated with numbered element labels
agent-browser pdf output.pdf                  # save as PDF

--annotate overlays numbered labels on interactive elements. Each label [N] maps to ref @eN, enabling both visual verification and immediate interaction.

Video recording:

agent-browser record start ./demo.webm
# ... perform actions ...
agent-browser record stop
agent-browser record restart ./take2.webm     # stop current + start new

Recording creates a fresh context but preserves cookies/storage. Explore first, then start recording for smooth demos.

Ref lifecycle

Refs (@e1, @e2,...) are invalidated whenever the page changes. Always re-snapshot after:

  • Clicking links/buttons that navigate
  • Form submissions
  • Dynamic content loading (dropdowns, modals)
agent-browser click @e5           # navigates
agent-browser snapshot -i         # MUST re-snapshot
agent-browser click @e1           # use new refs

Electron app automation

Any Electron app supports --remote-debugging-port since it's built on Chromium.

Launch and connect

# macOS
open -a "Slack" --args --remote-debugging-port=9222

# Linux
slack --remote-debugging-port=9222

# Then connect
sleep 3
agent-browser connect 9222
agent-browser snapshot -i

The app must be quit first if already running -- the flag only takes effect at launch.

Tab management in Electron

Electron apps often have multiple windows/webviews:

agent-browser tab                        # list targets
agent-browser tab 2                      # switch by index
agent-browser tab --url "*settings*"     # switch by URL pattern

Electron troubleshooting

ProblemFix
"Connection refused"Ensure app was launched with --remote-debugging-port; quit and relaunch if already running
Connect fails after launchsleep 3 before connecting; app needs time to initialize
Elements missing from snapshotTry snapshot -i -C; use tab to switch to the correct webview
Cannot type in fieldsUse keyboard type "text" or keyboard inserttext "text" for custom input components
Dark mode lostSet AGENT_BROWSER_COLOR_SCHEME=dark or use --color-scheme dark

State persistence

Save and restore cookies/localStorage across sessions:

agent-browser open https://app.example.com/login
# ... login flow ...
agent-browser state save auth.json

# Later: load saved state
agent-browser state load auth.json
agent-browser open https://app.example.com/dashboard

Auto-save/restore with named sessions:

agent-browser --session-name myapp open https://app.example.com
# state auto-saved on close, auto-loaded on next launch with same --session-name

Sessions

The browser persists via a background daemon. One session is the default.

agent-browser --session test1 open site-a.com
agent-browser --session test2 open site-b.com
agent-browser session list
agent-browser --session test1 close
agent-browser --session test2 close

Each --session spawns a separate Chromium process (~300 MB). Prefer navigating within a single session. Exception: controlling multiple Electron apps on different CDP ports.

Global options

FlagPurpose
--session <name>Isolated browser session
--headedShow browser window
--cdp <port>Connect via CDP
--auto-connectAuto-discover running Chrome
--proxy <url>Use proxy server
--color-scheme darkForce dark/light mode
--ignore-https-errorsAccept self-signed certs
--allow-file-accessEnable file:// URLs
--jsonJSON output for parsing

Debugging

agent-browser --headed open example.com   # visible browser
agent-browser console                     # view console messages
agent-browser errors                      # view page errors
agent-browser highlight @e1               # highlight element

Gotchas

  • Invisible-to-snapshot elements. contenteditable divs and custom components may not appear in accessibility snapshots. Use eval to interact: agent-browser eval --stdin <<'EVALEOF' const el = document.querySelector("[contenteditable]"); el.focus(); el.textContent = "hello"; el.dispatchEvent(new Event('input', {bubbles: true})); EVALEOF
  • Unstable class names. Never hardcode CSS-in-JS class names (sc-*, css-*). Find elements by text content, cursor: pointer style, or testid instead.
  • SPA loading delays. Single-page apps may take 5-10s to render after navigation. Double-wait: wait --load networkidle then wait 5000.
  • Flag ordering. Global flags (--headers, --session, --cdp) must come before the subcommand: agent-browser --headers '{}' open <url>.

Critical rules

  1. Always take screenshots for visual QA. Text snapshots miss layout, styling, alignment, and z-index issues. Use screenshot --annotate when you need both visual proof and element refs.
  2. One session by default. Navigate between pages with open <url> instead of creating new sessions.
  3. Always close when done. agent-browser close frees the Chromium process.
  4. Re-snapshot after every navigation. Refs are invalidated.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

35.3%
按下载量换算100

Claude

28.26%
按下载量换算80

Cursor

18.95%
按下载量换算53

Gemini CLI

10.31%
按下载量换算29

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills