把一个待办事项丢给 Claude Code 或 Cursor,让它去查一下订单物流、整理一下后台数据,前几步都很顺利,直到页面要求登录。这一类浏览器自动化工具会新开一个干净的浏览器实例,里面没有任何 Cookie,任何登录墙都会把任务卡死。开发者只能退回来手动导出数据,或者专门为 Agent 配一套测试账号,工具链的价值在最后一公里归零。
腾讯 9 月中旬开源的 BrowserSkill 走的是另一条路:不另起炉灶开新浏览器,而是让 AI Agent 直接使用你已经登录的那个浏览器。项目托管在 GitHub 的 Tencent 组织下,采用 MIT 许可证,9 月 17 日刚发布了 0.3.0 版本。仓库目前约 4000 star,过去一天新增超过 1300 颗,是当天 GitHub Trending 全榜增长最快的仓库。Cursor、Claude Code、Codex、Hermes Agent 等任何能调用 Shell 的 Agent,装一个命令行工具加一个浏览器扩展就能接入。
登录态复用为什么是个架构问题
主流浏览器 Agent 的标准做法是 Playwright 式驱动:启动一个无头的或独立的浏览器进程,用 CDP(Chrome DevTools Protocol)控制它。这个方案工程上很成熟,但浏览器实例与用户的日常浏览器是隔离的,登录态、Cookie、插件、企业 SSO 会话统统不存在。
Agent 想操作内网系统,管理员要么给 Agent 单独开账号,要么维护一套 Cookie 注入脚本,后者既要处理过期,又把凭据暴露给了自动化层。这是所有「给 Agent 一个干净浏览器」方案的共同代价:干净意味着一无所有。
BrowserSkill 的选择是把方向反过来:浏览器不用新的,就用你那个已经登录了公司后台、邮箱和购物网站的 Chrome 或 Edge。Agent 需要操作时,把请求送进这个真实浏览器里执行。登录态是现成的,内网系统、带 SSO 的服务、手机验证码登录的网站,对 Agent 而言和你亲手操作没有任何区别。
这个思路节省的不只是配置成本。金融、医疗、企业内部系统往往禁止批量注册测试账号,Cookie 注入又过不了风控,真实浏览器是唯一可行的通道。

