使用场景
在实际的 AI Agent 自动化工作流中,经常需要让 bsk 帮用户上传本地图片到网页(如 Google Flow / 各类生图平台),或者下载网页生成的高清图片到本地。
当前问题
bsk 目前没有 upload 或 download 命令,导致:
- 上传:点击网页的"上传"按钮后,系统弹出原生文件选择对话框,bsk 无法操控系统级窗口。只能用
request-help 让用户手动操作。
- 下载:网页触发的下载(如 Google Flow 的 2K upsample 下载)会保存到 Agent Window 的隔离 Chrome profile 中,用户本地的 Downloads 目录拿不到文件。Canvas 提取 + base64 变通方案受限于显示分辨率和 CORS。
提出的方案
利用 Chrome DevTools Protocol 的标准命令,在 bsk 中新增两个命令:
bsk upload
bsk upload --session <SID> --selector "input[type=file]" --file /path/to/image.png
底层调用 CDP DOM.setFileInputFiles,直接向 <input type="file"> 元素注入本地文件路径,完全绕过系统文件选择对话框。这是 Playwright (page.setInputFiles)、Puppeteer (elementHandle.uploadFile)、Selenium CDP 等所有主流浏览器自动化框架的标准做法。
实现逻辑:
- 通过 CSS selector 或 ref 定位
<input type="file"> 元素
- 获取元素的 backendNodeId
- 调用
chrome.debugger.sendCommand({tabId}, "DOM.setFileInputFiles", {files: [absolutePath], backendNodeId})
- 派发
change 事件通知页面
bsk download
bsk download --session <SID> --dir /path/to/downloads
底层调用 CDP Browser.setDownloadBehavior,将下载目录重定向到用户指定的本地路径,这样 Agent Window 中的下载就能直接保存到用户的文件系统。
技术可行性
bsk 的浏览器扩展已经在使用 chrome.debugger API 来实现现有的 click/fill/navigate 等命令。DOM.setFileInputFiles 和 Browser.setDownloadBehavior 是同一 CDP 命名空间下的标准命令,扩展已有 "debugger" 权限即可直接调用,无需新增权限。
我在 WorkerBuddy + bsk v0.1.9 的 Agent Window 中测试过,chrome 对象在页面上下文中不可直接访问 chrome.debugger,但这在扩展的 background/service worker 上下文中是完全可以的——bsk 现有的所有命令本身就是在这个上下文中通过 CDP 实现的。
影响范围
这两个命令将显著提升 bsk 在以下场景中的自动化能力:
- AI 生图平台(Google Flow、Midjourney、Stable Diffusion WebUI 等)
- 文档/附件上传类工作流(邮件、表单、CMS 等)
- 任何需要"上传本地文件到网页"或"从网页下载生成物到本地"的 AI Agent 场景
使用场景
在实际的 AI Agent 自动化工作流中,经常需要让 bsk 帮用户上传本地图片到网页(如 Google Flow / 各类生图平台),或者下载网页生成的高清图片到本地。
当前问题
bsk 目前没有
upload或download命令,导致:request-help让用户手动操作。提出的方案
利用 Chrome DevTools Protocol 的标准命令,在 bsk 中新增两个命令:
bsk upload底层调用 CDP
DOM.setFileInputFiles,直接向<input type="file">元素注入本地文件路径,完全绕过系统文件选择对话框。这是 Playwright (page.setInputFiles)、Puppeteer (elementHandle.uploadFile)、Selenium CDP 等所有主流浏览器自动化框架的标准做法。实现逻辑:
<input type="file">元素chrome.debugger.sendCommand({tabId}, "DOM.setFileInputFiles", {files: [absolutePath], backendNodeId})change事件通知页面bsk download底层调用 CDP
Browser.setDownloadBehavior,将下载目录重定向到用户指定的本地路径,这样 Agent Window 中的下载就能直接保存到用户的文件系统。技术可行性
bsk 的浏览器扩展已经在使用
chrome.debuggerAPI 来实现现有的 click/fill/navigate 等命令。DOM.setFileInputFiles和Browser.setDownloadBehavior是同一 CDP 命名空间下的标准命令,扩展已有 "debugger" 权限即可直接调用,无需新增权限。我在 WorkerBuddy + bsk v0.1.9 的 Agent Window 中测试过,
chrome对象在页面上下文中不可直接访问chrome.debugger,但这在扩展的 background/service worker 上下文中是完全可以的——bsk 现有的所有命令本身就是在这个上下文中通过 CDP 实现的。影响范围
这两个命令将显著提升 bsk 在以下场景中的自动化能力: