生成模型 :Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗 :输入 ~160k tokens,输出 ~5k tokens(本节)
在前几章中,我们分析了 OpenClaw 如何通过 Bash 工具让 AI Agent 在操作系统层面执行命令。但在现代 Web 时代,浏览器是信息获取和交互的核心载体。OpenClaw 的浏览器控制子系统让 Agent 能够像人类一样浏览网页——导航、点击、填表、截图,甚至执行 JavaScript。本节将从全局视角解析这个复杂子系统的架构设计。
16.1.1 Playwright + CDP 混合方案
OpenClaw 的浏览器控制采用了双层架构 :底层的 CDP(Chrome DevTools Protocol)和上层的 Playwright。
Copy ┌─────────────────────────────────────┐
│ OpenClaw Agent │
│ (工具调用层) │
├─────────────────────────────────────┤
│ Playwright 高级 API 层 │
│ click / fill / snapshot / navigate │
│ 页面状态管理 / 角色快照 │
├─────────────────────────────────────┤
│ CDP 低级 API 层 │
│ WebSocket → Chrome DevTools │
│ 截图 / JS 执行 / 标签页创建 │
├─────────────────────────────────────┤
│ Chrome / Chromium 浏览器实例 │
│ (OpenClaw 管理 或 用户已有) │
└─────────────────────────────────────┘ 衍生解释 :**CDP(Chrome DevTools Protocol)**是 Chrome 浏览器内置的远程调试协议。当 Chrome 以 --remote-debugging-port=9222 参数启动时,会在该端口上暴露一个 HTTP + WebSocket 接口。外部程序可以通过这个接口控制浏览器的几乎所有行为——导航页面、执行 JavaScript、截取屏幕截图、修改 DOM 等。它是所有浏览器自动化框架(Puppeteer、Playwright、Selenium 4)的底层基础。
衍生解释 :Playwright 是微软开发的浏览器自动化库。与直接使用 CDP 不同,Playwright 提供了更高级的抽象——自动等待元素可交互、智能选择器(通过 ARIA 角色、文本内容等定位元素)、跨浏览器支持(Chrome、Firefox、Safari)。对 AI Agent 来说,Playwright 的"角色快照(Aria Snapshot)"功能尤其重要——它能将页面的可访问性树(Accessibility Tree)转换为 Agent 可读的文本描述。
混合方案的设计理由:
直接调用 Page.captureScreenshot,零额外开销
直接调用 Runtime.evaluate,无需 Playwright 上下文
Target.createTarget 更底层可靠
16.1.2 Chrome 实例管理
chrome.ts 负责发现系统中的 Chrome/Chromium 浏览器并管理其生命周期:
chrome.executables.ts 为三大平台(macOS、Linux、Windows)提供了浏览器发现逻辑:
launchOpenClawChrome() 的启动流程包含多个阶段:
Chrome 启动参数经过精心选择:
两级检查确保 Chrome 不仅启动了 HTTP 服务,WebSocket 连接也能正常建立。
16.1.3 配置文件(Profiles)管理
OpenClaw 支持同时管理多个浏览器配置文件,每个配置文件有独立的 CDP 端口和用户数据目录:
allocateCdpPort() 从范围中找到第一个未被使用的端口。已使用的端口从所有配置文件中收集:
每个配置文件有一个可视化标识色,用于在 Chrome 的标题栏上区分不同实例:
decorateOpenClawProfile() 修改 Chrome 的 Preferences 和 Local State 文件,注入配置文件名和主题色。这样用户一眼就能辨认出哪个 Chrome 窗口是 OpenClaw 控制的。
用户已有 Chrome,安装了 OpenClaw 扩展
通过 Chrome Extension Relay 中继 CDP 命令
extension 模式解决了一个实际问题:用户可能已经在使用 Chrome 并登录了各种网站。与其启动一个全新的 Chrome 实例(没有 cookie、没有登录状态),不如复用用户现有的浏览器——只需安装一个 OpenClaw 扩展来建立控制通道。
其中 DEFAULT_AI_SNAPSHOT_MAX_CHARS = 80,000 和 DEFAULT_AI_SNAPSHOT_EFFICIENT_MAX_CHARS = 10,000 控制页面快照发送给 LLM 的文本长度上限——页面越复杂,快照越大,但过大的快照会消耗过多的 context window。
双层架构 :CDP 用于低级操作(截图、JS 执行、标签页管理),Playwright 用于高级操作(点击、填表、页面快照)
Chrome 生命周期管理 :自动发现浏览器可执行文件(支持 Chrome/Brave/Edge/Chromium)、创建隔离的用户数据目录、首次引导配置文件、等待 CDP 就绪
多配置文件 :每个配置文件分配独立的 CDP 端口(18800-18899 范围)、主题色、用户数据目录
两种驱动模式 :openclaw 模式自行启动 Chrome,extension 模式通过扩展中继复用用户已有的浏览器
端口规划 清晰——Gateway、Bridge、浏览器控制、Canvas 各有保留端口,CDP 端口池最多支持 100 个配置文件