v0.8.11-alpha — human_browser_open 幂等复用
Pre-release
Pre-release
human_browser_open 幂等复用(AgentHub #100 轮31)
真机实证:操作员 agent 把 human_browser_open 当"翻页/刷新"反复调(一个任务 17 次),原实现每次无条件重启 Chrome + 重跑 CDP 装扩展 → 慢(每次冷启动数秒)+ 破坏(有时把已登录的公众号后台页顶成新标签/Google 首页,agent 落错页 churn)。光靠 skill 文案劝不住模型的重开习惯,故在工具层做成幂等。
变更
- 探测两路:① 盘扫
<udd>/DevToolsActivePort+/json/version探活的 CDP 端点(human_dom 专用 profile 带临时 debug 端口,随 Chrome 存活,跨 server 重启也可探到);② 进程内启动注册表(覆盖无 debug 端口的非 human_dom 专用 profile)。陈旧 DevToolsActivePort(上次崩溃死端口)→ 正确判冷。 - 热路径(复用):不重 spawn、不重装扩展、不重 auto-bake、不新开标签;返回
reused:true+reuse_via。传 url 只在恰好 1 个标签才在当前页内导航(多标签无法可靠判前台页 → 一律不动,绝不盲选 page[0] 顶掉登录页);同源即视为已在目标站不重载(保护登录态/编辑器);仅 focus/最大化(非破坏)。 - 并发安全:「探测 → (冷)spawn → 登记」收进 per-key 锁,同一 profile 并发 open 只冷启动一次;慢的 CDP 装扩展留在锁外。
- 不变:冷路径(首开)spawn + 装扩展,
reused:false;默认日常 Chrome(无 profile)恒reused:false。platforms/common→ win/mac 同一语义共享。
验收
- 合成:连开 3 次 → 冷启动 1 次 + 复用 2 次(无新进程/无新标签/无 loadUnpacked 重跑)✅
- 新增 23 条单测;
platforms/common全量 272 passed;blueprint-check 全绿;自走 code-reviewer 两轮(多标签盲选 + TOCTOU 竞态已修并复验通过)。
PR #74 · squash 84e4c9b