☰
如何让 AI Agent 安全使用你已登录的浏览器:BrowserSkill 从安装到实战的完整指南
2026/9/26 2:14:52 网站建设 项目流程

如何让 AI Agent 安全使用你已登录的浏览器:BrowserSkill 从安装到实战的完整指南

【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill

你大概率遇到过这个困境:想让 AI Agent 替你在内部网站填个表单,它没有你的账号;用无头浏览器又绕不开登录态。而让它直接接管你的真实浏览器,又怕它把你正在用的页面搞乱。BrowserSkill(一套由bskCLI 加浏览器扩展组成的本地桥接工具)就是为此设计的。看完这篇,你能让 AI Agent 在你已登录的浏览器里读页面、填表单、截长图,并且知道普通本机、沙箱化 Agent、远程服务器三种环境分别该怎么部署。

🧭 先用一分钟认识 BrowserSkill

一句话定位:BrowserSkill 让任何能执行 shell 命令的 Agent(Cursor、Claude Code、Codex、OpenClaw 等)通过bsk命令操作你真实、已登录的 Chrome 或 Microsoft Edge,而你的日常浏览器窗口原封不动。

核心设计思想只有一条:Agent 永远不直接碰浏览器。它发bsk命令,本地 daemon 把请求转发给扩展,扩展在一个独立的Agent Window(代理窗口)里执行。只有当任务确实要操作你已打开的某个标签页时,Agent 才显式"借用(borrow)"它,用完归还(return)。这个借出/归还模型是整套产品的安全底座。

浏览器扩展在官方商店上架,支持基于 Chromium 125+ 的 Chrome 与 Edge:

部件运行环境说明
CLI / daemonmacOS(Apple Silicon / Intel)、Linux(x64 / ARM64)、Windows x64同一二进制,bsk daemon即守护进程
浏览器扩展Chromium 125+ 的 Chrome、EdgeWXT/MV3,其他 Chromium 浏览器预期可用但不保证
Agent 接入任意能跑 shell 的 Agent配合内置 skill;DeepSeek Harness 另有专用插件

两个本地部件缺一不可:CLI 负责命令与 IPC,扩展负责浏览器内执行。

⚡ 三步完成首次浏览器任务

第 1 步:安装 bsk CLI

默认装到~/.local/bin。官方提供一行式安装脚本(install.sh/install.ps1位于仓库根目录),本文不贴外链,你获取脚本后按下面方式执行:

# macOS / Linux sh install.sh export PATH="${BSK_INSTALL_DIR:-$HOME/.local/bin}:$PATH" bsk --version
# Windows(PowerShell) .\install.ps1 bsk --version

如何确认成功:bsk --version输出版本号(当前 CLI/扩展/插件共用版本号,见 CHANGELOG.md)。

注意:export只对当前 shell 生效,已运行的 Agent 可能还持有旧 PATH。解决办法:在 Agent 的每次 shell 调用中重复 export、改用~/.local/bin/bsk绝对路径,或直接重启 Agent。

第 2 步:连接浏览器扩展

在你日常使用的浏览器里从官方商店安装 BrowserSkill(Chrome 走 Chrome Web Store,Edge 走 Edge 加载项商店,其他 Chromium 浏览器装 Chrome 版)。装好后点开扩展弹窗,开启本地连接——弹窗里保存的端口要与本机 daemon 一致(默认 52800,可用bsk daemon start --port调整)。

如何确认成功:运行健康检查,所有fail项按提示修复后重跑:

bsk doctor

扩展弹窗显示"已连接"、bsk status --json的browsers列表出现你的浏览器,即代表链路打通。

注意:bsk doctor即使没装 skill 也能通过(skill 缺失只报告N/A)。解决办法:下一步单独验证 skill 安装,别用 doctor 的结果代替。

第 3 步:装 skill 并跑通第一个任务

skill 是什么:一份教 Agent 怎么正确使用bsk的说明文件(SKILL.md加references/引用文档),装进你 harness 的技能目录。

# 交互式:空格多选目标 harness,回车确认 bsk install-skill # 非交互:显式指定目标(cursor 换成你的 harness ID) bsk install-skill --harness cursor --json # 查看支持哪些 harness 及安装路径 bsk install-skill --list

