跳到主要内容

定时任务

OpenClaw 支持 Cron 定时任务,可以定时触发 Agent 执行任务。本章介绍如何配置和使用定时任务。

为什么需要定时任务?

许多场景需要定时执行任务,比如:

  • 每天早上生成工作摘要
  • 定时检查系统状态
  • 周期性发送提醒
  • 定时备份或清理

OpenClaw 的 Cron 系统可以让你通过自然语言描述定时任务,Agent 会在指定时间自动执行。

Cron 配置

基本配置

openclaw.json 中配置 Cron 任务:

{
"cron": {
"enabled": true,
"tasks": [
{
"name": "daily-report",
"schedule": "0 9 * * *",
"prompt": "生成昨日工作总结"
}
]
}
}

配置项说明

字段说明必填
name任务名称
scheduleCron 表达式
prompt发送给 Agent 的提示词
enabled是否启用(默认 true)
timezone时区(默认系统时区)

Cron 表达式

格式说明

Cron 表达式格式:分 时 日 月 周

字段允许值特殊字符
分钟0-59* , - /
小时0-23* , - /
1-31* , - /
1-12* , - /
0-6(0=周日)* , - /

特殊字符说明

字符说明示例
*任意值* * * * * = 每分钟
,列举0,30 * * * * = 每小时第 0 和 30 分钟
-范围0 9-17 * * * = 9 点到 17 点每小时
/间隔*/15 * * * * = 每 15 分钟

常用表达式

表达式含义
* * * * *每分钟
*/5 * * * *每 5 分钟
*/30 * * * *每 30 分钟
0 * * * *每小时整点
0 9 * * *每天早上 9:00
0 18 * * *每天下午 18:00
0 9 * * 1-5周一到周五早上 9:00
0 9 * * 1每周一早上 9:00
0 9 1 * *每月 1 号早上 9:00
0 0 * * 0每周日午夜

CLI 命令

管理任务

# 查看所有定时任务
openclaw cron list

# 添加定时任务
openclaw cron add daily-report "0 9 * * *" "生成昨日工作总结"

# 启用任务
openclaw cron enable daily-report

# 禁用任务
openclaw cron disable daily-report

# 删除任务
openclaw cron remove daily-report

# 手动执行任务
openclaw cron run daily-report

# 查看执行历史
openclaw cron history daily-report

实战案例

案例 1:每日工作总结

每天下午 6 点生成工作摘要:

{
"cron": {
"tasks": [
{
"name": "daily-summary",
"schedule": "0 18 * * 1-5",
"prompt": "请根据今天的活动,生成一份工作总结,包括:1. 完成的任务 2. 进行中的工作 3. 明天的计划"
}
]
}
}

案例 2:定时提醒

每小时的整点提醒休息:

{
"cron": {
"tasks": [
{
"name": "break-reminder",
"schedule": "0 * 9-18 * * 1-5",
"prompt": "提醒用户休息一下,站起来活动活动"
}
]
}
}

案例 3:周报生成

每周五下午生成周报:

{
"cron": {
"tasks": [
{
"name": "weekly-report",
"schedule": "0 17 * * 5",
"prompt": "生成本周工作回顾,包括完成的项目、遇到的问题、下周计划"
}
]
}
}

案例 4:配合记忆使用

定时任务可以结合 MEMORY.md 中的配置执行:

{
"cron": {
"tasks": [
{
"name": "morning-briefing",
"schedule": "0 8 * * 1-5",
"prompt": "根据 MEMORY.md 中的日程安排,生成今日工作简报"
}
]
}
}

时区设置

默认使用系统时区,可以通过配置指定:

{
"cron": {
"timezone": "Asia/Shanghai",
"tasks": [...]
}
}

或在单个任务中指定:

{
"name": "task-name",
"schedule": "0 9 * * *",
"prompt": "...",
"timezone": "America/New_York"
}

常见问题

任务没有执行

检查清单:

  1. 任务是否启用:检查 enabled 字段
  2. Gateway 是否运行:openclaw gateway status
  3. 时区是否正确:检查 timezone 配置
  4. 查看日志:openclaw logs --grep cron

任务执行失败

# 查看执行历史
openclaw cron history task-name

# 查看详细日志
openclaw logs --level debug

Cron 表达式验证

不确定表达式是否正确?可以使用在线工具验证,或使用 CLI:

# 查看下次执行时间
openclaw cron next task-name

最佳实践

任务命名

使用清晰、有意义的任务名称:

  • daily-report
  • task1

提示词设计

提示词应该清晰、具体:

// 不推荐
{
"prompt": "总结"
}

// 推荐
{
"prompt": "根据今天的工作活动,生成一份包含已完成任务、进行中工作和明日计划的工作总结"
}

合理设置频率

避免过于频繁的任务,这会消耗大量 Token 和资源:

  • */1 * * * *(每分钟) ✗ 太频繁
  • */15 * * * *(每 15 分钟) ✓ 合理
  • 0 * * * *(每小时) ✓ 合理

错误处理

在提示词中包含错误处理指示:

{
"prompt": "检查服务器状态,如果发现异常,记录到 memory/status.md 并通知我;如果正常,只需简单确认即可"
}

与其他功能配合

配合渠道

定时任务的结果可以通过特定渠道发送:

{
"cron": {
"tasks": [
{
"name": "daily-alert",
"schedule": "0 9 * * *",
"prompt": "检查是否有紧急事项,如果有则通知我"
}
]
}
}

配合多 Agent

可以为不同的 Agent 配置不同的定时任务,通过 Agent 的工作空间配置实现。

下一步