7.1 定时任务设置
什么是定时任务?
定时任务是 OpenClaw 自动化能力的核心功能之一。通过定时任务,你可以:
- 在指定时间执行特定的操作或脚本
- 按周期(每天、每周、每月)自动运行任务
- 设置条件触发,实现智能自动化
- 减少重复性工作,提高效率
心跳机制原理
定时任务调度器
Cron 表达式解析
时间计算引擎
任务队列管理
⬇
任务执行器
命令执行
脚本运行
消息推送
API 调用
⬇
结果处理
执行日志
结果通知
错误处理
实战案例
案例一:简单提醒
配置
# 每天晚上10点提醒睡觉
openclaw schedule add --name "睡觉提醒" \
--cron "0 22 * * *" \
--command "notify '该准备休息了,明天还要早起!'" \
--channel whatsapp
案例二:每周报告
自动生成并发送周报:
配置
# 每周五下午5点生成周报
openclaw schedule add --name "周报生成" \
--cron "0 17 * * 5" \
--command "generate_weekly_report" \
--channel email \
--recipients "team@company.com"
案例三:每月总结
月底自动生成月度数据统计:
配置
# 每月最后一天晚上8点
openclaw schedule add --name "月度总结" \
--cron "0 20 28-31 * *" \
--command "generate_monthly_summary" \
--condition "is_last_day_of_month"
Cron 表达式详解
| 字段 | 含义 | 取值范围 | 示例 |
|---|---|---|---|
| 第1位 | 分钟 | 0-59 | 0 表示整点 |
| 第2位 | 小时 | 0-23 | 9 表示上午9点 |
| 第3位 | 日期 | 1-31 | * 表示每天 |
| 第4位 | 月份 | 1-12 | * 表示每月 |
| 第5位 | 星期 | 0-7 (0和7都是周日) | 1-5 表示工作日 |
常用 Cron 表达式示例
Cron 示例
# 每分钟执行
* * * * *
# 每小时执行
0 * * * *
# 每天凌晨2点
0 2 * * *
# 每周一早上8点
0 8 * * 1
# 每月1号中午12点
0 12 1 * *
# 每5分钟执行
*/5 * * * *
# 工作日上午9点到下午6点每小时
0 9-18 * * 1-5
7.2 网站监控实战
为什么需要网站监控?
网站监控可以帮助你:
- 第一时间发现网站故障或访问异常
- 监控竞争对手的网站更新动态
- 追踪商品价格变化,抢购心仪商品
- 监控招聘信息、考试公告等重要信息
- 自动化数据收集,节省人工检查时间
网站变化检测原理
定期抓取
按照设定的时间间隔访问目标网站,获取页面内容
内容对比
将新抓取的内容与历史版本进行对比,检测变化
智能通知
检测到变化后,通过多种渠道发送通知
实战案例
案例一:博客更新监控
配置
# 监控技术博客更新
openclaw monitor add --name "技术博客监控" \
--url "https://example-tech-blog.com" \
--selector "article.latest" \
--interval "1h" \
--channel telegram \
--notify-on-change true
案例二:产品价格监控
追踪电商网站商品价格变化:
配置
# 监控商品价格,降价时通知
openclaw monitor add --name "iPhone 价格监控" \
--url "https://store.example.com/iphone-16" \
--selector ".product-price" \
--interval "30m" \
--condition "price_drop > 5%" \
--channel whatsapp
案例三:招聘信息监控
及时获取心仪公司的招聘信息:
配置
# 监控招聘页面新增职位
openclaw monitor add --name "大厂招聘监控" \
--url "https://careers.bigcompany.com/jobs" \
--selector ".job-listing" \
--interval "2h" \
--filter "keywords:AI工程师,后端开发" \
--channel email
监控频率优化
⚡ 优化建议
- 合理设置间隔:根据网站更新频率设置监控间隔,避免过于频繁的请求
- 使用智能过滤:只监控关心的内容区域,减少数据处理量
- 遵守 robots.txt:尊重网站的爬虫协议,合理控制请求频率
- 使用缓存:启用内容缓存,减少重复抓取
- 错峰监控:分散监控任务执行时间,避免集中请求
7.3 日报自动推送
为什么需要日报?
自动日报可以帮你:
- 每天自动汇总重要信息,节省时间
- 跟踪关注的行业动态和技术趋势
- 记录个人工作进展和成就
- 及时发现重要信息和机会
日报内容设计
一份好的日报应包含以下内容:
数据汇总
关键指标数据、统计数据、趋势图表
新闻资讯
行业新闻、技术动态、政策法规
任务进展
昨日完成、今日计划、阻塞问题
AI 总结
OpenClaw 自动分析生成的洞察和建议
实战案例
案例一:AI行业日报
配置
# 每天早上8点推送AI行业日报
openclaw report create --name "AI行业日报" \
--schedule "0 8 * * *" \
--sources "techcrunch.ai,arxiv.org,paperswithcode.com" \
--template "industry_daily" \
--channel telegram \
--ai-summary true
案例二:技术资讯日报
关注 GitHub、Hacker News 等技术社区:
配置
日报内容示例:
🌟 今日热门仓库
• xxx/awesome-project - 新的AI工具库
• yyy/fast-framework - 高性能Web框架
📈 GitHub趋势
• Python项目增长23%
• AI相关Issue活跃度提升
💡 AI总结
今日技术圈关注焦点:大模型效率优化...
案例三:个人工作日报
自动汇总工作进展:
配置
# 工作日每天晚上6点生成个人日报
openclaw report create --name "个人工作日报" \
--schedule "0 18 * * 1-5" \
--sources "calendar,git,todo" \
--template "personal_daily" \
--channel email \
--recipients "manager@company.com"
推送渠道选择
| 渠道 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Telegram/WhatsApp | 个人日报、实时资讯 | 即时到达,支持富媒体 | 可能被消息淹没 |
| 正式报告、工作汇报 | 格式完整,易于存档 | 可能被归类为垃圾邮件 | |
| 飞书/钉钉 | 团队日报、协作通知 | 便于团队查看和讨论 | 需要企业账号 |
| Discord/Slack | 社区日报、兴趣小组 | 支持频道分类 | 需要活跃社区 |
7.4 循环任务配置
什么是循环任务?
循环任务是指需要按照一定规则重复执行的任务。与定时任务不同,循环任务更关注任务之间的依赖关系和执行逻辑:
- 任务链:多个任务按照顺序依次执行
- 并行执行:多个任务同时运行
- 条件分支:根据执行结果选择不同的执行路径
- 错误处理:失败时自动重试或触发备用方案
循环任务类型
顺序执行
任务A → 任务B → 任务C,前一个完成后才执行下一个
并行执行
任务A、B、C同时执行,等待全部完成后继续
条件分支
根据条件判断执行不同的任务分支
循环迭代
对列表中的每个元素执行相同的任务
实战案例
案例一:数据备份
工作流配置
# 每日数据备份工作流
workflow:
name: "每日数据备份"
schedule: "0 2 * * *"
steps:
- name: "备份数据库"
command: "backup_database"
retry: 3
- name: "备份文件"
command: "backup_files"
parallel: true
items: ["/data/docs", "/data/images", "/data/logs"]
- name: "上传到云端"
command: "upload_to_cloud"
depends_on: ["备份数据库", "备份文件"]
- name: "发送备份报告"
command: "send_backup_report"
depends_on: ["上传到云端"]
案例二:健康提醒
全天候健康管理工作流:
工作流配置
# 健康提醒工作流
workflow:
name: "健康提醒"
rules:
- time: "9:00"
action: "提醒喝水"
- time: "11:00"
action: "提醒做眼保健操"
- time: "12:00"
action: "提醒吃饭"
- time: "15:00"
action: "提醒活动"
- time: "22:00"
action: "提醒睡觉"
# 久坐检测
- trigger: "sedentary > 60min"
action: "提醒站起来活动"
任务依赖管理
🔗 依赖管理要点
- 明确依赖关系:使用 depends_on 声明任务间的依赖
- 避免循环依赖:确保任务依赖图是有向无环图(DAG)
- 设置超时:为每个任务设置合理的执行超时时间
- 依赖可视化:使用命令查看任务依赖关系图
错误重试机制
重试配置
# 任务重试策略
task:
retry_policy:
max_attempts: 3 # 最大重试次数
backoff_strategy: "exponential" # 指数退避
initial_delay: "5s" # 初始延迟
max_delay: "5m" # 最大延迟
retry_on: ["timeout", "network_error"]
# 失败处理
on_failure:
action: "notify_admin"
fallback_task: "backup_plan"
🛡️ 最佳实践
- 幂等性设计:确保任务可以安全地重复执行
- 状态持久化:任务执行状态需要持久化,防止服务重启丢失
- 日志记录:详细记录每个任务的执行过程和结果
- 监控告警:对失败任务及时告警,人工介入处理
- 优雅降级:核心任务失败时,提供简化版备用方案