支持可插拔浏览器后端(如 ego-browser),避免无浏览器任务启动 Chrome CDP / 重复授权

Author: 1939869736luosiCreated Aug 27, 2026Updated Aug 27, 2026

背景

当前 WEB_ACCESS_BROWSER / 浏览器发现逻辑主要面向 Chrome、Canary、Chromium、Edge,并且 Skill 的前置流程容易让普通搜索、静态抓取或已有专用 CLI/API/MCP 的任务也进入 CDP 检查。macOS Chrome 144+ 的个人资料自动连接需要用户启用 remote debugging,并在每个新浏览器级 WebSocket 会话上确认 “Allow remote debugging”。如果代理或连接在多轮任务间重启,用户会反复看到授权弹窗。

希望支持一个可插拔的浏览器后端,使默认网页自动化可以选择 agent-owned 浏览器(例如 ego-browser 的 task space),而只有确实需要用户当前 Chrome 登录态/标签页时才使用现有 CDP 路径。

现有相关工作(均只解决部分问题)

  • #147:等待期间只轮询 /health,减少一次启动过程中被放大的重复授权。
  • #152:只在实际进入 CDP 层时执行依赖检查,并优先专用 CLI/API/MCP。
  • #153:修复显式 --remote-debugging-port + 独立 profile 的连接,可避开个人资料的授权流程。
  • #150:浏览器扩展传输(目前 Draft 且有冲突)。
  • #149 / #148:其他浏览器或浏览器 MCP 的支持诉求。

这些方案都没有提供通用的外部浏览器 backend/adapter,也不能直接配置 WEB_ACCESS_BROWSER=ego

建议

  1. 将“联网路由”和“浏览器传输”分开:
    • 静态搜索/抓取、专用 CLI/API/MCP:不启动 CDP,不检查 Chrome。
    • agent-owned browser backend:通过一个稳定的命令/JSON adapter 调用(可由 ego-browser、隔离 Chromium、云浏览器等实现)。
    • existing-profile CDP:仅在任务明确依赖用户当前 Chrome 状态时启用。
  2. 新增类似 WEB_ACCESS_BROWSER_BACKEND=auto|external|cdp 的配置;保留现有 WEB_ACCESS_BROWSER 作为 CDP 产品选择,避免破坏兼容性。
  3. external adapter 至少支持:创建/复用任务空间、导航、页面语义快照、点击/输入、截图、关闭;能力不支持时明确回退或报错。
  4. CDP 路径保持单一长连接并复用,连接断开时返回结构化 needs-user-action,不要循环重连并制造多次弹窗。
  5. 不建议内置“按坐标盲点 Allow”。若将来支持自动确认,应绑定到已获用户授权的确切浏览器 PID/窗口/连接,并在按钮或窗口不唯一时拒绝。可参考 trycua/cua 的 macOS 精确 AX 匹配与会话复用:

验收标准

  • 普通 WebSearch/WebFetch/静态抓取不会启动或检查 Chrome CDP。
  • 配置 external backend 后,浏览器自动化可在不弹 Chrome remote-debugging 授权的情况下完成。
  • 需要现有 Chrome 登录态时仍可显式走 CDP,且同一代理生命周期只建立/复用一条浏览器级连接。
  • external backend 不可用或能力不足时,返回明确原因;不得静默切换到个人 Chrome。
  • Chrome/Edge 现有配置保持兼容。