浏览器 API
aiod 连接已经启动的 Chromium,不负责启动浏览器。连接地址由两个环境变量决定:
可以使用 Playwright、Puppeteer 等 CDP 客户端,也可以直接调用 REST API。/v1/browser/* 和 /v2/browser/* 的请求体相同;桌面操作除外:v1 使用 POST /v1/browser/actions,v2 使用 /v2/computer。详见 Computer Use。
运行要求
GET /v2/sandbox 返回 capabilities.browser:
GET /v1/capabilities 返回 browser.status:
不是 ready 时,其余工具不可用。见 Sandbox。
CDP
获取 CDP URL
aiod 向 BROWSER_REMOTE_DEBUGGING_HOST:PORT 上的 Chromium 请求 /json/version,取其中的 webSocketDebuggerUrl,再按请求头改写成对外地址:
Chromium 没有应答时,cdp_url 仍按同样格式返回一个占位地址,恢复后重新调用即可。
Playwright 和 Puppeteer 直接连接 cdp_url,示例见 浏览器(CDP)。反向代理、路径前缀和鉴权参数的处理见 CDP 接入。
发送原始 CDP 命令
REST 没有覆盖的能力走这个入口。需要连续发多条命令时,直接用 cdp_url 建立 CDP 连接。
REST 接口
不需要完整 CDP 客户端的操作,aiod 提供一套精简 REST。返回结构都是标准的 {success, message, data},完整的请求和响应结构见 API 参考。
这些路由挂在 /v2/browser 下:
这些路由挂在 /v1/browser 下:
navigate、evaluate、snapshot、click、fill、upload 和 cdp 可以用 tab_id 指定标签页,不传时作用于列表中的第一个标签页。screenshot 不支持 tab_id,始终截取第一个标签页。
导航与脚本执行
wait_until可选load、domcontentloaded、networkidle、commit,默认load。timeout默认 30 秒,超时返回503,标签页仍可继续使用。history可取back、forward、reload。evaluate的结果在data.value,JavaScript 异常在data.exception,HTTP 状态仍是200。
截图
format 可选 png(默认)、jpeg、jpg;quality 取 0–100,只对 jpeg 生效,默认 85。full_page=true 截取整个可滚动页面。PNG 响应带 x-image-width 和 x-image-height。
页面快照
ref 来自 snapshot。每次导航后都要重新取快照,旧的 ref 不再有效。
标签页
新打开的标签页排在列表最前面,并成为默认目标。
Cookie
结构沿用 CDP 的定义。设置时必须提供 name,以及 url 或 domain 和 path,其他字段可选。
请求日志
从第一次调用后开始收集,最多保留最近 300 条。不支持请求拦截和请求头改写。
窗口大小
不传 resolution 时不修改窗口。
错误处理
JavaScript 异常不算 HTTP 错误:evaluate 仍返回 200,异常放在 data.exception 里。
桌面操作
真实的鼠标和键盘事件由 computer-use worker 执行,不是页面级操作,worker 未运行时返回 503。
调用 POST /v2/computer/actions,见 Computer Use。
调用 POST /v1/browser/actions,见 Computer Use。
MCP 工具
支持 MCP 的 agent 通过 /mcp 调用浏览器工具。daemon 自带 browser_get_info,以及 computer-use 可用时的 browser_gui_screenshot 和 browser_gui_execute_action。
AIO 镜像在 loopback 上运行 @agent-infra/mcp-server-browser,并把它注册成 /mcp 的上游,镜像里页面级的 browser_* 导航工具由此而来。注册方式见 MCP。
选择调用方式
三种入口操作的是同一个 Chromium:
需要完整的页面自动化时使用 CDP;只做常用操作时直接调用 REST API;已经接入 MCP 的 agent 可以使用 MCP。
Human in the loop
人可以直接查看或接管 agent 正在操作的 Chromium。两种查看方式连接的是同一个浏览器环境:
noVNC 连接的是整个桌面,而不是单独的浏览器窗口。因此可以操作文件选择框、地址栏和其他应用窗口。即使 Chromium 重启,桌面仍会保留。noVNC 页面也可以嵌入 iframe。
人和 agent 共享同一个浏览器状态。例如,在 noVNC 中完成登录后,agent 下一次调用 snapshot 就能看到登录后的页面。
daemon 只提供 API;noVNC 和 DevTools 页面由镜像网关提供。部署和访问方式见 Computer Use。