如何确认成功:在 harness 的技能列表里能看到browser-skill。已有安装默认跳过,加--force才会覆盖。

然后开一个新 Agent 会话,直接下任务:

使用 browser-skill 打开 https://example.com,总结页面内容,完成后结束浏览器会话。

支持斜杠命令的 harness 可以写成/browser-skill open example.com and summarize...。成功标志:Agent 打开代理窗口、读出页面内容返回总结、并主动结束会话。

不想依赖 Agent 也可以直接敲 CLI 验证整条链路:

# 记下返回的 session_id,下文 <id> 都替换成它 bsk session start --no-focus --json bsk navigate https://example.com --session <id> bsk observe --session <id> bsk screenshot --session <id> --out example.png bsk session stop <id>

如何确认成功:observe返回页面文本与控件列表,example.png落在当前目录,session stop后借用的标签页已归回原窗口。任务无论成败都要bsk session stop,别依赖空闲超时兜底。

🧰 能力拆解:四个高频场景怎么用

场景一:复用登录态完成网站流程

解决什么问题:内部系统、需要登录的流程,无头浏览器根本进不去。

怎么用:任务在 Agent Window 里跑,共享所选 Profile 的登录态。遇到验证码、扫码、确认这类只有人能做的步骤,Agent 会调用request-help请求你接管,完成后继续。两个开关在扩展弹窗的Automation settings(自动化设置)里,默认都开:

借用标签页前确认允许请求人工帮助实际行为
开开借用需你批准;求助请求正常弹 UI
开关借用需你批准;request-help直接返回disabled
关开借用免确认;求助请求正常弹 UI
关关借用免确认;request-help返回disabled

浏览器里保存的设置是每个会话的权威配置,对已有和新会话都生效。

何时不适用:帮助开关关闭后,disabled只表示"没人能接管",不代表任务完成。纯手机端的扫码、人脸验证、短信验证码仍会卡住;支持图像理解的模型在任务授权允许时可以尝试图形验证码。

场景二:截取整页长图

解决什么问题:文章、报表、长列表需要一张完整图片。

怎么用:两条路。扩展弹窗的Quick actions(快捷功能)→ Full-page screenshot可以完全离线使用,不需要 daemon 和 Agent 会话,支持自动滚动拼接、你手动滚动拼接、仅可见区域三种模式。Agent 会话中的页面走 CLI:

bsk screenshot --session <id> --full-page --out page.png

支持后台标签页,无需把窗口切到前台;完成后会恢复原滚动位置。

何时不适用:沿页面文档滚动,嵌套滚动面板和虚拟列表有支持限制;浏览器内置受限页面(非 HTTP/HTTPS 可脚本化页面)不支持。细节见 docs/long-screenshot.md。

场景三:指定用哪个浏览器 Profile

解决什么问题:你开了工作账号和个人账号两个 Profile,不想 Agent 跑错地方。

怎么用:在目标 Profile 的扩展弹窗里点Copy profile instructions(复制此 Profile 的指令),把指令连同任务一起发给 Agent;或者给浏览器起一个唯一浏览器名称(不会自动读取 Chrome 的 Profile 名):

bsk browsers bsk session start --browser "工作账号" --no-focus --json

会话一旦创建就绑定该实例,切换 Chrome Profile 不会移动已有会话。

何时不适用:连接了多个浏览器时,不带--browser的启动会被拒绝(只有一个在线时自动选中)。目标离线时先重新连接再重试,别为了绕过报错去掉--browser——那可能选中另一个账号。见 docs/browser-profiles.md。

场景四:带着证据调试网站问题

解决什么问题:"接口为什么失败"这种问题,只看截图猜不出原因。

怎么用:在你有权调试的网站上,先开启网站调试采集,再复现问题,然后在扩展调试页查看或导出 JSON 交给 Agent。它把一次操作关联起来的请求、响应正文、控制台输出、页面变化、性能指标放在一起,还能配置任务内的请求修改、模拟响应与同源重放。

