乐于分享
好东西不私藏

openclaw定时任务“假执行”——计时归计时,干活归干活

openclaw定时任务“假执行”——计时归计时,干活归干活

表达式写对了、配置保存了、后台显示就绪了,到点……什么都没发生。

● ● ●

开篇

昨天晚上,打算让龙虾给我刷网课,就是让龙虾播放第1节网课之后,根据视频的用时算出视频播放结束时间,然后根据结束时间新建一个定时任务,继续相同流程播放下一节网课,但是发现定时任务时间到了之后,任务并没有发消息给agent。反复试了很多次都是如此,然后没办法就在网上找类似情况,发现很多 OpenClaw 用户都遇到过一个诡异问题

Cron 表达式写对了、定时配置保存成功、后台显示任务就绪,但一到时间任务完全不触发、不运行、无日志输出

反复核对时间、重启服务、检查权限、更新版本,折腾半天依旧无效。

其实90%的这类定时翻车,根本不是环境、版本、权限问题,而是任务触发模式选错了

今天这篇就把 OpenClaw 两大定时模式 systemEvent 与 agentTurn 的底层区别、踩坑原因、标准配置一次性讲透,帮你彻底解决定时任务“假配置、不执行”的难题。

● ● ●

定时任务为什么“形同虚设”?

搭建自动化定时任务时,直接默认使用 systemEvent 模式,填写合法的 Cron 表达式,保存后等待执行,最终结果就是——到点无响应、任务零触发

很多人会误以为是服务挂了、Cron 调度失效、配置没生效,甚至怀疑版本兼容问题,反复排查日志却找不到报错,陷入无解死循环。

但核心真相非常简单:

systemEvent 模式本身就不支持主动执行自动化任务,它只是“事件提醒模式”。

这也是官方文档明确标注的关键规则,却被绝大多数开发者忽略,成为高频踩坑重灾区。

● ● ●

systemEvent VS agentTurn 核心差异

OpenClaw 的定时任务分为两种完全不同的触发逻辑,适配不同业务场景,混用必然失效。

❌ 失效模式:systemEvent(系统事件触发)

systemEvent 的核心定位是被动通知、事件监听,而非主动执行任务。

它的工作逻辑是:到定时时间后,仅触发一个系统事件、推送一条提醒信号,不会主动拉起 Agent 会话、不会执行预设工作流、不会调用工具指令

简单说:只发信号,不干活

这就是为什么你配置的定时任务看似一切正常,却永远不会自动运行的核心原因。

✅ 生效模式:agentTurn(代理轮询触发)

agentTurn 是 OpenClaw 真正用于自动化定时执行的模式,也是官方推荐的周期性任务首选方案。

它的工作逻辑是:定时到达后,主动唤醒 Agent,创建独立会话,完整执行预设工作流、脚本、指令任务,真正实现无人值守自动化运行。

一句话总结:

需要自动干活、跑任务、执行流程 → 必选 agentTurn

仅需要消息提醒、事件通知 → 才用 systemEvent

● ● ●

创建agentTurn 定时任务

我在让龙虾创建定时任务的时候,明确跟他说“定时任务必须是agentTturn方式,sessionTarget为当前会话,到点立即执行”。这样子创建的定时任务就会是agentTurn方式的。

对应jobs.json里面的展示:

● ● ●

写到最后

agentTurn方式也有一个问题,就是不能在定时任务里面新建一个定时任务。所以针对我这个刷网课的流程,最后我新建了一个10分钟周期的定时任务,周期性的去检查当前网课视频的播放状态,播放状态为完成了,就跳到下一课。

这篇是踩了一个早上才写的。如果对你有帮助,欢迎留言或转发。