dsh-timer-scheduler:让 agent 稍后自动醒来检查后台工作

前言

DSH 的扩展方式是“一切皆插件”。对 agent 开发者来说,一个常见问题是:agent 启动了后台 subagent 或 shell background job 后,人仍然需要稍后回来提示它检查。dsh-timer-scheduler 处理这一步:它给 agent 提供一次性提醒工具,到点后让 agent 自己醒来并继续行动,同时在 Web UI 顶栏显示提醒和倒计时。

这是什么

dsh-timer-schedulerGMH13552 维护的 DSH 插件,许可证为 MIT。README 中的包名是 dsh-timer-scheduler-ui,仓库名是 dsh-timer-scheduler。README 标注当前尚未发布到 npm;当前从源码安装。若之后发布到 npm,README 给出的命令是:

dsh plugin --profile web add dsh-timer-scheduler-ui

插件组合进 web profile 后,schedule_reminderlist_reminderscancel_reminder 对所有 preset 的 agent 可用。

核心功能

下面介绍已核实的能力。

  • schedule_reminder:安排一次性提醒。相对时间使用 delay_seconds,绝对时间使用 at,支持 ISO 8601 或 HH:MM[:SS]
  • subject 自动取消:指定 background subagent 或 shell background job 作为 subject。当它完成并进入父会话 inbox 时,插件自动取消匹配的提醒。
  • list_reminders:列出待处理提醒。
  • cancel_reminder:按 id 取消提醒。
  • 到点唤醒:提醒到期后,插件通过 agent.followup() 发起新回合;agent 自行行动和报告,不需要人再次提示。
  • 持久化:待处理提醒持久化到 $DSH_HOME/timer-reminders.json,重启后重新启用。
  • Web UI 顶栏提醒菜单:显示每条提醒的 note 和实时倒计时;没有提醒时隐藏;使用 --dsw-alias-* 主题 token。
  • Host-plane 组合:三个工具可被所有 preset 的 agent 调用。若 preset 使用 tool-bootstrap filter(例如 anchored-standard),需保留:
residentTools: [schedule_reminder, list_reminders, cancel_reminder]

安装与启用

先做源码安装,再做重启和验证。

README 标注当前尚未发布到 npm,因此当前按源码安装:把包挂载为 web profile 的 dependency + bundle,然后执行:

cd <web-profile>
pnpm install

之后重启 dsh web,并在浏览器中硬刷新。

验证时,检查提醒接口:

curl 'http://127.0.0.1:<port>/api/timer-reminders?sessionId=x'

预期返回:

{"reminders":[]}

再检查客户端脚本:

curl 'http://127.0.0.1:<port>/plugins/dsh-timer-scheduler-ui/client.js'

预期返回 200,内容为 JS。

典型用法

在 agent 会话中,可以直接让 agent 安排提醒。README 给出以下示例:

  • “30 分钟后提醒我检查那个后台任务”:
schedule_reminder(delay_seconds=1800, note=…, subject=<subagentId>)
  • “下午 3 点检查部署”:
schedule_reminder(at="15:00", note=…)
  • 管理和取消:
list_reminders
cancel_reminder

适用场景与注意

适合在 DSH web profile 中运行,并希望 agent 在后台任务或远程任务需要“稍后检查”时自动回来的开发者。插件以当前 dsh 进程权限运行,安装前应检查源码和许可证;许可证为 MIT。

使用前注意:

  • 冷恢复需要会话持久化已配置,且会话可恢复;若 resume 失败,提醒会被记录并跳过。
  • dsh 进程停止期间到期的提醒,会在启动时重新启用并立即触发。
  • 超过约 24.8 天的延迟会分块处理,依赖进程保持运行。
  • Web 客户端每秒轮询 /api/timer-reminders?sessionId=…
  • 如果 preset 使用 tool-bootstrap filter(例如 anchored-standard),需保留 residentTools: [schedule_reminder, list_reminders, cancel_reminder]

链接

GitHub 仓库:https://github.com/GMH13552/dsh-timer-scheduler

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye