自动化#浏览器自动化

browser-control:让智能体把 Playwright 跑在你的浏览器里

anomaly 的浏览器驱动:智能体发 Playwright 片段,经 relay 和扩展在你日常 Chromium 里执行,带只读会话、人工交接、密钥脱敏。

项目资料

GitHub Ecosystem
仓库地址github.com/anomalyco/browser-control
许可证
MIT
主语言
TypeScript
星标
439
核查时间
2026-10-10

以上快照资料以核查当日为准,可能随版本或运营策略变化。

Playwright 脚本好写,但默认开的是一个干净的自动化浏览器:没有登录态,没装扩展,想抓登录后的接口就得先把 cookie 搬进去。anomaly 2026 年 7 月开源的 browser-control(MIT 协议,截至 2026-10-10 约 440 star)换个思路,让你日常的 Chromium 直接当执行环境:智能体发一段 Playwright 片段,本地 relay 转给浏览器扩展,在真实 profile 里执行完,返回结果、日志和一段「页面发生了什么变化」的摘要。整条链路是「Agent/CLI → 本地 relay(127.0.0.1:19989)→ 扩展 → 你的浏览器」,驱动本身不含模型、不做规划,跑什么全由 agent 的代码决定。

核心功能

  • 代码优先执行:execute 收一段 Playwright 代码(含 browser/context/page 对象和辅助函数),跑完返回结果和日志;会话带持久的 state 和追加式活动日志(journal),可以断点续跑。
  • 先看再动:snapshot() 返回带 [ref=e12] 这类引用的紧凑页面快照,下一段代码直接按 ref 点击,结构漂移会报错而不是点错目标;还有增量 delta、语义查找、带标注截图和像素 diff。
  • 接管已有标签页:点扩展按钮把某个打开中的标签页交给会话(adopt),独占使用,释放时不关页面。
  • 人工交接:handoff() 把验证码、2FA、支付确认挂起等人操作,页面里出现完成控件,脚本原地等待;demonstrate() 反过来,把你手动演示一遍的流程录成可编辑的 Playwright 代码,密码值替换成密钥引用。
  • 只读会话与密钥脱敏:--read-only 会话拒掉鼠标键盘类 CDP 命令;网络捕获导出 HAR 时把 cookie、token、API key 换成 ${BC_SECRET_N} 引用,明文单独存 0600 权限的 profile,子进程经 secrets run 拿到的输出也会先脱敏。
  • MCP 与 OpenCode 插件:MCP 客户端接 browser-control-mcp 入口,OpenCode 一条 opencode plugin add 装成托管插件;shell 型 agent 用官方技能 npx skills add anomalyco/browser-control --skill browser-control 学会整套工作流。
  • 同源请求客户端:npm 包还导出一个 Effect 风格的 TypeScript 客户端,应用不发 Playwright 代码也能借会话发同源请求:cookie 留在浏览器里,响应按 schema 校验,标记敏感的请求返回脱敏值、要显式 reveal 才能解开。
  • 对抗性自测:仓库自带 gauntlet 套件,本地起敌意页面(bot 防护卡住主线程、无视自动填充的跨域支付 iframe、点击透传浮层),断言执行结果和「会话只拥有一个标签页」这类不变式。

典型使用场景

  • 让编码 agent 用你已登录的 GitHub 或公司后台复现一个 bug、调一个需要鉴权的接口。
  • 把手工流程演示一遍(demonstrate),拿生成的 Playwright 代码改造成可复用脚本。
  • 对偶发故障留证据:录制 WebM、滚动缓冲的 flight recorder、改版前后的截图 diff。

快速上手

npm install --global @opencode-ai/browser-control
browser-control execute 'await page.goto("https://example.com"); return { title: await page.title() }'

装完还差一步手动加载扩展:用 README 里的命令打印扩展目录,在 chrome://extensions 开发者模式下 Load unpacked。首条命令会拉起 relay 并开一个新标签页,返回页面标题和续接用的 --session 命令;browser-control doctor 随时体检。需要 Node 22.19 以上,Chrome、Brave、Edge、Arc 都能用。

小结

适合想让 agent 用真实登录态、又偏爱 Playwright 精细编排的开发者。和 BrowserSkill 的「独立 Agent Window」相比,它没有独立窗口,靠会话和 adopt 划边界,也不提供远程认证,仅限本机使用。名字相近的 Browser Control MCP(eyalzh)是另一个项目,做的是 Firefox 标签页管理,别装错。要接受的现实:扩展目前只能 unpacked 安装,还没上架 Chrome Web Store;read-only 不是安全沙箱,可信代码仍能通过 page.evaluate 改页面。它明确信任本机的 agent 代码,扩展要的权限也不小(debugger、tabCapture),给谁装、跑什么,自己心里要有数。架构决策记录在 PLAN.md 里,对手感细节(快照引用稳定性、标签页保全不变式)的较真程度在同类项目里少见。