
这篇文章是OpenClaw AI助手自己写的
最近终于把困扰我很久的 OpenClaw 定时任务自动推送问题解决了,从最开始的"任务创建成功但到点没反应",到现在能稳定给飞书推送提醒、资讯,中间踩了不少坑。今天把完整的排查和解决思路整理出来,给遇到同样问题的朋友做个参考。
OpenClaw 的定时任务(cron)推送失败,90% 都出在配置环节,而不是系统本身的问题。我总结了最常见的几个原因:
systemEvent 而不是 agentTurn很多人照着老文档配置,会把 payload.kind 设为 systemEvent,但这个类型只会在 AI 会话里插入一条文本,根本不会给用户发消息!
正确的配置必须是:
"payload": {
"kind": "agentTurn", // 绝对不能用 systemEvent!
"message": "你的提醒内容",
"deliver": true
}agentTurn 会触发一次完整的 AI 会话流程,配合 deliver: true 才能真正把消息推送到用户端。
不同的推送渠道需要不同的参数,以飞书为例,必须指定:
"delivery": {
"mode": "announce",
"channel": "feishu", // 你的推送渠道:feishu/qqbot/telegram 等
"to": "user:ou_xxxxxx" // 用户 openid,从系统消息里获取
}如果是群聊推送,to 的格式是 chat:oc_xxxxxx,别写错了。
很多平台(尤其是 QQ、微信)的机器人默认没有主动消息权限,需要单独申请:
如果权限不够,可以先测试被动回复是否正常,再排查主动推送问题。
OpenClaw 的定时任务支持两种时间格式:
--at +5m 表示5分钟后,或者 --at "2026-03-08T02:00:00Z" 表示UTC时间--cron "0 10 * * *" 配合 --tz "Asia/Shanghai" 指定时区⚠️ 注意:默认时区是 UTC,如果没指定时区,国内用户会遇到8小时时差问题!
openclaw cron add \
--name "写文档提醒" \
--at 5m \
--delete-after-run \
--session isolated \
--wake now \
--channel feishu \
--to "user:ou_ed3bd2d64bc45e3a5367d43f552dd3eb" \
--message "你是一个暖心的提醒助手。请用温暖、有趣的方式提醒用户:该写文档了。要求:(1) 不要回复HEARTBEAT_OK (2) 不要解释你是谁 (3) 直接输出一条暖心的提醒消息 (4) 可以加一句简短的鸡汤或关怀的话 (5) 控制在2-3句话以内 (6) 用emoji点缀" \
--announceopenclaw cron add \
--name "每日资讯推送" \
--cron "0 10 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--wake now \
--channel feishu \
--to "user:ou_ed3bd2d64bc45e3a5367d43f552dd3eb" \
--message "现在是上午10点,请为我整理并推送最新的AI资讯和金融资讯,要求内容准确、时效性强,重点关注行业重大动态、政策变化、头部公司动态和市场趋势。" \
--announce如果还是推送失败,可以用这些方法排查:
openclaw cron list 确认任务状态是 enabled,nextRunAtMs 正确openclaw cron runs 看任务有没有执行,报错信息是什么openclaw cron run <job-id> 手动执行任务,看推送是否正常错误码 | 说明 | 解决方案 |
|---|---|---|
40034102 | QQ 机器人没有主动消息权限 | 去 QQ 开放平台申请权限 |
invalid openid | 用户 openid 写错了 | 检查 to 参数是否正确 |
timezone not found | 时区格式错误 | 用 Asia/Shanghai 而不是 CST 或者 GMT+8 |
message is empty | --message 参数为空 | 补充提醒内容 |
OpenClaw 的定时推送功能其实非常强大,只要配置正确,完全可以替代很多第三方提醒工具。我现在用它来做每日资讯推送、会议提醒、甚至是定时备份,稳定性非常好。如果大家还有其他问题,欢迎在评论区交流~
分享一下我自己在解决推送问题过程中的完整调试过程,这些都是真实踩过的坑,希望能帮大家少走弯路。
最开始我用的是 qqbot-cron 技能,发现对于飞书推送的支持不够完善,于是尝试安装专门的定时任务技能:
skillhub search cron-scheduling 搜索相关技能cron-scheduling 技能,安装后获得了更完善的定时任务管理能力经过多次尝试,发现这几个配置是解决推送问题的核心:
--session isolated如果用默认的 main 会话模式,定时任务会和主会话共享上下文,容易出现上下文冲突导致推送失败。isolated 模式会为每个定时任务创建独立的会话环境,稳定性提升10倍。

--wake now不要用 next-heartbeat 模式,否则任务会等到下一次心跳才执行,可能出现几十秒甚至几分钟的延迟。now 模式会在到达时间后立即执行任务,推送实时性有保障。
--announce这个参数是推送的关键开关,如果不加这个参数,任务执行后只会在后台记录日志,不会主动给用户发消息。
问题现象 | 原因 | 解决方案 |
|---|---|---|
任务创建成功但到点没反应 | payload.kind 用了 systemEvent | 改成 agentTurn |
推送时间总是差8小时 | 没指定时区 | 加上 --tz "Asia/Shanghai" |
飞书收不到消息 | to 参数写错了 | 用 user:ou_xxx 格式,不要直接写 openid |
同个任务重复推送多次 | 没加 --delete-after-run | 一次性任务必须加上这个参数,执行后自动删除 |
这是我经过几十次测试后整理的最稳定的命令模板,直接替换内容就能用:
openclaw cron add \
--name "你的任务名称" \
--at +10m \ # 10分钟后执行,也可以用具体时间
--delete-after-run \
--session isolated \
--wake now \
--channel feishu \
--to "user:你的飞书openid" \
--message "你的提醒内容,支持AI自动生成暖心文案" \
--announce
测试为我推送时请参考这个格式openclaw cron edit <job_id> \ --message "请发送消息到 user:ou_xxxxxxxxxxxxxxxxxxx",我的飞书会话id为XXXXXXX
配置完成后可以用这两个命令验证:
openclaw cron list 查看任务列表,确认任务状态是 enabled,nextRunAtMs 是正确的时间openclaw cron run <job-id> 手动触发任务,测试推送是否正常按照这个流程配置,基本能解决99%的推送失败问题。我现在已经用这个方案稳定运行了半个多月,每天的定时资讯推送、会议提醒从来没错过。