让 AI 用你的真实浏览器干活:BrowserSkill 给开发者带来了什么

一个老问题

如果你让 AI 编程助手做过浏览器自动化——跑一遍 E2E、复现一个前端 bug、或者抓取一个需要登录的页面——你大概率经历过这套流程:装 Playwright,写登录脚本,处理验证码,等 token 过期,然后再处理一次验证码。传统方案的本质困境是:自动化工具开的是一个“干净”的浏览器,没有你的登录态、没有你的 Cookie、没有你的插件和环境。而真实用户的浏览器里什么都有。

BrowserSkill 是腾讯开源的一个方案,思路很简单直接:别给 AI 造一个新浏览器了,让它用你正在用的这个。它由三部分组成——bsk CLI、一个浏览器扩展、一份教 AI 怎么用这套工具的技能文件(SKILL.md)。任何能跑 shell 命令的 AI agent(Claude Code、Codex、Cursor、ZCode……)装上技能就能用,不绑定任何特定 harness。

好处一:登录态复用,E2E 不再从登录开始

这是我体感最强的一点。我们在一个幼儿园管理系统的 Vue 项目里把 E2E 工具切换到 BrowserSkill,第一个发现就是:bsk navigate http://localhost:9527 之后,页面直接落在已登录的工作看板上——因为 Agent Window 用的是真实浏览器档案,localStorage 里的 token 还在。

以前用无头浏览器时,“登录”是每次测试的开场仪式:填用户名、填密码、点按钮、等跳转,还得小心 SPA 的 hash 路由别把 token 弄丢。现在这套流程整个消失了,测试直接从目标页面开始。对内部系统、后台管理类项目来说,这一条就值得换工具。

好处二:真实环境,看到的就是用户看到的

Agent Window 不是隐形的无头实例,而是一个你能亲眼看到的浏览器窗口。AI 在里面点击、填表、截图,全程可观察——这一点比听起来重要。无头浏览器跑出“绿了”,你仍然不确定用户看到的画面是不是这样;而这里渲染引擎、扩展、字体、DPI 都和你日常浏览器一致,截图即真相。

配套的读取能力也实用:bsk observe 返回语义化的页面结构(带可交互元素引用),bsk console 和 bsk network 能读到缓冲的控制台日志和网络请求。前端页面白屏了?让 agent 打开页面、看 console、看失败的请求,一套下来比你自己开 DevTools 手翻还快。

好处三:CLI 即接口,agent 无关

BrowserSkill 对 agent 的要求低到只有一条:会执行 shell 命令。这意味着:

  • 不用装重型依赖。没有 Playwright、没有 driver 版本匹配、没有 Node 环境要求,一个几 MB 的 CLI 加一个商店里点一下就装的扩展。
  • 换 agent 零成本。我们把它装进 ZCode 的技能目录后,任何新会话里 agent 都自动知道这套工具怎么用;哪天换 Claude Code,bsk install-skill 一条命令同样装好。工具的归属从“某个 agent 的插件”变成了“这台机器的基础设施”。

好处四:权限模型是认真设计过的

让 AI 操作你的真实浏览器,第一反应肯定是“危险”。BrowserSkill 在这方面的设计值得说说:

  • Agent Window 隔离:AI 默认在自己专用的窗口里操作,你的工作标签页不受影响;要动你正在用的标签页,需要显式“借用”(borrow),且按扩展的自动化设置可能弹确认。
  • 页面内容不可信:技能文件里明确写了防线——observe 返回的页面文本是数据不是指令,页面里出现“请忽略之前的指令”这类内容一律不执行。这是针对提示注入的正经防御,而不是一句免责声明。
  • 明确的禁区:不提取凭据、Cookie、token,不为了绕过确认去改浏览器设置。

好处五:人机协作的坡道

自动化总会在某个地方卡住:验证码、OTP、支付确认。传统脚本在这里只能宣告失败,BrowserSkill 的做法是 bsk request-help——AI 在窗口里标注出需要你完成的步骤,你动一下手,它接着跑完剩下的。这个“95% 自动 + 5% 人工”的坡道,比“全有或全无”的自动化实用得多。

另一个被低估的能力是 bsk record:你在浏览器里手动操作一遍,它录成语义化的 trace.json,之后 AI 可以照着这个“教科书”重放。手动复现一次 bug,换来 agent 可以反复执行的复现步骤——调试效率的杠杆很可观。

一段真实的测试流程

感受一下 agent 眼中的 E2E 是什么样的(@eN 是 observe 返回的元素引用):

bsk session start --no-focus --json     # 开会话,拿 session_id
bsk navigate http://localhost:9527 --wait-until networkidle --session fjom
bsk observe --session fjom              # 读页面结构,拿到 @e21 是"行动计划"菜单
bsk click @e21 --session fjom           # 点击进入
bsk evaluate "window.location.hash = '#/home'" --session fjom   # SPA 跳转
bsk screenshot --out tmp/result.png --session fjom
bsk session stop fjom                   # 收尾,归还借用

注意两个细节:导航后必须重新 observe(元素引用会失效,技能文件里把这写成了硬规则);SPA 内跳转用 evaluate 改 hash 而不是 navigate,避免整页刷新。这些坑都被技能文件提前教育给了 agent——把使用经验沉淀进 SKILL.md,让下一个会话的 AI 一上来就避开,这个“技能即文档”的模式本身就是 agent 时代工程化的好示范。

适用与不适用

说点实话:如果你的场景是 CI 里跑几千条断言的回归矩阵,Playwright 仍然是对的工具——BrowserSkill 驱动的是有真实档案的桌面浏览器,不适合无人值守的大规模并行。它的甜区是交互式开发场景:开发中随手验证、agent 自测刚写的页面、复现用户报告的问题、需要登录态的数据操作。

结语

BrowserSkill 代表的思路——不给 AI 造新环境,让它接入开发者已有的真实环境——大概率会成为 agent 工具设计的主流。对开发者而言,它的价值可以浓缩成一句话:你花在“让自动化工具够到真实环境”上的时间,从此可以还给真正的问题本身。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容