找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3431

积分

0

好友

469

主题
发表于 2026-2-11 20:42:27 | 查看: 260| 回复: 0

对于 OpenClaw 这类 AI Agent 而言,除了操作本地计算机、调用工具和利用模型记忆外,从互联网获取实时信息是其一项至关重要的核心能力。很多时候,解决问题的关键并非模型是否“会推理”,而在于能否找到最新、准确且可用的外部资料

OpenClaw 在安装完成后,理论上是具备联网潜力的。但如果你真想让它独立“上网干活”,通常还需要进行一些额外的配置。否则,它更多只是一个思维活跃但信息来源受限的本地智能体。

本文将围绕这一目标,梳理在当前阶段,让 OpenClaw 实现互联网访问的几种可行方式,重点介绍各自的配置步骤和可能遇到的“坑”。我们不评判哪种方案最优,而是尽量把实现路径讲清楚,方便你根据自己的实际环境和偏好进行选择。

1 自带的上网功能

在 OpenClaw 的语境里,“上网”并不是一个单一动作,可以根据场景复杂度大致划分:

  • 已知目标的接口调用:例如查询天气、汇率或某个服务的状态。这类场景通常已经明确了具体的网站或 API 端点,只需通过 curl 或相应的 SDK 传递参数即可获得结果,本质上更像调用一个远程函数。许多预置的 Skill 已经封装了这类功能,基本无需额外配置。
  • 不确定目标的信息获取:例如“搜索某个编程问题的解决方案”、“查找一篇最新的技术文档”或“看看他人的配置案例”。这本质上接近人类使用搜索引擎(如百度或Google)。更进一步,则是需要在网页间进行点击、跳转、输入等连续操作,这已经非常接近“让 Agent 像真人一样使用浏览器”。

OpenClaw 内置的联网能力,主要覆盖的是第一种以及第二种中复杂度较低的搜索与抓取场景:即通过搜索引擎获取链接,再读取页面内容。它更侧重于“读资料”,而非“操作网页”。下面我们先从这套内置功能说起。

其联网搜索流程是通过内置工具链 web_search(找链接) → web_fetch(读内容)来完成的。

具体而言,web_search 工具并未直接集成百度或 Google,而是使用了 Brave 搜索服务(Brave 本身也是一个搜索引擎,提供 Web 界面和 API)。它支持按地区和语言过滤,并返回包含标题、URL 和摘要片段的结果。使用前,你需要设置一个 API Key。

Brave Search 提供免费层级:每月 2000 次查询。你可以前往 brave.com/search/api 注册获取 Key(可能需要绑定银行卡,根据反馈,部分国内信用卡可能无法通过验证,具体情况可以自行尝试)。获取 API Key 后,在终端执行:

openclaw configure --section web

然后根据提示输入你的 API Key。

另一个相关工具 web_fetch 则用于直接请求目标 URL,并将 HTML 内容转换为 Markdown 或纯文本格式。它不经过搜索引擎,是纯粹的页面内容抓取工具。

2 使用浏览器实现高级自动化

由于我无法顺利使用 Brave Search API,因此选择了直接配置 OpenClaw 来控制浏览器进行搜索。相关参数可参考官方文档的 browser 部分,例如查看浏览器工具状态的命令为:

node dist/index.js browser status

下面介绍两种为 Docker 环境下的 OpenClaw 配置浏览器的方法。一种相对简单直接,另一种则更符合容器化部署的最佳实践。建议先通读两种方法,再根据你的需求进行选择。

2.1 方法一:在网关容器内直接安装

这是一种更简单直接的方法,参考了 GitHub 上的 Docker 文档,直接在运行 OpenClaw Gateway 的容器内部安装一个无头(headless)浏览器。

docker exec -u root -it $CONTAINER_ID bash  # 以 root 身份进入容器
node /app/node_modules/playwright-core/cli.js install chromium
node /app/node_modules/playwright-core/cli.js install-deps chromium
find /app -name “chromium”  # 查看浏览器安装路径,并测试能否运行

这样安装后,浏览器主体文件大约会占用 600MB+ 空间,通常位于 /home/node/.cache/ms-playwright 目录下,这部分数据可以通过卷(volume)持久化在容器之外。但 install-deps 安装的系统依赖会写入容器系统目录,若想保留则需提交(commit)为一个新的 Docker 镜像,后续升级会比较麻烦。

