Skip to content

v0.7.2

Choose a tag to compare

@jumodada jumodada released this 22 Jul 02:57
· 35 commits to main since this release

新增

  • 新增 page_dialog_respond,用于处理 alert、confirm 和 prompt 原生对话框:
    • 使用 DrissionPage 原生能力探测;
    • Prompt 内容不会出现在公开结果或历史记录中;
    • 返回与操作关联的 ActionReceipt
  • 新增 element_click_and_download,用于原子执行元素点击并等待对应下载:
    • 支持操作键重放保护,避免重复点击和重复下载;
    • 校验文件大小和 SHA-256;
    • 返回安全相对路径、ArtifactRefActionReceipt
    • 下载文件限制在 DP_MCP_DOWNLOAD_ROOT 下。
  • page_pointer_drag 新增最多 6 个有序 waypoints,支持画布路径、地图拖动、
    框选和可视化编辑器连接。
  • element_click 新增左键、右键、中键以及单击、双击语义。

变更

  • 公开工具数量从 58 个调整为 53 个。
  • 指针执行模型简化为两个确定性 profile:
    • direct:默认值,一步移动到精确目标;
    • natural:固定 24 步的缓动三次贝塞尔轨迹;
    • 所有移动和拖动都会精确到达最终目标;
    • 拖动失败后仍会尝试释放鼠标按键。
  • 移除随机抖动、随机反应时间、overshoot、precise profile 和显式合成
    起始坐标,使指针行为可复现、更容易测试。
  • 普通工具调用围绕共享浏览器上下文串行执行;page_dialog_respond 可以并发
    响应阻塞中的原生对话框。
  • cleanup() 会等待正在执行的工具调用结束,并阻止清理期间创建或使用新的
    浏览器上下文,减少资源释放竞争。
  • 未知工具和无效参数会在浏览器初始化之前被拒绝。
  • 保存截图时,公开结果只返回相对于 DP_MCP_SCREENSHOT_ROOT 的规范化路径。
  • MCP 引导面收敛为 0 个 MCP Prompt 和 1 个静态
    drissionpage://skills/catalog Resource。
  • Action Receipt 和 Artifact 状态仅保留在下载、原生对话框等需要严格关联
    时序和副作用的能力中。
  • 可复用表单和视觉工作流迁移至 Python 分发包之外的可选 Skills。

修复

  • 修复 Linux headless Chromium 下重复输入文本时清空失败的问题,改用
    DrissionPage 跨平台清空路径后再执行真实输入。
  • 修复原生对话框触发操作与响应操作之间可能发生的并发阻塞。
  • 修复工具执行与服务器 cleanup 并发时的上下文释放竞争。
  • 修复下载取消过程中可能遗留的异步任务和文件描述符状态。

安全性

  • 下载策略拒绝会在点击、操作声明和文件分配之前执行。
  • 下载文件使用稳定、禁止跟随符号链接的文件描述符进行哈希验证,降低路径
    替换竞争风险。
  • 公开 URL 会移除凭据、查询参数、fragment、本地路径和不安全协议。
  • 截图、上传和下载结果仅公开安全相对路径。
  • 对不确定的下载或对话框结果不会自动重试,避免重复外部副作用。

移除和兼容性变化

0.7.2 相比 0.6.1 移除以下 7 个公开工具,不提供兼容别名或占位工具:

已移除工具 推荐组合方式
form_inspect page_snapshotelement_find_allelement_find 和属性、文本读取
form_fill_preview 显式组合 element_typeelement_selectelement_check 和状态读取
page_detect_challenges page_observepage_snapshot、聚焦元素读取和可选 Skill 分类
page_click_xy_batch 逐次调用 element_clickpage_click_xy,每次操作后重新观察和验证
page_wait_challenge_result wait_until 加 URL、文本、属性或 property 后置条件
browser_open_and_snapshot page_navigate 后显式调用 page_snapshotpage_observe
browser_extract_links 使用有界的 element_find_all 完成链接发现

0.7.0 中曾加入、但最终未保留在 0.7.2 公开注册表中的 form_fill
form_submit,同样需要通过原子输入、激活、等待和状态读取工具组合实现。

运行兼容性

  • Python:>=3.10
  • DrissionPage:>=4.1.1.4,<5
  • MCP Python SDK:>=1.0.0
  • 不支持 DrissionPage 5.x。