Skip to content

feat(bsk): support drop to upload - #124

Open
Ljy-0827 wants to merge 2 commits into
feat/upload-downloadfrom
feat/expand-upload-download
Open

feat(bsk): support drop to upload#124
Ljy-0827 wants to merge 2 commits into
feat/upload-downloadfrom
feat/expand-upload-download

Conversation

@Ljy-0827

@Ljy-0827 Ljy-0827 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

现存问题

BrowserSkill 的自动上传目前主要依赖标准 <input type="file">。部分网页虽然提供“从电脑上传”等入口,但实际使用 non-input picker,无法通过现有 file-input 机制完成无人值守上传。

此外,聊天输入区、邮件编辑器、表单附件区和显式拖放区域通常支持原生文件拖放,但 BrowserSkill 尚未提供对应能力。Agent 遇到 file-input 不可用时只能直接降级到 request-help,覆盖范围有限。

跨进程 iframe、BrowserSkill 自身控制遮罩以及不明确的目标区域,也会影响原生拖放的目标归属和安全性。

解决方案

本 PR 在现有 file-input 上传机制之外,新增显式的原生 file-drop 模式:

  • 默认上传仍使用 file-input 模式,保持现有行为和兼容性。
  • Agent 可以对可靠识别的附件接收区域显式选择 drop 模式,包括拖放区、聊天输入区、邮件编辑器和表单附件区。
  • 两种机制相互独立,BrowserSkill 不会自动回退或猜测目标,避免重复上传和错误投递。
  • drop 模式通过浏览器原生拖放事件传递暂存文件,并在投递前验证目标区域仍然拥有对应位置。
  • 跨进程 iframe 使用目标页面自己的局部坐标和浏览器会话,确保文件投递到正确文档。
  • 原生拖放期间短暂排除 BrowserSkill 自身控制遮罩,完成、失败或取消后立即恢复,避免遮罩干扰浏览器命中。
  • 上传结果继续使用 effect_state 区分未发生、已发生和无法确认的状态;不确定或已提交的操作禁止盲目重试。
  • 对浏览器能力不足、目标无法可靠归属或原生拖放失败的情况返回结构化错误,并提供明确的重新观察或 request-help 指引。
  • Skill 增加统一的上传决策顺序:优先尝试 input,仅在 input 明确未生效且存在可靠附件接收区域时尝试一次 drop,否则降级到人工协助。

该调整不改变 Agent/harness 与 BrowserSkill 的安全职责边界:Agent/harness 仍负责决定文件是否应上传以及选择业务目标;BrowserSkill 只负责强制执行会话、页面目标、暂存路径、大小、生命周期和结果状态约束。

@Ljy-0827 Ljy-0827 self-assigned this Aug 21, 2026
@Ljy-0827
Ljy-0827 force-pushed the feat/expand-upload-download branch from c8a7197 to b1b1ae1 Compare August 24, 2026 09:33
@Ljy-0827
Ljy-0827 marked this pull request as ready for review August 24, 2026 10:55
@Ljy-0827
Ljy-0827 requested review from iuyo5678 and shnpd August 24, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant