適用於 OpenClaw v2026.2 | 本文適合想讓 AI 助手主動工作而非被動回應的使用者。
TL;DR: Cron 排程任務:"cron": [{"id": "daily", "schedule": "0 9 * * *", "message": "..."}]。Webhook 觸發:POST /webhook/your-path。Gmail Pub/Sub 自動處理郵件。Heartbeat 主動檢查。設定範例:每日晨報 0 8 * * 1-5,CI 通知 webhook,郵件過濾器 gmail pub/sub。
自動化概覽
自動化類型
| 類型 | 觸發方式 | 適用場景 |
|---|---|---|
| Cron | 定時觸發 | 每日報告、定期檢查 |
| Webhook | HTTP 請求 | 外部系統整合 |
| Gmail Pub/Sub | 新郵件 | 郵件自動化 |
| Heartbeat | 週期檢查 | 主動提醒、建議 |
架構圖
flowchart TB
subgraph Triggers["觸發源"]
CRON[Cron 定時]
WH[Webhook HTTP]
GM[Gmail Pub/Sub]
HB[Heartbeat]
end
subgraph Gateway["Gateway"]
SCHED[排程器]
ROUTE[路由器]
AGENT[Agent]
end
subgraph Actions["動作"]
MSG[傳送訊息]
EXEC[執行任務]
NOTIF[傳送通知]
end
CRON --> SCHED
WH --> ROUTE
GM --> ROUTE
HB --> SCHED
SCHED --> AGENT
ROUTE --> AGENT
AGENT --> MSG
AGENT --> EXEC
AGENT --> NOTIF
Cron 排程任務
Cron 表達式
┌───────────── 分鐘 (0 - 59)
│ ┌───────────── 小時 (0 - 23)
│ │ ┌───────────── 日期 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 星期幾 (0 - 6, 0 = 週日)
│ │ │ │ │
* * * * *
常用表達式
| 表達式 | 說明 |
|---|---|
0 9 * * * |
每天 9:00 |
0 18 * * 1-5 |
工作日 18:00 |
*/30 * * * * |
每 30 分鐘 |
0 0 1 * * |
每月 1 日 0:00 |
0 9,18 * * * |
每天 9:00 和 18:00 |
0 9 * * 1 |
每週一 9:00 |
設定 Cron 任務
{
"cron": [
{
"id": "daily-briefing",
"schedule": "0 9 * * *",
"session": "main",
"message": "請給我今天的日程安排和待辦事項",
"enabled": true
},
{
"id": "weekly-summary",
"schedule": "0 18 * * 5",
"session": "main",
"message": "產生本週工作總結",
"enabled": true
},
{
"id": "health-check",
"schedule": "*/15 * * * *",
"session": "main",
"message": "檢查系統狀態,回報任何異常",
"enabled": true
}
]
}
Cron 設定項
| 欄位 | 類型 | 說明 |
|---|---|---|
id |
string | 任務唯一識別碼 |
schedule |
string | Cron 表達式 |
session |
string | 目標工作階段 |
message |
string | 傳送的訊息 |
enabled |
boolean | 是否啟用 |
timezone |
string | 時區(預設系統時區) |
管理 Cron 任務
# 列出所有任務
openclaw cron list
# 輸出範例:
# ID Schedule Status Last Run
# daily-briefing 0 9 * * * enabled 2026-02-26 09:00
# weekly-summary 0 18 * * 5 enabled 2026-02-23 18:00
# health-check */15 * * * * enabled 2026-02-26 10:30
# 手動觸發任務
openclaw cron run daily-briefing
# 啟用/停用任務
openclaw cron enable daily-briefing
openclaw cron disable daily-briefing
# 檢視任務日誌
openclaw cron logs daily-briefing
Webhook 觸發器
設定 Webhook
{
"webhooks": [
{
"id": "github-push",
"path": "/webhook/github",
"secret": "your-webhook-secret",
"session": "main",
"handler": "github-push"
},
{
"id": "custom-alert",
"path": "/webhook/alert",
"secret": "your-webhook-secret",
"session": "main",
"message": "收到告警: {{data.message}}"
}
]
}
Webhook 端點
POST http://your-gateway:18789/webhook/github-push
POST http://your-gateway:18789/webhook/alert
GitHub Webhook 範例
{
"webhooks": [
{
"id": "github-push",
"path": "/webhook/github",
"secret": "${GITHUB_WEBHOOK_SECRET}",
"session": "work",
"handler": "github-push"
}
]
}
Handler 指令碼:
// ~/.openclaw/handlers/github-push.js
module.exports = async (payload, session) => {
if (payload.ref === 'refs/heads/main') {
const commits = payload.commits.map(c => c.message).join('\n- ');
return `偵測到新的推送:\n\n分支: main\n提交:\n- ${commits}\n\n需要我幫你做什麼嗎?`;
}
return null;
};
自訂 Webhook 處理
{
"webhooks": [
{
"id": "monitoring-alert",
"path": "/webhook/alert",
"methods": ["POST"],
"session": "main",
"message": "🚨 告警通知\n\n級別: {{data.level}}\n服務: {{data.service}}\n資訊: {{data.message}}\n時間: {{data.timestamp}}"
}
]
}
傳送 Webhook:
curl -X POST http://localhost:18789/webhook/alert \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: your-secret" \
-d '{
"level": "critical",
"service": "api-server",
"message": "CPU 使用率超過 90%",
"timestamp": "2026-02-26T10:30:00Z"
}'
Webhook 安全
{
"webhooks": [
{
"id": "secure-webhook",
"path": "/webhook/secure",
"secret": "your-secret-key",
"signatureHeader": "X-Signature",
"signatureAlgorithm": "sha256",
"ipWhitelist": ["192.168.1.0/24"]
}
]
}
Gmail Pub/Sub 整合
設定 Gmail Pub/Sub
{
"gmail": {
"pubsub": {
"enabled": true,
"projectId": "your-project-id",
"subscription": "gmail-subscription",
"credentials": {
"type": "service_account",
"project_id": "your-project-id",
"private_key_id": "...",
"private_key": "...",
"client_email": "..."
},
"filters": [
{
"from": "[email protected]",
"session": "main",
"message": "收到重要郵件:\n寄件人: {{sender}}\n主旨: {{subject}}"
}
]
}
}
}
設定 Gmail Pub/Sub
- 建立 Google Cloud 專案
- 啟用 Gmail API
- 建立 Pub/Sub 主題
- 建立服務帳號
- 設定 Gmail watch
# 設定 Gmail watch
openclaw gmail watch --email [email protected]
Gmail 過濾器
| 過濾條件 | 說明 |
|---|---|
from |
寄件人信箱 |
to |
收件人信箱 |
subject |
主旨關鍵字 |
hasAttachment |
是否有附件 |
label |
Gmail 標籤 |
{
"filters": [
{
"from": "[email protected]",
"session": "work",
"message": "收到 GitHub 通知: {{subject}}"
},
{
"from": "[email protected]",
"hasAttachment": true,
"session": "main",
"message": "收到 Stripe 文件,請處理"
}
]
}
Heartbeat 主動檢查
設定 Heartbeat
{
"heartbeat": {
"enabled": true,
"interval": 3600000,
"session": "main",
"message": "Heartbeat: 請檢查是否有需要我關注的事項"
}
}
Heartbeat 用途
| 用途 | 說明 |
|---|---|
| 主動提醒 | 定期提醒使用者 |
| 狀態檢查 | 檢查系統或服務狀態 |
| 任務建議 | 根據上下文提供建議 |
| 上下文維護 | 保持工作階段活躍 |
Heartbeat 範例
{
"heartbeat": {
"enabled": true,
"interval": 1800000,
"conditions": [
{
"type": "time",
"start": "09:00",
"end": "18:00"
},
{
"type": "active",
"session": "main"
}
],
"message": "根據目前時間,建議檢查以下事項:\n1. 今日待辦\n2. 郵件提醒\n3. 日程安排"
}
}
自動化實戰範例
範例一:每日晨報
{
"cron": [
{
"id": "morning-briefing",
"schedule": "0 8 * * 1-5",
"session": "main",
"message": "早安!請給我今天的晨報:\n1. 天氣預報\n2. 今日日程\n3. 待辦事項\n4. 重要郵件摘要"
}
]
}
範例二:CI/CD 通知
{
"webhooks": [
{
"id": "ci-failure",
"path": "/webhook/ci",
"session": "dev",
"message": "⚠️ CI 失敗\n\n專案: {{data.repository}}\n分支: {{data.branch}}\n提交: {{data.commit}}\n錯誤: {{data.error}}\n\n需要我幫你分析嗎?"
}
]
}
範例三:郵件自動處理
{
"gmail": {
"pubsub": {
"filters": [
{
"from": "[email protected]",
"hasAttachment": true,
"session": "main",
"message": "收到發票郵件,正在處理...\n請將附件儲存到財務資料夾"
}
]
}
}
}
範例四:系統監控
{
"cron": [
{
"id": "system-monitor",
"schedule": "*/5 * * * *",
"session": "main",
"message": "檢查系統狀態",
"skills": ["system-monitor"]
}
]
}
故障排查
Cron 任務不執行
# 檢查任務狀態
openclaw cron list
# 檢查日誌
openclaw logs --filter cron
# 手動觸發測試
openclaw cron run task-id
Webhook 不回應
# 檢查 Webhook 端點
curl -X POST http://localhost:18789/webhook/test \
-H "Content-Type: application/json" \
-d '{"test": true}'
# 檢視日誌
openclaw logs --filter webhook
Gmail Pub/Sub 不運作
# 檢查訂閱狀態
openclaw gmail status
# 重新設定
openclaw gmail setup
# 檢查權限
openclaw gmail check-permissions
小結
自動化讓 OpenClaw 從被動回應變為主動工作:
- Cron:定時執行任務
- Webhook:外部事件觸發
- Gmail Pub/Sub:郵件自動化
- Heartbeat:主動提醒和建議
更新記錄:
- 2026-02-26:初版發布
系列導航:
- ← 上一篇:行動端接入
- → 下一篇:實戰:建構個人知識管理助手