定时任务
OpenClaw 支持 Cron 定时任务,可以定时触发 Agent 执行任务。本章介绍如何配置和使用定时任务。
为什么需要定时任务?
许多场景需要定时执行任务,比如:
- 每天早上生成工作摘要
- 定时检查系统状态
- 周期性发送提醒
- 定时备份或清理
OpenClaw 的 Cron 系统可以让你通过自然语言描述定时任务,Agent 会在指定时间自动执行。
Cron 配置
基本配置
在 openclaw.json 中配置 Cron 任务:
{
"cron": {
"enabled": true,
"tasks": [
{
"name": "daily-report",
"schedule": "0 9 * * *",
"prompt": "生成昨日工作总结"
}
]
}
}
配置项说明
| 字段 | 说明 | 必填 |
|---|---|---|
name | 任务名称 | 是 |
schedule | Cron 表达式 | 是 |
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"
}
常见问题
任务没有执行
检查清单:
- 任务是否启用:检查
enabled字段 - Gateway 是否运行:
openclaw gateway status - 时区是否正确:检查
timezone配置 - 查看日志:
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 的工作空间配置实现。
下一步
- 渠道接入 - 配置消息通知渠道
- 多 Agent 协作 - 多 Agent 配置
- 最佳实践 - 生产环境配置建议