这篇文章写给刚上手 OpenClaw 的新手龙虾。 目标:搭建一套「不需要你主动去查」的日程管理系统,让 AI agent 在每天的关键时间点主动找你,而不是等你问它。


一、为什么要主动式日程管理?

大多数人的日程管理工具是「被动的」:

  • 日历:只在你打开它的时候才有用
  • Todo App:记进去就忘了看
  • 普通 AI 助手:你不问它,它不开口

这类工具有一个共同问题:责任在你身上。你得记得去看,去查,去问。

OpenClaw 可以反转这个关系。通过配置定时任务,让 agent 在合适的时间主动推消息给你,把「你需要知道的事」送到你面前,而不是等你去找。

这篇文章介绍如何从零搭建这套系统。


二、系统整体架构

整套系统由三个部分构成:

提醒库 (reminders.md)
    ↓ agent 定时扫描
定时任务 (cron jobs)  →  主动推送消息给你
    ↑
每日日志 (daily-log/)  ←  根据你的回复自动记录

三个核心文件:

文件作用谁来写
reminders.md临时性待办事项你来维护
daily-log/YYYY-MM-DD.md每天的行动记录agent 帮你写
cron/jobs.json定时任务配置一次性配置好

三、第一步:建立你的提醒库

在你的 workspace 下创建 reminders.md,格式如下:

# 提醒事项

| 日期       | 事项                | 优先级 | 状态   |
|------------|---------------------|--------|--------|
| 2026-04-15 | 合同续签到期         | 高     | 待处理 |
| 2026-05-01 | 年度健康复查         | 中     | 待处理 |
| 2026-04-20 | 朋友生日            | 低     | 待处理 |

使用原则:

  • 只记「容易忘、有具体日期」的事情
  • 不要把所有事情都堆进来,否则会变成噪音
  • 完成后把状态改成「已完成」,或者直接删掉这一行

四、第二步:设计你的时间节点

这是整套系统最重要的设计决策:你需要哪些时间节点?

以下是一套经过验证的基础配置,适合大多数人:

推荐节点

时间节点名称核心作用
08:00晨间播报知道今天要做什么
12:00上午复盘记录上午完成情况
14:00下午提醒防止下午失焦
21:00晚间复盘整理当天记录
22:00日志兜底没回复也自动补全

各节点设计要点

08:00 晨间播报

这是一天中最重要的节点。内容要包含:

  1. 今天有哪些提醒事项(从 reminders.md 里提取)
  2. 未来 3 天内即将到期的事项(提前预警)
  3. 今天的常规日程框架(可根据自己的节奏自定义)

示例消息效果:

早上好!今日日程播报:

📌 今日提醒
- 下午4点:团队周会

📅 近期预告(3天内)
- 明天:房租到期

🗓️ 今日常规日程
- 09:30 早间市场查看
- 15:00 集中工作时段
- 17:30 结束工作,家庭时间

12:00 上午复盘

一句话询问就够:「上午完成了哪些事?」

你随手回复关键词,agent 帮你记录到日志。不要把这个节点设计得太重,否则你会开始回避它。

14:00 下午提醒

有临时事项就提临时事项,没有就提你自己定义的「下午常规」。这个节点的作用是防止过了午饭后陷入失焦状态。

21:00 晚间复盘

一句话问一下当天情况,你回复后 agent 整理成完整日志。

22:00 日志兜底(强烈推荐)

这个节点经常被忽略,但非常重要。

逻辑:如果你 21:00 没回复,22:00 agent 会根据当天的对话记录和 memory 自动生成一份日志,末尾标注「自动生成」。

效果:哪怕你某天完全忘了复盘,也不会断档。


五、第三步:配置 Cron 任务

/root/.openclaw/cron/jobs.json 里配置定时任务。每个节点对应一个 job。

基础结构

{
  "version": 1,
  "jobs": [
    {
      "id": "唯一ID(用UUID生成器生成一个)",
      "agentId": "你的agent名称",
      "name": "job的名称",
      "enabled": true,
      "schedule": {
        "kind": "cron",
        "expr": "0 8 * * 1-6",
        "tz": "Asia/Shanghai"
      },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "你希望 agent 执行的指令(自然语言描述即可)"
      },
      "delivery": {
        "mode": "announce"
      }
    }
  ]
}

关键字段说明

字段说明
agentId执行这个任务的 agent,填你自己的 agent 名称
exprcron 表达式,0 8 * * 1-6 = 周一到周六早8点
tz时区,中国用 Asia/Shanghai
message用自然语言描述任务,不用写代码

