managed-browser.md 6.6 KB

托管浏览器与虚拟机融合

托管浏览器由现有 Runner 按需启动专用 Chromium 进程,通过原来的节点鉴权、任务租约和结果通道工作。网页任务可以直接使用浏览器;需要 Linux 程序、终端或完整桌面时,继续使用现有 VM。Hermes 仍负责模型、会话和技能。

这是独立浏览器进程,不是新增 Linux 虚拟机或 Docker 浏览器服务。Web 与 macOS 电脑面板提供查看和人工接管,窄屏 Web 可用;本次没有新增 iOS/Android 原生浏览器界面,也没有替换现有 UI 技术栈。

启用

默认关闭。升级代码不会自动启动 Chromium,也不会改变已有 Bot 的虚拟机、云电脑或本机电脑设置。

  1. 在运行 Runner 的同一系统账号下安装配套 Chromium。源码运行执行:

    npm ci
    npx playwright install chromium
    

独立 Runner 分发包需复制整个 .runner-build/ 目录,再在目标主机执行:

   node .runner-build/node_modules/playwright/cli.js install chromium

Linux 还需安装 Chromium 的系统依赖,可用对应 CLI 的 install-deps chromium。Chromium 启用自身沙箱;用非 root 账号运行 Runner,不添加 --no-sandbox。浏览器二进制、登录资料和缓存不随程序包分发。没有安装配套二进制的节点不会声明浏览器可用。

  1. 在执行节点配置中启用“托管浏览器”,或给现有 runner.json 添加:

    {
     "browser": {
       "enabled": true,
       "maxSessions": 3,
       "idleTimeoutMs": 300000
     }
    }
    

保留现有配置其他字段,再让 Runner 加载更新后的配置。computers 与 browser 可分别配置,单独启用浏览器不要求 VM Worker。maxSessions 范围 1–8,默认 3;空闲回收范围 60 秒–2 小时,默认 5 分钟。

  1. 管理员在 Bot 工具设置中打开“托管浏览器”。Bot 的来源与 Profile 必须在 Runner 和账号权限范围内,Hermes 本轮工具桥也必须可用。
  2. 在 Bot 电脑面板选择“托管浏览器”。任务按需打开;人工点击接管也可打开,单纯查看状态不会启动 Chromium。

会话与接管

  • 普通 Bot 的 Chromium 资料按账号和 Bot 隔离,保存在 Runner 数据目录的 managed-browser/profiles/,关闭页面后保留登录资料。临时助手使用临时资料,关闭后删除。
  • Bot 浏览器与本机浏览器、VM 内浏览器不共享 Cookie、页面或资料目录。一个 Bot 的资料同时只允许一个进程写入。
  • 人工接管与 Agent 使用同一个 Chromium 上下文。接管先等待当前操作收束并切换控制代次;Agent 的后续浏览器调用等待交还。交还后模型获得备注,并重新读取网页。
  • 人工控制凭据有效期 30 秒,由控制页面持续续期;失效后拒绝旧输入,不自动让 Agent 恢复操作。多页面查看不会使控制者的近期画面失效;输入请求按编号去重,动作完成后旧画面不可再次用于新输入。
  • 任务结束时关闭浏览器;人工仍持有控制权时保留到交还。任务完成前应导出所需下载,关闭会清理临时下载。持久资料继续保留。
  • 断线、撤权、节点/Profile 改变会使旧授权失效。切换执行来源时,新来源先确认关闭遗留上下文再操作;不同节点之间不自动搬运登录资料。

工具与文件

工具使用独立的 managed_browser_* 前缀:打开、状态、DOM 快照、页面操作、附件上传、下载导出。页面操作支持导航、标签页、点击、填写、键盘、滚动和截图。普通网页先使用 DOM 快照与元素引用,确有视觉需求时再截图。

下载先取得 downloadId,通过 managed_browser_export 作为现有对话附件交付。上传使用当前账号有权访问的附件 fileId,模型不传宿主文件路径。单文件上限 25 MiB。

同一轮已授权 VM 时,额外提供 managed_browser_to_vm 与 managed_browser_upload_vm。复制使用现有 VM 分块文件协议、摘要校验和路径边界;默认不覆盖文件,也不挂载宿主目录。跨环境文件还受全局文件传输大小设置约束。

网页网络请求走经鉴权的公网代理,拒绝回环、私网与重新解析到私网的目的地址;既有连接也定期检查授权。当前禁用 Service Worker 和 WebSocket,因此依赖这些功能的网站可能不完整。DOM 元素快照目前针对主页面;拖拽等高级输入尚未接入。浏览器不支持通过任意 JavaScript、CDP 或宿主命令接口绕过这些边界。

与已有功能的兼容

  • 未启用时不会给 Hermes 增加浏览器工具,也不改变原电脑后端选择;旧客户端保存工具配置会保留新增开关。
  • 原 computer_*、desktop_*、cloud_computer_* 工具继续走自己的执行路径。浏览器不可用时不会隐式切换环境重做。
  • 共享 VM 中取消一个 holder,只取消该 holder 的命令。Container 和 Compose 均按操作编号取消进程组,其他 holder 的任务继续运行。
  • 工具操作保存意图和有界回执;相同调用编号不会再次执行已提交操作。不确定结果要求先核对,不能盲目重放。
  • Container 命令取消无需更换 VM 镜像;Compose 桌面需同步发布更新后的 deploy/computer/compose_bridge.py(含 cancel 协议)。升级 Compose 时先结束运行任务,再按原部署流程更新桌面镜像;不要只更新 Runner 而保留旧 bridge。
  • 回退功能时关闭全局开关和 Runner 的 browser.enabled,保留资料目录即可。已有 VM、文件库和 Hermes 配置无需迁移。

验证

常规检查:

npm run typecheck
npm run build
NODE_OPTIONS=--no-experimental-webstorage npm test -- --maxWorkers=4

本地 Node 26 的实验性 Web Storage 会覆盖测试环境的 localStorage,因此全量测试使用上述选项。

macOS 桌面回归需先生成本地桌面运行包与原生 helper:

npm run desktop:build
npm run desktop:test

真实 Chromium 验收(先安装配套浏览器):

YAOYAO_BROWSER_SMOKE=1 npx vitest run tests/runner/browserSmoke.test.ts tests/server/managedBrowserSmoke.test.ts

这两项覆盖真实页面操作、上传下载、登录资料恢复,以及 HTTP Runner 领取/准入/结果/授权检查、无 VM 浏览器握手、人工接管与交还。HTTP 测试使用 Hermes fixture,不代表真实模型自主选择工具的评测。macOS Chromium 和临时 Docker 命令取消已实测;Linux Chromium 沙箱与 Windows 安装仍需目标平台验证,尚无与完整 VM 的性能基准数字。