三层链路:CLI、daemon 与浏览器扩展
BrowserSkill 由两个本地组件构成:bsk 命令行工具(内置常驻 daemon)和一套 MV3 浏览器扩展,用 Rust 加 TypeScript 写成,代码结构是 Cargo + pnpm workspace。
调用链路分三层。Agent(比如 Claude Code)在 Shell 里执行 bsk click @e1 --tab-id 42 --session ab12 这样的命令;CLI 通过 Unix domain socket(Windows 上是命名管道)把 JSON Lines 格式的请求发给本地 daemon;daemon 再通过只绑定本机回环地址的 WebSocket(默认端口 52800)把请求转给浏览器扩展;扩展拿到请求后,通过 CDP 和 WebExtension API 在页面里执行实际操作,结果沿原路返回。
几处设计值得展开:
会话与 Agent Window。 每次 bsk session start 会创建一个独立的 Agent Window,Agent 的所有操作默认只能落在这个窗口里。你的日常窗口不受影响,多个会话可以并行,各自有完全隔离的 Agent Window。
标签借用(tab borrow)。 如果任务确实需要操作你已经打开的标签页,Agent 必须显式「借用」,任务结束后归还,其余窗口始终不可见。默认配置下借用前会弹确认,用户点头才放行。这个模型把「能看什么、能碰什么」变成了显式授权,而不是全有或全无。
观察与引用(ref)机制。 Agent 读页面的主要方式是 bsk observe,返回文本化的页面结构和 @e1、@e2 这样的元素引用,后续点击、填表都通过引用执行。导航或大幅 DOM 变化会让引用失效,工具链会强制 Agent 重新观察,避免对着过期坐标乱点。大页面用 --max-tokens 分页读取,配合续读游标控制上下文长度,这是为 LLM 的 token 预算专门设计的。
会话内队列。 同一个会话里的工具调用被 daemon 串行化,避免两个操作同时改一个页面;不同会话之间并行。这与人类操作浏览器的直觉一致:一个人不会同时点两个按钮。
人机协作是内建的,不是外挂的
BrowserSkill 对「Agent 搞不定的事情」有一套明确的处理协议。遇到验证码、支付确认、扫码登录这类必须人来做的步骤,Agent 调用 request-help,浏览器弹出提示,你接手完成,Agent 再继续。扩展弹窗里有两个独立开关:是否允许借用前免确认、是否允许请求人工协助。0.3.0 起这两个开关以浏览器里保存的设置为准,命令行参数不能再覆盖,用户拥有最终决定权。
对有视觉能力的模型,BrowserSkill 允许它尝试识别图形验证码,但手机扫码、人脸验证、短信验证码这类物理层面必须人参与的场景,Agent 只能报告受阻,不会伪装成功。每个操作的返回结果带 effect_state(none / committed / unknown)状态,传输超时产生「未知」状态时,系统要求重新观察确认而不是盲目重试,防止一次超时变成两次下单。
这套状态机反映的是浏览器自动化的真实难点:HTTP 请求失败可以安全重试,浏览器里的点击失败可能是网络断了,也可能是点击已经生效但响应丢了,两种情况的正确处理完全不同。
文件上传下载:capability 模型
0.3.0 的远程模式里有一段少见的工程细节。浏览器自动化里的文件传输历来是事故高发区:上传要等待页面弹出文件选择框,下载要区分「浏览器还没开始下」和「下完了但文件名对不上」。BrowserSkill 的处理方式是能力(capability)隔离:CLI 是唯一接触真实文件路径的组件;daemon 只签发会话级的不透明传输 ID,把分片暂存在私有目录;扩展全程只操作浏览器事务,见不到任何 Agent 侧路径。下载时 daemon 校验路径、文件类型、符号链接边界和字节上限之后,才把字节数据导入目标位置。每一步都有回滚责任归属,上传暂存会保留到会话结束,因为页面可能在稍后的表单提交时才读取附件。
这套设计让「让 Agent 替我下载报表再上传到后台」这类任务有了可控的执行路径,也把路径穿越、符号链接攻击这类经典风险挡在结构外面。
0.3.0 带来了什么
对照 CHANGELOG,9 月 16 日至 17 日的 0.3.0 是一次大版本:
- 远程浏览器连接:Agent 跑在服务器上时,通过内置鉴权服务与本地浏览器配对,支持一次性配对链接、设备凭据续期与吊销,WSS 加密传输。服务器上的 Agent 从此能操作你家里那台电脑的浏览器。
- 操作审计:可选开启的任务历史,存在 daemon 所在主机上,元数据脱敏,保留 30 天,可导出可删除。对把 Agent 用于工作场景的团队,这是审计合规的 baseline。
- 整页长截图:从扩展快捷操作或 CLI 触发,流式输出 PNG,支持取消和懒加载页面捕获。
- 滚动定位原语与原生滚轮:
scroll-to支持跨 iframe 的祖先裁剪可见边界计算,滚轮输入不再依赖合成滚动事件。
社区侧,项目同期放出了 DeepSeek Harness(dsh)的官方插件,把 bsk 封装成原生 browser_* 工具,在 dsh 的 Web UI 里实时展示浏览器会话。
和现有方案比,它处在什么位置
与 Playwright / Puppeteer 这类经典自动化框架相比,BrowserSkill 不提供无头批量抓取能力,它解决的是「带登录态的个人浏览器交给 Agent 用」这一个问题。与 browser-use 这类开源 Agent 浏览器项目相比,它不自带 Agent 循环,只是把浏览器变成所有 Agent 都能调用的工具层,模型无关、框架无关。
这个定位让它在 AI Agent 工具链里补的是基础设施位:Agent 框架怎么变,只要还能执行 Shell 命令,浏览器这一层就是同一个入口。star 增速说明「复用真实登录态」确实踩中了痛点,但值不值得长期依赖,还要看腾讯组织对这个项目的维护节奏,目前 0.2.x 到 0.3.0 的迭代频率(约两周一个版本)是健康信号。
如果你想让它替你干活
安装分三步:curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh 装 CLI,从 Chrome Web Store 或 Edge 商店装扩展,然后让 Agent 执行 bsk install-skill 把使用说明注入你正在用的 Agent harness。bsk doctor 会逐项检查链路连通性。支持 macOS(Apple Silicon 与 Intel)、Linux、Windows,浏览器要求 Chrome 或 Edge。
普通用户最直接的用法是把重复的网页操作交出去:每天导出一份后台数据、定期查一次账单、把网站内容整理成表格。这些任务的共同点是步骤琐碎但要登录,恰好落在「真实浏览器 + Agent 执行」的甜区。
边界也要说清楚。Agent 拿到的是你浏览器的全部登录态,授权它操作内网系统,等于把这个系统的操作能力交给了模型驱动的自动化层。BrowserSkill 的借用确认、人工协助开关、操作审计提供了控制面,但「给 Agent 什么权限」的判断权在使用者手里。验证码类环节仍然需要人,全无人值守的浏览器自动化在可见的设计里就不是目标,这是一款把「人在环上」当默认假设的工具。
来源:
- GitHub 仓库:Tencent/BrowserSkill(README、docs/architecture.md、CHANGELOG、releases,MIT License)
- 官方架构文档:docs/architecture.md
- 官方推特账号 @TencentAI_News 的开源公告