Skip to content

4.11 定时提醒 ​

本节目标

学会用 Schedule 让 agent 在稍后、某个时间点、固定间隔或按日历规则提醒你,提醒会作为同一条会话里的普通消息到达,不打断当前工作。

为什么需要定时提醒 ​

聊着聊着你经常会冒出这类想法:半小时后提醒我看一下构建结果,明天上午十点再跟进一步,工作日下午五点收个尾,或者每十分钟跟进一次进度。与其自己记在别处,不如直接让 dsh 在会话里帮你挂一个提醒:

  • 长任务跑着,过一会儿自动问你结果
  • 绝对时间到点,agent 主动回来推进那件事
  • 固定间隔周期性跟进,不用人盯着
  • 每天固定钟点、每周固定几天这类日历式节奏,也能挂

这就是 Schedule 定时提醒:它把提醒挂在某条会话内部,到期时作为同一条会话里的普通消息到达。

怎么开启 ​

0.2.0-rc.1 起,Schedule 的启用方式彻底简化:不再需要任何 patch 文件,安装包里就带着一个自动化任务组合包(默认关闭,带实验性标签)。打开左侧栏的插件页面,在官方分组里找到它,把开关一打就行。

这个组合包背后是 @deepseek-ai/dsh-experimental-schedule-bundle,启用时会一并打开三个插件行:

  • schedule:宿主端的定时服务本体
  • ui-schedule:界面上的自动化任务页面
  • time-context:把当前时间和浏览器时区告诉模型(这样它才能听懂"明天九点"这种没写时区的说法)

注意这三行没有各自的开关,组合包的开关就是唯一控制,开就全开,关就全关。不想用提醒功能时把组合包关掉,宿主就停止调度,已保存的任务记录仍留在存储里,重新打开继续生效。插件页的开关走 profile 配置层,开了 HMR 的部署立即生效,不用重启。

这是会话内提醒

Schedule 只把提醒留在会话内部,没有邮件、短信、系统或推送通知。它靠同一条会话里的消息来提醒你,所以记得把提醒挂在你会回头看的那条会话上。

六种提醒方式 ​

开启后直接用自然语言告诉 agent 即可,它背后调用 schedule_create 工具来创建。支持六种时间设定:

方式含义例子
相对时间多少秒之后半小时后提醒我
绝对时间具体的某天某点明天上午十点提醒我
固定间隔每隔至少 60 秒重复每十分钟跟进一次构建
每日每天固定钟点每天晚上十一点提醒我复盘
每周每周固定哪几天、几点每周一和周三上午九点开个头
Cron五字段表达式定时工作日朝九晚五每十五分钟查一次

绝对时间必须给出明确的时区信息:要么写成带 Z 或数值偏移的严格 RFC 3339 时间,要么显式写明 UTC 或 IANA Area/Location 时区。time-context 插件会自动把当前时间和浏览器时区附到请求上,所以没写时区时,agent 会按你浏览器的时区去理解你说的上午十点。夏令时缺口会被跳过,重叠时段取第一个时刻。

创建时每一项提醒都必须有名字(不超过 120 个字符),agent 会根据你的意图起一个,界面上的列表、详情、提醒目录都用这个名字显示。

管理你的提醒 ​

除了创建,还有一组完整的管理动作,都走对话里让 agent 操作:

  • 列出待处理提醒:看看我挂了哪些提醒,对应 schedule_list
  • 修改提醒:把那个十点的提醒改到十一点,对应 schedule_update,可以改名字、改指令内容、改时间,任务编号和已有的投递记录都保留
  • 取消提醒:把那个十点的提醒取消,对应 schedule_delete

删除是硬删除:任务连同它保存的投递记录一起从存储里移除,之后不能再查它的历史,也不能恢复。每条任务的投递记录也有保留上限(默认最近 30 天、最多 200 条,宿主配置可调),更早的回执会被自动清理。

自动化任务页面 ​

