腾讯开源 BrowserSkill:把 AI 接上你已经登录的那台浏览器

腾讯开源 BrowserSkill:把 AI 接上你已经登录的那台浏览器

腾讯开源 BrowserSkill:把 AI 接上你已经登录的那台浏览器 封面

说实话,我对 AI 操作网页这事早就不抱希望了

你让它去后台拉一份数据,它回你一句”请先登录”。你让它帮忙提交一张表单,它一本正经地把登录页打开了。你把账号密码直接给它?不安全,也不体面。你退一步,用 Playwright 给它开个无头浏览器?登录态是空的,光是短信验证码这道墙,它就撞得头破血流。

跟模型聪不聪明没关系。问题出在咱们一直让 AI 住进了一间空房子。

Playwright 干的事,是给 AI 临时开一间酒店房,床是新的桌子是新的钥匙也是新的。房间很干净,代价是你在前台压根没登记过。BrowserSkill 的思路完全不同,它把你家的钥匙配了一把客用的:能进客厅能用厨房,主卧锁着,而你随时能把这把钥匙收回来。

这是腾讯最近开源的一个项目,MIT 协议,能商用能二开,GitHub 上一路涨到了两千多星。它对外的自我介绍只有一句:让 Agent 复用你真实的浏览器身份,在一个独立窗口里干活。

BrowserSkill 的登录态共享与窗口隔离:你的窗口照常工作,Agent 在橙色窗口里干活
BrowserSkill 的登录态共享与窗口隔离:你的窗口照常工作,Agent 在橙色窗口里干活

架构其实就一句话:Agent 是访客,不是主人

Agent (Cursor / Claude Code / Codex / OpenClaw / WorkBuddy ...)
  │ shell: bsk ...
  ▼
bsk CLI(Rust 写的命令行工具)
  │ 本地 IPC
  ▼
bsk Daemon(后台守护进程)
  │ WebSocket 127.0.0.1(全程本机,不过外部服务器)
  ▼
BrowserSkill 浏览器扩展(Chrome / Edge)
  ▼
Agent Window(独立可见窗口,橙色高亮)

拆开看就四步。Agent 在终端里敲一句 bsk 命令,CLI 通过本地 IPC 转给常驻后台的 Daemon,Daemon 再用 WebSocket 连到浏览器里的扩展,最后由扩展拉出一个全新的 Agent Window。

整条链路里最关键的细节是那个地址:127.0.0.1。全程本机,中间不经过任何外部服务器。你的 Cookie 从头到尾没离开过这台机器。

如果你熟悉 MCP 协议,会发现这套设计很眼熟:能力不塞进模型里,而是在外面套一层可管控的桥。差别在于 MCP 桥接的多半是 API,BrowserSkill 桥接的是你本人的浏览器身份。

三条看不见的规矩:

  • Agent 是访客,不是主人:它只在橙色高亮的 Agent Window 里活动,和你正在看的那个窗口物理隔离,互不干扰。
  • 登录态共享,但不交出密码:Cookie 同源共享,凭证始终留在本地。
  • 人始终在回路里:验证码、支付确认、删除确认这类动作,它会停下来等人。

第三条最容易被低估,也最值钱。真正敢放手的自动化,从来都得有一个能随时踩下去的刹车。

十分钟装上:从 CLI 到第一条指令

macOS 和 Linux 一条命令,Windows PowerShell 一条命令:

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh
# Windows PowerShell
irm https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.ps1 | iex

装完先别急着干活,用三个命令把环境确认一遍。

bsk --version          # 验证 CLI 有没有装上
bsk install-skill      # 选你的 Agent Harness,自动写配置
bsk doctor             # 一键体检:CLI 版本 / Daemon / 扩展连接 / Skill 安装

bsk doctor 这一步别偷懒。它会一次性把 CLI 版本、Daemon 状态、扩展连接、Skill 配置全扫一遍。绝大多数”命令没反应”的问题,都卡在 Daemon 没起来或者扩展没连上,而 doctor 会直接告诉你哪一条飘红。

官方点名支持的包括 Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、WorkBuddy、Pi、Hermes Agent。话说回来,这个列表其实没那么重要。bsk 对 Agent 来说就是一个普通的终端命令,跟 git、curl 没区别。任何能跑 shell 的 Agent,都能用。

平台方面,macOS 支持 Apple Silicon 和 Intel,Linux 支持 x64 和 ARM64,Windows 支持 x64。浏览器目前只吃 Chromium 系的 Chrome 和 Edge,Firefox 还在规划中。

命令行实操:session 是主轴,token 要省着花

所有操作都挂在一个 session 下面。先起会话,拿到 session id,后面的每条命令都带上它。

bsk session start                                   # 返回 session id
bsk navigate https://example.com --session abcd
bsk observe --session abcd                          # 语义化观察页面
bsk snapshot --session abcd                         # Accessibility Tree,元素变成 @e1 @e2 @e3
bsk fill @e3 --value "BrowserSkill" --session abcd
bsk press Enter --session abcd
bsk click @e7 --session abcd
bsk session stop abcd

snapshot 这个设计点有点意思:页面上每个可操作元素被编号成 @e1、@e2、@e3,Agent 后面只用说点 @e7 就行,不用再去拼一串长得吓人的 CSS 选择器。

