Browser Evaluate(CDP)重构计划

Browser Evaluate(CDP)重构计划

该计划提出为 act:evaluate 增加一条基于 CDP 的执行路径,使“卡死的 evaluate”不再阻塞同一 Tab 上后续的 Playwright 操作队列。

状态

  • Owner:openclaw
  • 状态:draft(以上游为准)
  • 最近更新:2026-02-10(以上游为准)

问题

当前 act:evaluate 主要通过 Playwright 执行(page.evaluate / locator evaluate)。由于 Playwright 会序列化同一页面上的命令,长时间或卡死的 evaluate 可能导致后续点击、输入、等待等动作“看起来都卡住”。

目标(摘要)

  • act:evaluate 不应永久阻塞后续动作。
  • 超时/截止时间应端到端一致(CLI → HTTP → 执行层)。
  • abort/timeout 行为在不同调用路径下保持一致。

建议方向(摘要)

  • 引入统一的 “budget”/deadline 辅助,确保 timeoutMs 与 abort 贯穿所有层。
  • 增加 CDP evaluate 引擎,避免与 Playwright per-page 队列共享同一执行通道。
  • 对“按 ref 定位元素”的 evaluate,尽量在快照阶段补齐可映射到 CDP 的 id(失败则回退)。
  • 仍保留有界的 Playwright fallback,用于无法 attach CDP 的环境。