从零开始:在腾讯云服务器上部署 OpenClaw AI 助手(2)—— 浏览器自动化功能配置

从零开始:在腾讯云服务器上部署 OpenClaw AI 助手(2)—— 浏览器自动化功能配置

让 AI 助手拥有"眼睛"和"双手",实现网页自动化操控

前言

上一篇博客中,我们成功在腾讯云服务器上部署了 OpenClaw AI 助手,实现了基本的对话功能。但那时的 AI 就像一个"只会说话的大脑"——能理解你的问题,却无法真正操作电脑。

这篇博客将记录如何为 OpenClaw 配置浏览器自动化功能,让 AI 助手真正拥有"眼睛"(看网页)和"双手"(操作网页),变成一个能够自动打开网页、填写表单、截图保存的全能助手。

为什么需要浏览器功能?

对于我们科研牛马来说,这个功能简直是福音:

场景传统方式AI 助手方式
批量下载论文手动一个个点击下载“帮我把这个会议的所有论文下载下来”
监控实验结果定时手动刷新页面截图“每小时截图一次训练曲线”
填写报销表单对着 Excel 一个个复制粘贴“把这个表格的数据填到报销系统”
抢课选课疯狂 F5 刷新“课程有空位就帮我选上”

环境说明

接续上一篇博客的环境:

配置项参数
操作系统Ubuntu 24.04 LTS
OpenClaw 版本2026.1.29
Node.jsv22.22.0
AI 模型阿里云 DashScope qwen-flash

第一步:检查浏览器服务状态

首先,让我们看看 OpenClaw 的浏览器服务是否正常:

openclaw browser --browser-profile openclaw status 

如果你看到类似这样的输出:

profile: openclaw enabled: true running: false cdpReady: false detectedBrowser: Chromium detectedPath: /usr/bin/chromium-browser 

这说明浏览器服务已启用,但检测到的是 /usr/bin/chromium-browser

🚨 问题:Ubuntu 24.04 的 Chromium 是 Snap 版本

这里有一个巨大的坑:Ubuntu 24.04 默认的 /usr/bin/chromium-browser 实际上是一个 Snap stub(存根),而不是真正的浏览器可执行文件。

我们可以验证一下:

file /usr/bin/chromium-browser 

输出可能是:

/usr/bin/chromium-browser: POSIX shell script, ASCII text executable 

看到了吗?它只是一个 shell 脚本,用于启动 Snap 容器中的 Chromium。而 OpenClaw 需要直接访问浏览器的 CDP(Chrome DevTools Protocol)接口,Snap 版本的 Chromium 由于沙盒限制,无法正常工作。

症状表现:在 TUI 中让 AI 打开网页,会收到这样的错误:

我无法访问浏览器控制服务。请先启动 OpenClaw 网关... 

查看 Gateway 日志虽然显示 Browser control service ready,但实际启动浏览器时会失败。

第二步:安装 Google Chrome

解决方案是安装官方的 Google Chrome,而不是 Snap 版本的 Chromium。

下载安装包

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 

命令解释

  • wget:命令行下载工具
  • 这个 URL 会自动下载最新稳定版的 Google Chrome

安装 Chrome

sudo dpkg -i google-chrome-stable_current_amd64.deb 

命令解释

  • dpkg -i:安装 .deb 格式的软件包
  • sudo:以管理员权限运行

大概率会遇到依赖问题:

dpkg: dependency problems prevent configuration of google-chrome-stable: google-chrome-stable depends on fonts-liberation; however: Package fonts-liberation is not installed. google-chrome-stable depends on libgtk-3-0 (>= 3.9.10) | libgtk-4-1; however: ... 

安装缺失的依赖

sudoapt --fix-broken install -y 

命令解释

  • apt --fix-broken install:自动检测并安装所有缺失的依赖包
  • -y:自动确认安装,无需手动输入 yes

这个命令会自动安装一大堆依赖(约 93 个包,184MB),包括:

  • fonts-liberation:字体库
  • libgtk-3-0:GTK 图形库
  • libvulkan1:图形渲染库
  • xdg-utils:桌面集成工具
  • 等等…

验证安装

which google-chrome-stable # 输出:/usr/bin/google-chrome-stable google-chrome-stable --version # 输出:Google Chrome 144.0.7559.132

第三步:安装中文字体

这是一个容易被忽略但非常重要的步骤。

服务器默认没有中文字体,如果直接截图中文网页,所有中文都会显示为 □□□□(方块乱码):

在这里插入图片描述

安装中文字体:

