每日文摘

深挖 · BrowserSkill:腾讯让 agent 借用你正在用的浏览器,和 CDP 直连互补不替代

题图

我的浏览器自动化全是 CDP 直连:shell 脚本拉起带 --remote-debugging-port=9222 的 Chrome、独立 profile 保登录态,采集和生图服务附身其上跑。所以看到腾讯这个项目时,我的第一反应是:它跟 CDP 是什么关系?是替代、还是另一层东西?深挖一圈源码和评测后,答案是——底层就是 CDP,但把「给 agent 用的浏览器」这件事倒过来做了。

是什么

BrowserSkill 是腾讯 2026 年 6 月建仓、8 月初首发、9 月 16 日官方宣传后三天内 star 翻倍到 5,345(2026-09-19 GitHub API 口径)的开源项目,MIT 协议。一句话定位:本地桥接工具,让 AI agent 操作你日常使用、已登录的真实浏览器,而不打断你本人的浏览。

它不是框架,不是浏览器,也不含任何模型——就四样东西的组合:

兼容面是它主打的卖点:只要 harness 能执行 shell 就能用——README 列了 Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、Pi、DeepSeek Harness 等一串,无模型锁定,无 API key,无云服务。团队成色也不像个人玩具:16 位贡献者中 Top5 全是腾讯 ID(合计贡献了绝大多数 commit),近 3 天 35 个 commit,处于高频维护状态(contributors)。

核心机制(技术)

底层就是 CDP,只是换了 transport

这是本次深挖最有趣的发现。翻扩展源码会看到 apps/extension/src/browser-driver/chromium-cdp.ts——1283 行,头注释自述「Wraps chrome.debugger.*」,直接调用 CDP 的 Page.*、Runtime.*、Network.*、DOM.*、Emulation.* 方法,协议版本 1.3(chromium-cdp.ts)。也就是说,它和我那套 9222 直连用的是同一个 DevTools 协议,区别只在 transport:我用外部进程连调试端口,它用扩展的 chrome.debugger API 在浏览器进程内发命令——连端口都不用开。

代价是对等换位的:chrome.debugger 附身时浏览器顶部会挂出调试横幅,而 9222 方式是本机任何进程都能连那个端口。两种暴露面,各有各的取舍。

感知层:文本优先,ref 寻址

CDP 直连栈里,「页面长什么样」是客户端库自己的事(crawl4ai 们自己拼 DOM 序列化)。BrowserSkill 把这层做进了扩展,叫 VOM 模块——DOM 转结构化表示的完整管线(语义关系图、可访问名称富化、hover 交互感知、视觉去重)。agent 侧拿到的默认视图是 bsk observe:页面文本 + 交互控件列表,每个控件带 @e3 这样的短引用(SKILL.md)。

动作几乎全部走 ref 而非坐标:bsk click @e3、bsk fill @e3 --value "..."。唯一的坐标动作是 Canvas 点击,还要配合一次性有效的 capture_id。ref 在导航后失效,所以 SKILL.md 强制 observe → act → re-observe 的循环。截图是「按需」而非默认——SKILL.md 明确写「不要为了找普通控件先上 HTML/截图」,只有图片内容真正重要或 Canvas 场景才截。这意味着纯文本模型就能跑常规任务,不强制多模态。

隔离模型:方向跟我那套正好相反

我的栈是隔离实例:独立 profile 的 Chrome,登录态在那个 profile 里持久化,和日常浏览互不干扰。BrowserSkill 是共享实例 + 隔离窗口:直接附身你正在用的那个浏览器,复用全部登录态,自动化跑在独立的 Agent Window 里(可见、非 headless)。要动你自己的标签页,必须走显式的 tab borrow / tab return,且默认弹确认框。遇到验证码、登录、OTP、支付,agent 调 bsk request-help 交还人类——human-in-the-loop 是一等公民。

两种隔离没有对错,但决定了适用场景的分野(见下文)。另外两个硬边界值得记住:没有 headless 模式(文档全文未提及,Agent Window 设计上就是可见窗口);没有 MCP server、没有 Python SDK——对程序的集成面只有 CLI 和 skill 文件。

