BrowserSkill 中文完全指南:让 AI Agent 复用真实登录态操作浏览器而不打断你的工作
【免费下载链接】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
BrowserSkill 是一个连接 AI Agent 与真实浏览器的本地桥接层:bskCLI/daemon 与浏览器扩展协同工作,让 Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、WorkBuddy、Pi、Hermes Agent、DeepSeek Harness 等任意能调用 Shell 的 Agent 操作你已经登录的浏览器,任务运行在独立的 Agent Window 中,不打断你的日常浏览。本文以 README.zh-CN.md 为骨架,结合仓库源码与配套文档,完整讲解环境要求、快速安装、skill 管理、自动化设置、工作原理、长截图、远程连接与开发者视角的架构细节,读完即可上手部署并理解其底层运行机制。
BrowserSkill 的核心优势
- 复用真实登录态:Agent 直接操作你已经登录的网站,无需额外准备测试账号,也绝不提取凭据、Cookie、Token 等敏感信息(此约束同时写在 skill/SKILL.md 的顶部说明中)。
- 不中断你的工作:浏览器任务在独立、可见的 Agent Window 中运行,你可以继续使用自己的浏览器窗口。
- 支持任意 Agent:只要 Agent 能调用 Shell,就能通过
bskCLI 使用 BrowserSkill,不绑定特定模型、Agent 框架或 harness。 - 内置 human-in-loop:遇到验证码、登录、确认弹窗等必须由人处理的步骤时,Agent 可以通过
bsk request-help主动请求你接管,完成后再继续任务。
需要 Agent 触碰你已打开的标签页时,它必须显式借用(borrow)该标签,任务结束后归还,其余浏览器窗口不受影响。
运行环境
BrowserSkill 由两个本地运行组件组成:bskCLI/daemon 和浏览器扩展。
| 运行项 | 支持情况 |
|---|---|
| 操作系统 | macOS(Apple Silicon 和 Intel)、Linux(x64 和 ARM64)、Windows x64 |
| 浏览器 | 已支持 Chrome 和 Microsoft Edge;其他支持加载 Chromium 扩展的浏览器通常可用;Firefox 计划中 |
CLI 顶层定义位于 crates/bsk-cli/src/cli/mod.rs,全局标志包括--json(输出机器可读 JSON)、--quiet(抑制信息输出)和-v/--verbose(-v为 debug、-vv为 trace)。工具调用的 IPC 超时被特意设为 35 秒,略大于 daemon 的 30 秒工具超时,确保调用方收到的是结构化 daemon 超时而不是连接先断开(见 crates/bsk-cli/src/cli/mod.rs)。
快速开始
沙盒环境须知(先读)
如果你的 Agent 沙盒会在每条命令结束后回收后台进程,请先阅读沙盒环境配置说明:在宿主侧保持 daemon 存活,沙盒内通过共享的BSK_HOME和BSK_AUTO_START=0连接。普通本地环境仍默认自动启动 daemon,无需额外配置。
让 Agent 帮你安装(推荐)
已经在用 Cursor、Claude Code、Codex 或其他支持 Shell 的 Agent?只需复制下面这句话发给 Agent,它会帮你安装 CLI 和 skill,并引导你加载浏览器扩展:
按照 https://raw.githubusercontent.com/Tencent/BrowserSkill/main/AGENT_INSTALL.md 的说明,在本机安装并配置 browser-skill手动安装
先安装 CLI,再从 Chrome Web Store 或 Edge 加载项商店安装浏览器扩展。
1. 安装bskCLI
macOS / Linux(推荐,安装到~/.local/bin):
curl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh export PATH="${BSK_INSTALL_DIR:-$HOME/.local/bin}:$PATH"Windows(PowerShell,安装到~/.local/bin):
irm https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.ps1 | iex上面的 export 让当前 Unix shell 能找到 CLI。正在运行的 Agent 可能需要在每次 Shell 调用中设置同样的 PATH,或使用安装后二进制的绝对路径。如果 Agent 安装后仍沿用旧 PATH,请重启 Agent。
在实际使用工具的终端或 Agent 环境中验证二进制:
bsk --version2. 安装浏览器扩展
| 浏览器 | 商店页面 |
|---|---|
| Chrome | Chrome Web Store |
| Microsoft Edge | Edge 加载项商店 |
其他基于 Chromium 的浏览器,安装 Chrome Web Store 版本即可。
3. 安装 skill
BrowserSkill 自带 skill(即仓库根目录的 skill/SKILL.md),用于教 Agent harness 如何使用bsk。以下 harness 可一键安装:Cursor、Claude Code、Codex、OpenClaw、CodeBuddy、WorkBuddy、Pi、Hermes Agent。
bsk install-skill用Space选择需要安装的 Agent harness,然后按Enter安装 skill。运行bsk install-skill --list可查看 internal 变体及安装路径。
非交互安装时显式指定目标 harness,例如bsk install-skill --harness cursor --json。即使未检测到该 harness,也可显式选择。单独使用--yes会安装到所有检测到的 harness,一个也未检测到时会报错。
自定义指令:运行bsk install-skill --harness cursor --source ./SKILL.md。显式指定--source的安装始终视为自定义,即使内容与内置 skill 相同。已有安装默认跳过,添加--force才会覆盖。这些参数与SkillSource::Bundled/SkillSource::Custom的来源判定逻辑对应,见 crates/bsk-cli/src/cli/install_skill.rs。
受管 skill 的自动更新机制:daemon 启动、session start和doctor会检查已安装的 skill——只有文件内容仍与上次安装或同步时的内容一致,才继续自动更新。检测到本地编辑时会保留文件并暂停更新。没有内容基线的历史安装,只有与当前内置 skill 字节级一致时才自动纳入管理;此时只补齐来源标记,不重写SKILL.md。明确的自定义安装即使内容相同,也不会被自动纳入管理。
对于内容不同的历史文件、本地编辑或无法识别的来源标记,doctor会显示WARN,说明暂停原因及恢复方法。这类警告不会让健康检查失败(--json中为status: "warn"、ok: true)。其他安装或同步正在进行时,本次同步会推迟到后续再试。
如需将当前指令保留为明确的自定义安装,运行:
bsk install-skill --harness cursor --source <existing-SKILL.md> --force将<existing-SKILL.md>替换为现有文件路径。如需恢复内置 skill 并重新启用自动更新,运行:
bsk install-skill --harness cursor --force(不带--source,后一条命令会覆盖现有指令。)
其他支持 Shell 的 Agent harness 也可使用 BrowserSkill,但需手动将 skill/SKILL.md 复制到对应 skills 目录下的browser-skill/SKILL.md。DeepSeek Harness 走独立插件,见下文。
4. 验证连接
运行bsk doctor并按提示处理,打开扩展弹窗确认已连接。测试浏览器操作前,说明警告并解决失败项。未安装任何 skill 时,doctor 仍可能通过(该项为N/A);skill 是否被发现需要单独验证。
启动一个新的 Agent 会话,确认 harness 中可用browser-skill,再让它打开https://example.com并总结页面。对于支持斜杠命令调用 skill 的 harness,例如:
/browser-skill open example.com and summarize what is on the page.首次使用验证应成功读取页面,并停止本次 BrowserSkill session。如果找不到 skill,先检查目标 harness 和安装路径,再重试。
升级
默认本地配置下,先结束正在执行的浏览器任务,再更新:
bsk update --yes- 如果 Windows 提示更新已暂存(staged),请等待替换完成后再检查
bsk --version。 - 该命令安装新版本时,会以默认启动配置重启正在运行的 daemon。
- 如果通过安装脚本替换了二进制,则在任务结束后运行
bsk daemon restart,重启已有 daemon。 - 对于自定义端口、宿主管理的沙盒 daemon 或远程服务器,先在所属宿主环境或进程管理器中停止 daemon,运行
bsk update --yes --no-restart-daemon,再以原有参数和BSK_HOME在那里启动。维护期间,在 Agent 命令中设置BSK_AUTO_START=0;详见沙盒和远程连接配置说明。 - 通过浏览器商店更新扩展;开发时加载的解压版本需要重新构建并重新加载。商店版本可能晚于 CLI 上线。
- 使用
bsk --version和bsk status核对 CLI、daemon 和扩展版本,再运行bsk doctor。长截图等新功能需要匹配的版本。 - DSH 插件需要单独更新并重启对应 profile(见下文)。
- 受管理的 CLI skill 会在 daemon 启动、
session start或doctor时同步;本地编辑和自定义 skill 会保留。启动新的 Agent 会话以加载更新后的指令。
升级到 0.3.0 的注意点:--unattended、tab borrow --no-confirm和BSK_REQUEST_HELP=off不再跳过确认或关闭人工协助,请在扩展中选择下文说明的对应设置。版本变化见更新日志。
自动化设置与无人值守
插件弹窗提供两个默认开启的独立设置。用户在插件中保存的设置对所有会话具有最终决定权:
| 借用标签页前确认 | 允许请求人工协助 | 实际行为 |
|---|---|---|
| 开 | 开 | 借用需要确认;求助正常弹窗。 |
| 开 | 关 | 借用需要确认;求助返回disabled。 |
| 关 | 开 | 借用免确认;求助正常弹窗。 |
| 关 | 关 | 借用免确认;求助返回disabled。 |
设置的优先级与生效语义
- 设置自动保存到当前浏览器配置,对已有和新建会话生效。关闭借用确认会放行待确认请求;关闭人工协助会将等待中的求助结束为
disabled。 - 重新打开开关后,后续操作恢复对应行为,包括通过旧参数
--unattended创建的会话。已完成的借用不会撤销,已结束的求助不会重新弹出。 - 允许人工协助意味着
request-help可用,不代表每个浏览器操作都必须先请求许可;任务授权和宿主审批仍然有效。 - 正常使用
bsk session start;需要后台打开 Agent Window 时添加--no-focus。 - 无人值守由用户在插件中关闭相应开关。
--unattended、tab borrow --no-confirm、BSK_REQUEST_HELP=off保留兼容识别,但已弃用,不能覆盖插件开关。CLI 使用这些输入时会输出说明,daemon 也会为自身继承的旧环境设置记录说明。原先只依靠这些输入避免等待的脚本,现在需要遵循浏览器设置。 session start --json和session list --json返回浏览器实际的interaction策略。- 偏好读取失败时,后台保留已有有效值;尚无有效值时按两项开启处理,不写回默认值,也不阻止新建会话。后续请求会重试读取,存储变更也能恢复策略。
- 弹窗保留读取错误提示并禁止保存;写入失败不会被当作成功。浏览器未连接时返回连接错误,不会根据命令行参数或环境变量在本地伪造
disabled。
关闭人工协助后的行为约束
关闭人工协助后,request-help返回disabled,不代表用户已完成操作。技能会引导 Agent 重新观察页面,利用现有登录态、已授权输入和可用工具尽力完成已授权的步骤。任务授权和宿主规则允许时,具备视觉能力的模型可以尝试图形验证。手机扫码、人脸验证、无法获取的短信验证码,以及纯文本模型无法识别的图形验证码可以报告受阻。关闭协助不增加授权,也不能仅因求助不可用就将任务判为完成或受阻。
协议版本兼容
tab borrow --timeout 60s只设置确认等待时间,不决定是否需要确认(默认 60 秒)。- 协议 1.3 保持与协议 1.0–1.2 的连接兼容,分步升级时仍可创建普通会话、使用默认等待时间借用标签页。插件会提示旧 Daemon 的兼容限制,
bsk status也会显示协议差异。 - 自定义借用等待时间要求 Daemon 和扩展都支持协议 1.2 或更高版本;不支持时只限制这次操作,并提示升级。旧 Daemon 的默认借用等待预算可能仍较短。
- 新版 CLI 的
request-help要求 Daemon 协议 1.3,因为旧 Daemon 可能在本地返回而不询问浏览器。该限制不会断开浏览器连接,也不影响其他操作。 - CLI、实际运行的 Daemon 和扩展都更新后,完整执行上述设置优先级。新版扩展始终按保存的开关处理它收到的请求。旧 CLI 可能在连接 Daemon 前就因
BSK_REQUEST_HELP=off本地返回;混用版本时保留这类历史行为,只升级扩展无法改变旧可执行文件的行为。
在服务器运行 Agent,通过内置鉴权服务与本地浏览器配对,也可选择兼容的第三方网关,详见远程浏览器连接。
DeepSeek Harness 插件
在用 DeepSeek Harness(dsh)?BrowserSkill 提供了官方 dsh 插件,已发布到 npm:@wxg-prc-cpg/browser-skill-dsh-plugin。它为 Agent 提供原生browser_*工具,由插件代为调用bsk,并在 Web UI 中实时展示浏览器会话。
先安装bskCLI 并连接浏览器扩展,再将插件装进 dsh profile 并启动(将web替换为你的 profile 名称):
dsh plugin --profile web add @wxg-prc-cpg/browser-skill-dsh-plugin dsh --profile web插件自带browser-skillskill,所以在 dsh 下无需执行bsk install-skill。已安装的插件不会自动更新;升级此插件请运行:
dsh plugin --profile web update @wxg-prc-cpg/browser-skill-dsh-plugin --latest升级后重启该 profile。用法与配置见插件 README。插件源码位于 packages/dsh-plugin-browserskill,其中 skill.ts 与 tools.ts 分别负责 skill 注入与browser_*工具的定义。
工作原理:Agent 与浏览器之间的本地桥接层
BrowserSkill 是 Agent 运行时与浏览器之间的本地桥接层,数据流如下:
Agent 不直接与浏览器通信。它通过bskCLI 下发浏览器任务;本地 daemon 把请求路由到扩展;扩展在 Agent Window 中执行。DeepSeek Harness 走同一条链路,只是经由插件:Agent 调用注入的browser_*工具,由插件代为执行bsk。
从源码看,这条链路被严格分层:session start子命令通过ensure_daemon自动拉起 daemon,再通过 JSON-line IPC 发出类型化 RPC;daemon 侧持有session.startRPC 直到扩展(重)连上(见 crates/bsk-cli/src/cli/session.rs 中对EXTENSION_CONNECT_WAIT的说明);共享的线上协议类型与 JSON Schema 全部集中在 crates/bsk-protocol,其 schema 目录下可看到tool_session_start_params.json、tool_navigate_params.json、tool_observe_params.json等每一个工具的参数与结果契约。扩展端则在 apps/extension/src 中实现浏览器自动化、录制(recording)、长截图、审计(audit)等模块。
会话生命周期与任务工作流
bsk session提供三个子命令:start(对新会话,多浏览器时用--browser <id-or-label>指定)、stop(停止单个会话,或--all停止全部)、list(列出活动会话)。每个 session-scoped 命令都需要--session <id>,session stop直接以位置参数接收 ID(见 crates/bsk-cli/src/cli/session.rs)。
推荐的 Agent 任务工作流(详见 skill/SKILL.md):
从用户请求中定义成功标准,运行
bsk session start --json并保留返回的session_id。新页面直接导航;已有用户标签页走借用流程。交互前先读取页面:
bsk navigate https://example.com --session <id> bsk observe --session <id>使用该次观察返回的新鲜
@eNrefs 选择动作;导航或大规模 DOM 变化后重新 observe。模糊结果只检查一次,一旦成功可见就停止行动。无论成功失败都运行
bsk session stop <id>(除非用户要求保持会话打开),这也同时归还借用的标签;归还后的标签仍保留在用户窗口中。不要依赖空闲清理来结束任务,也不要为了结束任务而重启共享 daemon。
读取与交互命令一览
| 需求 | 命令 |
|---|---|
| 点击 | bsk click @e3 --session <id> |
| 填写字段 | bsk fill @e3 --value "text" --session <id> |
| 选择选项 | bsk select @e3 --value "option-value" --session <id> |
| 按键 | bsk press Enter --ref @e3 --session <id> |
| 展开悬停菜单 | bsk hover @e3 --session <id> |
| 露出元素 | bsk scroll-to @e3 --session <id> |
| 滚轮输入 | bsk wheel --delta-y 600 --session <id> |
| 聚焦/失焦 | bsk focus @e3 --session <id>/bsk blur @e3 --session <id> |
关键语义:
select使用选项的value属性值,而不是可见标签。- 悬停标记(如
[hover first: Shoes | Bags]、[has-submenu]、[expanded])用于识别触发器。先 hover 触发器,再 observe,然后使用新出现条目的 ref。若预期控件缺失且没有标记,可尝试一次observe --probe-hover。 scroll-to返回按祖先裁剪后的可见边界,坐标是顶层 viewport CSS 像素;部分可见即可成功,完全隐藏/裁剪的目标失败。其 CLI、线上协议(tool.scroll_to)与 DSH 插件入口、可见边界与中断语义的完整约定见 docs/scroll-to.md。wheel发送带符号的增量(至少一个非零值),不保证精确滚动距离。- 大观察结果使用
observe --max-tokens <n>,配合返回的next_cursor/@more用bsk observe --cursor <token> --session <id>续读;每页会替换 ref 映射,续读针对同一份捕获,不刷新也不悬停。
标签借用(Borrowing)
借用前先列出,相关步骤一结束立即归还:
bsk tab list --scope user --session <id> bsk tab borrow <tab-id> --session <id> bsk tab return <tab-id> --session <id>- 借用会在 Agent Window 中选择该标签作为后续命令的默认目标(不额外聚焦窗口);后台创建的标签(
tab create --no-active)需要保留返回的tab_id并在观察/导航/输入命令中显式传--tab-id。 - 控制中的网页移到后台后仍在运行;普通视口截图也可用于后台标签。全页截图仍要求活动标签。
- 不要编造 tab ID,也不要让用户标签跨无关任务保留。
tab borrow --timeout 120s只改变确认等待(默认 60s);自定义等待需要 daemon 和扩展协议 1.2+。
人工步骤与恢复(human-in-loop)
启用协助后,登录、CAPTCHA、OTP、支付确认、同意等步骤,或两次尝试仍无进展时,可请求帮助:
bsk request-help --session <id> --prompt "Please complete sign-in" --target @e3请求结果的处理策略:
| 结果 | 下一步 |
|---|---|
Helpcontinued/completed | 重新 observe,用新 refs 继续。 |
Helpcancelled/timed_out | 尊重拒绝或阻塞,不要重复请求。 |
Helpdisabled | 未确认任何人操作;重新 observe 并遵循禁用协助规则。 |
| Stale ref | observe 后重试一次目标动作。 |
| 未知标签/会话 | 列出当前标签/会话;绝不猜 ID 或用其他任务的会话。 |
| 超时或效果未知 | 先检查当前状态再重试;动作可能已发生。 |
fill_value_mismatch | 先读取字段:格式可能已满足请求,只修正剩余差异。 |
| 不支持的操作 | 使用可用能力;仅在确实需要缺失功能时才建议升级。 |
禁用协助时:不请求协助也不重新启用。利用现有登录态、已授权输入和可行替代方案完成已授权步骤;无法获取的验证输入(仅手机扫码、人脸验证、缺失的短信码、纯文本模型无法识别的图形验证码)可如实报告受阻,但继续可独立完成的工作。不可恢复失败时报告阻塞并停止所属会话。
截图与 Canvas 交互
bsk screenshot --session <id> --out viewport.png bsk screenshot --session <id> --ref @e3 --out element.png --json bsk screenshot --session <id> --full-page --out page.png bsk screenshot --session <id> --full-page --scope current --out loaded.png截图返回本地 PNG 路径;
--out覆盖已有文件,省略时使用临时路径;--json包含尺寸与字节数;--ref与--full-page互斥。Canvas 内容用
@eN canvas [visual:screenshot]标记;要点击图中某点,保留截图的capture_id,使用原始 PNG 坐标:bsk click @e3 --capture <capture-id> --image-x <x> --image-y <y> --session <id>Captures 单次使用、2 分钟后过期,并会被 ref 替换或该 ref 的更新截图失效。
文件与其他工具
bsk upload @e3 --file ./report.pdf --session <id> bsk download @e3 --out ./report.pdf --session <id>- 上传会把文件披露给站点;下载接受站点控制的字节。使用 Agent 本地路径,而非浏览器内部暂存路径。
- 下载默认拒绝覆盖,需要时加
--overwrite。 - 用
console/network做有界的只读诊断;emulate --device iphone-14只影响一个标签页,--off恢复。 evaluate是最后手段:必须检查 JSON.ok,因为脚本异常可能 CLI 退出码仍为 0。绝不 evaluate 敏感信息。record start录制用户操作为语义化trace.json;录制前先读帮助,绝不录制银行、SSO 或密码管理器页面。
长截图(Full-page Screenshots)
可以从插件快捷功能 → 长截图中截取长图,也可以让 Agent 调用:
bsk screenshot --session <id> --full-page --out page.png默认采集与编码超时为两分钟,长页面可加--timeout 5m;支持 Ctrl-C 取消,结束后恢复原始滚动位置。需要使用同一版本的 CLI 和扩展,详见长截图说明。
插件的三种捕获模式
- Full page · Automatic(整页 · 自动):从顶部开始,增量滚动并跟随追加内容。
- Long image · I scroll(长图 · 我滚动):从当前位置开始,由你手动向下滚动;屏幕之间保留重叠内容,完成后在弹窗选择Finish and keep。
- Visible area(可见区域):捕获当前视口一次。
自动模式用测量到的文档坐标 + 重叠视口拼接;在底部等待至少 1.5 秒高度稳定且 600ms 无附近内容变化;无加载指示器时安静等待上限 5 秒,避免跳动时钟类控件无限挂起。若追加内容移动了旧底部,捕获会回退到临时尾部重拍并替换磁盘瓦片。快捷功能在 CLI 连接关闭时也可用,不要求 CLI、daemon 或 Agent 会话。
Agent/CLI 的关键语义
--scope follow(默认)跟随追加内容;--scope current只捕获捕获开始时测量的文档区域(CSS 像素),仍会滚动该区域以露出懒加载图片,但后续高度增长不扩展范围。JSON 结果包含确认的scope;旧扩展不确认current时 CLI 拒绝保存。- 内部浏览器页面、Web Store、嵌套滚动面板和虚拟化列表不支持。保持捕获标签可见:
page_hidden是环境中断,user_cancelled是用户输入停止。 - Agent
follow模式下,底部 30 秒保持加载指示器无高度增长产生loading_stalled,而不是等到总截止时间;失败不保存部分图片。 - 捕获/编码截止默认两分钟,仅全页模式可用
--timeout延长。 - 完整页截图走独立的
tool.screenshot_full_pageRPC,随后是内部tool.screenshot_read和tool.screenshot_release;读取按 256 KiB 分块,扩展流式写 PNG 到 OPFS,CLI 验证完整字节数后原子替换输出文件。需要匹配的 CLI/扩展构建,更新 CLI 后重启运行中的 daemon(bsk daemon restart)。
存储、内存与导出
新捕获是一组 512 像素高的 PNG 瓦片,存放在扩展的 Origin Private File System(OPFS),带一个小型持久化 manifest。捕获期间只解码当前截图和小型工作 canvas,追加内容不分配全页 canvas。下载由专用 worker 顺序读瓦片、应用 PNG Up filter 并用原生流式 zlib 压缩写出,不构建全图像素缓冲或 base64。单次捕获基准测试中,3,170 × 100,062 像素结果仅用最多 512 像素高的 canvas,RGBA 缓冲峰值约 41.7 MiB,而完整 RGBA 图需要约 1.27 GB——可见该设计的省内存效果(测量不含编解码器内部、堆、GPU 拷贝等,不是总浏览器内存)。
远程浏览器连接
Agent 可以在服务器上运行,而 BrowserSkill 扩展控制用户电脑上的浏览器。扩展发起出站连接,用户电脑无需开放入站端口;任务继续使用独立 Agent Window,包括既有的借用-归还流程。bsk内置设备配对、连接鉴权、凭据轮换与吊销,无需账号系统或鉴权网关。详细配置见 docs/remote-extension-connection.md。
本地模式(默认)
bsk daemon start # 等价:bsk daemon start --mode local监听回环地址;扩展中选择Local connection可退出远程连接(会结束当前任务)。
独立服务器模式
bsk daemon start --mode server \ --listen 0.0.0.0 --port 52800 \ --public-url wss://browser.example.com:52800/extension \ --tls-cert /etc/bsk/fullchain.pem \ --tls-key /etc/bsk/privkey.pem- 使用浏览器信任的证书,证书主机名必须与公网 URL 匹配;
bsk不签发证书、不改浏览器信任设置。 - 服务器模式保持前台运行,空闲不退出;进程管理器可托管。证书变更需用相同参数重启。会话空闲限制仍然适用。
- 在 Agent 环境设置
BSK_AUTO_START=0,让已停止的受管服务器被如实报告为不可用;保持 daemon 与 CLI 客户端BSK_HOME一致。此私有目录包含设备授权与本地 IPC 元数据,须跨服务重启与容器替换持久化,不要在不同独立服务器或不受信任的 OS 用户之间共享。
授权管理:
bsk daemon devices bsk daemon revoke DEVICE_ID bsk daemon revoke --alldevices输出设备与浏览器 ID、标签和过期时间,绝不输出凭据。revoke --all同时使未使用的配对链接失效;吊销既关闭现有连接也拒绝新连接。
服务器启动时可用默认值:
| Flag | 默认值 | 含义 |
|---|---|---|
--pairing-ttl | 5m | 一次性配对有效期,最多一小时 |
--device-ttl | 90d | 设备自配对或成功续期起的寿命,最多 366 天 |
--renew-after | 30d | 扩展应续期的时间点;必须小于设备寿命 |
--max-connections | 64 | 在线浏览器容量,1–1000;容量满时已有设备可替换连接 |
--authorize-rate-limit | 60 | 每对端 IP 每分钟配对/续期请求数,1–60000 |
TLS 反向代理
传统 TLS 反向代理可在不实现鉴权的情况下终结 HTTPS/WSS:
bsk daemon start --mode server --listen 127.0.0.1 --port 52800 \ --public-url wss://browser.example.com/extension将/extension与/extension/authorize转发到127.0.0.1:52800,保留路径与 WebSocket 升级头;保留Origin、Authorization和Sec-WebSocket-Protocol,绝不记录鉴权头、WebSocket 子协议值或请求体,不在查询串中传凭据。代理后服务器看到的是代理 IP,需在代理侧配置每客户端限流;服务器不信任X-Forwarded-For。无原生 TLS 时监听必须在回环;非回环浏览器连接要求 WSS。
配对与验证流程
服务器操作者:生成配对链接:
BSK_AUTO_START=0 bsk daemon pair。浏览器用户:扩展弹窗选择Remote connection,粘贴完整配对链接并保存。链接是机密、单次使用、默认 5 分钟过期;保存后扩展把配对密钥替换为设备凭据。
服务器上的 Agent:用
BSK_AUTO_START=0 bsk status --json确认目标浏览器出现。生成链接或保存配对本身不是活跃连接的证明。首次使用验证:用
status中的浏览器instance_id作为<browser-id>启动会话并读页:BSK_AUTO_START=0 bsk session start --browser <browser-id> --no-focus --json BSK_AUTO_START=0 bsk navigate https://example.com --session <id> BSK_AUTO_START=0 bsk observe --session <id> BSK_AUTO_START=0 bsk session stop <id>
按证据反馈验证阶段:生成链接 → 服务器列出已连接浏览器 → 页面读取且测试会话成功停止。
浏览器权限与任务生命周期
- 只与你信任能操作浏览器(含已登录网站会话)的服务器配对;配对是设备授权,不是受限账号或网站沙箱。
- 远程内容读取、截图、录制和页面操作要求任务显式创建或借用的标签。
target="_blank"、window.open或 OAuth 打开的标签不会自动获得控制权;已在 Agent Window 内的无主标签需用户先移到普通窗口再借用。 - 断开连接会取消任务工作、归还借用标签、关闭任务创建的标签;用户创建的标签在清理中存活。远程上传/下载当前版本不支持(返回
unsupported),截图等既有 RPC 内容结果仍支持。 - 设备凭据存放在扩展源 IndexedDB;普通扩展设置只含连接模式与非机密修订号。独立服务器以私有文件权限与原子写入持久化哈希凭据。
面向开发者:仓库架构
scroll-to 原语说明 介绍 CLI、协议和插件入口,以及可见区域、错误和中断语义。
本仓库是 Cargo + pnpm workspace:
crates/bsk-cli—bskCLI 与本地 daemon(CLI 命令树在 crates/bsk-cli/src/cli/mod.rs,覆盖 session、tab、window、emulate、screenshot、snapshot、observe、console、network、navigate、click、fill、press、select、upload、download、evaluate、wait、request-help、record 等全部命令)。crates/bsk-protocol— 共享协议类型与 JSON Schema(schema 目录 为每个工具提供参数/结果契约)。apps/extension— 浏览器扩展(src 下含 browser-driver、content、lib、long-screenshot、recording、session-manager、tools、transport 等模块,并有覆盖各模块的 vitest 测试)。packages/ui和packages/i18n— 扩展 UI 共享支持,包含英文、简体中文和韩语本地化。packages/dsh-plugin-browserskill— DeepSeek Harness 插件(@wxg-prc-cpg/browser-skill-dsh-plugin)。evals/browser— 确定性本地页面与 Agent 无关的浏览器能力测试台。
许可证
MIT
延伸阅读
- 沙盒环境配置说明:Agent 沙盒回收后台进程时的 daemon 托管方案(
BSK_HOME+BSK_AUTO_START=0)。 - 长截图说明:捕获模式、
--scope、超时与错误语义、存储与导出。 - 远程浏览器连接:服务器模式、TLS 反向代理、配对验证与第三方网关协议。
- scroll-to 原语说明:
scroll-to的 CLI/协议/插件入口与结果契约。 - Agent 安装指引:交给 Agent 自助安装的完整说明。
【免费下载链接】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),仅供参考