安装完成后,需要通过 Web 界面进行配置,指向容器内已安装的浏览器可执行文件。

在 OpenClaw WebUI 中,路径为:Setting -> Config -> Browser -> Executable Path,将上面 find 命令找到的可执行程序完整路径填入。保存后,openclaw.json 配置文件中的 browser 部分会被自动更新,类似于:

{
  “browser”: {
    “executablePath”: “/home/node/.cache/ms-playwright/chromium_headless_shell-1208/chrome-headless-shell-linux64/chrome-headless-shell”
  },
}

2.2 方法二:独立沙盒浏览器容器(推荐)

在标准的 Linux Docker 生产环境中,为 OpenClaw 配置浏览器的更合理架构是运行两个独立的容器,并通过网络让它们互联。这种方法更清晰,也利于管理和资源隔离。

具体步骤在官方 Docker 文档的 “Sandbox browser image” 部分有详细说明:https://github.com/openclaw/openclaw/blob/main/docs/install/docker.md

首先,构建专用的沙盒浏览器镜像:

. scripts/sandbox-browser-setup.sh
docker run --rm -d -p 9222:9222 openclaw-sandbox-browser:bookworm-slim  # 运行浏览器容器
curl http://localhost:9222/json/version  # 测试浏览器调试端口是否就绪

构建完成的镜像大小约为 1.02GB。

接着,需要手动修改 openclaw.json 配置文件(目前 Web UI 可能不支持修改此类高级连接配置):

{
  “browser”: {
    “enabled”: true,
    “attachOnly”: true,
    “defaultProfile”: “remote”,
    “profiles”: {
      “remote”: {
        “cdpUrl”: “http://你的浏览器容器IP:9222”,
        “color”: “#FF4500”
      }
    }
  }
}

你需要将 cdpUrl 中的 “你的浏览器容器IP” 替换为浏览器容器在 Docker 网络内的实际 IP 地址,或者如果浏览器容器与 OpenClaw 网关容器都部署在同一宿主机且做了端口映射,也可以使用宿主机的 IP。

3 常见问题与解决思路

3.1 总提示 Token 不匹配

请依次检查以下位置的 Token 是否完全一致:

  1. 配置文件 .env 中定义的 OPENCLAW_TOKEN
  2. 配置文件 openclaw.json 中可能存在的相关 token 字段。
  3. 你在登录 OpenClaw Web UI 时,在浏览器界面输入的 Token。

3.2 CDP 连接失败:cdpHost 被锁定为 127.0.0.1

在方法二的独立容器模式下,一个常见的问题是:浏览器容器返回的 Chrome DevTools Protocol (CDP) 连接地址(cdpHost)是其容器内部的 127.0.0.1。而对于试图连接它的 OpenClaw Gateway 容器来说,127.0.0.1 指向的是它自己,因此连接会失败。
这可能是作者基于安全考虑的设计——防止非本地的程序随意连接浏览器调试端口,但在双 Docker 容器的部署模型下,这个限制会导致功能不可用。

问题的根源在于浏览器镜像 openclaw-sandbox-browser:bookworm-slim 的启动脚本。它运行的 openclaw-sandbox-browser 程序写死了 --remote-debugging-address=127.0.0.1 参数,导致 CDP 服务只监听本地回环地址。

解决方法有两种:

  1. 修改镜像源码:找到项目中的 scripts/sandbox-browser-entrypoint.sh 文件,将 --remote-debugging-address=127.0.0.1 改为 --remote-debugging-address=0.0.0.0,然后重新构建浏览器镜像。这样 CDP 就会监听所有网络接口。
  2. 修改容器网络模式:在 docker-compose.yml 文件中,将 OpenClaw Gateway 服务的网络模式改为 network_mode: host,使其与宿主机共享网络命名空间。这样,Gateway 容器就能通过宿主机的 localhost:9222 访问浏览器容器映射出来的端口。但这会降低容器网络的隔离性。

希望这篇关于 AI Agent 联网能力配置的梳理,能帮助你在 云栈社区 的探索之路上,更好地驾驭 OpenClaw 这类工具,解锁其从广阔互联网中获取知识的能力。




上一篇:基于腾讯元器平台打造人格化AI产品经理:需求文档与方案生成实战
下一篇:支付成功订单却消失?Spring事务管理中的连接污染问题复盘
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 14:18 , Processed in 0.860070 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表