每日文摘
深挖 · 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 操作你日常使用、已登录的真实浏览器,而不打断你本人的浏览。
它不是框架,不是浏览器,也不含任何模型——就四样东西的组合:
- 一个 Rust 写的 CLI
bsk(预编译二进制)+ 常驻 daemon; - 一个 MV3 浏览器扩展(上架了 Chrome Web Store 和 Edge Add-ons);
- 一份 SKILL.md 指令文件,教 agent harness 怎么用这套命令;
- 完整链路:agent → shell(
bsk命令)→ daemon → 本地 WebSocket(127.0.0.1:52800)→ 扩展 → 在独立可见的「Agent Window」里执行自动化。官方架构文档的原话是「agent 永远不直接和浏览器对话」(architecture.md)。
兼容面是它主打的卖点:只要 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/3 | 1,211 → 1,733 | +20~50/天 |
| 9/16 官宣 + v0.3.0 | ~2,400 | — |
| 9/17 → 9/19 | 4,004 → 5,345 | ~970/天 |
9/16 官方 X 公告(63.8K views)之后三天的增速是之前峰值的 4~8 倍——这是「官方公告拉量」的脉冲,不是「从 0 暴涨」的刷量型曲线,8 月以来的增长斜率平缓连续。但讨论热度跟 star 数不匹配:HackerNews 1 帖 1 分 0 评论,V2EX 全站 0 条,Reddit 无实质讨论——深度讨论集中在 X 和中文博客圈。
质疑必须如实摆出来,而且不止一处:
- 「是不是 browser_use 套壳」:官方发布帖的回复里有人直接问 reskin;X 用户 LinearUncle 实测说「很难用,完全不推荐」「完全抄袭 browser-use 思路」。中性的第三方分析(explainx)承认它与 browser-use、Playwright wrappers、computer-use 的目标重叠,差异真实但「narrow and specific」。
- 安全性质疑(最常见的批评):复用真实登录态 = 复用真实攻击面——prompt injection 一旦得手,agent 借的是你已认证的会话;确认门只管 tab borrow 这一步,不管任务内每个页内动作;扩展权限不小(
debugger+<all_urls>共 11 项);发布时无第三方安全审计。 - 工程边界(知乎评测整理):仅 Chromium 系、依赖商店扩展(有下架风险)、深绑本机已登录浏览器、不适合 Docker/无桌面/纯 CI 环境。
正面评价也真实存在:同一篇知乎评测把登录态共享称为「杀手级特性」,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 更简单,还没有凭据暴露风险。它的总评我很认同:「一个已解决的安装问题,和一部分未解决的信任问题」。
所以我的结论是互补不替代,按场景分:
- 留在 CDP 直连:批量采集、定时任务(cron)、可复现流程、无头需求——我的 crawl4ai 采集、生图服务、头条采集生产线全部命中这条。BrowserSkill 在这些维度上不是更好更坏的差别,是压根没有:无 headless、无 MCP/SDK 编程面、每步经 LLM(量级从 sub-50ms 变成秒级)。
- 值得试装 BrowserSkill:交互式、一次性的日常任务——让 Mac 上的 agent 顺手操作我正开着的浏览器:查已登录 SaaS 后台的配置、验证 localhost/staging 的 UI、填一张一次性表单、截长图。这类任务写 CDP 脚本不划算,BrowserSkill 的装填成本又极低(一条 curl + 一个扩展 + 一条 install-skill),试错代价几乎为零。
- 两个都别指望:图形验证码、扫码、人脸——所有方案的硬边界,BrowserSkill 至少把 request-help 做成了正式机制。
风险提醒:项目还是 0.3.0 的早期阶段,扩展有商店下架风险,复用日常浏览器登录态的攻击面需要自己权衡——别让它挂着你的支付页面跑无人监督的任务。
参考阅读
- BrowserSkill README — 官方定位、架构与命令面真源
- docs/architecture.md — CLI/daemon/扩展三层组件与 WebSocket 通信路径
- skill/SKILL.md — observe→act→re-observe 工作流与全部命令语义
- hysenlabs Review — 最直接的双路线对比,「solved install / partly unsolved trust problem」论断
- BrowserSkill 深度评测 - 知乎 — 最系统中文评测,三方案对比表与选型建议
- explainx:BrowserSkill vs browser_use — 套壳质疑的提出与回应、安全性质疑记录
- webfuse:Browser-Use vs Playwright — 两条路线取舍的社区口径与混合模式共识
- teachaitools:Autonomous Browser Agents 2026 — AXTree 剪枝 token 量化、每步延迟量级、无头指纹问题