Loading...
Loading...
Compare original and translation side by side
agent-browseragent-browser${SKILL_PATH}agent-browseragent-browser${SKILL_PATH}Layer 0a: agent-browser open ← local dev / public pages (no CDP)
Layer 0b: agent-browser connect <port> ← external sites needing login / anti-bot
Layer 1: + login-watch / captcha-watch ← when hitting login walls or anti-bot
+ site-patterns ← read before, write after
Layer 2: + CDP proxy ← parallel multi-tab onlyLayer 0a: agent-browser open ← 本地开发/公开页面(无需CDP)
Layer 0b: agent-browser connect <port> ← 需要登录/反爬的外部站点
Layer 1: + login-watch / captcha-watch ← 遇到登录墙或反爬拦截时启用
+ site-patterns ← 操作前读取,操作后回写
Layer 2: + CDP proxy ← 仅在需要并行多标签时启用agent-browser openagent-browser open http://localhost:3000
agent-browser snapshot -i
agent-browser click @e3
agent-browser screenshot page.pngagent-browser openagent-browser open http://localhost:3000
agent-browser snapshot -i
agent-browser click @e3
agent-browser screenshot page.png~/.chrome-debug-profilebrowser-connect.shRESULT=$(bash ${SKILL_PATH}/scripts/browser-connect.sh 9333)
MODE=$(echo "$RESULT" | jq -r '.mode') | Meaning | Action |
|---|---|---|
| Lock acquired, connected | Use |
| Another agent holds the lock | Use CDP proxy (Layer 2) instead |
| Chrome not running | Guide user to start Chrome |
agent-browser open https://github.com/settings
agent-browser snapshot -iagent-browser tab list # [index] title - url
agent-browser tab 0 # Switch by index (0-based)
agent-browser tab new https://... # Open new tab
agent-browser tab close # Close current tab
agent-browser get url # Which tab am I on?tab newopenbash ${SKILL_PATH}/scripts/browser-disconnect.sh 9333undefined~/.chrome-debug-profilebrowser-connect.shRESULT=$(bash ${SKILL_PATH}/scripts/browser-connect.sh 9333)
MODE=$(echo "$RESULT" | jq -r '.mode') | 含义 | 操作 |
|---|---|---|
| 已获取锁,连接成功 | 正常使用 |
| 其他Agent持有锁 | 改用CDP代理(Layer 2) |
| Chrome未运行 | 引导用户启动Chrome |
agent-browser open https://github.com/settings
agent-browser snapshot -iagent-browser tab list # [索引] 标题 - url
agent-browser tab 0 # 按索引切换标签(从0开始计数)
agent-browser tab new https://... # 打开新标签页
agent-browser tab close # 关闭当前标签页
agent-browser get url # 查看当前标签页地址tab newopenbash ${SKILL_PATH}/scripts/browser-disconnect.sh 9333undefined
Port 9222 is often occupied by Electron — prefer **9333**.
**Get CDP port programmatically:**
```bash
agent-browser get cdp-url # → ws://127.0.0.1:9333/devtools/browser/...bash ${SKILL_PATH}/scripts/check-deps.sh
端口9222常被Electron占用,优先使用**9333**端口。
**程序化获取CDP端口:**
```bash
agent-browser get cdp-url # → ws://127.0.0.1:9333/devtools/browser/...bash ${SKILL_PATH}/scripts/check-deps.shPATTERN_FILE="${SKILL_PATH}/references/site-patterns/${DOMAIN}.md"requires_cdp: trueconnect---
domain: example.com
aliases: [示例, Example]
requires_cdp: true
updated: 2026-04-05
---PATTERN_FILE="${SKILL_PATH}/references/site-patterns/${DOMAIN}.md"requires_cdp: trueconnect---
domain: example.com
aliases: [示例, Example]
requires_cdp: true
updated: 2026-04-05
---
Rules:
- Only write verified facts, not guesses
- Tag findings with dates — patterns decay
- If a pattern stops working, update the file
**List available patterns:**
```bash
ls ${SKILL_PATH}/references/site-patterns/*.md | grep -v _template
规则:
- 仅写入已验证的事实,不要写猜测内容
- 所有发现都标注日期 — 适配规则会随站点更新失效
- 如果某条规则不再生效,更新对应文件
**列出所有可用适配规则:**
```bash
ls ${SKILL_PATH}/references/site-patterns/*.md | grep -v _templatebash ${SKILL_PATH}/scripts/login-watch.sh --interval 5 --timeout 300logged_in: true| Exit | Meaning | Action |
|---|---|---|
| Login detected | Navigate to target and continue |
| Timeout | Tell user login-watch timed out, ask them to confirm when done |
| Error | agent-browser not connected, fix connection |
{ "logged_in": bool, "url": string, "elapsed": number, "hint": string }bash ${SKILL_PATH}/scripts/login-watch.sh --interval 5 --timeout 300logged_in: true| 退出码 | 含义 | 操作 |
|---|---|---|
| 检测到登录完成 | 导航到目标页面继续操作 |
| 超时 | 告知用户登录监听超时,让用户完成登录后确认 |
| 错误 | agent-browser未连接,修复连接问题 |
{ "logged_in": bool, "url": string, "elapsed": number, "hint": string }bash ${SKILL_PATH}/scripts/captcha-watch.sh --cdp <PORT>agent-browser get cdp-url| Exit | Meaning | Action |
|---|---|---|
| No CAPTCHA | Continue |
| Solvable CAPTCHA (real Chrome) | Screenshot → notify user → poll (background, same pattern as login-watch) |
| Automation block (unsolvable) | STOP. Must use real Chrome. Never retry in session mode. |
| Error | Retry once |
agent-browser screenshot captcha.png
echo "CAPTCHA detected. Please solve it in Chrome."bash ${SKILL_PATH}/scripts/captcha-watch.sh --cdp <PORT>agent-browser get cdp-url| 退出码 | 含义 | 操作 |
|---|---|---|
| 无CAPTCHA | 继续操作 |
| 可人工解决的CAPTCHA(真实Chrome环境) | 截图 → 通知用户 → 轮询(后台运行,和登录监听模式一致) |
| 自动化拦截(无法解决) | 停止操作,必须使用真实Chrome,不要在会话模式下重试。 |
| 错误 | 重试一次 |
agent-browser screenshot captcha.png
echo "检测到CAPTCHA,请在Chrome中完成验证。"
---
---agent-browser --sessionnavigator.webdriver=trueagent-browser --sessionnavigator.webdriver=truebash ${SKILL_PATH}/scripts/check-deps.sh [CDP_PORT]{ ready, mode, agent_browser, node, chrome_cdp, proxy, hint } | | Action |
|---|---|---|
| | Proceed |
| | Layer 2 unavailable. Fall back to Layer 0. |
| — | STOP. Fix per |
bash ${SKILL_PATH}/scripts/check-deps.sh [CDP_PORT]{ ready, mode, agent_browser, node, chrome_cdp, proxy, hint } | | 操作 |
|---|---|---|
| | 继续操作 |
| | Layer 2不可用,降级到Layer 0 |
| — | 停止操作,按照 |
undefinedundefinedundefinedundefinedTABS=$(curl -s -X POST "$PROXY/batch" \
-H 'Content-Type: application/json' \
-d '{"urls":["https://site1.com","https://site2.com"]}')
TARGETS=$(echo "$TABS" | jq '[.[].targetId]')
curl -s -X POST "$PROXY/batch-eval" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS,\"expression\":\"document.title\"}"
curl -s -X POST "$PROXY/batch-close" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS}"TABS=$(curl -s -X POST "$PROXY/batch" \
-H 'Content-Type: application/json' \
-d '{"urls":["https://site1.com","https://site2.com"]}')
TARGETS=$(echo "$TABS" | jq '[.[].targetId]')
curl -s -X POST "$PROXY/batch-eval" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS,\"expression\":\"document.title\"}"
curl -s -X POST "$PROXY/batch-close" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS}"Main Agent
├── Start CDP proxy (once)
├── Sub-Agent A: /new → targetId-A → /eval → /close
├── Sub-Agent B: /new → targetId-B → /eval → /close
└── Sub-Agent C: /new → targetId-C → /eval → /close
All share same Chrome, login state, cookies主Agent
├── 启动CDP代理(仅一次)
├── 子Agent A: /new → targetId-A → /eval → /close
├── 子Agent B: /new → targetId-B → /eval → /close
└── 子Agent C: /new → targetId-C → /eval → /close
所有子Agent共享同一个Chrome、登录状态、Cookiebash ${SKILL_PATH}/scripts/captcha-watch.sh --proxy-eval <targetId>bash ${SKILL_PATH}/scripts/captcha-watch.sh --proxy-eval <targetId>curl -s -X POST "$PROXY/batch-close" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS}"references/api.mdcurl -s -X POST "$PROXY/batch-close" \
-H 'Content-Type: application/json' \
-d "{\"targets\":$TARGETS}"references/api.md| Script | Purpose | Layer | Run in background? |
|---|---|---|---|
| Safe connect with lock-based conflict detection | 0b | No |
| Release lock and close browser | 0b | No |
| Environment diagnostics | 0+ | No |
| Poll until login wall disappears | 1 | Yes |
| Detect CAPTCHA/automation block | 1 | Polling loop: yes |
| Same, for proxy tabs | 2 | Polling loop: yes |
| HTTP API for parallel tabs | 2 | Yes (daemon) |
| 脚本 | 用途 | 适用层级 | 是否需要后台运行? |
|---|---|---|---|
| 基于锁的冲突检测的安全连接 | 0b | 否 |
| 释放锁并关闭浏览器 | 0b | 否 |
| 环境诊断 | 0+ | 否 |
| 轮询直到登录墙消失 | 1 | 是 |
| 检测CAPTCHA/自动化拦截 | 1 | 轮询循环:是 |
| 同上,适用于代理标签页 | 2 | 轮询循环:是 |
| 并行标签页的HTTP API | 2 | 是(守护进程) |
| Missing | Impact |
|---|---|
| Chrome CDP | Layer 0b/1/2 unavailable. 0a still works. |
| CDP proxy | Layer 2 unavailable. 0/1 still work. |
| agent-browser | Fatal. |
| Node.js 22+ | Layer 2 unavailable. 0/1 still work. |
| Site pattern file | Proceed without experience. Risk: unexpected blocks. |
| 缺失依赖 | 影响 |
|---|---|
| Chrome CDP | Layer 0b/1/2不可用,0a仍可正常工作 |
| CDP代理 | Layer 2不可用,0/1仍可正常工作 |
| agent-browser | 致命错误 |
| Node.js 22+ | Layer 2不可用,0/1仍可正常工作 |
| 站点适配规则文件 | 无适配经验继续操作,风险:出现意外拦截 |
| Symptom | Fix |
|---|---|
| Chrome not running with debug port. See setup in Layer 0. |
| CAPTCHA unsolvable (exit 2) | |
| Connected to Playwright/Electron. Use real Chrome. |
| Proxy port 3456 in use | |
| Slow page. |
| Tabs accumulate | |
| login-watch misses login wall | Site uses unusual text. Fall back to asking user. |
| 现象 | 修复方案 |
|---|---|
| Chrome未启动调试端口,参考Layer 0的启动配置 |
| CAPTCHA无法解决(退出码2) | |
CDP中 | 连接到了Playwright/Electron,使用真实Chrome |
| 代理端口3456被占用 | |
| 页面加载慢,添加 |
| 标签页堆积 | 调用 |
| 登录监听未识别登录墙 | 站点使用不常见文本,降级为直接询问用户 |
| Document | When |
|---|---|
| Layer 2: proxy endpoints, batch examples |
| Layer 1: before navigating to known domains |
| 文档 | 适用场景 |
|---|---|
| Layer 2:代理端点、批量操作示例 |
| Layer 1:导航到已知域名前参考 |