1. 为什么要在 OpenClaw 里装 Chrome 浏览器技能
OpenClaw 的 browser 技能本质上是一个「让 AI 帮你操作网页」的通道。它需要调用真实的 Chrome 浏览器来渲染页面、执行 JavaScript、维持登录态,而不是像 web_fetch 那样只发一个 HTTP 请求拿 HTML。这个区别在遇到知乎、微信公众号、需要登录的后台系统、或者纯前端渲染的 SPA 页面时特别明显——web_fetch 经常直接 403 或者拿到一坨没有内容的空壳。
适合谁用:在 Ubuntu 服务器上跑 OpenClaw、想用浏览器技能做本地自动化抓取、又不想折腾图形界面的同学。headless 模式就是为这种场景准备的,没有显示器也能跑。
但问题在于,OpenClaw 的浏览器技能不是「装个 Chrome 就完事」。它有自己的配置层,需要你明确告诉它 Chrome 装在哪、用什么模式跑、允不允许 root 运行。这中间任何一环没配对,openclaw browser status就会一直给你running: false。
我这次在 Ubuntu 24.04 上从零跑通,前后踩了 5 个坑:中文字体缺失导致网页全是方框、headless 没开报 X display 错误、root 用户被 sandbox 拦住、dpkg 依赖冲突、以及改了配置忘了重启 Gateway。下面把完整流程和排错过程写清楚,你照着做基本能一次过。
另外,浏览器技能跑起来之后,OpenClaw 调用模型、做网页内容理解都需要一个稳定的 API 通道。我这边统一用 TaoToken 来管 Key,省得每个技能单独配一遍。这个后面会给出具体配置。
2. TaoToken 前置:统一 Key 通道怎么准备
OpenClaw 的浏览器技能本身不直接调模型,但它抓回来的页面内容要交给模型去理解、总结、决策下一步操作。所以你需要一个能稳定调用的 API 通道。TaoToken 在这里的作用就是:一个 Key 走通所有模型调用,不用在 OpenClaw 里为每个技能单独填不同的 base_url 和 key。
先拿到你的 API Key。打开 TaoToken 控制台,在 API Keys 页面创建一个新 Key,复制出来。地址是:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome创建完之后,OpenClaw 里需要配置的模型通道信息是:
| 配置项 | 值 |
|---|---|
| base_url | https://taotoken.net/api |
| api_key | 你刚创建的那串 Key |
| 模型名 | 按你实际用的填,比如 claude 系列或 gpt 系列 |
这里注意一点:base_url 不要加 UTM 参数,API 调用地址就是干净的https://taotoken.net/api。UTM 只用在网页链接上。
如果你还没决定用哪个模型,可以先到模型对话页面试一下连通性,确认 Key 能用:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome长期跑编码和 Agent 任务的话,Coding Plan 会更划算,后面 CTA 部分再展开。
3. 可复制配置:Chrome 安装 + OpenClaw config.toml 骨架
这一节是核心,分两步:先把 Chrome 在 Ubuntu 上装好,再把 OpenClaw 的浏览器配置写对。
3.1 安装 Chrome 和依赖包
先更新软件源,这一步别省,很多安装失败只是因为源太旧:
apt update然后装三个关键依赖包:
apt install -y fonts-liberation xdg-utils fonts-noto-cjk这三个包各自的作用和缺失后果:
| 包名 | 作用 | 不装的后果 |
|---|---|---|
| fonts-liberation | 浏览器基础字体支持 | 页面字体显示异常 |
| xdg-utils | 桌面工具,OpenClaw 需要 | 浏览器无法启动 |
| fonts-noto-cjk | 中文字体支持 | 中文显示为方框 |
我第一个坑就踩在 fonts-noto-cjk 上——Chrome 能启动,但打开中文网页全是方框,排查了半天才反应过来是字体问题。
接着装 Chrome。如果你已经有 deb 包:
dpkg -i /path/to/google-chrome-stable_current_amd64.deb apt --fix-broken install -y如果现场下载:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb dpkg -i google-chrome-stable_current_amd64.deb apt --fix-broken install -yapt --fix-broken install这步很关键,它会自动补齐 Chrome 缺失的系统库。Ubuntu 最小化安装经常缺这些,dpkg 会报dependency problems - leaving unconfigured。
装完验证:
which google-chrome应该返回/usr/bin/google-chrome。没返回就是没装好,回头检查上面的步骤。
3.2 OpenClaw config.toml 骨架
Chrome 装好了,但 OpenClaw 还不知道。它的浏览器配置可以走命令行openclaw config set,也可以直接写 config.toml。我建议直接写文件,一次到位,避免漏项。
OpenClaw 的配置文件通常在~/.openclaw/config.toml(具体路径以你的安装为准)。浏览器相关段落骨架如下:
[browser] # 默认浏览器模式 defaultProfile = "openclaw" # 无头模式,服务器没有图形界面必须开 headless = true # root 用户运行必须开,否则 sandbox 报错 noSandbox = true # Chrome 可执行文件路径 executablePath = "/usr/bin/google-chrome" # CDP 调试端口,默认 18800 cdpPort = 18800 [model] # TaoToken 统一 Key 通道 baseUrl = "https://taotoken.net/api" apiKey = "你的_TaoToken_API_Key" model = "你的模型名"四个浏览器参数的作用和不配置的后果:
| 参数 | 作用 | 不配置的后果 |
|---|---|---|
| headless | 无头模式运行 | 报错 Unable to open X display |
| noSandbox | 允许 root 运行 | 报错 sandbox not supported |
| executablePath | 告诉 OpenClaw Chrome 在哪 | 报错 Chrome executable not found |
| defaultProfile | 设置默认浏览器模式 | 用默认配置,可能不符合预期 |
如果你更习惯命令行,等价操作是:
openclaw config set browser.defaultProfile "openclaw" openclaw config set browser.headless true openclaw config set browser.noSandbox true openclaw config set browser.executablePath "/usr/bin/google-chrome"改完配置后,必须重启 Gateway,否则不生效:
openclaw gateway restart这是我踩的第五个坑——配置改了但没重启,browser status一直 false,折腾半天才发现是 Gateway 没加载新配置。
4. 验证请求:headless 启动与连通性检查
配置写好后,按顺序做验证。
先启动浏览器:
openclaw browser start然后看状态:
openclaw browser status预期输出应该包含:
profile: openclaw enabled: true running: true cdpPort: 18800 browser: custom detectedPath: /usr/bin/google-chrome关键是running: true。如果是 false,看下一节的排错。
接着验证模型通道是否通。用 TaoToken 的模型对话页面发一条测试消息,确认 Key 和 base_url 没问题:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome如果模型能正常回复,说明 API 通道 OK。回到 OpenClaw,试一下浏览器技能的实际抓取:
openclaw browser open https://www.example.com openclaw browser screenshot openclaw browser snapshotsnapshot会返回页面的结构化内容。如果这一步能拿到内容,说明浏览器技能和模型通道都跑通了。
再补一个中文页面测试,确认字体没问题:
openclaw browser open https://www.baidu.com openclaw browser screenshot截图里中文正常显示,就说明 fonts-noto-cjk 生效了。
5. 本篇常见错排查:5 个坑逐个拆
5.1 中文字体显示为方框
现象:浏览器能启动,但中文网页全是方框。
原因:缺 fonts-noto-cjk。
解决:
apt install -y fonts-noto-cjk openclaw browser stop openclaw browser start装完字体要重启浏览器进程才会生效。
5.2 报错 Unable to open X display
现象:openclaw browser start失败,日志里出现:
[ERROR:browser_main_loop.cc(1443)] Unable to open X display.原因:服务器没有图形界面,但 Chrome 尝试打开 X display。
解决:确认 headless 开了。
openclaw config set browser.headless true openclaw gateway restart5.3 报错 Running as root without --no-sandbox is not supported
现象:浏览器启动失败,日志:
[ERROR:zygote_host_impl_linux.cc(100)] Running as root without --no-sandbox is not supported.原因:root 用户运行 Chrome,但没配 noSandbox。
解决:
openclaw config set browser.noSandbox true openclaw gateway restart注意:noSandbox 会降低沙箱隔离级别。在只有你自己访问的服务器环境里可以接受,但不要在有其他不可信用户的机器上这么干。
5.4 dpkg 依赖冲突
现象:dpkg -i报dependency problems - leaving unconfigured。
原因:Chrome 需要一些系统库,Ubuntu 最小化安装没预装。
解决:
apt --fix-broken install -y这条命令会自动补齐缺失依赖。
5.5 浏览器启动成功但 OpenClaw 用不了
现象:Chrome 进程在,但openclaw browser status显示running: false。
原因:Gateway 没加载最新配置。
解决:
openclaw gateway restart openclaw browser start配置变更后必须重启 Gateway,这是最容易忘的一步。
6. 语义一致 CTA:把 Key 通道和浏览器技能一起跑顺
浏览器技能跑通之后,真正让它有价值的是背后的模型调用。OpenClaw 抓回来的页面内容要交给模型理解,模型通道不稳定,整个自动化链路就断。
我这边统一用 TaoToken 管 Key,base_url 固定https://taotoken.net/api,一个 Key 走通所有技能。如果你在接入过程中遇到报错,先看 API Keys 和接入文档:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome想先验证模型能不能正常对话,用模型对话页面发一条消息最快:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome如果你打算长期跑编码和 Agent 任务,浏览器技能只是其中一环,Coding Plan 能把额度管得更省:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=openclaw_chrome最后给一个实用技巧:每次改完 OpenClaw 配置,养成「改配置 → 重启 Gateway → 看 browser status」的三步习惯。我踩的坑里有一半是忘了重启,或者没确认状态就往下走。把这三步固定下来,headless 和 noSandbox 的配置基本不会再反复。