sudoaptinstall -y fonts-noto-cjk fonts-wqy-zenhei 

命令解释

  • fonts-noto-cjk:Google 的 Noto 字体,支持中日韩文字,字体质量高
  • fonts-wqy-zenhei:文泉驿正黑,经典的开源中文字体

为什么需要两个字体包?

  • Noto CJK 覆盖面广,但某些生僻字可能缺失
  • 文泉驿 作为补充,确保中文显示完整

安装后无需重启系统,但需要重启浏览器服务才能生效。

第四步:配置 OpenClaw 浏览器设置

编辑 OpenClaw 配置文件:

nano ~/.openclaw/openclaw.json 

找到或添加 browser 配置段:

{"browser":{"enabled":true,"executablePath":"/usr/bin/google-chrome-stable","headless":true,"noSandbox":true,"defaultProfile":"openclaw"}}

配置项详解

配置项说明
enabledtrue启用浏览器功能
executablePath/usr/bin/google-chrome-stable指定 Chrome 可执行文件路径,避免使用 Snap 版
headlesstrue无头模式,服务器没有显示器,必须开启
noSandboxtrue禁用 Chrome 沙盒,在容器/服务器环境中需要
defaultProfile"openclaw"使用 OpenClaw 托管的独立浏览器配置文件

关于 Headless 模式

什么是无头浏览器?

“无头”(Headless)指的是没有图形界面的浏览器。它是完整的浏览器引擎,可以:

  • ✅ 加载网页、执行 JavaScript
  • ✅ 渲染页面、截图
  • ✅ 填写表单、点击按钮
  • ❌ 但不会在屏幕上显示窗口

这正是服务器环境需要的——我们不需要"看到"浏览器窗口,只需要它在后台默默工作。

关于 noSandbox

Chrome 默认会启用沙盒机制来隔离渲染进程,提高安全性。但在服务器环境(尤其是 Docker 容器或某些 VPS)中,沙盒可能因为权限问题无法正常工作。

设置 noSandbox: true 会禁用这个沙盒。注意:这会降低一定的安全性,但对于自己控制的服务器来说是可以接受的。

关于 Browser Profile

OpenClaw 支持两种浏览器模式:

Profile说明使用场景
chrome通过 Chrome 扩展连接你的本地浏览器需要使用已登录的账号
openclawOpenClaw 托管的独立浏览器实例服务器环境,自动化任务

我们选择 openclaw 模式,因为:

  1. 服务器没有图形界面,无法运行带扩展的 Chrome
  2. 独立实例更安全,不会影响个人浏览数据
  3. 可以完全由 OpenClaw 控制生命周期

第五步:重启服务并测试

重启 Gateway

openclaw gateway restart 

命令解释

  • 重启 OpenClaw 的核心服务,使新配置生效
  • Gateway 会重新加载浏览器配置

检查浏览器状态

openclaw browser --browser-profile openclaw status 

命令解释

  • openclaw browser:浏览器控制子命令
  • --browser-profile openclaw:指定使用 openclaw 配置文件(托管模式),而不是 chrome(扩展模式)
  • status:查看当前浏览器服务的运行状态

正确的输出应该是:

profile: openclaw enabled: true running: false cdpPort: 18800 cdpUrl: http://127.0.0.1:18800 browser: unknown detectedBrowser: custom detectedPath: /usr/bin/google-chrome-stable profileColor: #FF4500 

关键是 detectedPath 现在指向了我们安装的 Google Chrome。

启动浏览器

openclaw browser --browser-profile openclaw start 

成功输出:

🦞 browser [openclaw] running: true 

测试打开网页

openclaw browser --browser-profile openclaw open https://www.baidu.com 

测试截图

openclaw browser --browser-profile openclaw screenshot 

输出:

MEDIA:~/.openclaw/media/browser/c46a073a-69b4-431d-915c-cede9ad355eb.png 

可以用 scp 把截图下载到本地查看,确认中文显示正常。

第六步:在 TUI 中通过对话控制浏览器

现在让我们测试最激动人心的功能——用自然语言控制浏览器

重置会话(重要!)

openclaw sessions reset main 

为什么需要重置会话?

OpenClaw 的 AI 在会话开始时会加载可用工具列表。如果之前的会话是在浏览器配置完成前创建的,AI 可能没有正确识别到浏览器工具。重置会话可以让 AI 重新加载最新的工具配置。

进入 TUI 对话界面

openclaw tui 

测试对话

输入:

用浏览器打开百度的首页,然后截个图,并把图片存储在 /home/ubuntu/screenshots/ 路径中 

