Appearance
[社区] Cron 任务在列表中显示但从不执行:enabled、wakeMode 和 delivery.to 配置排查
问题
通过 openclaw cron list 可以看到任务,但任务从不触发执行,也没有错误日志。
常见原因(按排查优先级排序):
cron.enabled未设为true(全局开关未打开)jobs.json中任务的enabled字段为falsewakeMode配置为next-heartbeat,但 session 没有心跳delivery.to指定的 agent ID 不匹配当前实例
解决方案
步骤一:确认全局 cron 开关已开启
bash
openclaw config get cron.enabled
# 如果不是 true,执行:
openclaw config set cron.enabled true步骤二:检查任务本身的 enabled 状态
bash
openclaw cron list
# 确认每条任务的 enabled 字段为 true步骤三:理解 wakeMode 的区别
| wakeMode | 含义 | 适用场景 |
|---|---|---|
immediate | 到时间立即唤醒新会话 | 大多数定时任务 |
next-heartbeat | 等待下一次已有会话的心跳才触发 | 依赖现有会话上下文的任务 |
如果任务设置了 wakeMode: "next-heartbeat" 但没有活跃的心跳会话,任务将永远等待。将 wakeMode 改为 immediate 可解决此问题。
步骤四:验证 delivery.to 目标
bash
# 查看当前 agent 配置的 ID
openclaw config get agents
# 确认任务的 delivery.to 与实际 agent ID 匹配
openclaw cron show <job-id>重要提醒:不要在 Gateway 运行时直接编辑 jobs.json 文件,否则可能导致配置不一致。正确操作方式:
bash
openclaw gateway stop
# 编辑配置
openclaw gateway start或使用 CLI 命令动态修改:
bash
openclaw cron set <job-id> enabled true