一、什麼是 OpenClaw 的 Cron?
如果你熟悉 Linux 的 crontab,OpenClaw 的 Cron 概念類似——在指定的時間點自動執行任務。[6] 但關鍵差異在於:傳統 crontab 執行的是固定的 Shell 命令,而 OpenClaw 的 Cron 執行的是自然語言指令,由 AI 代理自主決定如何完成。
舉例來說:
- 傳統 crontab:
0 9 * * * /usr/bin/python3 /home/user/check_server.py | mail -s "Server Report" [email protected] - OpenClaw Cron:
「每天早上 9 點,檢查伺服器狀態並發送摘要到 Telegram」
後者不需要你事先寫好腳本——代理會自己決定要執行哪些檢查指令、如何整理結果、怎麼格式化報告。[5]
二、建立第一個 Cron 任務
2.1 基本語法
透過 CLI 建立 Cron 任務:[1]
openclaw cron add --schedule "0 9 * * *" --message "檢查伺服器的 CPU 和記憶體使用率,如果任何指標超過 80%,摘要報告異常項目"
排程語法沿用標準 cron 格式:分 時 日 月 星期。
2.2 常用排程範例
| 排程 | 語法 | 說明 |
|---|---|---|
| 每天早上 9 點 | 0 9 * * * | 每日報告、檢查 |
| 每小時整點 | 0 * * * * | 高頻監控 |
| 每週一早上 8 點 | 0 8 * * 1 | 週報 |
| 每月 1 日中午 | 0 12 1 * * | 月度報告 |
| 每 30 分鐘 | */30 * * * * | 密集監控 |
2.3 管理現有任務
# 列出所有 Cron 任務
openclaw cron list
# 刪除特定任務
openclaw cron remove --id TASK_ID
# 暫停(保留設定但不觸發)
openclaw cron disable --id TASK_ID
# 恢復
openclaw cron enable --id TASK_ID
三、搭配 Telegram 實現即時通知
Cron 任務的執行結果預設會發送到你已設定的通訊渠道。如果你已完成 Telegram 整合,結果會直接推送到你的 Telegram 對話中。[3]
3.1 典型場景:每日新聞簡報
openclaw cron add \
--schedule "0 8 * * *" \
--message "搜尋過去 24 小時與人工智慧相關的重大新聞,整理成 5 條中文摘要,每條不超過 50 字"
每天早上 8 點,你的 Telegram 就會收到一份 AI 產業日報。
3.2 典型場景:網站可用性監控
openclaw cron add \
--schedule "*/30 * * * *" \
--message "檢查 https://example.com 是否正常運作,如果回應時間超過 3 秒或回傳非 200 狀態碼,立即通知我"
每 30 分鐘自動檢查,只在異常時通知你——不會被無用的「一切正常」訊息干擾。
四、Gateway Timeout:最常見的陷阱
這是 Cron 任務中最容易踩到的坑。[2]
4.1 問題描述
Gateway 有一個連線逾時設定(timeoutSeconds)。如果 Cron 任務的執行時間超過這個值,Gateway 會強制中斷連線,導致任務被截斷——代理可能已經完成了 80% 的工作,但因為超時而無法回傳結果。
4.2 解決方案
# 查看當前 Timeout 設定
openclaw config get agents.defaults.timeoutSeconds
# 根據最長任務的預期執行時間調整(單位:秒)
openclaw config set agents.defaults.timeoutSeconds 900
經驗法則:將 Timeout 設為你預期的最長任務執行時間的 1.5 倍。例如,如果一個報告任務通常需要 5 分鐘,將 Timeout 設為 450 秒(7.5 分鐘)。
4.3 長任務的替代方案
對於可能執行超過 15 分鐘的任務,建議拆解為多個短任務:
# 而非一次性做完所有事
❌ 「分析過去一年的所有銷售數據並產生完整報告」
# 拆解為多個步驟
✓ 「下載過去一年的銷售數據並儲存為 CSV」 → Cron 1
✓ 「分析昨天產生的 CSV 並產生摘要報告」 → Cron 2(延遲 10 分鐘)
五、錯誤處理與恢復
5.1 任務失敗時的行為
當 Cron 任務執行失敗時(例如目標伺服器離線、API 回傳錯誤),代理會:
- 透過通訊渠道通知你任務失敗的原因
- 記錄錯誤到 Gateway 日誌(可透過
openclaw tail查看) - 下一個排程時間點正常重新觸發
Cron 任務不會因為單次失敗而停止——它會按照排程持續嘗試。
5.2 避免任務重疊
如果前一次執行尚未完成,新的排程觸發時 Gateway 會跳過,避免同一任務被重複執行。這個行為由 Gateway 的任務佇列自動管理。[2]
六、最佳實踐
- 先手動測試,再設定 Cron:在 CLI 中手動執行一次任務指令,確認代理的行為符合預期,再將同一指令轉為 Cron
- 指令要具體:「檢查伺服器狀態」太模糊;「檢查 CPU、記憶體、磁碟使用率,超過 80% 則報告」更好
- 設定合理的頻率:每個 Cron 觸發都會消耗 LLM Token。每分鐘觸發一次可能會產生可觀的 API 費用
- 善用條件通知:在指令中加入「只在異常時通知」,避免被大量「一切正常」的訊息淹沒
- 監控 Gateway 穩定性:Cron 依賴 Gateway 持續運行。使用
systemd或 Docker 確保 Gateway 在崩潰後自動重啟
結語
Cron 是讓 OpenClaw 從「被動工具」轉變為「主動助理」的關鍵功能。[1] 一旦設定完成,代理就會在你指定的時間自動執行任務、回報結果——你不需要記住要檢查什麼、不需要打開終端機、不需要人在電腦前。
要開始使用 Cron,請先確保你已完成 OpenClaw 的基礎部署並設定了至少一個通訊渠道。如果你在 Cron 任務中遇到問題,《疑難排解指南》能幫助你快速定位原因。