AI 的回复:

I've successfully completed your request: 1. Opened the Baidu homepage in the browser 2. Took a screenshot of the page 3. Saved the screenshot to /home/ubuntu/screenshots/baidu_homepage.png The image has been stored in the specified directory as requested. 

🎉 成功! AI 助手现在可以理解自然语言指令,自动操作浏览器了!

完整配置文件参考

以下是包含浏览器配置的完整 ~/.openclaw/openclaw.json 示例:

{"gateway":{"mode":"local","auth":{"mode":"token","token":"your-token-here"},"port":18789,"bind":"loopback"},"browser":{"enabled":true,"executablePath":"/usr/bin/google-chrome-stable","headless":true,"noSandbox":true,"defaultProfile":"openclaw"},"models":{"providers":{"dashscope":{"baseUrl":"https://dashscope.aliyuncs.com/compatible-mode/v1","apiKey":"your-api-key","api":"openai-completions","models":[{"id":"qwen-flash","name":"Qwen Flash","reasoning":false,"input":["text"],"cost":{"input":0.15,"output":1.5},"contextWindow":1000000,"maxTokens":32768}]}}},"agents":{"defaults":{"model":{"primary":"dashscope/qwen-flash"}}}}

常用命令速查

命令作用
openclaw browser --browser-profile openclaw status查看浏览器状态
openclaw browser --browser-profile openclaw start启动浏览器
openclaw browser --browser-profile openclaw stop停止浏览器
openclaw browser --browser-profile openclaw open <URL>打开网页
openclaw browser --browser-profile openclaw screenshot截图
openclaw browser --browser-profile openclaw snapshot获取页面结构(用于自动化操作)
openclaw browser --browser-profile openclaw tabs列出所有标签页
openclaw sessions reset main重置会话(修改配置后执行)

踩坑记录

坑 1:Ubuntu 24.04 的 Snap Chromium 无法使用

现象:Gateway 日志显示 Browser control service ready,但实际启动浏览器时失败。

原因:Ubuntu 24.04 的 /usr/bin/chromium-browser 是 Snap stub,不是真正的可执行文件。Snap 版本由于沙盒隔离,无法暴露 CDP 端口。

解决:安装官方 Google Chrome,并在配置中指定 executablePath

坑 2:配置文件中使用了不存在的字段

现象openclaw gateway restart 时报错:

Invalid config: browser: Unrecognized key: "mode" 

原因:盲目添加了 "mode": "managed" 字段,但 OpenClaw 的配置 schema 中没有这个字段。

解决:查阅官方文档,使用正确的配置字段。可以用 openclaw doctor --fix 自动移除无效字段。

坑 3:中文显示为方块

现象:截图中所有中文都显示为 □□□□。

原因:服务器没有安装中文字体。

解决:安装 fonts-noto-cjkfonts-wqy-zenhei

坑 4:修改配置后 AI 仍然无法使用浏览器

现象:配置正确,CLI 测试正常,但 TUI 对话中 AI 说"无法访问浏览器"。

原因:会话缓存了旧的工具列表。

解决:执行 openclaw sessions reset main 重置会话。

坑 5:Chrome 依赖缺失

现象dpkg -i 安装 Chrome 时报依赖错误。

原因:Ubuntu Server 精简版默认没有安装 GUI 相关库。

解决:执行 sudo apt --fix-broken install -y 自动安装所有依赖。

应用场景:科研牛马的福音

配置好浏览器功能后,你可以让 AI 助手帮你完成这些繁琐的工作:

1. 自动化数据采集

帮我打开 arXiv,搜索 "large language model",把前 10 篇论文的标题和链接保存到文件 

2. 定时监控与截图

结合 OpenClaw 的 cron 功能:

每小时截图一次我的 TensorBoard 训练曲线页面 

3. 批量表单填写

读取这个 Excel 文件,把每一行的数据填写到报销系统的表单中 

4. 网页内容提取

打开这个网页,提取所有表格数据并保存为 CSV 

5. 自动化测试

打开我们的 Web 应用,依次测试登录、创建项目、删除项目功能,截图记录每一步 

总结

经过这次配置实践,我们为 OpenClaw AI 助手添加了强大的浏览器自动化能力:

能力说明
🌐 网页浏览打开任意网页,支持 JavaScript 渲染
📸 截图保存全页面或指定元素截图
🖱️ 自动操作点击、输入、滚动、拖拽
📋 内容提取获取页面文本、表格、链接
🗣️ 自然语言控制用对话的方式指挥浏览器

