排程是在背景跑的。它沒跑、跑了沒成功、或者成功了但結果沒送到你手上,你都不會收到通知。
所以要會查。三個指令就夠。
cron list:全部排程的體檢表openclaw cron list
欄位很多,但真正要看的是後面四欄:
Next 下次什麼時候跑
Last 上次什麼時候跑
Status 上次跑的結果
Delivery 結果有沒有發出去
我那條長這樣:
借用紀錄存進圖譜 cron 0 22 * * * in 5h 5h ago ok isolated not requested
Status 是 ok、Last 有時間,就表示它真的跑過而且沒出錯。如果 Last 一直是空的,那它從來沒跑成功過。

cron get:它到底要傳什麼list 只看得到名字,看不到它會跟 agent 說什麼。要看內容用這個:
openclaw cron get <id>
id 就是 list 最左邊那一串。吐出來的東西裡,兩個欄位最重要:
payload.message 時間到的時候,它會對 agent 說的那句話
delivery.mode 結果要不要發出去
payload.message 就是你在 WebUI「提示」欄填的那段。排程做錯事的時候,九成是這句話寫得不夠清楚,而不是排程壞了。

cron runs:它實際回了什麼openclaw cron runs <id>
這個是執行歷史,每一次跑的結果都在裡面。我那條最近一次:
"status": "ok",
"durationMs": 75930,
"summary": "已完成 borrow.md 的處理,將資料整理並存入圖譜中。
建立實體:4 個(2 名人員、2 件器材)
建立關係:2 條"
summary 是 agent 真正回的話。這是最有用的一欄 —— 你可以直接看出它有沒有照你的意思做,而不是只知道「跑完了」。

Delivery 顯示 not requested 不是失敗,是你當初在「傳送」那欄選了「無(內部)」,所以它本來就不會發。
真正的失敗長得不一樣,會寫出原因。D15 提過預設是「公告」,如果你沒改又沒設聊天室,這裡就會看到發送失敗 —— 而排程本身其實是跑成功的。
跑成功和送成功是兩件事,cron list 把它們分成兩欄就是這個原因。