Cron Jobs
时间驱动的定时任务
- 支持标准 cron 表达式
- 可配置并发限制
- 支持会话保留
- 完整的执行日志
Automation
从被动响应进入主动运行阶段后,真正重要的就不是"能不能自动跑",而是运行节奏、日志、失败处理、会话隔离和人工接管。这一页帮你建立长期稳定的自动化能力。
Types
根据场景选择合适的自动化方式。
时间驱动的定时任务
主动唤醒机制
多步骤自动化流程
事件驱动的响应处理
Cron
Cron 是时间驱动的定时任务,适合固定时间执行的周期性任务。
* * * * *每分钟执行0 * * * *每小时执行0 8 * * *每天 8:00 执行0 9 * * 1每周一 9:00 执行0 0 1 * *每月 1 日 0:00 执行*/15 * * * *每 15 分钟执行0 9-17 * * *工作时间每小时执行0 8 * * 1-5工作日 8:00 执行{
"cron": {
"enabled": true,
"maxConcurrentRuns": 2,
"sessionRetention": "24h",
"jobs": [
{
"id": "morning-briefing",
"schedule": "0 8 * * *",
"agentId": "assistant",
"prompt": "生成今日工作简报,包括:日程安排、待办事项、重要提醒",
"deliverTo": ["telegram:me"]
},
{
"id": "health-check",
"schedule": "*/15 * * * *",
"agentId": "monitor",
"prompt": "检查系统健康状态,如有异常发送告警",
"onError": "alert"
},
{
"id": "weekly-report",
"schedule": "0 18 * * 5",
"agentId": "reporter",
"prompt": "生成本周工作总结报告",
"sessionRetention": "168h"
}
],
"runLog": {
"maxBytes": "10mb",
"keepLines": 5000
}
}
}Heartbeat
Heartbeat 让 agent 按固定间隔主动联系用户,适合提醒和汇报场景。
固定间隔触发
{ "every": "30m" }按时间表触发
{ "at": ["09:00", "12:00", "18:00"] }智能判断触发
{ "every": "1h", "condition": "hasPendingTasks" }{
"agents": {
"defaults": {
"heartbeat": {
"enabled": true,
"every": "30m",
"target": "last",
"directPolicy": "allow",
"prompt": "检查是否有需要提醒用户的事项,如果有则发送提醒"
}
},
"list": [
{
"id": "reminder",
"heartbeat": {
"every": "1h",
"prompt": "检查待办事项,提醒即将到期的任务"
}
},
{
"id": "monitor",
"heartbeat": {
"every": "5m",
"prompt": "检查系统状态,如有异常立即通知"
}
}
]
}
}Session
合理的会话管理是长期稳定运行的关键。
每个定时任务使用独立的会话,避免上下文污染
"session": {
"dmScope": "per-job",
"isolated": true
}控制会话数据的保留时间,平衡存储和连续性
"sessionRetention": "24h"定期重置会话,防止长期运行的问题积累
"reset": {
"mode": "daily",
"atHour": 4
}限制会话中的消息数量,控制上下文大小
"maxMessages": 100Logging
完整的日志和监控是排查问题的基础。
{
"logging": {
"level": "info",
"format": "json",
"outputs": ["console", "file"],
"file": {
"path": "~/.openclaw/logs/automation.log",
"maxSize": "10m",
"maxFiles": 5
},
"rotation": {
"enabled": true,
"period": "daily"
}
}
}Error Handling
任何自动化都可能失败,提前设计好应对方案。
自动重试失败的任务
"onError": {
"retry": {
"maxAttempts": 3,
"delay": "1m",
"backoff": "exponential"
}
}发送告警通知
"onError": {
"alert": {
"channels": ["telegram", "email"],
"severity": "high"
}
}执行备用方案
"onError": {
"fallback": {
"agentId": "backup-agent",
"prompt": "主任务失败,执行备用方案"
}
}跳过本次执行
"onError": {
"skip": true,
"log": true
}Use Cases
这些场景适合作为自动化的起点。
每天 8:00自动收集昨日数据,生成工作日报
每 15 分钟定期检查系统状态,异常时告警
每小时同步外部内容到本地系统
每 30 分钟检查待办事项,提醒即将到期的任务
Best Practices
先用低风险任务验证自动化配置,再逐步扩展
避免多个任务同时执行导致资源竞争
日志是排查问题的关键,不要为了节省空间而删除
任何自动化都可能失败,提前设计好应对方案
自动化越多,越需要淘汰不再有价值的任务
长期运行的任务会消耗资源,定期检查和优化
FAQ
根据配置的错误处理策略,可以自动重试、发送告警、执行备用方案或跳过。建议为重要任务配置重试和告警。
设置 maxConcurrentRuns 限制并发数,或使用锁机制确保同一时间只有一个实例运行。
Cron 是时间驱动的定时任务,在固定时间点执行。Heartbeat 是 agent 主动唤醒机制,让 agent 按固定间隔主动联系用户,更像"定期汇报"。
查看执行日志,使用手动触发功能测试,检查会话状态,确认配置正确。
设置超时限制,优化任务逻辑,考虑拆分为多个小任务,或使用异步处理。
使用任务分组、标签分类,统一配置日志和监控,定期审查和清理无用任务。
Related