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 的环境。