观察方式分四档,从省到贵依次是 bsk observe、bsk snapshot、bsk get-html、bsk screenshot。官方 Skill 里写死了一条规矩:只有任务真的依赖视觉布局、Canvas 或者 CSS 样式时才允许截图。别一上来就把整页截图塞给多模态模型,那是烧 token 最快的方式。

官方 Skill 里有一行硬性禁止:不允许用 bsk evaluate 在银行、SSO、密码管理器这类敏感页面上提取 Token、Cookie、localStorage、Auth Header 或任何密钥。这条线一旦破掉,你交给 Agent 的就不只是操作权了。

还有一条纪律叫 Stop when the goal is met。开工之前先定一个肉眼能验证的成功条件,比如”表单已提交”、”商品已加购”。同一个动作连续失败两次还没进展,就停下来复盘,不许靠反复刷新和乱点碰运气。

连你正在看的标签页都能借,用完得还

前面说的是 Agent Window。但有时候你要它处理的,恰恰是你已经打开的那个页面。这时候用 tab borrow。默认只读,得你显式借出它才能动。

bsk tab list --session abcd --scope user
bsk tab borrow <tab-id> --session abcd
bsk tab return <tab-id> --session abcd            # 用完归还

用完记得归还。这行命令看着啰嗦,其实是把主动权留在你手上:什么时候借、借多久、什么时候收回来,都是你说了算。

真卡住的时候,用 request-help 把人类拉进来。

bsk request-help --session abcd --prompt "请完成验证码,通过后点击 Done" --title "需要人工验证"

它会弹个框,把 Agent Window 停在那儿等你。你拖个滑块、收条短信验证码,点 Done,它接着往下跑。这套流程跑顺了之后有点上头:你会开始习惯它在旁边干活,遇到坎抬头喊你一声。

Human-in-the-loop:Agent 撞上验证码会停下来,把控制权交回给你
Human-in-the-loop:Agent 撞上验证码会停下来,把控制权交回给你

一张表看明白:它和 Playwright 们到底差在哪

维度BrowserSkillPlaywright/Puppeteerbrowser-useBrowser MCP
登录态复用直接用你的浏览器需重新登录独立 Profile连接当前标签页
是否打断你独立 Agent Window,不打断抢占浏览器全屏接管占用当前标签页
Agent 兼容性任何 Shell Agent需写代码集成Python onlyCursor / Claude Code
人工介入验证码暂停等人有限有限
无头模式需真实浏览器支持支持需真实浏览器

挑工具这件事,其实只有一个判断条件。如果你的任务是 7×24 跑在服务器上、无人值守、还要并发出结果,那就选 Playwright,BrowserSkill 依赖真实浏览器和图形界面,撑不起这种场景。如果你的任务是一次性、偶发、强依赖个人账号权限的后台操作,那 BrowserSkill 几乎是目前最顺手的选择。

顺带提一句,行业里还有另外一条路:在云里另外开一台虚拟机电脑,代表性的作品是 Hugging Face Open Computer Agent。隔离做得更彻底,代价是你的账号得在那台云电脑里重新登录一遍。

踩坑清单:五个绕不开的坎

坑1:命令执行了,浏览器毫无动静
现象:终端不报错,页面纹丝不动。
根因:Daemon 没起来,或者扩展没连上。
解法:跑一遍 bsk doctor,看哪一步飘红。九成问题都出在这一步。

坑2:Mac 上顺风顺水,Windows 上各种别扭
现象:同样一套命令,Windows 下报错多一点。
根因:官方支持 x64,但 macOS 上的打磨明显更足。
解法:打算长期在 Windows 上用,心理预期先放低一档,遇到问题多翻 issue。

坑3:Firefox 和 Safari 用户可以先劝退
现象:扩展装不上。
根因:目前只支持 Chromium 系的 Chrome 和 Edge。
解法:换 Chrome,或者等 Firefox 排期。

坑4:token 烧得肉疼
现象:一个简单的填表任务花掉一大截额度。
根因:习惯性先截图,把整页截屏塞给了多模态模型。
解法:严格执行观察优先级,observe 和 snapshot 能搞定的事,别碰 screenshot。

坑5:这一条最要紧
现象:一切正常,但你很难界定 AI 到底碰到了什么。
根因:让 AI 操作你已登录的浏览器,等于它能碰到你所有已登录的站点。Agent 一旦被注入恶意指令,它的手理论上够得着你的邮箱、网盘、云控制台。
解法:敏感站点单独用 profile,重要操作留着 request-help 那道刹车,别图省事全权放行。

另外这个项目还很早期,社区 issue 积累得不够充分,上生产之前建议自己压一遍。想看另一条更彻底的路线,可以翻翻我们之前写的 Cloudflare Kitesurf,那是专为 AI 重新造的轻量浏览器。

写在最后

我以前觉得,AI 接管网页这件事差的是模型能力。看完 BrowserSkill 才明白,差的是一把钥匙。

绝大多数把 AI 卡住的场景,其实不需要更强的推理,只需要让它站在你已经站过的位置上。剩下那些不敢放手的部分,留给人就好了。

技术栈就摆在那儿:Rust 占大头,TypeScript 占剩下的,Cargo 加 pnpm 双 workspace,MIT 开源。腾讯研究院把它列进 9 月中旬那天的 AI 速递重点,给的定位是 Agent 从”能说”走向”能办”的关键中间件。

关注圈圈,下回我们把这条链路接上一个真实的工作流,看看它到底能替你干掉多少活。

© 版权声明
THE END
喜欢就支持一下吧
点赞144 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容