English | 中文
Cron 任务失败总是悄悄发生?CronWatch 让每个定时任务失败可知、原因可查、异常可警。 轻量、零配置、安装即用,支持 Hermes / Claude Code / OpenCode / Codex 和任意 CLI 命令——无需额外监控任务,不增加轮询负担。
任务失败 → 秒级告警(飞书/钉钉/企业微信/任意 Webhook)
任务变慢 → 自适应基线检测,超常即报
失败原因 → 内置 10 类错误诊断,附修复建议
Scheduled job failures (execution error or delivery error) are usually silent — no notification, discovered days later. The traditional fix — a separate "health-check cron job" that polls job status — is fragile: the monitor itself can fail, detection lags behind the check interval, and it adds another scheduling layer.
CronWatch hooks the post-run choke points of the job lifecycle, so failures are detected the moment they happen.
# 方式一:GitHub Release 安装(推荐)
pip install https://github.com/nicokickcpython/cronwatch/releases/download/v1.0.0/cron_ops-1.0.0-py3-none-any.whl
cron-ops-wrap "daily-backup" -- /path/to/backup.sh
# 方式二:Hermes 插件
hermes plugins install nicokickcpython/cronwatch/cron-health-hook
# 方式三:无依赖 wrapper(零安装,直接下载脚本)
curl -sL https://raw.githubusercontent.com/nicokickcpython/cronwatch/main/cli/cron-ops-wrap.sh -o cron-ops-wrap.sh
chmod +x cron-ops-wrap.sh
./cron-ops-wrap.sh "daily-backup" -- /path/to/backup.sh系统 crontab 用法:
0 2 * * * cron-ops-wrap "daily-backup" -- /path/to/backup.sh
0 3 * * * cron-ops-wrap "code-review" -- claude -p "review the repo"
0 4 * * * cron-ops-wrap "data-job" -- opencode run "process today's data"| Component | Answers | Integration | Status |
|---|---|---|---|
| cron-health-hook | Did the job fail? | Hermes plugin | ✅ |
| cron-latency-watch | Is the job getting slow? | Hermes plugin | ✅ |
| cron-error-analyzer | Why did it fail? How to fix? | Hermes plugin | ✅ |
cron-ops CLI |
check / diagnose / alert | all agents | ✅ |
cron-ops-wrap |
universal command wrapper | Claude Code/OpenCode/Codex/any | ✅ |
| cron-dupe-detector | Was the job fired twice? | Hermes plugin | 🚧 |
# diagnose an error string / 诊断错误
cron-ops analyze "429 Too Many Requests"
# → diagnosis: API rate limit / quota exhausted
# check one job status file / 检查任务状态
cron-ops check /path/to/status.json
# check all status files / 批量检查
cron-ops check-all ~/.cron-ops/status/| Var | Description | Default |
|---|---|---|
CRON_ALERT_CHAT_ID |
Feishu chat_id for alerts | FEISHU_HOME_CHANNEL |
CRON_ALERT_WEBHOOK |
Generic webhook URL (DingTalk/WeCom/Slack...) | none |
CRON_ALERT_COOLDOWN |
Cooldown between same-failure alerts (s) | 3600 |
CRON_LATENCY_FACTOR |
Alert when duration > factor × rolling avg | 3.0 |
CRON_LATENCY_CEILING |
Absolute ceiling seconds | 3600 |
CRON_DUPE_WINDOW |
Duplicate-fire window (s) | 120 |
CRON_OPS_STATUS_DIR |
Status file dir for wrapper | ~/.cron-ops/status/ |
- Hermes plugins ×3 (health-hook / latency-watch / error-analyzer)
- Universal CLI (check / check-all / analyze)
- Universal wrapper
- GitHub Release distribution (wheel + sdist)
- 20 automated test cases
- cron-dupe-detector
- Daily execution digest
- Claude Code hooks native adapter
- OpenCode plugin native adapter
MIT
