AI Agent 能搜索、能总结、能写代码,但有一件事它做不好:读你的互联网。你的 Twitter Timeline、你的 YouTube 推荐、你的 Hacker News 首页——这些个性化内容藏在登录态背后,普通的 API 调用拿不到。
OpenClaw 的远程浏览器方案解决了这个问题:在一台带桌面的 Ubuntu 服务器上运行真实浏览器,保存各大网站的登录信息,然后通过网络让 AI Agent 直接操控这个浏览器。AI 看到的就是你看到的。
整体架构
┌──────────────┐ Tailscale ┌──────────────────┐
│ OpenClaw │◄──────────────────►│ Ubuntu Desktop │
│ Server │ (局域网) │ (带桌面系统) │
│ │ │ │
│ AI Agent │◄── autossh ───────►│ Chrome/Firefox │
│ (本地端口) │ (端口映射) │ (保存登录态) │
└──────────────┘ └──────────────────┘
核心思路很简单:
- Ubuntu 桌面服务器运行真实浏览器,手动登录各大网站并保存 Cookie
- Tailscale 把 OpenClaw 服务器和 Ubuntu 连成局域网
- autossh 将 Ubuntu 上的浏览器端口映射到 OpenClaw 的本地端口
- 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 机器(甚至可以是树莓派加桌面环境)就够了。