
bsk 截图能力一次讲清BrowserSkill 全页长截图从 0 到一张图【免费下载链接】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想象这个场景Agent 刚读完一篇三万像素高的长文页面想把它作为一张完整图片喂给下游多模态模型。逐屏截图再自己拼麻烦且接缝难处理。BrowserSkill 的bsk screenshot就是干这个的视口截图、元素截图、全页长截图都是一条命令全页模式会把页面从顶滚到底、等懒加载内容出现再拼出一张完整 PNG。这篇就按一次全页截图的完整旅程走一遍。先把图拿到手截图之前先备齐两样东西连上 BrowserSkill 的浏览器和一个会话。bsk session start会在浏览器里开一个专用 Agent Window返回的会话 ID 是每条bsk screenshot都必需的--session id目标标签必须属于这个会话——要么是会话创建的要么用bsk tab borrow从你个人窗口借来的。扩展弹窗里看到已连接 READY就说明浏览器侧就绪了CLI 还没装的话macOS/Linux 一条命令装完默认落到~/.local/bincurl -fsSL https://raw.githubusercontent.com/Tencent/BrowserSkill/main/install.sh | sh最基础的用法就两条命令 bsk screenshot --session id --out viewport.png bsk screenshot --session id --ref e3 --out element.png前者是当前视口一张 PNG后者拿上一次bsk observe或bsk snapshot返回的eN引用把图裁到那个元素或 Canvas 区域。--out不写就落到系统临时目录文件名带时间戳加--json会输出path、width、height、byte_size等统一字段方便 Agent 直接解析。把整页变成一张图现在上正题。超长页面一句话搞定bsk screenshot --session id --full-page --out page.png bsk screenshot --session id --full-page --timeout 5m --scope current --out loaded.png先说结果成功时命令打印输出路径--json时打印尺寸、字节数等字段文件里就是从页面顶部到底部的完整 PNG结束时会把原来的滚动位置和临时样式还原你的阅读现场基本不动。过程中的行为是从顶往下逐视口抓取滚动途中懒加载出来的新内容一并收进图里。默认follow范围会跟随底部追加的内容--scope current则只截开始时测得的文档区域——仍会滚过整个区域触发懒加载图片但范围不随页面变长。--timeout是捕获/编码的截止线默认 2 分钟慢页面给它 5m 也不心疼。⚠️ 有一处防呆值得说如果你指定了--scope current但扩展是旧版本、不认这个参数CLI 会直接拒绝保存并提示更新扩展。宁可不给图也不给一张尺寸悄悄错的图。一页到底怎么拼出来的为什么要分块传因为图太大。长页 PNG 动辄几百 MB整包 base64 走一趟扩展、守护进程、CLI 三头的内存都悬。所以bsk把图片字节按块拉取每块上限 256 KiB边拉边校验哪一块断了、错位了直接中止——宁可整张重来绝不拼出一张坏图。为什么落盘要用临时文件 原子替换为了不留半张图。CLI 先把收到的字节写进同目录的.part临时文件全部收齐后才原子替换到目标路径。这意味着目标位置在任意时刻要么是旧图、要么是完整新图下游读取方永远看不到撕裂的 PNG失败时临时文件会自动清掉。扩展侧同样做了内存友好设计否则也撑不起这么高的图捕获时只解码当前视口和 512 像素高的小瓦片整页数据以瓦片集合 小索引存在扩展自己的 OPFS 磁盘存储里导出时逐瓦片读、逐行做 PNG 滤波再走浏览器原生的 deflate 压缩流写出全程不构造整页像素缓冲。官方验证里一张 3170×100062 像素的导出用的画布最高只有 512 像素高。拼接也不是简单贴图相邻视口留约 15% 重叠抵消滚动误差文档高度增长时回卷重绘旧尾部到底后至少等 1.5 秒高度稳定、600 毫秒附近内容无变化才收工如果底部有加载指示器且 30 秒没进展Agent 模式直接返回loading_stalled报错而不是干等到总超时。CLI 读完后会通知扩展释放这次导出扩展侧另有 10 分钟无人读取自动过期的兜底不会永远占着地方。截图没成功先看这里常见的失败点其实就三处标签页动了目标标签必须全程保持选中视口尺寸稳定。页面被隐藏可能直接停止捕获页面发生导航或切换标签则整个捕获中止。撞到截止线--timeout就是捕获/编码的总期限。内容不断追加的页面比如无限流在 follow 模式会一直滚下去直到撞线这时就该换--scope current把范围框死。Ctrl-C 是安全退出随时取消捕获和传输都不留残缺图片也不会动你之前的输出文件。什么时候该用、什么时候别用什么时候该用--full-page想让模型看到整页、或想归档整个页面。只想看当前屏幕用普通视口截图只想要某个组件或 Canvas--ref裁一块都比全页轻。什么时候别用Chrome 内部页面和 Chrome 应用商店内容脚本注不进去全页模式直接不可用嵌套滚动面板、虚拟化列表内容根本还没渲染出来。也别指望对内容无限追加的页面截全——那只能用--scope current或--timeout把它框住。想深挖的话CLI 侧的分块拉取与原子落盘在 crates/bsk-cli/src/cli/screenshot.rs扩展侧的滚动拼接与停止判定在 apps/extension/src/long-screenshot/capture.ts两处对着读一次全页截图的旅程就完整了。【免费下载链接】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),仅供参考