Chrome 扩展
Chrome 扩展(浏览器中继)
OpenClaw Chrome 扩展让代理控制你现有的 Chrome 标签页(你正常的 Chrome 窗口),而不是启动单独的 openclaw 管理的 Chrome 配置文件。
附加/分离通过单个 Chrome 工具栏按钮完成。
它是什么(概念)
有三个部分:
- 浏览器控制服务(网关或节点):代理/工具调用的 API(通过网关)
- 本地中继服务器(环回 CDP):在控制服务器和扩展之间桥接(默认
http://127.0.0.1:18792) - Chrome MV3 扩展:使用
chrome.debugger附加到活动标签页,并将 CDP 消息传输到中继
然后 OpenClaw 通过正常的 browser 工具表面控制附加的标签页(选择正确的配置文件)。
安装/加载(未打包)
- 将扩展安装到稳定的本地路径:
openclaw browser extension install
- 打印已安装的扩展目录路径:
openclaw browser extension path
- Chrome →
chrome://extensions
- 启用"开发者模式"
- "加载未打包的扩展程序" → 选择上面打印的目录
- 固定扩展。
更新(无需构建步骤)
扩展作为静态文件打包在 OpenClaw 发布版(npm 包)中。没有单独的"构建"步骤。
升级 OpenClaw 后:
- 重新运行
openclaw browser extension install刷新 OpenClaw 状态目录下安装的扩展文件。 - Chrome →
chrome://extensions→ 点击扩展上的"重新加载"。
使用它(设置一次网关令牌)
OpenClaw 附带一个名为 chrome 的内置浏览器配置文件,目标是在默认端口上的扩展中继。
首次附加之前,打开扩展选项并设置:
Port(默认18792)Gateway token(必须匹配gateway.auth.token/OPENCLAW_GATEWAY_TOKEN)
使用它:
- CLI:
openclaw browser --browser-profile chrome tabs - 代理工具:
browser使用profile="chrome"
如果你想要不同的名称或不同的中继端口,创建你自己的配置文件:
openclaw browser create-profile \
--name my-chrome \
--driver extension \
--cdp-url http://127.0.0.1:18792 \
--color "#00AA00"
自定义网关端口
如果你使用自定义网关端口,扩展中继端口会自动派生:
扩展中继端口 = 网关端口 + 3
示例:如果 gateway.port: 19001,那么:
- 扩展中继端口:
19004(网关 + 3)
在扩展选项页面中配置扩展使用派生的中继端口。
附加/分离(工具栏按钮)
- 打开你想要 OpenClaw 控制的标签页。
- 点击扩展图标。
- 附加时徽章显示
ON。
- 附加时徽章显示
- 再次点击分离。
它控制哪个标签页?
- 它不会自动控制"你正在看的任何标签页"。
- 它仅控制你通过点击工具栏按钮显式附加的标签页。
- 要切换:打开另一个标签页并在那里点击扩展图标。
徽章 + 常见错误
ON:已附加;OpenClaw 可以驱动该标签页。…:正在连接到本地中继。!:中继不可达/未认证(最常见:中继服务器未运行,或网关令牌缺失/错误)。
如果看到 !:
- 确保网关在本地运行(默认设置),或者如果网关在其他地方运行,则在此机器上运行节点主机。
- 打开扩展选项页面;它验证中继可达性 + 网关令牌认证。
远程网关(使用节点主机)
本地网关(与 Chrome 相同的机器)— 通常无需额外步骤
如果网关在与 Chrome 相同的机器上运行,它会在环回上启动浏览器控制服务 并自动启动中继服务器。扩展与本地中继对话;CLI/工具调用发送到网关。
远程网关(网关在其他地方运行)— 运行节点主机
如果你的网关在另一台机器上运行,在运行 Chrome 的机器上启动节点主机。 网关会将浏览器操作代理到该节点;扩展 + 中继保持在浏览器机器本地。
如果连接了多个节点,使用 gateway.nodes.browser.node 固定一个或设置 gateway.nodes.browser.mode。
沙盒化(工具容器)
如果你的代理会话沙盒化(agents.defaults.sandbox.mode != "off"),browser 工具可能受到限制:
- 默认情况下,沙盒化会话通常定位沙盒浏览器(
target="sandbox"),而不是你的主机 Chrome。 - Chrome 扩展中继接管需要控制主机浏览器控制服务器。
选项:
- 最简单:从非沙盒化会话/代理使用扩展。
- 或允许沙盒化会话的主机浏览器控制:
{
agents: {
defaults: {
sandbox: {
browser: {
allowHostControl: true,
},
},
},
},
}
然后确保工具未被工具策略拒绝,并且(如果需要)使用 target="host" 调用 browser。
调试:openclaw sandbox explain
远程访问提示
- 保持网关和节点主机在同一 tailnet 上;避免将中继端口暴露到 LAN 或公共互联网。
- 有意配对节点;如果你不想要远程控制,禁用浏览器代理路由(
gateway.nodes.browser.mode="off")。
"扩展路径" 如何工作
openclaw browser extension path 打印包含扩展文件的已安装磁盘目录。
CLI 故意不打印 node_modules 路径。始终先运行 openclaw browser extension install 将扩展复制到 OpenClaw 状态目录下的稳定位置。
如果你移动或删除该安装目录,Chrome 会将扩展标记为损坏,直到你从有效路径重新加载它。
安全影响(阅读此部分)
这很强大但有风险。将其视为给模型"你的手在你的浏览器上"。
- 扩展使用 Chrome 的调试器 API(
chrome.debugger)。附加时,模型可以:- 在该标签页中点击/输入/导航
- 读取页面内容
- 访问标签页登录会话可以访问的任何内容
- 这不是隔离的,像专用的 openclaw 管理的配置文件。
- 如果你附加到你的日常使用的配置文件/标签页,你正在授予对该账户状态的访问权限。
建议:
- 优先使用专用的 Chrome 配置文件(与你的个人浏览分开)用于扩展中继使用。
- 保持网关和任何节点主机仅限 tailnet;依赖网关认证 + 节点配对。
- 避免通过 LAN 暴露中继端口(
0.0.0.0)并避免 Funnel(公共)。 - 中继阻止非扩展来源,并要求
/cdp和/extension的网关令牌认证。
相关: