agent-browser-local
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLocal Browser Automation with agent-browser + Comet CDP
基于agent-browser + Comet CDP的本地浏览器自动化
This skill connects agent-browser to the user's real local Comet browser via Chrome DevTools Protocol (CDP). This gives you access to the user's actual browser profile — cookies, login sessions, extensions, and all.
本技能通过Chrome DevTools Protocol(CDP)将agent-browser连接到用户本地的真实Comet浏览器,让你能够访问用户实际的浏览器配置文件——包括Cookie、登录会话、扩展程序等所有内容。
Setup: Launch Browser with CDP
设置:通过CDP启动浏览器
Before any browser commands, you must ensure Comet is running with CDP enabled. Do this ONCE per session, then reuse for all subsequent commands.
在执行任何浏览器命令之前,你必须确保Comet已启用CDP运行。每个会话只需执行一次此操作,之后所有后续命令均可复用该会话。
Headed Mode (default — visible browser window)
有界面模式(默认——可见浏览器窗口)
bash
undefinedbash
undefinedKill any existing Comet to avoid "Opening in existing session" conflicts
Kill any existing Comet to avoid "Opening in existing session" conflicts
pkill -9 -f Comet 2>/dev/null; sleep 2
pkill -9 -f Comet 2>/dev/null; sleep 2
Launch with CDP
Launch with CDP
/Applications/Comet.app/Contents/MacOS/Comet --remote-debugging-port=${COMET_CDP_PORT:-9222} &disown 2>/dev/null
sleep 3
/Applications/Comet.app/Contents/MacOS/Comet --remote-debugging-port=${COMET_CDP_PORT:-9222} &disown 2>/dev/null
sleep 3
Verify CDP is ready
Verify CDP is ready
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null && echo "CDP ready"
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null && echo "CDP ready"
Bring window to foreground
Bring window to foreground
osascript -e 'tell application "Comet" to activate'
undefinedosascript -e 'tell application "Comet" to activate'
undefinedHeadless Mode (no visible window, still uses real profile)
无头模式(无可见窗口,仍使用真实配置文件)
bash
pkill -9 -f Comet 2>/dev/null; sleep 2
/Applications/Comet.app/Contents/MacOS/Comet --headless=new --remote-debugging-port=${COMET_CDP_PORT:-9222} &disown 2>/dev/null
sleep 3
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null && echo "CDP ready"bash
pkill -9 -f Comet 2>/dev/null; sleep 2
/Applications/Comet.app/Contents/MacOS/Comet --headless=new --remote-debugging-port=${COMET_CDP_PORT:-9222} &disown 2>/dev/null
sleep 3
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null && echo "CDP ready"Check if Already Running
检查是否已在运行
Before launching, check if Comet CDP is already available from a previous command in this session:
bash
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null 2>&1 && echo "ALREADY RUNNING" || echo "NEED TO LAUNCH"If already running, skip the launch step entirely. This is critical for session reuse.
启动前,检查当前会话中是否已有之前的命令启动了Comet CDP:
bash
curl -s http://localhost:${COMET_CDP_PORT:-9222}/json/version >/dev/null 2>&1 && echo "ALREADY RUNNING" || echo "NEED TO LAUNCH"如果已在运行,请完全跳过启动步骤。这对于会话复用至关重要。
Core Rule: Always Pass --cdp
--cdp核心规则:始终传递--cdp
参数
--cdpEvery command MUST include . This connects to the local Comet instance instead of launching a new browser.
agent-browser--cdp ${COMET_CDP_PORT:-9222}bash
undefined每个命令都必须包含,这样才能连接到本地Comet实例,而非启动新的浏览器。
agent-browser--cdp ${COMET_CDP_PORT:-9222}bash
undefinedCORRECT — uses local Comet
正确用法 —— 使用本地Comet
agent-browser --cdp ${COMET_CDP_PORT:-9222} open https://example.com
agent-browser --cdp ${COMET_CDP_PORT:-9222} snapshot -i
agent-browser --cdp ${COMET_CDP_PORT:-9222} click @e1
agent-browser --cdp ${COMET_CDP_PORT:-9222} open https://example.com
agent-browser --cdp ${COMET_CDP_PORT:-9222} snapshot -i
agent-browser --cdp ${COMET_CDP_PORT:-9222} click @e1
WRONG — would launch isolated headless browser, losing auth
错误用法 —— 会启动隔离的无头浏览器,丢失身份验证信息
agent-browser open https://example.com
undefinedagent-browser open https://example.com
undefinedWorkflow
工作流程
Every interaction follows this pattern:
- Ensure CDP is running (check first, launch only if needed)
- Navigate:
agent-browser --cdp 9222 open <url> - Snapshot: (get element refs like
agent-browser --cdp 9222 snapshot -i,@e1)@e2 - Interact: Use refs to click, fill, select — always with
--cdp 9222 - Re-snapshot: After navigation or DOM changes, get fresh refs
bash
undefined所有交互都遵循以下模式:
- 确保CDP正在运行(先检查,仅在需要时启动)
- 导航:
agent-browser --cdp 9222 open <url> - 快照:(获取元素引用,如
agent-browser --cdp 9222 snapshot -i、@e1)@e2 - 交互:使用元素引用执行点击、填充、选择等操作——始终携带参数
--cdp 9222 - 重新快照:导航或DOM变更后,获取新的元素引用
bash
undefinedCheck CDP
检查CDP状态
curl -s http://localhost:9222/json/version >/dev/null 2>&1 || { echo "Launch Comet first"; exit 1; }
curl -s http://localhost:9222/json/version >/dev/null 2>&1 || { echo "Launch Comet first"; exit 1; }
Navigate and interact
导航并交互
agent-browser --cdp 9222 open https://example.com/dashboard
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 open https://example.com/dashboard
agent-browser --cdp 9222 snapshot -i
Output: @e1 [button] "Settings", @e2 [link] "Profile", ...
输出:@e1 [button] "Settings", @e2 [link] "Profile", ...
agent-browser --cdp 9222 click @e2
agent-browser --cdp 9222 snapshot -i # Fresh refs after navigation
undefinedagent-browser --cdp 9222 click @e2
agent-browser --cdp 9222 snapshot -i # 导航后获取新的元素引用
undefinedCommand Chaining
命令链式调用
Commands can be chained with . Always include on each:
&&--cdpbash
agent-browser --cdp 9222 open https://example.com && agent-browser --cdp 9222 wait --load networkidle && agent-browser --cdp 9222 snapshot -i命令可以通过进行链式调用,每个命令都必须包含参数:
&&--cdpbash
agent-browser --cdp 9222 open https://example.com && agent-browser --cdp 9222 wait --load networkidle && agent-browser --cdp 9222 snapshot -iEssential Commands
常用命令
All standard agent-browser commands work — just prepend :
--cdp 9222bash
undefined所有标准的agent-browser命令都可使用——只需添加前缀:
--cdp 9222bash
undefinedNavigation
导航相关
agent-browser --cdp 9222 open <url>
agent-browser --cdp 9222 close # Disconnects agent-browser (does NOT close Comet)
agent-browser --cdp 9222 open <url>
agent-browser --cdp 9222 close # 断开agent-browser连接(不会关闭Comet)
Snapshot & Interaction
快照与交互
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 click @e1
agent-browser --cdp 9222 fill @e2 "text"
agent-browser --cdp 9222 select @e3 "option"
agent-browser --cdp 9222 press Enter
agent-browser --cdp 9222 scroll down 500
agent-browser --cdp 9222 snapshot -i
agent-browser --cdp 9222 click @e1
agent-browser --cdp 9222 fill @e2 "text"
agent-browser --cdp 9222 select @e3 "option"
agent-browser --cdp 9222 press Enter
agent-browser --cdp 9222 scroll down 500
Information
信息获取
agent-browser --cdp 9222 get text @e1
agent-browser --cdp 9222 get url
agent-browser --cdp 9222 get title
agent-browser --cdp 9222 get text @e1
agent-browser --cdp 9222 get url
agent-browser --cdp 9222 get title
Wait
等待操作
agent-browser --cdp 9222 wait @e1
agent-browser --cdp 9222 wait --load networkidle
agent-browser --cdp 9222 wait @e1
agent-browser --cdp 9222 wait --load networkidle
Capture
捕获操作
agent-browser --cdp 9222 screenshot
agent-browser --cdp 9222 screenshot --full
agent-browser --cdp 9222 screenshot --annotate
undefinedagent-browser --cdp 9222 screenshot
agent-browser --cdp 9222 screenshot --full
agent-browser --cdp 9222 screenshot --annotate
undefinedUser Preferences
用户偏好设置
Ask the user on first invocation:
- Headed or headless? Default to headed so the user can see what's happening.
- If the user says "headed", bring Comet to the foreground with after launch.
osascript -e 'tell application "Comet" to activate'
首次调用时询问用户:
- 使用有界面还是无头模式? 默认使用有界面模式,以便用户可以查看操作过程。
- 如果用户选择“有界面”,启动后通过将Comet窗口前置。
osascript -e 'tell application "Comet" to activate'
Session Lifecycle
会话生命周期
- Launch once: The browser persists for the entire Claude Code session
- Reuse always: Check CDP before every interaction, never re-launch if already running
- Don't kill on "close": only disconnects agent-browser's Playwright session from the CDP endpoint. It does NOT close or kill Comet. The user's browser stays open.
agent-browser --cdp 9222 close - No cleanup needed: When the Claude Code session ends, Comet keeps running as the user's normal browser
- 仅启动一次:浏览器在整个Claude Code会话期间保持运行
- 始终复用:每次交互前检查CDP状态,若已运行则绝不重新启动
- “关闭”操作不终止浏览器:仅断开agent-browser的Playwright会话与CDP端点的连接,不会关闭或终止Comet。用户的浏览器将保持打开状态。
agent-browser --cdp 9222 close - 无需清理:当Claude Code会话结束时,Comet将继续作为用户的常规浏览器运行
Configuration
配置项
| Variable | Default | Description |
|---|---|---|
| | CDP port for remote debugging |
| 变量 | 默认值 | 描述 |
|---|---|---|
| | 用于远程调试的CDP端口 |
Troubleshooting
故障排除
"Opening in existing browser session"
“Opening in existing browser session”(在现有浏览器会话中打开)
Comet was already running without CDP. Kill it first, then relaunch with :
--remote-debugging-portbash
pkill -9 -f Comet 2>/dev/null; sleep 2
/Applications/Comet.app/Contents/MacOS/Comet --remote-debugging-port=9222 &disownComet已在未启用CDP的情况下运行。先终止它,再重新启动并添加参数:
--remote-debugging-portbash
pkill -9 -f Comet 2>/dev/null; sleep 2
/Applications/Comet.app/Contents/MacOS/Comet --remote-debugging-port=9222 &disownCDP not responding
CDP无响应
Wait longer — some systems need 3-5 seconds for Comet to start:
bash
for i in {1..10}; do curl -s http://localhost:9222/json/version >/dev/null 2>&1 && break; sleep 1; done等待更长时间——部分系统需要3-5秒让Comet启动:
bash
for i in {1..10}; do curl -s http://localhost:9222/json/version >/dev/null 2>&1 && break; sleep 1; donePort already in use
端口已被占用
Another process is using port 9222. Either kill it or use a different port:
bash
COMET_CDP_PORT=9333 agent-browser --cdp 9333 open https://example.com其他进程正在使用9222端口。可以终止该进程或使用其他端口:
bash
COMET_CDP_PORT=9333 agent-browser --cdp 9333 open https://example.com