启用自动化任务组合包后,侧边栏会多出一个自动化任务入口,打开的是一个不绑定当前会话的全局管理页面:

  • 列表:所有会话的活动和未运行任务都在这,带文本搜索(匹配任务名、指令和会话 id)和全部 / 已开启 / 未运行状态筛选
  • 详情:点任务进去有规则和任务运行记录两个页签。规则页可以直接改名字、指令和运行时间(含月历、时钟和可搜索的时区选择器),改完保存才生效;运行记录页翻看这条任务每次到点投递的历史
  • 打开原会话:详情页签条里有关联会话入口,点过去就回到挂这条提醒的会话
  • 删除:在详情的更多操作菜单里,需要确认;页头新建按钮会开一个新会话,让模型在那边创建任务

除了这个页面,会话自己身上也有三处提醒痕迹:对话页头的时钟按钮(只有一条活动提醒时点开直达详情,多条时弹出列表,每条都带删除和详情入口);侧边栏会话行的闹钟标记(悬停能看到该会话挂了哪些任务);还有创建成功时消息流里的任务卡片(带打开按钮,点开右侧栏的任务页签)。

它的行为细节 ​

Schedule 的设计刻意保持轻量,了解这些能避免误会:

  • 不弹卡片、不打断:根 agent 会等到当前工作完全空闲,才在同一条会话里排入一条普通的后续轮次来提醒你,过程中不会插话,也不会单独弹一个提醒卡片
  • 重启仍在:提醒记在宿主存储里,进程关掉或会话变冷,重新打开会恢复等待,并把逾期提醒补发出来(每个重复任务只补最近一次错过的时点)。fork 出来的副本不继承原会话的提醒
  • 固定间隔对齐创建时刻:同一次空闲判断里多个逾期的间隔提醒会合并成一条,各自只发一次
  • Cron 是标准五字段写法:分 时 日 月 周,用显式时区求值;六字段、@daily 宏、月份英文名这类扩展写法会被拒绝
  • 确认才算成功:创建、修改和取消都要等会话持久化确认对应事件后,工具才返回成功

常见问题 ​

问:为什么我设了提醒却没收到?

Schedule 不发任何外部通知,提醒只作为同一条会话里的消息到达。请确认你之后回头打开了挂提醒的那条会话。另外绝对时间一定要带明确时区,否则可能被拒。

问:能不能像闹钟一样弹窗提醒我?

不能。它只把提醒写回会话消息,没有系统级通知。如果你的诉求是千万别漏掉,建议把提醒挂在你会主动打开的那条会话上,或配合其他工具自行处理。

问:老教程里的 overlay / patch 文件启用方式还能用吗?

0.1.7-rc.2 那阵子确实要用三行 patch 自己启用,0.2.0-rc.1 起官方把这三行从默认组合里拿掉了,改成插件页一键启用(见上文),这才是现在的推荐方式。老版本的部署不受影响,patch 方式在 0.1.7 上仍然有效。

小结 ​

  • Schedule 是会话内提醒,到期以同会话普通消息到达;0.2.0-rc.1 起在插件页官方分组启用「自动化任务」组合包即可(0.1.7 时代需要自带 patch)
  • 六种设定:相对秒数、绝对时间(带时区)、固定间隔(至少 60 秒)、每日、每周、Cron;每条任务必须带名字
  • 管理四件套:schedule_create / schedule_list / schedule_update / schedule_delete,删除是硬删除,投递记录默认留 30 天、200 条
  • 启用组合包后有全局自动化任务页面:搜索、筛选、改规则、翻投递记录、跳原会话;页头时钟、侧栏闹钟标记、任务卡片是会话身上的三处提示
  • 不弹卡片、不打断、重启不丢、无外部通知

提醒挂好了,时间管理交给会话自己,下一节我们看看怎么回看 agent 一步步都干了什么。

发现错误?提交反馈 · 欢迎 提 PR 改进本书