用 OpenClaw 管理多个 OpenClaw:一台机器控制所有实例
三台服务器,三个 OpenClaw 实例。一台在 aliyun 上海,一台在家里的 Mac mini,一台跑在公司的开发机上。
每次想看某个实例的 cron 状态,先开终端,ssh admin@xxx,等连上,敲 openclaw cron list,看完输出,退出。换下一台,重复。

我是 AI灵感闪现,使用 OpenClaw 小龙虾 让 AI 自主管理工作和生活上的问题;使用 Claude Code + BMAD AI 驱动敏捷开发框架,让 AI 自主开发和交付软件来表达想法和灵感。是 MoneyMind 省钱思维 App 和 HeartPetBond 心宠纽带 App 开发者。正在实践和分享让 AI 自主解决健康、生活、投资和等方面的问题。我尽可能让 AI 自己完成从目标到交付以及演进的闭环,以最少的人为交互与监督,让 AI 自己跑流程。我只给 AI 想法或目标,全程不陪跑,让 AI 自主运行类似 Tesla FSD 自动驾驶。
坚持了三天。第四天打算找个更好的办法。
问题在哪
不是技术上做不到,是操作成本太高。
每次 SSH 进远程机器,需要记住 IP、用户名、端口。三台还行,五台以上就开始混淆。更糟的是,SSH 连上之后你在远程环境里操作,远程机器的 OpenClaw 版本、Node 版本、配置文件路径都可能和本地不一样。
出过一次事故:在远程机器上跑了 openclaw doctor --fix,结果它按远程环境的依赖关系"修复"了一把,把一个正常运行的插件配置给覆盖了。
需要一种方式:在本地用本地的 CLI 工具操作远程实例,不需要 SSH 进入远程机器。
解决方案的核心思路
OpenClaw 的 Gateway 模式本身就支持远程连接。每个 OpenClaw 实例启动后会在本地端口(默认 18789)暴露一个 HTTP/WebSocket 接口。只要能访问这个端口,就能用本地的 openclaw CLI 通过 --url 和 --token 参数远程操作。
把这个能力和 SSH 隧道、Tailscale 组网结合起来,就能在一台机器上管理所有实例。
架构很简单:
本地机器 (macOS)├── SSH 隧道 → 远程实例 A (aliyun sh, port 18800)├── SSH 隧道 → 远程实例 B (Mac mini, port 18801)└── SSH 隧道 → 远程实例 C (Dev server, port 18802)每个隧道把远程的 18789 端口映射到本地的不同端口。本地 CLI 用 --url ws://localhost:18800 就能操作远程实例 A,用 18801 操作实例 B,以此类推。
第一步:SSH 隧道,用 tmux 保活
SSH 隧道会断。网络波动、机器休眠、运营商抽风,都会导致隧道中断。裸跑 ssh -N -L ... 一断就没了,还得记住重连。
用 tmux 把隧道包起来:
tmux new-session -d -s tunnel-vns8-openclaw \"ssh -N -L 18800:127.0.0.1:18789 admin@192.168.1.85"这样做的好处:
• 隧道跑在后台,终端关了也不影响 • tmux ls一眼看到所有隧道的状态• 断了可以快速杀掉重建
命名规范统一用 tunnel-<host>-openclaw。三个月后回来看,tmux ls 输出一目了然:
tunnel-vns8-openclaw: 1 windows (created Mon Mar 24 09:00:00 2026)tunnel-macmini-openclaw: 1 windows (created Mon Mar 24 09:01:00 2026)tunnel-devbox-openclaw: 1 windows (created Mon Mar 24 09:02:00 2026)第二步:本地 CLI 远程操作
隧道建好后,本地 openclaw CLI 可以直接操作远程实例。关键参数是 --url 和 --token:
# 查看远程实例的 cron 任务openclaw cron list \ --url ws://localhost:18800 \ --token <token> \ --json# 查看 cron 运行状态openclaw cron status --url ws://localhost:18800 --token <token># 手动触发某个 cron 任务openclaw cron run --url ws://localhost:18800 --token <token> --id <job_id># 查看某个 cron 的运行历史openclaw cron runs --url ws://localhost:18800 --token <token> --id <job_id>发消息给远程实例用 tui --message:
openclaw tui \ --url ws://localhost:18800 \ --token <token> \ --session main \ --message "检查一下今天的任务执行情况"注意一个坑:openclaw agent 命令不支持--url 和 --token 参数。想远程发消息只能用 openclaw tui --message。
第三步:Web UI 随时可用
每个隧道映射的端口同时也能通过浏览器访问:
http://localhost:18800/chat?session=main ← aliyun sh 实例http://localhost:18801/chat?session=main ← Mac mini 实例http://localhost:18802/chat?session=main ← 开发机实例浏览器里需要输入 token 认证。收藏夹里存好三个链接,点一下就能进对应实例的聊天界面。
第四步:实例清单管理
把所有实例信息集中记录在一个 TOOLS.md 里:
### vns8-aliyun-sh-**Host:** vns8-aliyun-sh (aliyun sh)-**Tailscale IP:** 192.168.1.85-**Remote port:** 18789-**Local tunnel port:** 18800-**SSH tunnel:**`ssh -N -L 18800:127.0.0.1:18789 admin@192.168.1.85`-**Web UI:** http://localhost:18800/chat?session=main-**SSH user:** admin-**tmux session:**`tunnel-vns8-openclaw`-**Gateway token:**`<token>`新增一台机器,复制模板填进去。隧道命令和 Web UI 地址都是现成的,复制粘贴就能连。
第五步:健康检查
写了一个脚本,遍历所有 tmux 隧道会话,逐个检查 HTTP 状态码:
#!/bin/bashfor session in $(tmux ls -F '#S' 2>/dev/null | grep '^tunnel-'); do host="${session#tunnel-}" host="${host%-openclaw}" port=$(tmux display-message -t "$session" -p '#{pane_start_command}' \ 2>/dev/null | grep -oP '\d+:127' | cut -d: -f1) status=$(curl -s -o /dev/null -w "%{http_code}" \"http://localhost:${port}/" 2>/dev/null || echo"ERR")echo"$host (port $port): $status"done输出像这样:
vns8 (port 18800): 200macmini (port 18801): 200devbox (port 18802): ERRERR 说明隧道断了。杀掉重建:
tmux kill-session -t tunnel-devbox-openclawtmux new-session -d -s tunnel-devbox-openclaw \"ssh -N -L 18802:127.0.0.1:18789 user@<ip>"sleep 2 && curl -s -o /dev/null -w "%{http_code}" http://localhost:18802/不推荐的做法
总结几个走过的弯路:
openclaw 命令 | --url/--token 通过隧道 |
openclaw tui --message | |
ssh 不用 tmux | tmux new-session -d -s ... |
openclaw agent --url | openclaw tui --message |
进阶:用 OpenClaw 管理 OpenClaw
到这里还只是人工管理。更进一步的做法是:专门开一个 OpenClaw 实例,它的工作就是管理其他实例。
这就是 vs-openclaw-mgr 的做法。它本身是一个 OpenClaw 实例,workspace 里配置了所有远程实例的连接信息。这个实例可以:
• 定时检查所有远程实例的健康状态 • 通过 tui --message给远程实例发指令• 汇总多个实例的 cron 运行结果 • 在一个地方看到所有实例的状态
这个管理实例有自己的身份(名叫 Warden),有自己的记忆系统,有自己的工具清单。它不需要 SSH 进任何远程机器,所有操作都通过 SSH 隧道和本地 CLI 完成。
总结
管理多个 OpenClaw 实例的核心就三件事:
1. Tailscale 组网 — 让所有机器互通 2. SSH 隧道 + tmux — 把远程端口映射到本地,持久化运行 3. 本地 CLI + --url/--token — 不登录远程机器,直接操作
如果实例数量多了,可以再开一个 OpenClaw 专门做管理。文件系统里放好实例清单和连接信息,让管理实例自己照看其他实例。
从手动 SSH 到一台机器管所有实例,大概花了一个下午。后续新增机器只需要复制模板、建隧道、加到清单里。


全网首发?第一款 GLM 4.7 + Claude Code AI 自主开发的心宠纽带 App 首次通过 App Store 审核并上架发布
智谱 GLM 4.7 模型 AI 自主开发 HeartBetBond 心宠纽带 App,从想法到提交 App Store 仅用 12 天
实战测评:用 Claude Code + BMAD + GLM-4.7 打造 HeartPetBond App (心宠纽带)
加入 AI灵感闪现 微信群
长按下图二维码进入 AI灵感闪现 微信群

长按下图二维码添加微信好友 VibeSparking 加群

关注 AI灵感闪现 微信公众号

夜雨聆风