OpenClaw使用远程浏览器——让AI读懂你的个性化互联网

通过Tailscale + autossh,将Ubuntu桌面浏览器变成AI的眼睛

AI Agent 能搜索、能总结、能写代码,但有一件事它做不好:读你的互联网。你的 Twitter Timeline、你的 YouTube 推荐、你的 Hacker News 首页——这些个性化内容藏在登录态背后,普通的 API 调用拿不到。

OpenClaw 的远程浏览器方案解决了这个问题:在一台带桌面的 Ubuntu 服务器上运行真实浏览器,保存各大网站的登录信息,然后通过网络让 AI Agent 直接操控这个浏览器。AI 看到的就是你看到的。

整体架构

┌──────────────┐     Tailscale      ┌──────────────────┐
│  OpenClaw    │◄──────────────────►│  Ubuntu Desktop  │
│  Server      │    (局域网)         │  (带桌面系统)     │
│              │                    │                  │
│  AI Agent    │◄── autossh ───────►│  Chrome/Firefox  │
│  (本地端口)   │    (端口映射)       │  (保存登录态)     │
└──────────────┘                    └──────────────────┘

核心思路很简单:

  1. Ubuntu 桌面服务器运行真实浏览器,手动登录各大网站并保存 Cookie
  2. Tailscale 把 OpenClaw 服务器和 Ubuntu 连成局域网
  3. autossh 将 Ubuntu 上的浏览器端口映射到 OpenClaw 的本地端口
  4. OpenClaw 的 AI Agent 通过本地端口操控远程浏览器

第一步:Ubuntu 桌面环境准备

选一台有桌面环境的 Ubuntu 机器(物理机或虚拟机都行),确保有 X11 显示服务。可以用 VNC 或者 XRDP 远程连上去,手动打开浏览器登录你常用的网站:

  • Google / YouTube
  • Twitter / X
  • GitHub
  • Hacker News
  • 微信读书、知乎等中文平台

登录后浏览器会保存 Cookie 和 Session,之后 AI 操控浏览器时就能直接访问个性化内容。

第二步:Tailscale 组网

在 OpenClaw 服务器和 Ubuntu 机器上分别安装 Tailscale:

# Ubuntu 和 OpenClaw 服务器上都执行
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

安装完成后两台机器自动组成局域网,可以通过 Tailscale 分配的内网 IP 互相访问。用 tailscale status 确认两台机器都在线:

tailscale status
# 100.x.x.x  openclaw-server  ...
# 100.x.x.x  ubuntu-desktop   ...

第三步:autossh 端口映射

关键一步——用 autossh 将 Ubuntu 上的浏览器调试端口映射到 OpenClaw 服务器的本地端口。端口号保持一致,这样 OpenClaw 的配置不需要做任何特殊处理,就像浏览器跑在本地一样。

# 在 OpenClaw 服务器上执行
# 假设浏览器调试端口是 9222,Ubuntu 的 Tailscale IP 是 100.x.x.x
autossh -M 0 -N -L 9222:127.0.0.1:9222 user@100.x.x.x

-M 0 禁用 autossh 自带的监控端口(依赖 SSH 自身的 keepalive),-N 表示不执行远程命令只做端口转发。autossh 会在连接断开时自动重连。

为了保证 autossh 隧道的稳定性,用 systemd 管理它。先在 SSH config 中配置好连接别名(避免在 systemd 中写一长串参数),然后创建 service 文件:

# /etc/systemd/system/autossh-browser.service
[Unit]
Description=Stable SSH Tunnel to dev2
After=network.target

[Service]
User=hugo
Environment="AUTOSSH_GATETIME=0"
ExecStart=/usr/bin/autossh -M 0 -N dev2
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

其中 AUTOSSH_GATETIME=0 让 autossh 在首次连接失败时也会持续重试,不会直接退出。dev2 是 SSH config 中定义的 Host 别名,包含了目标地址、端口转发规则等配置。

安装并启动服务:

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用开机自启
sudo systemctl enable autossh-browser.service

# 立即启动
sudo systemctl start autossh-browser.service

# 检查运行状态
sudo systemctl status autossh-browser.service

确认状态为 active (running) 即可。如果需要排查问题,用 journalctl -u autossh-browser.service -f 查看实时日志。

第四步:启动 OpenClaw 节点服务

