支持可插拔浏览器后端(如 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。
建议
- 将“联网路由”和“浏览器传输”分开:
- 静态搜索/抓取、专用 CLI/API/MCP:不启动 CDP,不检查 Chrome。
- agent-owned browser backend:通过一个稳定的命令/JSON adapter 调用(可由 ego-browser、隔离 Chromium、云浏览器等实现)。
- existing-profile CDP:仅在任务明确依赖用户当前 Chrome 状态时启用。
- 新增类似
WEB_ACCESS_BROWSER_BACKEND=auto|external|cdp的配置;保留现有WEB_ACCESS_BROWSER作为 CDP 产品选择,避免破坏兼容性。 - external adapter 至少支持:创建/复用任务空间、导航、页面语义快照、点击/输入、截图、关闭;能力不支持时明确回退或报错。
- CDP 路径保持单一长连接并复用,连接断开时返回结构化
needs-user-action,不要循环重连并制造多次弹窗。 - 不建议内置“按坐标盲点 Allow”。若将来支持自动确认,应绑定到已获用户授权的确切浏览器 PID/窗口/连接,并在按钮或窗口不唯一时拒绝。可参考 trycua/cua 的 macOS 精确 AX 匹配与会话复用:
验收标准
- 普通 WebSearch/WebFetch/静态抓取不会启动或检查 Chrome CDP。
- 配置 external backend 后,浏览器自动化可在不弹 Chrome remote-debugging 授权的情况下完成。
- 需要现有 Chrome 登录态时仍可显式走 CDP,且同一代理生命周期只建立/复用一条浏览器级连接。
- external backend 不可用或能力不足时,返回明确原因;不得静默切换到个人 Chrome。
- Chrome/Edge 现有配置保持兼容。
Source: eze-is/web-access