关键收获

  1. 理解了 Snap 应用与原生应用的区别
  2. 学会了在无头服务器环境配置浏览器
  3. 掌握了 OpenClaw 浏览器配置的各个参数含义
  4. 体验了 AI + 浏览器自动化的强大能力

下一篇博客计划配置 Telegram 频道,实现手机随时随地与 AI 助手对话,敬请期待!


本文记录于 2026 年 2 月 5 日,基于 OpenClaw v2026.1.29 版本

系列文章


如果这篇文章对你有帮助,欢迎点赞、收藏、关注!有问题可以在评论区交流。

Read more

ChatTTS语速优化实战:从算法调优到生产环境部署

在AI语音合成项目中,语速控制是直接影响用户体验的关键环节。尤其是在流式合成场景下,既要保证低延迟的实时性,又要确保语音的流畅自然,这中间存在不少技术挑战。最近在优化ChatTTS的语速控制模块时,我深入探索了从算法调优到生产环境部署的全链路方案,最终将合成效率提升了约35%。这里将整个实战过程梳理成笔记,分享给各位开发者。 1. 背景痛点:流式语音合成的语速控制挑战 在传统的整句合成中,语速调整相对简单,通常通过调整梅尔频谱的帧长或直接对音频进行时间拉伸即可。但在流式合成中,语音是分块生成和播放的,这就引入了几个核心难题: 1. 网络延迟补偿:音频数据从服务器生成到客户端播放,中间的网络延迟是不稳定且不可预测的。简单的固定缓冲策略要么导致卡顿(缓冲不足),要么导致响应迟钝(缓冲过大)。 2. 音频帧对齐:流式合成输出的音频帧(chunk)需要无缝拼接。如果语速调整算法处理不当,会在帧与帧的衔接处产生“咔哒”声或相位不连续,严重影响听感。 3. 动态变速失真:用户可能希望语速能根据内容动态调整(如重点内容放慢)。简单的时域拉伸(如WSOLA)在实时流式处理中容易引入“水波纹

By Ne0inhk
【算法通关指南:数据结构和算法篇 】栈相关算法题:1. 【模板】栈,2.有效的括号

【算法通关指南:数据结构和算法篇 】栈相关算法题:1. 【模板】栈,2.有效的括号

🔥小龙报:个人主页 🎬作者简介:C++研发,嵌入式,机器人方向学习者 ❄️个人专栏:《算法通关指南 》 ✨ 永远相信美好的事情即将发生 文章目录 * 前言 * 一、【模板】栈 * 1.1题目 * 1.2算法原理 * 1.3代码 * 1.3.1 STL版本 * 1.3.2 模拟版本 * 二、有效的括号 * 2.1题目 * 2.2算法原理 * 2.3代码 * 总结与每日励志 前言 本专栏聚焦算法题实战,系统讲解算法模块:以《c++编程》,《数据结构和算法》《基础算法》《算法实战》 等几个板块以题带点,讲解思路与代码实现,帮助大家快速提升代码能力ps:

By Ne0inhk
【数据结构】彻底搞懂二叉树:四种遍历逻辑、经典OJ题与递归性能全解析

【数据结构】彻底搞懂二叉树:四种遍历逻辑、经典OJ题与递归性能全解析

🏠 个人主页:EXtreme35 📚 个人专栏: 专栏名称专栏主题简述《C语言》C语言基础、语法解析与实战应用《数据结构》线性表、树、图等核心数据结构详解《题解思维》算法思路、解题技巧与高效编程实践 目录 * 二叉树全栈进阶指南:从内存布局到递归本质的深度复盘 * 一、二叉树的底层逻辑与核心概念 * 1.1 核心定义与特点 * 1.2 二叉树的五种基本形态 * 1.3 特殊二叉树 * 1.4 二叉树的五条性质 * 1.5 存储结构 * 二、遍历的递归之美 * 2.1 前序遍历 * 2.2 中序遍历 (In-order Traversal) * 2.3 后序遍历 (Post-order Traversal) * 2.

By Ne0inhk

优选算法——前缀和

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 前缀和相关题解 1.前缀和 算法思路: a.先预处理出来一个【前缀和】数组:         用dp[i]表示:[1,i]区间内所有元素的和,那么dp[i-1]里面存的就是[1,i-1]区间内所有元素的和,那么:可得到递推公式:dp[i]=dp[i-1]+arr[i]; b.使用前缀和数组,【快速】求出【某一个区间内】所有元素的和:         当访问的区间是[l,r]时:区间内所有元素的和为:dp[r]-dp[l-r]。 #include <

By Ne0inhk