dsh-later

workflowtested: passnpmMIT

Scheduled reminders and delayed send for DSH: /later delivers what you type as yourself at the time you pick, while the timer panel (or /schedule) posts a reminder row — even with the page closed. (scheduled send / reminders / delayed send)

下载量 / Downloads
3,041
依赖体积 / node_modules
29.06 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-later

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

<div align="center">

<img src="assets/icons/icon-presence-scheduled.svg?v=18" width="64" alt="scheduled"/>

<img src="assets/icons/icon-presence-urgent.svg?v=18" width="64" alt="urgent"/>

<img src="assets/icons/icon-presence-overdue.svg?v=18" width="64" alt="overdue"/>

dsh-later — 会话内定时消息插件

中文 | [English](./README.en.md)

</div>

在 DSH 里给自己设提醒:用户自己设、当前对话收到、服务端驱动、跨设备——到点准时送达,即使你关掉了网页。

/later 延迟发送 —— 不开面板,在输入框敲一行就以你的身份稍后发出(演示:逐字输入 /later +5s / +3m / +1h20m,回车后进入倒计时;+5s 那条到点真实送达):

<p align="center">

<img src="docs/media/docs-later-full.webp" width="760" alt="/later 命令演示:输入 /later +5s 检查部署结果 → 回车 → dock 倒计时 → 到点以你的身份送达"/>

</p>


使用方法

定时面板

点输入框右侧的 「定时发送」 打开面板。面板以输入框内容作为提醒内容,选好时间后点 「加入 · HH:MM 发送」(未选时间时该按钮不可点)即可;输入框上方随即出现倒计时条。

能力 · 说明

快捷芯片 · 10分钟后 / 1小时后 / 工作时间 一键填充(智能时段可在设置里改)

自定义时间 · 「自定义…」展开日期 + 时间输入框

任务列表 · 本会话已设定的任务,可逐条删除

