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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_chrome创建完之后OpenClaw 里需要配置的模型通道信息是配置项值base_urlhttps://taotoken.net/apiapi_key你刚创建的那串 Key模型名按你实际用的填比如 claude 系列或 gpt 系列这里注意一点base_url 不要加 UTM 参数API 调用地址就是干净的https://taotoken.net/api。UTM 只用在网页链接上。如果你还没决定用哪个模型可以先到模型对话页面试一下连通性确认 Key 能用https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_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 displaynoSandbox允许 root 运行报错 sandbox not supportedexecutablePath告诉 OpenClaw Chrome 在哪报错 Chrome executable not founddefaultProfile设置默认浏览器模式用默认配置可能不符合预期如果你更习惯命令行等价操作是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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_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 管 Keybase_url 固定https://taotoken.net/api一个 Key 走通所有技能。如果你在接入过程中遇到报错先看 API Keys 和接入文档https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_chrome https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_chrome想先验证模型能不能正常对话用模型对话页面发一条消息最快https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_chrome如果你打算长期跑编码和 Agent 任务浏览器技能只是其中一环Coding Plan 能把额度管得更省https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw_chrome最后给一个实用技巧每次改完 OpenClaw 配置养成「改配置 → 重启 Gateway → 看 browser status」的三步习惯。我踩的坑里有一半是忘了重启或者没确认状态就往下走。把这三步固定下来headless 和 noSandbox 的配置基本不会再反复。
