OpenClawCN 中文资料站开始 · 文档 · 进阶 · 动态 · 支持

Automation

自动化与定时任务

从被动响应进入主动运行阶段后,真正重要的就不是"能不能自动跑",而是运行节奏、日志、失败处理、会话隔离和人工接管。这一页帮你建立长期稳定的自动化能力。

Types

四种自动化类型

根据场景选择合适的自动化方式。

Cron Jobs

时间驱动的定时任务

  • 支持标准 cron 表达式
  • 可配置并发限制
  • 支持会话保留
  • 完整的执行日志
适用场景日报生成、定期检查、数据同步

Heartbeat

主动唤醒机制

  • 固定间隔触发
  • Agent 主动联系用户
  • 支持条件判断
  • 灵活的目标配置
适用场景定时提醒、状态汇报、周期检查

Workflows

多步骤自动化流程

  • 可视化流程设计
  • 条件分支支持
  • 错误处理机制
  • 状态持久化
适用场景复杂业务流程、数据处理管道

Event Handlers

事件驱动的响应处理

  • 实时响应事件
  • 灵活的路由配置
  • 支持多种事件源
  • 异步处理能力
适用场景消息处理、告警响应、用户交互

Cron

Cron 定时任务配置

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 心跳配置

Heartbeat 让 agent 按固定间隔主动联系用户,适合提醒和汇报场景。

触发模式

interval

固定间隔触发

{ "every": "30m" }

schedule

按时间表触发

{ "at": ["09:00", "12:00", "18:00"] }

smart

智能判断触发

{ "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": 100

Logging

日志与监控

完整的日志和监控是排查问题的基础。

日志配置

{
  "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

错误处理策略

任何自动化都可能失败,提前设计好应对方案。

retry

自动重试失败的任务

"onError": {
  "retry": {
    "maxAttempts": 3,
    "delay": "1m",
    "backoff": "exponential"
  }
}

alert

发送告警通知

"onError": {
  "alert": {
    "channels": ["telegram", "email"],
    "severity": "high"
  }
}

fallback

执行备用方案

"onError": {
  "fallback": {
    "agentId": "backup-agent",
    "prompt": "主任务失败,执行备用方案"
  }
}

skip

跳过本次执行

"onError": {
  "skip": true,
  "log": true
}

Use Cases

典型应用场景

这些场景适合作为自动化的起点。

日报生成

每天 8:00

自动收集昨日数据,生成工作日报

  1. 收集数据源信息
  2. 分析关键指标
  3. 生成报告内容
  4. 发送到指定渠道

系统健康检查

每 15 分钟

定期检查系统状态,异常时告警

  1. 检查服务可用性
  2. 检查资源使用率
  3. 检查错误日志
  4. 异常时发送告警

内容同步

每小时

同步外部内容到本地系统

  1. 获取外部数据
  2. 解析和转换
  3. 存储到本地
  4. 更新索引

待办提醒

每 30 分钟

检查待办事项,提醒即将到期的任务

  1. 获取待办列表
  2. 筛选即将到期
  3. 生成提醒内容
  4. 发送通知

Best Practices

最佳实践

从简单任务开始

先用低风险任务验证自动化配置,再逐步扩展

设置合理的并发限制

避免多个任务同时执行导致资源竞争

保留完整的执行日志

日志是排查问题的关键,不要为了节省空间而删除

设计失败处理策略

任何自动化都可能失败,提前设计好应对方案

定期检查任务价值

自动化越多,越需要淘汰不再有价值的任务

监控资源消耗

长期运行的任务会消耗资源,定期检查和优化

FAQ

常见问题

Cron 任务执行失败会怎样?

根据配置的错误处理策略,可以自动重试、发送告警、执行备用方案或跳过。建议为重要任务配置重试和告警。

如何避免任务重叠执行?

设置 maxConcurrentRuns 限制并发数,或使用锁机制确保同一时间只有一个实例运行。

Heartbeat 和 Cron 有什么区别?

Cron 是时间驱动的定时任务,在固定时间点执行。Heartbeat 是 agent 主动唤醒机制,让 agent 按固定间隔主动联系用户,更像"定期汇报"。

如何调试定时任务?

查看执行日志,使用手动触发功能测试,检查会话状态,确认配置正确。

任务执行时间过长怎么办?

设置超时限制,优化任务逻辑,考虑拆分为多个小任务,或使用异步处理。

如何管理多个定时任务?

使用任务分组、标签分类,统一配置日志和监控,定期审查和清理无用任务。

Related

继续深入