何时不适用:请求重放会用页面当前会话真实发一次请求,可能改变服务端数据;采集脱敏有限制,导出的证据仍可能含敏感信息。完整流程与限制见 docs/website-debugging.md。

⚙️ 幕后机制:三个组件如何协作

组件分工

组件源码位置职责
bskCLIcrates/bsk-cli/解析bsk session start、bsk click这类动宾子命令;通过 IPC 发现 daemon,发现失败才隐式启动一个(BSK_AUTO_START=0可禁用);默认人类可读输出,--json出结构化结果
bsk daemon同一二进制本地模式在回环 WebSocket(默认 52800)上等扩展接入,校验握手Origin: chrome-extension://…;维护browsers(已连扩展)与sessions(Agent Window 绑定);同一会话的工具调用串行排队,不同会话并行;把tool.*RPC 转发到正确的扩展连接
扩展apps/extension/WXT/MV3 架构:transport/是可插拔传输层,tools/的ToolDispatcher管理 21 个工具处理器,session-manager/管会话与@e1这类元素引用,browser-driver/提供 CDP 驱动的操作
bsk-protocolcrates/bsk-protocol/共享 Rust 类型 + JSON Schema 生成;TypeScript 侧在 apps/extension/src/transport/types.ts 镜像帧结构,靠测试保持同步

一次调用的完整链路

以bsk click @e1 --tab-id 42 --session ab12为例:

  1. CLI 确保 daemon 在跑,打开 Unix 套接字($BSK_HOME/run/daemon.sock,默认 home 为~/.bsk),发一行 JSON 请求;
  2. daemon 把会话 ID 解析到对应的浏览器客户端,经 WebSocket 转发tool.click;
  3. 扩展的 dispatcher 校验沙箱规则后,通过BrowserDriver调 CDP 执行点击;
  4. 响应原路返回,CLI 打印结果并退出。

会话与沙箱模型

  • Session= 一个 4 位小写字母 ID + 专用 Agent Window + 会话级引用存储 + 借阅表;多个会话 = 多个完全隔离的 Agent Window;
  • 写操作只允许发生在 Agent Window 内的标签页,除非该标签页是显式借来的;页面自己弹出的弹窗、被移进来的用户标签页不会自动获得控制权;
  • bsk tab list --scope控制可见范围:user(用户窗口,默认)、agent(仅本会话 Agent Window)、all(两者)。

连接安全要点

  • 本地模式的 WebSocket 只绑回环地址,远程模式走经认证的 WSS,由浏览器主动出站,你本机不用开任何入站端口;
  • 网站 Cookie 始终留在浏览器 Profile 里,Agent 拿不到;
  • evaluate在沙箱模式下只能作用于 Agent Window 内的标签页;
  • 可选的操作审计默认关闭,开启后只记元数据(工具类型、时间、状态等),不记输入值、页面正文和截图,保存 30 天,见 docs/operation-audit.md。

daemon 的状态文件都在~/.bsk/下:daemon.lock(单实例锁)、daemon.json(套接字路径/PID/端口/版本)、daemon.log(滚动日志)、daemon.pid。

🧯 常见故障:现象、原因、处理

