OpenClaw 可以运行一个专用的 Chrome/Brave/Edge/Chromium 配置文件,由智能体控制。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
它与你的个人浏览器隔离,并通过 Gateway 网关 内部的一个小型本地控制服务进行管理
(仅限 loopback)。 初学者视角:
- 可以把它看作一个独立的、仅供智能体使用的浏览器。
openclaw配置文件不会触碰你的个人浏览器配置文件。- 智能体可以在一条安全通道中打开标签页、读取页面、点击和输入。
- 内置的
user配置文件会通过 Chrome MCP 附加到你真实的、已登录的 Chrome 会话。
你将获得什么
- 一个名为 openclaw 的独立浏览器配置文件(默认使用橙色强调色)。
- 可预测的标签页控制(列出/打开/聚焦/关闭)。
- 智能体操作(点击/输入/拖拽/选择)、快照、截图、PDF。
- 一个内置的
browser-automationSkills,在启用浏览器插件时,会教会智能体使用快照、稳定标签页、过期引用和手动阻塞恢复循环。 - 可选的多配置文件支持(
openclaw、work、remote,等等)。
快速开始
Gateway 网关。 如果根本没有
openclaw browser,或者智能体提示浏览器工具不可用,请跳转到缺少浏览器命令或工具。
插件控制
默认的browser 工具是一个内置插件。禁用它可以用另一个注册同名 browser 工具的插件来替换它:
plugins.entries.browser.enabled 和 browser.enabled=true。仅禁用插件会将 openclaw browser CLI、browser.request Gateway 网关方法、智能体工具和控制服务作为一个整体移除;你的 browser.* 配置会保持不变,以便替换方案继续使用。
浏览器配置更改需要重启 Gateway 网关,这样插件才能重新注册其服务。
智能体指引
工具配置文件说明:tools.profile: "coding" 包含 web_search 和web_fetch,但不包含完整的 browser 工具。如果智能体或生成的子智能体应该使用浏览器自动化,请在配置文件阶段加入 browser:
agents.list[].tools.alsoAllow: ["browser"]。仅设置
tools.subagents.tools.allow: ["browser"] 还不够,因为子智能体策略会在配置文件过滤之后才应用。
浏览器插件提供两层智能体指引:
browser工具说明携带了精简的始终启用契约:选择正确的配置文件,在同一个标签页中保持引用,使用tabId/标签 来定位标签页,并在多步骤任务中加载浏览器 Skills。- 内置的
browser-automationSkills 携带了更完整的操作循环:先检查状态/标签页,给任务标签页加标签,操作前先做快照,在 UI 变化后重新快照,过期引用恢复一次,并将登录/2FA/captcha 或摄像头/麦克风阻塞报告为需要手动操作,而不是靠猜测处理。
缺少浏览器命令或工具
如果升级后openclaw browser 未知、缺少 browser.request,或者智能体报告浏览器工具不可用,通常原因是 plugins.allow 列表遗漏了 browser,并且不存在根级 browser 配置块。请添加它:
browser 配置块,例如 browser.enabled=true 或 browser.profiles.<name>,即使在限制性的 plugins.allow 下,也会激活内置浏览器插件,这与渠道配置行为一致。仅靠 plugins.entries.browser.enabled=true 和 tools.alsoAllow: ["browser"] 并不能替代 allowlist 成员资格。完全移除 plugins.allow 也会恢复默认行为。
配置文件:openclaw 与 user
openclaw:受管理、隔离的浏览器(无需扩展)。user:内置的 Chrome MCP 附加配置文件,用于你的真实已登录 Chrome 会话。
- 默认:使用隔离的
openclaw浏览器。 - 当现有已登录会话很重要,并且用户就在电脑前可以点击/批准任何附加提示时,优先使用
profile="user"。 - 当你想要特定浏览器模式时,
profile是显式覆盖项。
browser.defaultProfile: "openclaw"。
配置
浏览器设置位于~/.openclaw/openclaw.json。
端口和可达性
端口和可达性
- 控制服务绑定到 loopback 上的一个端口,该端口从
gateway.port派生而来(默认18791= gateway + 2)。覆盖gateway.port或OPENCLAW_GATEWAY_PORT会以同一端口族方式平移这些派生端口。 - 本地
openclaw配置文件会自动分配cdpPort/cdpUrl;只有远程 CDP 才需要设置这些值。未设置时,cdpUrl默认为受管理的本地 CDP 端口。 remoteCdpTimeoutMs适用于远程和attachOnlyCDP HTTP 可达性检查,以及打开标签页的 HTTP 请求;remoteCdpHandshakeTimeoutMs适用于它们的 CDP WebSocket 握手。localLaunchTimeoutMs是本地启动的受管理 Chrome 进程暴露其 CDP HTTP 端点的时间预算。localCdpReadyTimeoutMs是在发现进程后,为 CDP websocket 就绪提供的后续时间预算。在 Raspberry Pi、低端 VPS 或 Chromium 启动较慢的旧硬件上,可以提高这些值。值必须是最大不超过120000ms 的正整数;无效的配置值会被拒绝。- 对于反复发生的受管理 Chrome 启动/就绪失败,会按配置文件进行熔断处理。在连续失败数次后,OpenClaw 会短暂停止新的启动尝试,而不是在每次浏览器工具调用时都生成一个 Chromium 进程。请修复启动问题、在不需要时禁用浏览器,或在修复后重启 Gateway 网关。
actionTimeoutMs是浏览器act请求的默认时间预算,当调用方未传递timeoutMs时使用。客户端传输层会增加一个小的宽限窗口,让长时间等待能够完成,而不会在 HTTP 边界处超时。tabCleanup是针对主智能体浏览器会话所打开标签页的尽力清理机制。子智能体、cron 和 ACP 生命周期清理仍会在会话结束时关闭它们显式跟踪的标签页;主会话会让活动标签页保持可复用,然后在后台关闭空闲或超量的已跟踪标签页。
SSRF 策略
SSRF 策略
- 浏览器导航和打开标签页在导航前会受到 SSRF 防护,并在最终
http(s)URL 上尽力再次检查。 - 在严格 SSRF 模式下,远程 CDP 端点发现和
/json/version探测(cdpUrl)也会被检查。 - Gateway 网关/提供商的
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY和NO_PROXY环境变量不会自动代理由 OpenClaw 管理的浏览器。受管理的 Chrome 默认直接启动,因此提供商代理设置不会削弱浏览器 SSRF 检查。 - 如需代理受管理浏览器本身,请通过
browser.extraArgs传递显式的 Chrome 代理标志,例如--proxy-server=...或--proxy-pac-url=...。严格 SSRF 模式会阻止显式浏览器代理路由,除非已明确启用私有网络浏览器访问。 browser.ssrfPolicy.dangerouslyAllowPrivateNetwork默认关闭;只有在你明确可信任私有网络浏览器访问时才启用它。browser.ssrfPolicy.allowPrivateNetwork仍作为旧版别名受到支持。
配置文件行为
配置文件行为
attachOnly: true表示绝不启动本地浏览器;只有在浏览器已经运行时才附加。headless可以全局设置,也可以按本地受管理配置文件单独设置。按配置文件设置的值会覆盖browser.headless,因此一个本地启动的配置文件可以保持无头模式,而另一个仍保持可见。POST /start?headless=true和openclaw browser start --headless会为本地受管理配置文件请求一次性无头启动,而不会改写browser.headless或配置文件配置。existing-session、attach-only 和远程 CDP 配置文件会拒绝该覆盖,因为 OpenClaw 不会启动这些浏览器进程。- 在没有
DISPLAY或WAYLAND_DISPLAY的 Linux 主机上,如果环境或配置文件/全局配置都没有显式选择有头模式,则本地受管理配置文件会自动默认使用无头模式。openclaw browser status --json会将headlessSource报告为env、profile、config、request、linux-display-fallback或default。 OPENCLAW_BROWSER_HEADLESS=1会为当前进程强制本地受管理启动使用无头模式。OPENCLAW_BROWSER_HEADLESS=0会为普通启动强制有头模式,并在没有显示服务器的 Linux 主机上返回可执行的错误信息;显式的start --headless请求仍会在那一次启动中优先生效。executablePath可以全局设置,也可以按本地受管理配置文件单独设置。按配置文件设置的值会覆盖browser.executablePath,因此不同的受管理配置文件可以启动不同的 Chromium 系浏览器。这两种形式都接受~来表示你的操作系统主目录。color(顶层和按配置文件)会为浏览器 UI 着色,以便你看出当前活动的是哪个配置文件。- 默认配置文件是
openclaw(受管理的独立模式)。使用defaultProfile: "user"可选择默认使用已登录的用户浏览器。 - 自动检测顺序:如果系统默认浏览器是 Chromium 系,则优先使用它;否则按 Chrome → Brave → Edge → Chromium → Chrome Canary 的顺序检测。
driver: "existing-session"使用 Chrome DevTools MCP,而不是原始 CDP。不要为该驱动设置cdpUrl。- 当 existing-session 配置文件应附加到非默认的 Chromium 用户配置文件(Brave、Edge 等)时,请设置
browser.profiles.<name>.userDataDir。该路径同样接受~来表示你的操作系统主目录。
使用 Brave 或其他 Chromium 系浏览器
如果你的系统默认浏览器是 Chromium 系(Chrome/Brave/Edge 等),OpenClaw 会自动使用它。设置
browser.executablePath 可以覆盖自动检测。顶层和按配置文件的 executablePath 值都接受 ~ 表示你的操作系统主目录:
- macOS
- Windows
- Linux
executablePath 仅影响由 OpenClaw 启动的本地受管理配置文件。existing-session 配置文件会附加到一个已在运行的浏览器,而远程 CDP 配置文件则使用 cdpUrl 背后的浏览器。
本地控制与远程控制
- 本地控制(默认): Gateway 网关 启动 loopback 控制服务,并且可以启动本地浏览器。
- 远程控制(节点主机): 在拥有浏览器的机器上运行一个节点主机;Gateway 网关 会将浏览器操作代理到该节点主机。
- 远程 CDP: 设置
browser.profiles.<name>.cdpUrl(或browser.cdpUrl)以附加到远程的 Chromium 系浏览器。在这种情况下,OpenClaw 不会启动本地浏览器。 - 对于运行在 loopback 上的外部管理 CDP 服务(例如在 Docker 中发布到
127.0.0.1的 Browserless),还要设置attachOnly: true。如果 loopback CDP 未设置attachOnly,则会被视为本地的 OpenClaw 受管理浏览器配置文件。 headless仅影响由 OpenClaw 启动的本地受管理配置文件。它不会重启或更改 existing-session 或远程 CDP 浏览器。executablePath遵循相同的本地受管理配置文件规则。在一个正在运行的本地受管理配置文件上更改它时,该配置文件会被标记为需要重启/协调,以便下一次启动时使用新的二进制文件。
- 本地受管理配置文件:
openclaw browser stop会停止由 OpenClaw 启动的浏览器进程 - attach-only 和远程 CDP 配置文件:
openclaw browser stop会关闭活动控制会话,并释放 Playwright/CDP 模拟覆盖(视口、配色方案、区域设置、时区、离线模式及类似状态),即使没有任何浏览器进程是由 OpenClaw 启动的
- 查询参数 token(例如
https://provider.example?token=<token>) - HTTP Basic 认证(例如
https://user:pass@provider.example)
/json/* 端点以及连接 CDP WebSocket 时都会保留认证信息。对于 token,优先使用环境变量或密钥管理器,而不是将其提交到配置文件中。
节点浏览器代理(默认零配置)
如果你在拥有浏览器的机器上运行了一个节点主机,OpenClaw 可以将浏览器工具调用自动路由到该节点,而无需任何额外浏览器配置。这是远程 Gateway 网关 的默认路径。 说明:
- 节点主机会通过一个代理命令暴露其本地浏览器控制服务器。
- 配置文件来自节点自己的
browser.profiles配置(与本地相同)。 nodeHost.browserProxy.allowProfiles是可选的。留空即可保留旧版/默认行为:所有已配置的配置文件都仍可通过代理访问,包括配置文件创建/删除路由。- 如果你设置了
nodeHost.browserProxy.allowProfiles,OpenClaw 会将其视为最小权限边界:只有 allowlist 中的配置文件可以作为目标,并且持久化配置文件创建/删除路由会在代理表面被阻止。 - 如果你不想启用它,可将其禁用:
- 在节点上:
nodeHost.browserProxy.enabled=false - 在 gateway 上:
gateway.nodes.browser.mode="off"
- 在节点上:
Browserless(托管远程 CDP)
Browserless 是一个托管的 Chromium 服务,通过 HTTPS 和 WebSocket 暴露 CDP 连接 URL。OpenClaw 两种形式都可以使用,但对于远程浏览器配置文件,最简单的方式是使用 Browserless 连接文档中的直接 WebSocket URL。 示例:- 将
<BROWSERLESS_API_KEY>替换为你的真实 Browserless token。 - 选择与你的 Browserless 账户匹配的区域端点(参见其文档)。
- 如果 Browserless 提供的是 HTTPS 基础 URL,你可以将其转换为
wss://以建立直接 CDP 连接,或者保留 HTTPS URL,让 OpenClaw 去发现/json/version。
同一主机上的 Browserless Docker
当 Browserless 在 Docker 中自托管,而 OpenClaw 在主机上运行时,应将 Browserless 视为一个外部管理的 CDP 服务:browser.profiles.browserless.cdpUrl 中的地址必须能从 OpenClaw 进程访问到。Browserless 还必须通告一个同样可达的匹配端点;请将 Browserless 的 EXTERNAL 设置为同一个从 OpenClaw 可访问的 WebSocket 基址,例如 ws://127.0.0.1:3000、ws://browserless:3000 或稳定的私有 Docker 网络地址。如果 /json/version 返回的 webSocketDebuggerUrl 指向了 OpenClaw 无法访问的地址,那么 CDP HTTP 看起来可能正常,但 WebSocket 附加仍然会失败。
不要让 loopback Browserless 配置文件的 attachOnly 保持未设置。没有 attachOnly 时,OpenClaw 会把该 loopback 端口视为本地受管理浏览器配置文件,并可能报告该端口已被占用但并非由 OpenClaw 持有。
直接 WebSocket CDP 提供商
有些托管浏览器服务暴露的是直接 WebSocket 端点,而不是标准的基于 HTTP 的 CDP 发现(/json/version)。OpenClaw 接受三种 CDP URL 形式,并会自动选择正确的连接策略:
- HTTP(S) 发现 —
http://host[:port]或https://host[:port]。
OpenClaw 调用/json/version来发现 WebSocket 调试器 URL,然后进行连接。没有 WebSocket 回退。 - 直接 WebSocket 端点 —
ws://host[:port]/devtools/<kind>/<id>或
wss://...,路径为/devtools/browser|page|worker|shared_worker|service_worker/<id>。OpenClaw 直接通过 WebSocket 握手连接,并完全跳过/json/version。 - 裸 WebSocket 根路径 —
ws://host[:port]或wss://host[:port],没有/devtools/...路径(例如 Browserless、Browserbase)。OpenClaw 会先尝试 HTTP/json/version发现(将协议规范化为http/https);如果发现结果返回了webSocketDebuggerUrl,则使用它,否则 OpenClaw 会回退到裸根路径上的直接 WebSocket 握手。如果通告的 WebSocket 端点拒绝 CDP 握手,但配置的裸根路径可以接受,OpenClaw 也会回退到该根路径。这使得指向本地 Chrome 的裸ws://仍然可以连接,因为 Chrome 只接受来自/json/version中特定每目标路径的 WebSocket 升级;而托管提供商在其发现端点通告了不适合 Playwright CDP 的短时效 URL 时,仍可以使用其根 WebSocket 端点。
Browserbase
Browserbase 是一个云平台,用于运行无头浏览器,内置 CAPTCHA 解决、隐身模式和住宅代理。- 注册 后,从概览仪表板复制你的 API Key。
- 将
<BROWSERBASE_API_KEY>替换为你的真实 Browserbase API key。 - Browserbase 会在 WebSocket 连接时自动创建浏览器会话,因此不需要手动创建会话。
- 免费层每月允许一个并发会话和一个浏览器小时。
付费计划限制请参见 pricing。 - 完整的 API 参考、SDK 指南和集成示例,请参见 Browserbase docs。
安全性
关键理念:- 浏览器控制仅限 loopback;访问通过 Gateway 网关 的认证或节点配对进行。
- 独立的 loopback 浏览器 HTTP API 仅使用共享密钥认证:
gateway token bearer auth、
x-openclaw-password,或使用已配置 gateway 密码的 HTTP Basic auth。 - Tailscale Serve 身份头以及
gateway.auth.mode: "trusted-proxy"
不能为这个独立的 loopback 浏览器 API 提供认证。 - 如果启用了浏览器控制,但未配置共享密钥认证,OpenClaw 会在启动时自动生成
gateway.auth.token并将其持久化到配置中。 - 当
gateway.auth.mode已经是password、none或trusted-proxy时,OpenClaw 不会自动生成该 token。 - 请将 Gateway 网关 和任何节点主机保持在私有网络中(Tailscale);避免公开暴露。
- 请将远程 CDP URL/token 视为机密;优先使用环境变量或密钥管理器。
- 尽可能优先使用加密端点(HTTPS 或 WSS)以及短时效 token。
- 避免将长期有效的 token 直接嵌入配置文件。
配置文件(多浏览器)
OpenClaw 支持多个命名配置文件(路由配置)。配置文件可以是:- 由 OpenClaw 管理:一个专用的 Chromium 系浏览器实例,拥有自己的用户数据目录 + CDP 端口
- 远程:显式的 CDP URL(在其他地方运行的 Chromium 系浏览器)
- 现有会话:通过 Chrome DevTools MCP 自动连接到你现有的 Chrome 配置文件
- 如果缺少,
openclaw配置文件会自动创建。 user配置文件是内置的,用于 Chrome MCP existing-session 附加。- 除
user外,existing-session 配置文件需要显式启用;请使用--driver existing-session创建。 - 本地 CDP 端口默认从 18800–18899 分配。
- 删除配置文件时,会将其本地数据目录移到废纸篓。
?profile=<name>;CLI 使用 --browser-profile。
通过 Chrome DevTools MCP 使用现有会话
OpenClaw 还可以通过官方的 Chrome DevTools MCP 服务器附加到一个正在运行的 Chromium 系浏览器配置文件。这样可以复用该浏览器配置文件中已打开的标签页和登录状态。 官方背景和设置参考: 内置配置文件:user
- 内置的
user配置文件使用 Chrome MCP 自动连接,目标是默认的本地 Google Chrome 配置文件。
userDataDir。~ 会展开为你的操作系统主目录:
- 打开该浏览器用于远程调试的 inspect 页面。
- 启用远程调试。
- 保持浏览器运行,并在 OpenClaw 附加时批准连接提示。
- Chrome:
chrome://inspect/#remote-debugging - Brave:
brave://inspect/#remote-debugging - Edge:
edge://inspect/#remote-debugging
status显示driver: existing-sessionstatus显示transport: chrome-mcpstatus显示running: truetabs列出你已经打开的浏览器标签页snapshot返回所选实时标签页中的 refs
- 目标 Chromium 系浏览器版本为
144+ - 已在该浏览器的 inspect 页面中启用远程调试
- 浏览器已显示附加同意提示,并且你已接受
openclaw doctor会迁移旧的基于扩展的浏览器配置,并检查默认自动连接配置文件所需的 Chrome 是否已本地安装,但它无法替你在浏览器端启用远程调试
- 当你需要用户已登录的浏览器状态时,请使用
profile="user"。 - 如果你使用的是自定义 existing-session 配置文件,请传递该显式配置文件名称。
- 仅当用户就在电脑前可以批准附加提示时,才选择此模式。
- Gateway 网关 或节点主机可以生成
npx chrome-devtools-mcp@latest --autoConnect
- 与隔离的
openclaw配置文件相比,这条路径风险更高,因为它可以在你已登录的浏览器会话内执行操作。 - 对于这个驱动,OpenClaw 不会启动浏览器;它只会附加。
- OpenClaw 在这里使用官方的 Chrome DevTools MCP
--autoConnect流程。如果设置了userDataDir,则会将其透传,以便定位到该用户数据目录。 - existing-session 可以附加到所选主机上,或通过已连接的浏览器节点进行附加。如果 Chrome 位于其他地方,且没有浏览器节点连接,请改用远程 CDP 或节点主机。
自定义 Chrome MCP 启动
当默认的npx chrome-devtools-mcp@latest 流程不符合你的需求时(离线主机、固定版本、内置二进制文件),可以按配置文件覆盖所生成的 Chrome DevTools MCP 服务器:
| 字段 | 作用 |
|---|---|
mcpCommand | 要生成的可执行文件,用来替代 npx。按原样解析;支持绝对路径。 |
mcpArgs | 原样传递给 mcpCommand 的参数数组。会替换默认的 chrome-devtools-mcp@latest --autoConnect 参数。 |
cdpUrl 时,OpenClaw 会跳过--autoConnect,并自动将该端点转发给 Chrome MCP:
http(s)://...→--browserUrl <url>(DevTools HTTP 发现端点)。ws(s)://...→--wsEndpoint <url>(直接 CDP WebSocket)。
userDataDir 不能组合使用:当设置了 cdpUrl 时,userDataDir 会在 Chrome MCP 启动中被忽略,因为 Chrome MCP 会附加到端点背后的正在运行浏览器,而不是打开某个配置文件目录。
existing-session 功能限制
existing-session 功能限制
与受管理的
openclaw 配置文件相比,existing-session 驱动的限制更多:- 截图 —— 支持页面截图和
--ref元素截图;不支持 CSS--element选择器。--full-page不能与--ref或--element组合。页面截图或基于 ref 的元素截图不需要 Playwright。 - 操作 ——
click、type、hover、scrollIntoView、drag和select需要 snapshot refs(不支持 CSS 选择器)。click-coords会点击可见视口坐标,不需要 snapshot ref。click仅支持左键。type不支持slowly=true;请使用fill或press。press不支持delayMs。type、hover、scrollIntoView、drag、select、fill和evaluate不支持按调用设置超时。select接受单个值。 - 等待 / 上传 / 对话框 ——
wait --url支持精确、子串和 glob 模式;不支持wait --load networkidle。上传钩子需要ref或inputRef,一次一个文件,不支持 CSSelement。对话框钩子不支持超时覆盖。 - 仅限受管理模式的功能 —— 批量操作、PDF 导出、下载拦截和
responsebody仍然需要受管理浏览器路径。
隔离保证
- 专用用户数据目录:绝不会触碰你的个人浏览器配置文件。
- 专用端口:避免使用
9222,以防与开发工作流冲突。 - 可预测的标签页控制:
tabs会先返回suggestedTargetId,然后是稳定的tabId句柄(如t1)、可选标签以及原始targetId。智能体应复用suggestedTargetId;原始 id 仍可用于调试和兼容性场景。
浏览器选择
在本地启动时,OpenClaw 会选择第一个可用的浏览器:- Chrome
- Brave
- Edge
- Chromium
- Chrome Canary
browser.executablePath 覆盖它。
平台:
- macOS:检查
/Applications和~/Applications。 - Linux:检查
/usr/bin、/snap/bin、/opt/google、/opt/brave.com、/usr/lib/chromium和/usr/lib/chromium-browser下常见的 Chrome/Brave/Edge/Chromium 位置。 - Windows:检查常见安装位置。
控制 API(可选)
为了便于脚本编写和调试,Gateway 网关 暴露了一个小型的仅限 loopback 的 HTTP 控制 API,并提供匹配的openclaw browser CLI(快照、refs、wait 增强能力、JSON 输出、调试工作流)。完整参考请参见浏览器控制 API。
故障排除
关于 Linux 特定问题(尤其是 snap Chromium),请参见浏览器故障排除。 关于 WSL2 Gateway 网关 + Windows Chrome 分离主机设置,请参见
WSL2 + Windows + 远程 Chrome CDP 故障排除。
CDP 启动失败 与 导航 SSRF 阻止
这是两类不同的失败,它们分别指向不同的代码路径。- CDP 启动或就绪失败 表示 OpenClaw 无法确认浏览器控制平面处于健康状态。
- 导航 SSRF 阻止 表示浏览器控制平面是健康的,但页面导航目标因策略而被拒绝。
- CDP 启动或就绪失败:
Chrome CDP websocket for profile "openclaw" is not reachable after startRemote CDP for profile "<name>" is not reachable at <cdpUrl>Port <port> is in use for profile "<name>" but not by openclaw,当 loopback 外部 CDP 服务配置时未设置attachOnly: true
- 导航 SSRF 阻止:
open、navigate、snapshot 或打开标签页流程因浏览器/网络策略错误而失败,但start和tabs仍然正常
- 如果
start因not reachable after start失败,请先排查 CDP 就绪问题。 - 如果
start成功但tabs失败,则控制平面仍不健康。请将其视为 CDP 可达性问题,而不是页面导航问题。 - 如果
start和tabs成功,但open或navigate失败,则浏览器控制平面已启动,故障出在导航策略或目标页面上。 - 如果
start、tabs和open全部成功,则基础的受管理浏览器控制路径是健康的。
- 即使你没有配置
browser.ssrfPolicy,浏览器配置默认也会采用失败即关闭的 SSRF 策略对象。 - 对于本地 loopback 的
openclaw受管理配置文件,CDP 健康检查会有意跳过对 OpenClaw 自身本地控制平面的浏览器 SSRF 可达性强制。 - 导航保护是独立的。
start或tabs成功,并不意味着后续的open或navigate目标一定被允许。
- 不要默认放宽浏览器 SSRF 策略。
- 优先使用精确的主机例外,例如
hostnameAllowlist或allowedHostnames,而不是宽泛地允许私有网络访问。 - 仅在明确受信任、确实需要并且经过审查的私有网络浏览器访问环境中,才使用
dangerouslyAllowPrivateNetwork: true。
智能体工具 + 控制如何工作
智能体会获得一个工具用于浏览器自动化:browser— doctor/status/start/stop/tabs/open/focus/close/snapshot/screenshot/navigate/act
browser snapshot返回稳定的 UI 树(AI 或 ARIA)。browser act使用 snapshot 的refID 来执行点击/输入/拖拽/选择。browser screenshot捕获像素内容(整页、元素或带标签的 refs)。browser doctor检查 Gateway 网关、插件、配置文件、浏览器和标签页就绪情况。browser接受:profile,用于选择命名浏览器配置文件(openclaw、chrome 或远程 CDP)。target(sandbox|host|node),用于选择浏览器所在位置。- 在沙箱隔离会话中,
target: "host"需要agents.defaults.sandbox.browser.allowHostControl=true。 - 如果省略
target:沙箱隔离会话默认使用sandbox,非沙箱会话默认使用host。 - 如果已连接支持浏览器的节点,除非你固定指定
target="host"或target="node",否则该工具可能会自动路由到该节点。