工具链介绍

agent-browser & tmux — AI 编码助手的核心自动化工具

🌐

agent-browser

基于 Chrome DevTools Protocol 的快速浏览器自动化 CLI,专为 AI Agent 设计。通过无障碍树快照 + `@eN` 紧凑引用实现页面交互,无需解析原始 HTML。
CDP  无障碍树  语义定位
地址:clawskills.sh/skills/murphykobe-agent-browser-2

核心交互循环

5 步标准操作流程,引用在每次快照后重新分配

agent-browser open url                # 1. 打开页面
agent-browser snapshot -i             # 2. 获取可交互元素及引用
agent-browser click @e3               # 3. 通过引用操作元素
agent-browser snapshot -i             # 4. 页面变化后重新快照
agent-browser close                   # 5. 关闭浏览器

功能概览

页面交互

click / dblclick / hover / focus / fill / type / press / check / select / upload / download / drag / scroll

元素定位

@eN 引用定位、语义定位 (role/text/label/placeholder)、CSS 选择器、testid 定位

截图与录屏

screenshot (普通/全页/标注)、PDF 导出、视频录制 (start/stop webm)

认证与会话

cookie 状态 save/load、多 session 并行、多 profile 管理、auth vault 凭证安全存储

标签页 / 框架 / 弹窗

tab 切换与关闭、iframe 内操作、dialog accept/dismiss

等待机制

元素出现、文本匹配、URL 变化、networkidle、DOM 就绪、自定义 JS 条件

网络拦截与调试

请求路由/拦截、Network HAR 导出、Console 日志、JS 错误捕获、Performance Trace

JavaScript 执行

eval / eval --stdin / eval -b (base64)、页面脚本注入

典型用法示例

# 表单填写
agent-browser open https://example.com/form
agent-browser snapshot -i
agent-browser fill @e2 "user@test.com"
agent-browser fill @e3 "password123"
agent-browser click @e5
agent-browser wait --text "Success"

# 语义定位(无需引用)
agent-browser find role button click --name "Submit"
agent-browser find label "Email" fill "user@test.com"
agent-browser find placeholder "Search" type "query"
agent-browser find testid "submit-btn" click

# 认证复用
agent-browser open https://app.example.com/login
agent-browser fill @e1 "admin" && agent-browser fill @e2 "pass"
agent-browser click @e3 && agent-browser wait --url "**/dashboard"
agent-browser state save ./auth.json
# 下次直接复用登录态
agent-browser --state ./auth.json open https://app.example.com/dashboard

# 截图取证
agent-browser screenshot --full full.png
agent-browser screenshot --annotate map.png  # 标注版,编号对应 @eN 引用

命令行速查

命令说明
snapshot -i获取可交互元素列表(推荐)
click / dblclick @eN点击 / 双击元素
fill / type @eN "text"清除并输入 / 追加输入
press Enter / Control+a按键 / 组合键
check / uncheck @eN勾选 / 取消复选框
select @eN "value"下拉选择
upload @eN file.pdf上传文件
scroll down 500页面滚动
screenshot / screenshot --full截图 / 全页截图
record start / record stop开始 / 停止录屏
state save / state load保存 / 恢复浏览器状态
tab new / tab t2 / tab close标签页管理
wait @eN / --text / --url等待元素 / 文本 / URL
network route / har网络拦截 / HAR 导出
eval "document.title"执行 JavaScript
引用生命周期 — @eN 引用在每次 snapshot 后重新分配。页面导航、动态渲染、表单提交、弹窗开关等都会导致引用过期,操作前务必重新 snapshot。

tmux

通过独立 socket 远程操控 tmux 会话,发送按键指令并抓取终端输出。专为需要交互式 TTY 的场景设计,非交互任务优先使用后台 bash。
终端复用  send-keys  并行编排
地址:github.com/mitsuhiko/agent-stuff/tree/main/skills/tmux

核心交互循环

独立 socket 隔离,send-keys 发送指令,capture-pane 读取输出

SOCKET_DIR="${TMPDIR:-/tmp}/clawdbot-tmux-sockets"
mkdir -p "$SOCKET_DIR"
SOCKET="$SOCKET_DIR/clawdbot.sock"
SESSION=clawdbot-python

# 创建隔离会话
tmux -S "$SOCKET" new -d -s "$SESSION" -n shell

# 发送命令
tmux -S "$SOCKET" send-keys -t "$SESSION":0.0 -- 'python3 -q' Enter

# 抓取输出
tmux -S "$SOCKET" capture-pane -p -J -t "$SESSION":0.0 -S -200

功能概览

命令发送

send-keys(字面量 send -l、控制键 C-c)、按键组合、安全输入避免 shell 注入

输出抓取

capture-pane 获取最近 N 行历史、wait-for-text.sh 等待特定模式出现

会话管理

new-session / list-sessions / list-panes / kill-session / kill-server

并行编排

多 session 同时运行多个 coding agent,统一轮询完成状态,汇总结果

进程生命周期

Python REPL (需 PYTHON_BASIC_REPL=1)、长时间运行进程的监控与控制

窗口 / 窗格

多窗格布局、窗格间切换、窗格大小调整、attach / detach 与会话持久化

典型应用:并行编排多个 Coding Agent

# 创建多个隔离 session
SOCKET="${TMPDIR:-/tmp}/codex-army.sock"
for i in 1 2 3 4 5; do
  tmux -S "$SOCKET" new-session -d -s "agent-$i"
done

# 在不同 workdir 启动 agent
tmux -S "$SOCKET" send-keys -t agent-1 "cd /tmp/proj1 && codex --yolo 'Fix bug X'" Enter
tmux -S "$SOCKET" send-keys -t agent-2 "cd /tmp/proj2 && codex --yolo 'Fix bug Y'" Enter

# 轮询完成状态
for sess in agent-1 agent-2; do
  if tmux -S "$SOCKET" capture-pane -p -t "$sess" -S -3 | grep -q "❯"; then
    echo "$sess: DONE"
  else
    echo "$sess: Running..."
  fi
done

# 获取完整输出
tmux -S "$SOCKET" capture-pane -p -t agent-1 -S -500

命令行速查

命令说明
tmux -S $SOCKET new -d -s NAME创建后台会话
tmux -S $SOCKET send-keys -t target -l "cmd"安全发送字面量文本
tmux -S $SOCKET send-keys -t target C-c发送 Ctrl+C
tmux -S $SOCKET capture-pane -p -t target -S -200抓取最近 200 行输出
tmux -S $SOCKET list-sessions列出所有会话
tmux -S $SOCKET list-panes -a列出所有窗格
tmux -S $SOCKET attach -t SESSIONattach 到会话
tmux -S $SOCKET kill-session -t NAME终止会话
tmux -S $SOCKET kill-server关闭整个 socket 服务
wait-for-text.sh -t target -p 'regex'等待输出中出现特定模式
适用场景 — tmux 仅用于需要交互式 TTY 的场景(Python REPL、交互式 CLI 工具等)。非交互长任务优先使用后台 bash。Windows 需在 WSL 中安装 tmux。