OpenClaw 进阶篇(二):定时任务与自动化工作流

让 AI 助手"主动出击"——设置定时任务,自动推送新闻、提醒日程、执行自动化工作流。

前言

在上一篇中,我们了解了多 Agent 架构。但 AI 助手通常是"被动响应"的——你问它才答。

OpenClaw 的 Cron 定时任务让 AI 助手能够"主动出击":

  • 📰 每天早上自动推送新闻摘要
  • 📅 定时检查日程并发送提醒
  • 🔄 定期执行自动化任务(如数据同步、报告生成)

一、Cron 任务架构

1.1 整体流程

1.2 核心概念

概念 说明
Schedule 定时表达式(cron 或 every)
Agent Turn 触发时执行的 Agent 任务
Delivery 结果投递目标(频道/用户)
Session 隔离的执行会话

二、快速上手:创建定时任务

2.1 基础定时任务

# 每天早上 8:30 推送新闻
openclaw cron add \
  --name "每日新闻" \
  --cron "30 8 * * *" \
  --tz "Asia/Shanghai" \
  --message "获取今天的新闻摘要,整理成简洁格式" \
  --announce

2.2 查看任务列表

openclaw cron list

输出示例:

ID                                   Name        Schedule              Next        Status
──────────────────────────────────────────────────────────────────────────────────────
a1b2c3d4-e5f6-7890-abcd-ef1234567890 每日新闻    cron 30 8 * * *      in 2h      idle
b2c3d4e5-f6a7-8901-bcde-f12345678901 每周总结    cron 0 18 * * 5      in 3d      idle

2.3 立即运行测试

openclaw cron run <job-id>

三、Cron 表达式详解

3.1 标准格式

在这里插入图片描述

3.2 常用示例

表达式 含义
30 8 * * * 每天 8:30
0 9 * * 1-5 工作日 9:00
0 18 * * 5 每周五 18:00
0 0 1 * * 每月 1 日 0:00
*/30 * * * * 每 30 分钟

3.3 使用 --every 简化

# 每 30 分钟
openclaw cron add --name "健康检查" --every 30m --message "检查系统状态"

# 每小时
openclaw cron add --name "同步数据" --every 1h --message "执行数据同步"

# 一次性任务(--at)
openclaw cron add --name "会议提醒" --at "2024-03-15T10:00" --message "会议即将开始"

四、投递配置

4.1 投递到频道

# 投递到 Telegram 私聊
openclaw cron add \
  --name "早安问候" \
  --cron "0 7 * * *" \
  --message "发送一条温馨的早安问候" \
  --announce \
  --channel telegram \
  --to "123456789"

# 投递到 Discord 频道
openclaw cron add \
  --name "周报提醒" \
  --cron "0 17 * * 5" \
  --message "提醒大家提交周报" \
  --announce \
  --channel discord \
  --to "channel:123456789"

4.2 投递模式

模式 说明 使用场景
--announce 投递到聊天频道 新闻推送、提醒
--no-deliver 不投递,仅执行 数据处理、后台任务

4.3 修改投递配置

# 修改投递目标
openclaw cron edit <job-id> --announce --channel feishu

# 禁用投递
openclaw cron edit <job-id> --no-deliver

五、实战案例

5.1 每日新闻推送

openclaw cron add \
  --name "每日新闻" \
  --cron "30 8 * * *" \
  --tz "Asia/Shanghai" \
  --message "获取今天的重点新闻,整理成简洁日报:
1. 国内重要新闻(3-5条)
2. 国际热点(2-3条)
3. 科技财经要点(2-3条)
每条用一句话概括,总共不超过10条。" \
  --announce \
  --description "每天早上8:30推送今日新闻"

5.2 会议提醒(提前15分钟)

openclaw cron add \
  --name "会议提醒" \
  --every 15m \
  --message "检查接下来的会议安排,如果有15分钟内的会议,发送提醒通知" \
  --announce

5.3 每周工作总结

openclaw cron add \
  --name "周报汇总" \
  --cron "0 18 * * 5" \
  --tz "Asia/Shanghai" \
  --message "生成本周工作总结:
1. 本周完成的主要任务
2. 遇到的问题和解决方案
3. 下周计划
整理成 Markdown 格式" \
  --announce

5.4 系统健康检查

openclaw cron add \
  --name "系统检查" \
  --every 1h \
  --message "检查系统状态:
- CPU、内存使用率
- 磁盘空间
- 关键服务状态
如果有异常,发送告警" \
  --announce

六、任务管理

6.1 查看任务状态

# 列表查看
openclaw cron list

# 单个任务详情
openclaw cron status <job-id>

# 执行历史
openclaw cron runs <job-id>

6.2 启用/禁用任务

# 禁用
openclaw cron disable <job-id>

# 启用
openclaw cron enable <job-id>

6.3 修改任务

# 修改时间
openclaw cron edit <job-id> --cron "0 9 * * *"

# 修改消息
openclaw cron edit <job-id> --message "新的任务内容"

# 修改模型(高级)
openclaw cron edit <job-id> --model "anthropic/claude-3-opus"

6.4 删除任务

openclaw cron rm <job-id>

七、高级特性

7.1 任务失败重试

OpenClaw 自动处理任务失败,使用指数退避重试:

失败间隔: 30s → 1m → 5m → 15m → 60m

连续失败后,下次成功会恢复正常调度。

7.2 指定模型和思考级别

openclaw cron add \
  --name "深度分析" \
  --cron "0 20 * * *" \
  --message "进行深度数据分析..." \
  --model "anthropic/claude-3-opus" \
  --thinking high \
  --announce

7.3 超时配置

openclaw cron add \
  --name "长时间任务" \
  --every 1h \
  --message "执行长时间数据处理" \
  --timeout-seconds 300 \
  --no-deliver

八、最佳实践

8.1 任务设计原则

  1. 幂等性:任务可以重复执行而不产生副作用
  2. 简洁性:单个任务只做一件事
  3. 可观测性:结果要能清晰传达给用户

8.2 避免滥用

  • ❌ 不要设置过于频繁的任务(如每分钟)
  • ❌ 不要在任务中执行耗时操作(考虑异步)
  • ✅ 合理利用 --every--cron

8.3 调试技巧

# 立即运行测试
openclaw cron run <job-id>

# 查看执行日志
openclaw cron runs <job-id> --tail 10

# 查看 Gateway 日志
openclaw logs --follow

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