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

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

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

小夜