browser-control:让智能体把 Playwright 跑在你的浏览器里
anomaly 的浏览器驱动:智能体发 Playwright 片段,经 relay 和扩展在你日常 Chromium 里执行,带只读会话、人工交接、密钥脱敏。
项目资料
GitHub Ecosystem- 许可证
- 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 里,对手感细节(快照引用稳定性、标签页保全不变式)的较真程度在同类项目里少见。