# 前言
幫家人、朋友或企業老闆部署好 OpenClaw 之後,最常聽到的問題是:
「欸我的 AI 怎突然沒回應了?」
深入排查後往往發現,可能是觸發 OpenClaw stop gateway、也可能是系統更新後 launchd service 沒重啟、規則格式錯誤,各種原因。
出問題了只能傳訊息或問 AI「壞掉了怎辦」——而你可能正在出國、開會、或睡覺。
就算你遠端連回去重啟,也搞不清楚「到底復活了沒」,下次又繼續發生一樣的狀況,根源沒有解決。
這篇文章要解決的就是這個問題:
- 🔴 即時偵測:OpenClaw 一掛就知道,不用等人回報
- 📲 Telegram 通知:不管人在哪,手機秒收警報
- 🌐 隨時可查:有個公開 URL,隨時看 AI 的心跳狀態
- 🔁 開機自動啟動:所有服務都設成系統服務,重開機不用手動
目標:監控 OpenClaw(AI 助手)的運行狀態,掛掉時自動 Telegram 通知,隨時從任何地方查看心跳狀態。
# 架構概覽
OpenClaw (AI 助手)
│ 每 5 分鐘 heartbeat ping
▼
Uptime Kuma (Docker) ←──── komistat.komichi.uk
│ ▲
│ 超時未收到 ping → 發通知 │
▼ Cloudflare Tunnel
Telegram Bot 通知
# 前置準備
- macOS(Apple Silicon)
- Homebrew
- Cloudflare 帳號 + 網域(本文使用
komichi.uk) - Telegram 帳號
# 安裝步驟
# Step 1:安裝 Docker Desktop
brew install --cask docker
安裝後開啟 Docker Desktop,等 menubar 鯨魚圖示穩定。
macOS 26 Beta 注意:若遇到
md5: command not found錯誤,執行以下修復:cat > /tmp/md5_wrapper.sh << 'EOF' #!/bin/bash openssl md5 "$@" 2>/dev/null | awk '{print $2}' EOF sudo cp /tmp/md5_wrapper.sh /usr/local/bin/md5 sudo chmod 755 /usr/local/bin/md5
# Step 2:用 Docker 啟動 Uptime Kuma
docker run -d \
--name uptime-kuma \
--restart unless-stopped \
-p 3001:3001 \
-v uptime-kuma:/app/data \
louislam/uptime-kuma:1
確認啟動成功:
docker ps | grep uptime-kuma
curl -o /dev/null -w "%{http_code}" http://localhost:3001
# 應回傳 302
# Step 3:安裝 Cloudflare Tunnel
brew install cloudflared
去 Cloudflare Zero Trust Dashboard → 網路 → 連接器 → 建立通道,建立一個 tunnel(例如 mini-komichi),拿到 token 後執行:

sudo cloudflared service install <YOUR_TOKEN>
這會把 cloudflared 安裝為系統服務,開機自動啟動。
# Step 4:設定 Cloudflare Tunnel 路由
建立設定檔 ~/.cloudflared/config.yml:
tunnel: <YOUR_TUNNEL_ID>
credentials-file: /etc/cloudflared/<YOUR_TUNNEL_ID>.json
ingress:
- hostname: komistat.komichi.uk
service: http://localhost:3001
- service: http_status:404
在 Cloudflare DNS 新增 CNAME record:
- 名稱:
komistat - 目標:
<YOUR_TUNNEL_ID>.cfargotunnel.com - Proxy:橘色雲朵開啟
更新 LaunchDaemon 讓 cloudflared 讀 config.yml,然後重啟服務:
sudo launchctl bootout system/com.cloudflare.cloudflared
sudo launchctl bootstrap system /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
測試:
curl -o /dev/null -w "%{http_code}" https://komistat.komichi.uk
# 應回傳 302
# Step 5:設定 Uptime Kuma Heartbeat Monitor
打開 https://komistat.komichi.uk 建立帳號,然後:
- 點「新增監測器」
- 類型選 「Push」
- 名稱填任意(例如
OpenClaw 心跳) - 心跳間隔:
300(秒) - 重試次數:
1(避免誤判) - 儲存,拿到 Push URL
Push URL 格式:
https://komistat.komichi.uk/api/push/<TOKEN>?status=up&msg=OK&ping=

# Step 6:設定 OpenClaw Heartbeat
編輯 ~/.openclaw/workspace/HEARTBEAT.md:
## Ping 指令
curl -s "https://komistat.komichi.uk/api/push/<TOKEN>?status=up&msg=OK&ping=" > /dev/null
## 檢查項目
- Docker uptime-kuma container 是否 running
- 如果有異常,回報給 Young(不回 HEARTBEAT_OK)
編輯 ~/.openclaw/openclaw.json,把 heartbeat 間隔設成 5 分鐘:
"heartbeat": {
"every": "5m"
}
重啟 OpenClaw:
openclaw gateway restart
# Step 7:設定 Telegram 通知
首先去 Telegram 搜尋 @BotFather,傳 /newbot 建立一個新的 bot,取得 Bot Token。
然後去 Uptime Kuma 設定通知:
- 右上角頭像 → 「通知設定」
- 點 「新增通知」
- 通知類型選 「Telegram」
- 填入以下資訊:
- 機器人權杖(Bot Token):從
@BotFather取得的 token - 聊天 ID(Chat ID):你的 Telegram User ID(可點「自動取得」)
- 機器人權杖(Bot Token):從
- 點 「測試」 確認有收到 bot 發來的測試訊息
- 儲存後,回到監測器編輯頁面,把這個通知勾選加進去

💡 Chat ID 取得方式:先去跟你的 bot 傳
/start,然後點「自動取得」就能自動填入。
# 自動復活機制
光是「知道掛了」還不夠,理想情況是 OpenClaw 能自己爬起來。
好消息是:launchd 已經幫你做好這件事了。
OpenClaw 安裝時會在 ~/Library/LaunchAgents/ai.openclaw.gateway.plist 寫入以下設定:
<key>KeepAlive</key>
<true/>
<key>ThrottleInterval</key>
<integer>1</integer>
KeepAlive = true 的意思是:只要 OpenClaw process 意外退出,launchd 就會自動把它重新拉起來。
所以整個流程變成:
OpenClaw 意外 crash
↓
launchd 偵測到 process 死亡
↓
自動重啟 OpenClaw(1 秒內)
↓
OpenClaw 恢復正常,繼續 ping Kuma
↓
Kuma 狀態從紅色恢復綠色 💚
⚠️ 注意:手動執行
openclaw gateway stop會卸載 service,launchd 就不會自動重啟。
若只是想暫時重啟,請用openclaw gateway restart,不要用 stop。
# 最終效果
- ✅ OpenClaw 每 5 分鐘自動 ping Uptime Kuma
- ✅ 超過 5 分鐘沒收到 → 狀態變紅 🔴
- ✅ Telegram 立即通知
- ✅ 隨時從任何地方打開
https://komistat.komichi.uk查看狀態 - ✅ 開機自動啟動(Docker + cloudflared 都是系統服務)
# 小結
整套系統的核心概念是 Push-based heartbeat:不是由外部主動去 ping 服務,而是由服務本身定期 ping 監控平台。這樣的好處是不需要對外暴露任何 API endpoint,安全性更高。
Cloudflare Tunnel 則解決了「家用機沒有固定 IP / 沒有 port forwarding」的問題,免費且穩定,是自架服務對外的最佳方案之一。