常用 cron 表达式参考

0 8  * * 1-6   每周一到周六 08:00
0 12 * * 1-6   每周一到周六 12:00
0 21 * * 1-6   每周一到周六 21:00
0 22 * * *     每天 22:00(含周日)
30 8 * * 1-6   每周一到周六 08:30

五个节点的完整配置示例

{
  "version": 1,
  "jobs": [
    {
      "id": "替换为UUID-1",
      "agentId": "你的agent名称",
      "name": "morning-briefing",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 8 * * 1-6", "tz": "Asia/Shanghai" },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "【08:00 晨间播报】检查 reminders.md 中今天到期的提醒,列出未来3天内即将到期的事项,附上今日常规日程,通过消息发送给用户。周日不发。"
      },
      "delivery": { "mode": "announce" }
    },
    {
      "id": "替换为UUID-2",
      "agentId": "你的agent名称",
      "name": "noon-checkin",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 12 * * 1-6", "tz": "Asia/Shanghai" },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "【12:00 上午复盘】向用户发送消息,询问上午完成了哪些事项,用户回复后记录到今日 daily-log。周日不发。"
      },
      "delivery": { "mode": "announce" }
    },
    {
      "id": "替换为UUID-3",
      "agentId": "你的agent名称",
      "name": "afternoon-reminder",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 14 * * 1-6", "tz": "Asia/Shanghai" },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "【14:00 下午提醒】检查 reminders.md 是否有今天或明天到期的提醒,有则优先提;若无,提醒下午的常规安排。通过消息发送给用户。周日不发。"
      },
      "delivery": { "mode": "announce" }
    },
    {
      "id": "替换为UUID-4",
      "agentId": "你的agent名称",
      "name": "evening-recap",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 21 * * 1-6", "tz": "Asia/Shanghai" },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "【21:00 晚间复盘】向用户发送简短询问:「今天进展如何?有什么要记录的吗?」用户回复后整理成今日总结写入 daily-log/YYYY-MM-DD.md,回复日志路径。周日不发。"
      },
      "delivery": { "mode": "announce" }
    },
    {
      "id": "替换为UUID-5",
      "agentId": "你的agent名称",
      "name": "log-auto-close",
      "enabled": true,
      "schedule": { "kind": "cron", "expr": "0 22 * * 1-6", "tz": "Asia/Shanghai" },
      "sessionTarget": "isolated",
      "wakeMode": "now",
      "payload": {
        "kind": "agentTurn",
        "message": "【22:00 日志兜底】检查今天的 daily-log 是否已有完整总结。若已有,跳过。若没有,根据今天的 memory 和对话记录自动整理写入,末尾标注「⚙️ 自动生成(用户未回复)」。静默执行,不发消息。"
      },
      "delivery": { "mode": "announce" }
    }
  ]
}

六、每日日志:让记录自动发生

每日日志保存在 daily-log/ 目录下,按日期命名:2026-04-01.md

推荐格式:

# 2026-04-01

## 上午完成
- [你回复的内容,由 agent 整理]

## 下午完成
- [你回复的内容,由 agent 整理]

## 当日总结
[21:00 复盘时你说的,或者 22:00 自动生成的]

你不需要自己写。你只需要在 12:00 和 21:00 用一两句话回复 agent,它帮你整理成标准格式。


七、设计你自己的「常规日程」

每个人的生活节奏不一样。在配置晨间播报和下午提醒时,你需要把自己的「常规日程」告诉 agent。

例如:

我的常规日程:
- 09:00 处理邮件
- 10:00 核心工作时段(不接会议)
- 12:30 午饭
- 14:00–17:00 会议 / 协作时段
- 17:30 下班
- 20:00 阅读 / 学习

把这段话写进你的 HEARTBEAT.md 或 MEMORY.md,让 agent 在生成播报时参考。


八、一个重要原则:周日不打扰

强烈建议:把所有提醒节点的 cron 表达式设为 * * 1-6(只在周一到周六执行)。

如果实在需要某些周日任务(比如日志兜底),也要让 agent 在执行时保持静默,不发消息。

理由:如果系统每天都在催你,很快会变成新的压力来源,你会开始屏蔽它。

周末留给自己,工作日让系统高效运转。


九、常见问题

Q:修改 jobs.json 后需要重启 gateway 吗?

需要。但注意:不要在早上 8 点前后重启,否则已经过期的 cron 任务不会补跑,早间播报会漏掉。

建议在下午或傍晚时段修改配置并重启。


本文基于 OpenClaw 实际运行经验整理,适用于 OpenClaw 2026.x 版本。