现象原因处理
终端或 Agent 提示找不到bskexport PATH没生效到当前进程,或 Agent 还持有旧 PATH在当前 shell 重新 export;用~/.local/bin/bsk绝对路径;重启 Agent
bsk doctor全绿,Agent 却说没有浏览器技能doctor 不校验 skill,缺失时只报N/A单独跑bsk install-skill并核对安装路径,再开新会话验证
bsk status的browsers是空列表IPC 就绪但扩展没连打开扩展弹窗开启本地连接,核对端口与 daemon 一致;这不需要另起 daemon
借用标签页每次都弹确认,脚本卡住0.3.0 起--unattended、tab borrow --no-confirm、BSK_REQUEST_HELP=off都不能覆盖扩展设置在扩展自动化设置里关闭"借用标签页前确认";注意关闭确认会释放挂起的借用,已完成的借用不撤销
request-help返回disabled扩展里"允许请求人工帮助"被关需要人工接管就重新打开该设置;坚持无人值守则让 Agent 利用现有登录态尽力推进,disabled不代表任务完成
沙箱里bsk status报权限错误/超时沙箱与宿主看不到同一个BSK_HOME,或 IPC 权限不通这类错误不能证明 daemon 不存在。检查共享目录与 IPC 访问规则,让宿主跑BSK_HOME=/绝对路径 bsk daemon start --foreground,沙箱内所有命令统一加BSK_HOME=… BSK_AUTO_START=0
Agent 每条命令后 daemon 就消失沙箱(如 bubblewrap 式 Bash 沙箱、Windows 部分 shell 任务)会收割后台子进程daemon 放到宿主持久任务里(--foreground挂在宿主任务上),沙箱内只做客户端;详见 docs/sandboxed-agents.md
长截图等新功能报错CLI、运行中的 daemon、扩展版本不齐bsk update --yes后,用bsk --version、bsk status、bsk doctor三查版本,再开新 Agent 会话加载新 skill
多 Profile 下会话跑错账号多个浏览器在线时必须显式选择用bsk browsers拿实例 ID,或设置唯一浏览器名称后--browser "名称"
文件上传/下载报unsupported文件传输只支持本地连接,远程会话不支持本地部署可正常传;远程部署改用截图等其他取回内容的方式

关于升级:先结束正在跑的浏览器任务,再执行bsk update --yes(Windows 若提示"staged update",等替换完成再查版本)。自定义端口、沙箱宿主或远程服务器的 daemon,要在宿主里停掉服务、跑bsk update --yes --no-restart-daemon,再按原参数和BSK_HOME启动,期间 Agent 侧设BSK_AUTO_START=0。托管的 skill 只在内容未被本地修改时自动同步,本地编辑会被保留——想恢复内置 skill,用不带--source的bsk install-skill --harness <id> --force。

Agent 在服务器、浏览器在本机:扩展经鉴权 WSS 主动连服务器,本机零入站端口。服务器端起 daemon 后生成配对链接(bsk daemon pair),浏览器端在弹窗选Remote connection粘贴保存,再用bsk status --json确认浏览器出现。设备授权的管理(查看、撤销)在服务器本机 CLI 完成。完整步骤见 docs/remote-extension-connection.md。

🚪 进阶入口与二次开发

按需求查文档(均为仓库内相对路径):

需求文档
安装与验证全流程(Agent 也读这份)AGENT_INSTALL.md
架构与组件依赖docs/architecture.md
沙箱化 Agent 部署docs/sandboxed-agents.md
远程浏览器连接docs/remote-extension-connection.md
指定浏览器 Profiledocs/browser-profiles.md
网站调试与证据导出docs/website-debugging.md
长截图行为契约docs/long-screenshot.md
scroll-to原语参考docs/scroll-to.md
操作审计docs/operation-audit.md
协议与 JSON Schemacrates/bsk-protocol/
变更历史CHANGELOG.md

DeepSeek Harness 用户:有 npm 上一等公民插件@wxg-prc-cpg/browser-skill-dsh-plugin,提供原生browser_*工具与 Web UI 会话预览,插件自带 skill,无需bsk install-skill:

dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin dsh --profile web

插件不自动更新,升级用dsh plugin --profile web update @wxg-prc-cpg/browser-skill-dsh-plugin --latest后重启 profile,详见 packages/dsh-plugin-browserskill/README.md。

从源码构建(需要 Rust stable、Node.js 22 与 package.json 声明的 pnpm 版本):

pnpm install --frozen-lockfile cargo build --release --locked pnpm ext:build

CLI 产物在target/release/,扩展在apps/extension/dist/chrome-mv3/(以解压扩展方式加载),开发模式用pnpm ext:dev。skill 的规范文本在 crates/bsk-cli/skill/;可复现的浏览器能力评测见 evals/browser/README.zh-CN.md;扩展界面本地化(含简体中文、繁体中文、韩语等 10 种语言)见 packages/i18n/README.md。

最后提醒一句安全边界:Agent Window 共享所选 Profile 的登录态,它不是独立账号,也不是安全沙盒——请选择你信任的 Agent 和任务,页面内容对 Agent 而言永远是数据而不是指令。

BrowserSkill 以 MIT 许可证 开源。

【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询