前言¶
在 DeepSeek Harness(DSH)里和智能体对话时,常见需求是「过一会儿再发这条 prompt」:例如等本地构建跑完、等同事确认参数,或刻意错开连续提问的节奏。若立刻发送,只能自己记时间再回来粘贴;若用系统日历或外部定时器,消息仍要二次拷贝,且与当前会话上下文脱节。
dsh-wait-minute 是社区维护的 DSH 工作流类插件,在当前会话内把输入框里的普通文本写入持久化延迟队列,到期后通过 DSH 普通会话发送接口提交原文。它不调用 Schedule、不创建自动化任务、也不发送 [SCHEDULE REMINDER] 包装。下面介绍其定位、能力与安装用法。
这是什么¶
- 名称:dsh-wait-minute(Wait Minute — 会话延迟消息队列,当前版本 1.0.2)
- 维护者:TZDXF
- 分类:工作流
- 仓库:https://github.com/TZDXF/dsh-wait-minute
- 目录页:https://www.skillhub.cn/plugins/TZDXF/dsh-wait-minute
插件服务端仅使用 webServer 与 connection;客户端依赖 @deepseek-ai/dsh-web-app 提供的对话与会话 UI 模块。适用于已文档校验的 DSH 0.2.0-rc.2,且不再依赖 Schedule bundle。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装插件前建议自行查看源码与 MIT 许可证,并理解插件以当前 DSH 进程权限运行。
核心功能¶
延迟入队与发送路径¶
- 在原聊天输入框输入消息。
- 点击发送按钮旁的时钟图标,分别设置小时和分钟(例如
00:05、01:30)。 - 点击原发送按钮或在消息编辑器按 Enter。保存成功后清空草稿,消息进入当前会话的延迟队列并显示倒计时。
- 到期后插件使用 DSH 普通
sessionController.prompt,以mode: queue发送{type: text, text: 原文}。若 AI 正忙,遵循 DSH 普通排队发送,不强行停止或插话。
最短延迟为 1 分钟:00:00 不可发送,不会退化成立即发送。只支持普通文本,不支持附件或斜杠命令;延迟模式下会拦截并提示,而不是悄悄即时发送。
队列内操作¶
队列中每条消息提供:
- 编辑:修改消息文本,默认保留原发送时间;勾选「重新设置延迟」后可改小时/分钟,延迟从本次保存时刻重新计算。保存失败保留编辑草稿。
- 立即发送:不等待倒计时,立即把原文提交到当前会话的普通消息发送流程;成功确认接收后移出队列。
- 取消发送:删除尚未发送的队列消息,不撤回已经提交到会话的消息。
到期、编辑、取消和立即发送共享串行操作队列,避免重复提交。编辑期间若消息已经到期提交,界面保留编辑草稿,但不能把已提交消息改回未发送状态。
界面与侧栏¶
- 队列外观对齐原生对话等待队列:贴合输入框的菜单条、紧凑预览与图标操作;单条直接展示,多条默认折叠为数量标题,编辑时展开。
- 空闲会话行显示时钟及延迟消息数量;悬浮详情显示最近计划时间、正在提交或结果待确认的数量。
- 原生运行中、待审批及未读完成标识优先保留;延迟信息在悬浮详情中展示,不覆盖原生状态或 Stop 行为。
- 修改队列后立即读取新状态,其余会话每 5 秒刷新;最后一条消息发送或取消后清除延迟状态。
时间输入¶
小时字段范围 0–8760,分钟 0–59,只接受数字;无效或越界不会写入。离开字段后自动补零(如 1:5 → 01:05)。支持鼠标滚轮与方向键调整、粘贴短格式时间及全角冒号并规范化。
新会话首条消息¶
先按 DSH 原流程选择工作区,使新会话输入框可编辑后,第一条消息即可直接延迟发送,无需先发即时消息。入队后会发布摘要标题(延迟 · 消息摘要),并后台发起专用的 session-title 模型请求生成正式标题;该请求只生成标题,不提交普通聊天消息、不执行问题、不伪造轮次,也不阻塞入队。失败或超过 6 秒保留摘要标题;已有标题不覆盖,生成期间手动改名优先保留用户标题。
持久化与可靠性要点¶
- 消息存于 Storage kv 单元
wait_minute_outbox,会话创建记录存于wait_minute_created_sessions,不出现在自动化任务管理中。 - 关闭浏览器页面不影响已保存消息;DSH 主程序须运行。退出、关机或休眠期间不能准时发送,恢复后处理到期消息。
- 持久化成功后才显示创建成功;失败保留原草稿。
- 崩溃或发送失败导致结果不明确时,不自动重发,队列显示错误;手动立即重试可能弹出重复发送确认。
- 禁用插件会停止独立队列的计时发送;重新启用后恢复。卸载前建议取消未发送消息。
独立队列 API 为 /api/wait-minute/outbox-v1;客户端在修改前会做只读校验,响应含 X-Wait-Minute-Engine: standalone-outbox-v1 等标识。启动成功后 GET /.well-known/wait-minute 返回引擎、运行版本与 ready: true(只读,不含私有数据),可用于核验插件已就绪。
安装与启用¶
插件按 profile 分别安装:desktop 与 web(dsh web)配置互相独立,只装其中一个形态时,另一形态不会出现延迟功能。
- 桌面应用:配置名
desktop,目录%USERPROFILE%\.dsh\profiles\desktop - 浏览器版:配置名
web,目录%USERPROFILE%\.dsh\profiles\web
在 DSH 插件安装入口可选择 Release 附件 dsh-wait-minute-1.0.2.tgz,或通过下面命令安装。地址须带版本标签,不要写成 releases/latest/download/...。
PowerShell 示例(将 desktop 换成 web 即为浏览器版):
# 首次安装或升级到 v1.0.2
dsh plugin --profile desktop add https://github.com/TZDXF/dsh-wait-minute/releases/download/v1.0.2/dsh-wait-minute-1.0.2.tgz
dsh plugin --profile web add https://github.com/TZDXF/dsh-wait-minute/releases/download/v1.0.2/dsh-wait-minute-1.0.2.tgz
# 查看安装来源与版本
dsh plugin --profile desktop why dsh-wait-minute
# 卸载
dsh plugin --profile desktop remove dsh-wait-minute
若安装工具返回 restart-required,或安装/更新后,须完全退出并重新打开 DSH(桌面应用完全退出后重开;dsh web 停掉原进程再启动)。插件页显示的版本号不代表运行时已重新导入新代码。已装好的配置可用 dsh plugin --profile <配置名> install 核对,正常时输出 Already up to date。
README 还说明:pnpm 在特定条件下对已缓存的 Release 地址可能报 ERR_PNPM_MISSING_TARBALL_INTEGRITY;受影响时可先下载 tgz 再 add "file:..." 本地路径安装,详见仓库 README「安装」一节。
典型用法¶
经过上面的安装与重启,在任意已选工作区的会话中:
- 在输入框写好要延迟发送的纯文本 prompt。
- 点时钟图标,设好小时、分钟(至少合计 1 分钟)。
- 用原发送方式确认入队,在输入框上方查看倒计时与队列项。
- 需要时可编辑文案、勾选重新计延迟、立即发送或取消;到期后消息进入 DSH 正常发送队列。
新会话同样可在首条消息上直接使用上述流程,无需先发一条即时消息。
适用场景与注意¶
适合:希望在同一 DSH 会话内「写好后定时投递」、又不想走 Schedule / 自动化任务链路的开发者;需要在侧栏一眼看到哪些会话还有待发延迟消息的场景。
注意:
- 依赖 DSH 主进程持续运行与文档所述版本行为;其他 DSH 版本需自行对照 README 重新验证。
- 「立即发送成功」表示会话确认接收,不表示 AI 已完成执行。
- 插件以当前 DSH 进程权限访问存储与会话 API;安装前请审阅 源码 与 MIT 许可证。
- 开发阶段不读取、不迁移、不清理旧版 Schedule 数据;本插件路径与 Schedule 无关。
结尾¶
dsh-wait-minute 把「延迟发送」收敛为会话内的持久化 outbox:设置时分、队列管理、侧栏状态与到期后的普通排队发送,并与 Schedule 解耦。若要在 DSH 里试装,可从 SkillHub 目录页进入说明,或直接在对应 profile 下安装 Release 中的 dsh-wait-minute-1.0.2.tgz。