昨天把 OpenClaw 的 browser control 在 Android Termux 上完整排查了一遍,这里做一次详细复盘。
核心结论先说:问题不是 Chromium 没装,而是 OpenClaw 没有自动识别到 Termux 下浏览器路径,需要显式配置 browser.executablePath,并配合 headless/noSandbox


一、问题背景

场景很典型:

  • 已执行:
1
2
pkg install x11-repo
pkg install chromium
  • 但 OpenClaw 的 browser 工具启动依然失败:
1
Error: No supported browser found (Chrome/Brave/Edge/Chromium on macOS, Linux, or Windows).

按直觉看像“没装浏览器”,但实际是“装了,探测不到”。


二、环境与前置条件

  • 运行环境:Android + Termux
  • OpenClaw:本地 gateway 模式
  • 浏览器:Termux 仓库安装的 chromium-browser

这点很关键:Termux 的路径与常规 Linux 发行版不同,很多自动探测逻辑默认走桌面 Linux 常见路径,容易漏掉 Termux 安装位置。


三、详细排查过程(按顺序)

1)先看 OpenClaw browser 当前状态

先查 browser 子系统状态,确认问题是在“没启动”还是“启动后连不上 CDP”:

1
browser status

当时状态特征:

  • running: false
  • detectedExecutablePath: null
  • chosenBrowser: null

说明 OpenClaw 并没有找到可用浏览器可执行文件。


2)确认 Chromium 是否真的安装成功

先别改配置,先验证“系统里到底有没有 chromium”:

1
2
which chromium-browser
ls -l /data/data/com.termux/files/usr/bin/chromium-browser

结果能看到:

  • chromium-browser 存在
  • 通常是一个 launcher 脚本(软链接)

到这里可以排除“未安装”。


3)验证 Chromium 本体能否独立运行

为了避免误判,还要验证浏览器本体是否可启动:

1
chromium-browser --headless --disable-gpu --remote-debugging-port=18801 about:blank

日志里出现类似:

1
DevTools listening on ws://127.0.0.1:18801/devtools/browser/...

这一步非常关键:它证明 Chromium 本身没问题,问题不在浏览器,而在 OpenClaw 与浏览器的“对接配置”。


4)确认是“自动探测失败”而不是“权限失败”

当 Chromium 可独立启动、而 OpenClaw 报 “No supported browser found” 时,通常可直接判断为:

  • OpenClaw 的自动探测未命中 Termux 路径
  • 需要手动指定 executablePath

这比反复重装 Chromium 更有效。


四、修复动作

在 OpenClaw 配置中添加(或覆盖)browser 配置:

1
2
3
4
5
6
7
{
"browser": {
"executablePath": "/data/data/com.termux/files/usr/bin/chromium-browser",
"headless": true,
"noSandbox": true
}
}

三个字段作用:

  • executablePath:明确告诉 OpenClaw 浏览器入口在哪
  • headless: true:Termux 场景下稳定性更高,适合自动化
  • noSandbox: true:Android/Termux 环境常见兼容要求

配置后重启 gateway 使其生效。


五、修复后验证清单

修复后,按以下顺序验收:

1)状态检查

  • running: true
  • cdpReady: true
  • detectedBrowser: custom
  • detectedExecutablePath: /data/data/com.termux/files/usr/bin/chromium-browser

2)功能检查

  • 打开页面:https://example.comhttps://google.com
  • 截图:确认渲染正常
  • 关闭标签页:确认可控
  • 退出 browser:确认生命周期管理正常

全部通过后,说明 Browser Control 已恢复。


六、这次问题里最容易踩的坑

  1. 把“探测失败”误判成“浏览器没装”
    结果是反复重装,问题不变。

  2. 只看 OpenClaw 报错,不做 Chromium 独立启动验证
    少了这一步,就无法快速切分“浏览器问题 vs 对接问题”。

  3. 忘记显式指定 Termux 路径
    桌面 Linux 的常见路径不等于 Termux 路径。


七、可复用的排障流程(建议收藏)

后续遇到同类问题,可以直接套这个 4 步模板:

  1. browser status 看是否识别到 executable path
  2. which chromium-browser 看路径是否存在
  3. chromium-browser --headless --remote-debugging-port=xxxx 验证本体
  4. 若 2、3 通过而 1 失败:直接补 browser.executablePath

一句话记忆:

Termux 下 Browser Control 报 “No supported browser found”,优先修“路径识别”,不是重装浏览器。


八、最终配置示例(可直接参考)

1
2
3
4
5
6
7
{
"browser": {
"executablePath": "/data/data/com.termux/files/usr/bin/chromium-browser",
"headless": true,
"noSandbox": true
}
}

如果后续升级 Chromium 或迁移环境,优先复检这一段是否仍然有效。