cron 健康檢查(deterministic):偵測 error/delivery failure/stale next run/stuck execution,靜默通過、異常才輸出診斷區塊。
mode=NO_AGENT state=scheduled enabled=1
schedule=30 22 * * 1-5
next_run=2026-08-24T22:30:00 last_run=2026-08-21T22:30:03
deliver=telegram model=— provider=—
script=/Users/exion/.hermes/scripts/cron_healthcheck_deterministic.py
monitor_script=— monitor_url=—
skills=["telegram-format-cron", "cron-self-review"]
workdir=—
prompt_sha256=765654713d05b452… chars=1459
skill_files={}
[IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered. Do NOT use send_message.]
你是蓓兒丹娣。執行 cron 健康檢查,檢查所有 enabled cron jobs 的狀態。
## 檢查範圍
1. 使用 cronjob(action='list') 取得所有 cron jobs 清單
2. 篩選出 enabled=true 的 jobs
3. 對每個 enabled job,檢查:
- last_status:是否為 "error"
- 若 last_run_at 超過預期執行週期仍未執行(例如每日排程卻超過 48 小時未跑)
4. 最後一次執行是否有 delivery error
## 健康檢查報告格式
**📋 cron 健康檢查報告** (資料時間: {current_date})
✅ 全部正常時:
```
所有 {N} 個 enabled cron jobs 皆正常運作 ✅
```
⚠️ 有錯誤時,列出每個異常 job:
```
❌ 異常 Job #{n}: {job_name}
排程: {schedule}
上次執行: {last_run_at}
狀態: {last_status}
交付錯誤: {last_delivery_error or "無"}
```
## 錯誤摘要區塊(P0 — 給 LLM 診斷用)
如果有任何異常 job,在報告末尾加上以下格式的摘要區塊,讓建智大人可以直接複製貼給 LLM 思考解決方案:
```
=== CRON_ERROR_DIAG ===
Time: {ISO datetime}
Total jobs: {N} | Enabled: {E} | Errors: {Err}
Job: "{job_name}" ({job_id})
Schedule: {schedule}
Script: {script or "none"}
Last run: {last_run_at}
Status: {last_status}
Delivery error: {last_delivery_error or "none"}
Last OK: (last time it ran successfully)
Possible causes:
- (根據 error 類型推測 2-3 個可能原因)
=== END_CRON_ERROR_DIAG ===
```
錯誤類型判斷指引:
- `last_status="error"` + `last_delivery_error=null` → 腳本執行失敗(exit code non-zero)
- `last_status="ok"` + 有 `last_delivery_error` → 腳本成功但交付失敗
- `last_status="error"` + 有 `last_delivery_error` → 雙重失敗
- 長時間未執行(超過排程間隔 2 倍)→ 排程器可能卡住
## 輸出規則
- 全部正常 → 簡潔回報一句話即可
- 有異常 → 輸出完整報告 + 每個異常 job 的診斷區塊
- 不要加不必要的修飾語,建智大人只看事實…| rule | value | source |
|---|---|---|
| none extracted | ||
| kind | path | name | access |
|---|---|---|---|
| SQLITE_TABLE | self | executions | read |
| SQLITE_TABLE | self | executions | read |
Upstream: —
Downstream: —
Transitive downstream (0): —
| type | hard? | from | to | resource | origin | conf | evidence |
|---|---|---|---|---|---|---|---|
| none | |||||||
failure_streak=0
last_error=—
delivery_error=—
change_risk=MEDIUM