暂停、恢复、改内容、立即发送都不在面板里,在 [待发送 dock](#待发送-dock) 上逐条操作。

时间格式

以下写法都认(/schedule、/later 与面板自定义时间共用;标了「仅 /later /schedule」的写法面板不收):

类型 · 示例

相对时长 · +30m · +1h30m · +90s · +1w · 30分钟后 · 半小时后

当天时刻 · 15:32 · 9点 · 9点半 · 1532

相对日 + 时刻 · 明天9点 · 后天 10:00

日期 + 时刻 · 8月21日 15:32 · 2026-08-21 15:32 · 0821-1532

重复 · 等间隔(仅 /later /schedule) · +1h*3 喝水 · +30m×2 看构建 · 两小时后×3次

重复 · 链式序列(仅 /later /schedule) · +1h+1h+0.5h 盯发布 · +1h +30m 交周报

锚点序列(仅 /later /schedule) · 15:32+16:32+17:32 三会 · 9:00+1d+1d 打卡 · 明天9点+1h

上表三行加粗的都属于 [高级语法(实验性)](#配置),可在设置里一键关闭;其余写法不受开关影响。

只写时刻(如 1532)时,若今天已过会自动顺延到明天(最多 7 天);写了 明天/后天 则按字面理解,该时刻已过会提示改用具体日期;只写月日(如 8月21日)时,今年已过则顺延到明年。

多次写法的规则(首次落在第一个间隔之后):

写法 · 展开成

+1h*3 · t+1h、t+2h、t+3h

+1h+1h+0.5h · t+1h、t+2h、t+2.5h(链式累加,用来写「提前 2h→1h→30m」这类梯度催办)

15:32+16:32+17:32 · 今天 15:32、16:32、17:32(三个挂钟时刻)

23:00+01:00 · 今天 23:00、次日 01:00(后一个时刻更早则自动顺延,规则同单条)

9:00+1d+1d · 连续三天都是 9:00

一次最多 10 条,多次写法的间隔不低于 60 秒(单条不受此限,/later +5s 照旧)。 × x 都认,可跟中文量词(3次),次数后面要留空格。每条都是独立任务:可单独取消、编辑、插话发送(暂停见下表)。

序列里只允许「绝对时刻开头,往后累加」这一个方向:+1h+15:32 会明确报错,不会猜。

锚点序列与相对序列的一处差别(有意为之,不是 bug):

写法 · 落库类型 · 能暂停 · 跨夏令时

+1h*3 / +1h+30m(相对) · after · ✅ · ——

15:32+16:32 / 9:00+1d(锚点) · at · ❌(按钮置灰并说明原因) · ✅ 墙钟不变:9:00+1d 在回拨日相隔 25 小时仍是 9:00,按 86400 秒累加会漂成 8:00

9:00+1d 里的「一天」按日历日推进(不是 86400 秒),所以 +1d3 与 9:00+1d+1d 在有夏令时的时区结果不同——前者按真实秒数、后者按墙钟。落到不存在的墙钟(前拨跳过的那一小时)会报错而不是悄悄挪时刻。绝对时刻(15:32、明天9点)不支持 次数,会明确报错而不是悄悄变成一条。

命令

命令 · 作用

/schedule <时间> <内容> · 创建一条定时提醒(到点出现在对话里)

/later <时间> <内容> · 延迟发送:到点以你的身份发出该内容

/later <时间><次数> <内容> · 同上,展开成 N 条代发(+1h3)

/schedule <时间>+<时间> <内容> · 同上,链式序列展开成 N 条提醒(+1h+30m)

/later <时刻>+<时刻> <内容> · 锚点序列:按挂钟时刻展开(15:32+16:32、9:00+1d+1d)

/schedule 明天9点 提交周报
/later 1532 提醒团队同步进度
/later +1h*3 起来喝水
/later +2h+1h+30m 催我交周报

dock 上的按钮不是私有通道,它们就是 /user-schedule-create -list -delete -edit -pause -resume -steer-now 这几条命令(参数是一段 JSON),手动敲也能用;只是它们按"被点"设计,不面向手打。手敲时需要带载荷:除 -list(无需参数,参数一律忽略)外都要跟一段 JSON,例如 /user-schedule-delete {"id":"schedule-…"};-delete / -pause / -resume / -steer-now 也接受裸 id,/user-schedule-pause schedule-… 与 {"id":"schedule-…"} 等价。

手敲这些命令(连同 /schedule、/later)都是两次回车:第一次回车把整行认领成命令,第二次回车才执行。这是内核「带参数的命令」的统一顺序,不是本插件的额外步骤——内核的命令入参描述里没有「参数可选」这一面,所以一次回车就把整行交出去的话,带参手敲会当成普通聊天消息发给模型。副作用是 /user-schedule-list 从一次回车变成两次:点按钮和面板刷新不受影响,只有手敲这条会觉得多按一下。

带图片 / 文件

/later 可以带附件:先在输入框贴图或拖文件,再敲 /later +10m 看下这张图 回车。到点会连同附件以你的身份发出,消息形状和你手动发「文字 + 图」完全一致。

  • 只有 /later 带附件。/schedule、面板、以及模型调用工具创建的提醒都不带——这是一条安全边界:附件块只能经「你亲手输入」这条可信通道进入代发内容,模型在工具参数里夹带 attachments 一律无效。
  • 多次写法(+1h*3)把同一份附件逐条带到每条任务上,各条仍可单独取消/编辑/插话。
  • dock 行显示的是真缩略图。发出之前,宿主那条「按会话日志授权」的图片通道读不到它(附件还没进日志,这是预期状态),于是走宿主的本地文件路由 GET /api/file 出图;发出之后两条通道都通。若这台宿主的附件后端不落盘,缩略图退化成「发送后可见 + 大小」的标记——那不代表附件丢了,到点照样随消息发出。
  • 每条任务在 dock 上最多渲染 8 个缩略图,超出显示 +N;非图片附件显示成「文件名 + 大小」的 chip。
  • 内核 0.1.2 的内容块里没有 file 变体,非图片附件到点会退成一条 [附件] 文件名 文本(图片块各代次都原样透传)。见[支持的 DSH 内核](#支持的-dsh-内核)。

模型可以直接调用三个用户工具为你创建 / 查询 / 删除提醒(user_schedule_create / user_schedule_list / user_schedule_delete)。改内容、暂停、恢复、立即发送不暴露给模型,它们是 dock 行上的按钮(底层走 /user-schedule-* 命令,只由你亲手点)。无限周期提醒(每 1 小时一直发下去)只有模型这条路:让模型说「每小时提醒我喝水」,它会用 every_seconds 建一条周期任务;周期任务没有结束条件,需要你手动删。

模型还有一份随插件分发的 SKILL.md(技能名 later-reminders)。它常驻在模型的 skill catalog 里,管的是「什么时候该主动给你排一条提醒」和「与内核官方 schedule_create 怎么选」;工具参数规则不写在这里,避免与 schema 两处漂移。这个位点是可选的:宿主的装配里没有 skills 服务时它就不出现,插件其余功能照常。

待发送 dock

输入框上方的倒计时条,每行行尾四个按钮:编辑提醒(就地改内容)、暂停 / 恢复提醒、删除提醒(取消该条)、插话发送(立即推给 agent,不等倒计时;周期任务那一行没有这个按钮)。

暂停只对「再等 N 分钟」这一类(after)且还没到点的提醒开放:按挂钟时刻排的 at 与周期 every 会把按钮置灰,悬停说明原因(已到点的也只能删或发,不能再暂停)。暂停时倒计时与进度条冻结、附件留在条目上;恢复后按剩余时长从恢复那一刻重新排期,触发时刻随之顺延。

⚠️ 「插话发送」不是「确认」,点了会马上把提醒内容发给 agent 并唤醒模型;只想取消请点删除。

侧栏状态标识

有活动提醒的会话,行内会出现像素时钟(与「进行中」orb 并存):

图标 · 含义

<img src="assets/icons/icon-presence-scheduled.svg?v=18" width="28" alt="scheduled"/> · 紫 · 有定时中提醒

<img src="assets/icons/icon-presence-urgent.svg?v=18" width="28" alt="urgent"/> · 琥珀 · 下次触发 ≤ 5 分钟

<img src="assets/icons/icon-presence-overdue.svg?v=18" width="28" alt="overdue"/> · 红 · 已到期(等待会话空闲派发)

鼠标悬停可见「下次 15:32 · 3 条任务」;已到期时显示「已到期 · 3 条任务(等待会话空闲发送)」;全部提醒都暂停时图标仍是紫色,悬停显示「已暂停 · 3 条任务」(暂停项没有排定时刻,所以不报「下次」)。

侧栏行的悬浮卡片里会追加一行状态(「有 3 条定时提醒,下次 15:32」),与宿主自己的 空闲 / 进行中 同构、不改写它们;已到期与已暂停各有一句对应文案。


界面展示

定时面板 —— 快捷时段 / 自定义时间 / 已设定任务列表:

<img src="docs/media/screenshot-panel.png" width="340" alt="定时提醒面板"/>

待发送 dock —— 输入框上方倒计时条(行内编辑 / 取消;下方即输入框):

<img src="docs/media/screenshot-dock.png" width="700" alt="待发送 dock 与输入框"/>

到期真实触发 —— 到点后对话里出现「⏰ 定时提醒」消息(关网页也照常触发):

<img src="docs/media/screenshot-fired.png" width="560" alt="到期提醒消息"/>

动图演示:

创建定时提醒(输入 → 面板 → 加入 → dock) · 到期触发(倒计时 → 收到消息)

<img sr

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::15,最后更新 2026-11-06

Links

GitHub · Homepage · npm

Same category