technical

Browser Executor 商业化计划

把 Toolplane 后续 browser executor 的 pickup、失败、重试、selector 诊断、R2 failure evidence 与真实 runner handoff 固定成可执行的商业化路线图。

Audience

开发者 / 产品 / 测试

Updated

2026-03-30

Source

docs/browser-executor-plan.zh-CN.md

当前判断

  • 框架主干已经完成到 explicit executorReceipt / terminalResult / executorArtifacts 边界
  • 真实 browser executor 不需要重写 terminal backwrite,只需要替换生产者
  • D1 继续做 run / attempt / ledger / audit 的 source of truth
  • R2 failure evidence 首刀已经落地;真实 screenshot binary 仍留给 real runner 接入时替换
  • POST /api/runs/pickup-next 与 browser-runner-pickup.mjs 已把真实 runner intake 的 pickup / failed / success proof 接到同一条主线上

默认推进顺序

  • Slice A:pickup / fail / run attempts
  • Slice B:失败证据 contract
  • Slice C:retry / reservation contract
  • Slice D:R2 失败证据落盘
  • Slice E:真实 Node + Playwright runner

本次已落地

  • workflow_run_attempts 已进入 schema
  • POST /api/runs/:runId/pickup / fail / retry / complete 已进入代码
  • POST /api/runs/pickup-next 已进入代码,并允许 runner 直接消费 queued run intake
  • GET /api/runs 现在会返回 recoveryQueue / recoveryStats,Runs workbench 已独立显示 manual recovery queue
  • POST /api/runs/:runId/retry 现在支持 retryMode=manual_recovery,让 owner/operator 可以在保留 reservation 的前提下手动重排
  • POST /api/runs/:runId/complete 现在支持 browser-runner success payload,并把 executorReceipt / sinkWrites / latestAttempt success detail 持久化到 accepted run truth
  • Runs workbench 已能显示 running / failed、latest attempt、retry summary 与 failure evidence
  • EVIDENCE_R2_BUCKET -> toolplane-ai-private 已进入 staging 绑定
  • GET /api/runs/:runId/evidence/:evidenceId 已能读取持久化后的 failure evidence

默认下一刀

  • 更重的 selector / screenshot 证据模型
  • 继续复用现有 pickup / fail / retry / complete 合同,而不是重写 terminal backwrite
  • 让 real runner 从当前 proof client 继续推进到独立 executor 进程与更重的 failure evidence