全部文档

定时任务(Cron)

- 英文名:scheduled_tasks(实现包名建议 schedule)

来源 docs/core-mechanisms/定时任务/定时任务.md

  • 英文名:scheduled_tasks(实现包名建议 schedule
  • 中文名:定时任务
  • 对标OpenClaw Scheduled tasks(Gateway 内建 Cron;Cadau 自研,不调用 OpenClaw)

用户为 自己的智能体 设定「到点提醒」或「到点自动跑一轮」:仅提醒服务通知 触达;自动执行写入 该次定时会话(智能体未读),不再另发服务通知。与 任务TASKS.md,静态注入)不同;与 记忆锻造(管理员知识反哺)无关。

分阶段落地:见 ../记忆锻造与定时任务实施计划.md(ST 轨道)。


目标

  • 到点 提醒 用户(可不调用模型)。
  • 到点 自动执行 智能体一轮(预设指令,结果写入会话)。
  • 支持 一次性固定间隔Cron 表达式(带时区)。
  • 每次执行 可审计、可回看(执行历史)。

与相邻能力

能力区别
任务无调度;对话时节选 TASKS.md
服务通知提醒类 到点产生通知;自动执行类靠定时会话未读,用户 创建 的仍是 Cron job
记忆锻造管理员离线分析对话;不写入用户 Cron
OpenClaw Heartbeat近似周期巡检主会话;Cadau 首期不做,与用户 Cron 分工同 OpenClaw 文档

用户可见能力(规格意图)

  1. 智能体详情 → 定时 新建/编辑/暂停/删除任务。
  2. 类型:仅提醒 / 自动执行(到点智能体按指令回复)。
  3. 时间:指定时刻一次;或每天/每周/自定义重复。
  4. 到点后:仅提醒收到 服务通知自动执行在消息里出现一条新的定时会话(可点开看完整回复)。
  5. 查看 最近执行记录 与失败原因。

OpenClaw 映射(实现参考)

OpenClawCadau
atschedule_kind=at
everyschedule_kind=every
cron + --tzschedule_kind=cron + timezone
session isolated每任务固定会话,每 run 一轮独立 transcript 或 cron:{task_id}
--announce提醒→服务通知;自动执行→会话未读(可选移动推送后期)
cron runsagent_scheduled_task_runs
cron run <id>POST .../scheduled-tasks/{id}/run-now

治理(企业 SaaS)

  • 绑定 用户 + 工作区 + 智能体;不可跨账号读取。
  • 内置帮助智能体 不提供用户 Cron(避免与产品引导混淆)。
  • 自动执行 默认不开放 联网/文件等高风险工具;工作区策略可覆盖。
  • 配额:每用户 active 任务数、单次 timeout_seconds、最小重复间隔。
  • 审计:user_agent.schedule.create|update|delete|run

当前已落地

  • 数据模型agent_scheduled_tasksagent_scheduled_task_runs(SQLite 迁移于 db.Open)。
  • 调度器:进程内 ticker(SCHEDULE_ENABLED,默认开启;SCHEDULE_TICK_INTERVAL 默认 30s)。
  • APIGET/POST/PATCH/DELETE /api/v1/user-agents/{id}/scheduled-tasksPOST .../run-nowGET .../runs
  • 执行reminder → 服务通知;agent_run → 内部 chat 编排并新建定时会话(不发服务通知;API 默认 allow_tools=false;Web 创建「自动执行」默认勾选允许工具,便于取数/写文件)。
  • 重复at(一次性/相对时间如 5m)、every(≥300s)、cron + IANA 时区。
  • 前端:智能体详情 → 「定时」 Tab(AgentScheduledPanel);功能菜单 定时任务
  • 对话工具(ST-5):工作智能体可用 schedule_list / schedule_create / schedule_delete;创建与删除须 confirm=true(先预览再确认)。定时到点执行轮次不注入这些工具。
  • 记忆锻造自动扫描(管理员侧):MEMORYFORGE_AUTO_SCAN_ENABLED + MEMORYFORGE_AUTO_SCAN_INTERVAL

相关机制