跳转至

Infrastructure — 03-10 Cron任务与自动化

定时能力确认

[03-10] work_assistant 明确说明支持 Cron Job 定时任务,每个任务可绑定到指定 Agent 执行。这是后续"事项提醒 / 工时提醒 / 自动更新"能力的起点。

工作区路径:

/home/resley/.openclaw/workspace-work

单次事项提醒

需求场景

Dad 需要临时提醒,支持一次性触发和二次追加提醒。

实际运行案例

AIIB 报表改进提醒(03-11 → 03-12): - Dad 要求次日 10:00 提醒,内容包括 Generate 传入时间和列表显示报表日期 - [03-12 10:02] 提醒成功触发 - Dad 要求同日 15:00 再提醒一次,提醒后自动删除 - [03-12 15:00] 二次提醒成功触发

公司培训提醒(03-13): - Dad 说"今天提醒我做公司的培训",Bot 自动选择当天 10:00 - [03-13 10:02] 提醒成功触发 - Dad 要求下午 3 点再提醒 - [03-13 15:00] 二次提醒成功触发

设计要点:单次提醒触发后自动删除,Bot 具备简单的时间推断能力(当前已过早晨则选 10:00)。

工时填报自动化

持续运行的定时任务

从 03-10 起,每日 17:00 自动发送工时填报提醒,形成固定节奏。

Dad 的排期策略

[03-17] 核心决策: - 除 AIIB 外,其它项目一天只填一个 - 不要同一天填多个项目 - 一个项目尽量一次填完再切下一个 - AIIB 的周二定期除外

Bot 据此读取当前计划,重新排布剩余工作日的工时分配。

全貌视图升级

[03-18] Dad 要求:每天提醒不只发当天要填什么,还要附带已填进度。

这是提醒内容从"单点通知"升级为"计划 + 进度总览"的关键转折。

实时状态更新

[03-19 16:46] Dad:"好了"
→ Bot 立即更新进度:8429: 4h → 9h
→ 并给出次日计划:3/20 周五 6355 填 7h

状态持久化文件:

memory/labor_hours_tracking.json

踩坑:已完成仍重复提醒

问题(03-19)

Dad 下午已确认填完工时,但 17:00 cron 仍然发送了提醒。

Dad 反馈:"今天已经填过了,为什么又发一个?"

根因

5 点的定时提醒是自动发出的,没有检查当天是否已完成。

修复方案

增加"完成确认状态"判断,当天已确认完成则不再发送提醒。

核心规则确立

提醒发送 ≠ 状态完成。只有 Dad 明确确认后才更新 tracking。

踩坑:自动提醒导致误记账

问题(03-19)

自动提醒内容 6355 7h 被误当成实际填报结果记录。

Dad 指出:"刚刚自动提醒里的 6355 7h 不要记录,否则会错。"

修复

  • 回滚错误记录:6355 保持 24h,不记录误加的 +7h
  • 仅保留当天真实完成的 8429 +5h

这是本主题中最关键的自动化修正点——将"提醒触发"与"状态更新"逻辑彻底分离。

新增任务后自动重排

[03-19] Dad 新增 1867 +30h,要求 Bot 自行决定分配方式,之后每天提醒即可。

Bot 将新任务纳入工时池,自动完成排期,承诺: - 每天 5 点提醒 - 填完确认后当天不再重复提醒

工时自动化至此从"提醒"升级为完整闭环:任务池管理 → 自动排期 → 定时提醒 → 完成确认 → 当日去重

自动化架构总结

技术方案

调度:Cron Job(每个任务绑定指定 Agent)
状态:memory/labor_hours_tracking.json
提醒:定时触发 + 全貌视图
确认:用户反馈后更新状态
去重:当日已确认则抑制提醒

自动化规则

  1. 每天 17:00 发送工时提醒
  2. 填完确认后当天不再重复提醒
  3. 单次事项提醒后自动删除
  4. 只有用户确认完成后才更新工时状态
  5. 每日提醒附带整体进度全貌
  6. 新增任务自动重排剩余工作日

关键经验

  1. 提醒 ≠ 完成:自动提醒不能自动视为已完成,必须等用户确认
  2. 误记账要能回滚:自动化系统必须支持状态回退
  3. 单点通知不够:用户需要看到全局进度才能做决策
  4. 排期策略要人性化:一天只填一个项目、集中完成再切换