怎么跑起来(环境)

安装是三条命令的事(AGENT_INSTALL.md):

curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh
# 商店装扩展,然后:
bsk install-skill --harness claude-code   # 或 cursor / codex / pi 等
bsk doctor                                # 自检,按 hint 修复

平台覆盖 macOS(Apple Silicon/Intel)、Linux(x64/ARM64)、Windows x64;浏览器要求 Chrome/Edge ≥ 125(flat debugger 会话处理跨域 iframe),Firefox 在计划中。最终用户拿的是预编译二进制,无 Python/Node 运行时依赖。

对我这种「agent 跑在内网 Linux 服务器、浏览器在 Mac 本地」的用法,它有专门的远程形态(remote-extension-connection.md):daemon 跑在服务器,扩展发起出站 WSS 连接(本地不开入站端口),bsk daemon pair 生成单次有效的配对链接粘进扩展即可,自托管可上原生 TLS 或反代。

成本侧官方没给任何 token 数字,但设计取向清晰:文本优先 + observe --max-tokens 分页。行业背景是可访问性树剪枝的 token 经济性——典型 SPA 的 DOM 约 3 万 token,剪成 45 个可操作元素只要 2,400 token,省 92%(teachaitools)。bsk 本身不含推理组件、不占 GPU。

数据说话(评测)

先说干净的事实:公开 benchmark 是零。WebVoyager、Mind2Web、WebArena,一个数字都没有;仓库里唯一的 evals/browser 是自建的 20 个任务确定性评测,输出 pass/fail,不产对外可比分数。横向对比也全部是定性讨论,无量化 A/B。

star 曲线值得细看(Wayback 快照交叉验证):

时间stars增速
8 月初~900—
8/20 → 9/31,211 → 1,733+20~50/天
9/16 官宣 + v0.3.0~2,400—
9/17 → 9/194,004 → 5,345~970/天

9/16 官方 X 公告(63.8K views)之后三天的增速是之前峰值的 4~8 倍——这是「官方公告拉量」的脉冲,不是「从 0 暴涨」的刷量型曲线,8 月以来的增长斜率平缓连续。但讨论热度跟 star 数不匹配:HackerNews 1 帖 1 分 0 评论,V2EX 全站 0 条,Reddit 无实质讨论——深度讨论集中在 X 和中文博客圈。

质疑必须如实摆出来,而且不止一处:

正面评价也真实存在:同一篇知乎评测把登录态共享称为「杀手级特性」,Agent Window 解决了有头浏览器抢焦点的老痛点,agent 中立 + 内置 HITL 的组合目前确实没有同形态竞品。

值不值得跟

回到我最初的问题:和 CDP 直连是什么关系?

先把「agent 操作浏览器」的三条路线摆开。协议/选择器直连(CDP、Playwright、Puppeteer):动作延迟 sub-50ms、完全确定性,弱点是选择器易碎、页面改版就坏。视觉驱动(browser-use 一系):截图 + Set-of-Mark 让模型看图点编号,对 UI 改版自愈,但每步 1.5~3.5 秒、强依赖多模态模型。BrowserSkill 是第三条:skill/prompt 工程 + 扩展桥接,感知层是文本语义观察 + ref 寻址——既不是选择器直连,也不是截图视觉。

最贴切的一篇第三方评测(hysenlabs)抓住了要害:Playwright/Puppeteer 是库,脚本拥有会话,浏览器是一次性的,「浏览器可抛弃时它们是正确答案」;BrowserSkill 把所有权倒置——浏览器始终是你的,agent 是借标签页的客人。代价是确定性:「需要可复现的运行,留在库那边」;headless CI、夜间定时检查,用容器里的无头 Chromium 更简单,还没有凭据暴露风险。它的总评我很认同:「一个已解决的安装问题,和一部分未解决的信任问题」。

所以我的结论是互补不替代,按场景分:

风险提醒:项目还是 0.3.0 的早期阶段,扩展有商店下架风险,复用日常浏览器登录态的攻击面需要自己权衡——别让它挂着你的支付页面跑无人监督的任务。

参考阅读