在 Ubuntu 上用 start_node.sh 脚本启动 OpenClaw 节点。这个脚本做了三件事:启动节点、监控进程、健康检查自动重启。

#!/usr/bin/env bash
# start_node.sh - OpenClaw 节点启动与守护脚本

set -e

HOST="openclaw.hugozhu.site"
PORT=443

DISPLAY=":10.0"
NAME="hho-dev1"
LOG_FILE="./openclaw.log"
PID_FILE="./openclaw.pid"

export DISPLAY=$DISPLAY

start_node() {
  echo "$(date) - Starting OpenClaw..." | tee -a $LOG_FILE
  openclaw node run \
    --tls \
    --host $HOST \
    --port $PORT \
    --display-name $NAME \
    >> $LOG_FILE 2>&1 &

  echo $! > $PID_FILE
}

is_running() {
  if [ -f $PID_FILE ]; then
    PID=$(cat $PID_FILE)
    if ps -p $PID > /dev/null 2>&1; then
      return 0
    fi
  fi
  return 1
}

health_check() {
  openclaw browser status > /dev/null 2>&1
}

while true; do
  if ! is_running; then
    start_node
  fi

  sleep 5

  if ! health_check; then
    echo "$(date) - Health check failed, restarting..." | tee -a $LOG_FILE
    kill $(cat $PID_FILE) 2>/dev/null || true
    rm -f $PID_FILE
  fi

  sleep 10
done
# generated by hugo's coding agent

几个关键点:

  • DISPLAY=":10.0":指定 X11 显示器,让浏览器知道在哪个桌面上渲染
  • --tls:通过 TLS 安全连接到 OpenClaw 中心服务
  • --display-name:给节点起个名字,方便在控制台识别
  • 健康检查循环:每 15 秒检查一次,进程挂了自动拉起,浏览器不响应自动重启

第五步:验证远程浏览器状态

在 OpenClaw 服务器上检查远程浏览器是否正常工作:

openclaw browser status

如果一切正常,你会看到浏览器节点的连接状态、可用页面等信息。此时 AI Agent 就可以通过 OpenClaw 操控远程浏览器了。

实际效果

配置完成后,你可以让 AI Agent 做这些事:

  • 阅读个性化推荐:打开 YouTube 首页,总结今天的推荐视频
  • 追踪社交动态:浏览 Twitter Timeline,提炼关键信息
  • 深度阅读:打开微信读书中收藏的文章,做笔记和摘要
  • 监控信息源:定时检查 Hacker News、GitHub Trending

这比传统的 API 抓取强大得多——AI 看到的就是你登录后看到的完整页面,包括个性化推荐、私有内容、需要认证的页面。

安全提示

远程浏览器保存了你的登录态,需要注意安全:

  • Tailscale 提供了端到端加密,网络层是安全的
  • Ubuntu 机器本身要做好防护:强密码、SSH 密钥登录、防火墙
  • 定期检查浏览器的 Session,清理不再需要的登录态
  • 建议为 AI 浏览器使用独立的账号,与你的主力账号隔离

为什么不直接用 Tailscale 替代 autossh?

你可能会问:两台机器已经在同一个 Tailscale 网络里,OpenClaw 能不能直接通过 Tailscale IP 访问 Ubuntu 上的浏览器端口,省掉 autossh 这一层?

理论上可以——只要浏览器监听地址从默认的 127.0.0.1 改为 0.0.0.0,Tailscale IP 就能直接访问。但实际上 OpenClaw 只认 localhost,它连接浏览器时固定使用 127.0.0.1,不支持配置远程地址。所以我们仍然需要 autossh 把远程端口映射到本地。

这也是为什么前面强调「端口号保持一致」——autossh 把远程的端口原样映射到本地同一端口,对 OpenClaw 来说浏览器就像跑在本地一样,零配置。

最终的分工很清晰:Tailscale 负责网络连通和加密,autossh 负责端口映射到 localhost,各司其职。

总结

远程浏览器是 AI Agent 能力的一个重要补充。通过 Tailscale 组网 + autossh 端口映射这套方案,你可以在不暴露任何端口到公网的情况下,让 AI 安全地访问你的个性化互联网。整个方案的维护成本很低——一台闲置的 Ubuntu 机器(甚至可以是树莓派加桌面环境)就够了。


See also