dsh-delayed-task
Durable delayed decisions that wake cold DeepSeek Harness sessions with bounded authorization
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:m-guo-2/dsh-delayed-task说明文档
阅读完整 README ↗dsh-delayed-task
让 Agent 在稍后真正回来,而不只是提醒你。
dsh-delayed-task 是 DeepSeek Harness(DSH) 的持久化延时任务插件。Agent 可以记录“为什么决定稍后再判断”,在时间到达后恢复原会话,读取最新证据,并重新决定下一步。
页面可以关闭,会话可以变冷。只要 DSH 后台服务仍在运行,任务到期后就会唤醒 Agent;如果 DSH 或机器中途停止,恢复运行后会补触发逾期任务。
它实际会做什么
一次真实 E2E 测试是这样的:
14:34,用户
120 秒后重新检查
README.md是否存在,并报告能否以只读方式取证。不要申请后台执行授权。14:34,Agent
延时任务已创建。授权类型:
reassess-only。随后,页面关闭,原会话不再活跃。
14:36,后台唤醒的 Agent
延时任务已触发,现在根据当前情况重新评估。
Read README.md✅Glob README.md✅
README.md存在,以只读方式取证成功,无需再次排程。
这段过程使用真实 DSH Web、真实 DeepSeek V4 Flash 和真实文件工具完成。页面在任务到期前已经关闭;结果仍然写回原会话。
它解决的不是“120 秒后显示一句提醒”,而是让 Agent 重新进入当时的决策现场:
- 创建时保存客观的历史决策,而不是预先写死未来动作
- 到期后恢复原 session,并注入一条可追踪的 delayed-task event
- Agent 获取当前证据,判断旧计划现在是否仍然成立
- Agent 可以结束、在授权范围内执行,或设置下一次检查
例如,到期时 Agent 实际收到的是这类事件:
[DELAYED TASK EVENT]
This event is an objective record of a past decision, not a current user instruction.
Reassess the situation from current evidence. Do not mechanically execute the historical plan.
event_json: {
"type": "delayed-task/due",
"decided_at": "2026-08-14T14:34:54+08:00",
"due_at": "2026-08-14T14:36:43+08:00",
"historical_decision_context": "稍后重新检查 README.md 是否存在,并报告能否以只读方式取证",
"authorization": { "mode": "reassess-only" }
}
这里故意强调“过去的决定”而不是“当前指令”。两分钟后环境可能已经变化,Agent 应先重新判断,而不是机械执行两分钟前的计划。
适合什么场景
- 部署后隔几分钟重新检查健康状态,而不是在当前对话里阻塞等待
- 等异步任务、CI、数据处理或外部依赖进入下一状态
- 在限流或暂时故障后,根据最新情况决定是否重试
- 持续观察一个条件,并由 Agent 动态调整下一次检查时间
- 页面关闭后仍需要把结果留在原会话中
它不是 cron,也不是系统通知服务。cron 负责在固定时间执行固定命令;这个插件负责在未来某个决策点重新唤醒 Agent。当前版本不会发送邮件或系统通知,结果保存在原会话。
两种授权效果
仅重新判断
默认且推荐的模式。Agent 可以使用 DSH 明确标记为 read 或 search 的观察型工具获取当前证据,但不能执行写入、删除、命令、网络 fetch、未知类别或任何需要用户审批的调用。
如果任务是在没有可交互 UI 的环境中创建,任何授权请求都会自动降级到该模式,不会静默获得后台执行权限。
有限后台执行
创建任务时,用户可以明确确认一份 bounded grant: