乐于分享
好东西不私藏

【周末杂谈】踩坑无数!终于搞定 OpenClaw 定时任务推送

【周末杂谈】踩坑无数!终于搞定 OpenClaw 定时任务推送

踩坑无数!终于搞定 OpenClaw 定时任务推送

最近在用 OpenClaw 搭建自动化推送系统,本以为配置个定时任务很简单,没想到踩了一堆坑。折腾了好几天,终于搞明白正确的配置方式,赶紧来分享一下。

坑一:system-event 模式不靠谱

最开始按照直觉配置了定时任务:

--session main \
--system-event "请执行脚本并发送内容"

结果令人崩溃:有时候只发摘要,有时候干脆什么都不发!

后来才明白:system-event 模式下,智能体收到事件后只是"参考"一下,并不会主动把脚本的输出发送给用户。

坑二:isolated + announce 也有问题

改成 isolated 模式后,以为这下稳了:

--session isolated \
--message "执行推送脚本" \
--announce

结果发现默认发送的是摘要,不是完整内容。而且如果智能体理解不到位,还可能完全不执行发送操作。

坑三:多脚本共用状态 = 灾难

最崩溃的是内容重复和跳节问题。原因很简单:

  • 旧脚本和新脚本指向不同目录
  • 两者更新同一个状态文件  
  • 结果:状态混乱,内容错乱

正确的配置方案

1. 推送脚本自己负责发送

在脚本内部直接调用 openclaw message send

import subprocess

def send_message(text):
    """直接发送消息到指定渠道"""
    subprocess.run([
        'openclaw''message''send',
        '--channel''qqbot',  # 或其他渠道
        '--target''目标ID',
        '--message', text
    ])

这样脚本自己掌控发送逻辑,不依赖定时任务框架转发。

2. 定时任务用 agentTurn 模式

openclaw cron create \
  --name "每日定时推送" \
  --cron "0 7,9,11,13,15,17,19,21 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "python3 /path/to/push_script.py" \
  --wake now

关键点:

  • 使用 agentTurn 而不是 system-event
  • 使用 isolated 会话避免污染主会话
  • --wake now 确保到点就执行

3. 统一管理内容和状态

  • 只用一个推送脚本
  • 内容放在固定目录不随意改动
  • 状态文件专人专用,避免冲突

配置对比总结

场景 错误方式 正确方式
触发类型 system-event agentTurn
会话模式 main isolated
发送逻辑 依赖框架转发 脚本自己发
状态管理 多脚本混用 统一脚本

现在的效果

✅ 定时任务稳定运行
✅ 每次推送内容完整无误
✅ 状态管理清晰不混乱
✅ 支持文字+图片混合推送  

写在最后

配置自动化任务真的需要耐心和细心。关键是要理解各个参数的真正含义,不能想当然。希望我的经验能帮到你,少走一些弯路。

如果你也在用 OpenClaw 做定时推送,欢迎在评论区交流心得!


本文分享个人配置经验,希望能对你有所帮助