Deadline Pulse:DSH 会话标题栏里的截止倒计时

前言

在 DSH 里长时间开多个会话时,截止日期往往散落在对话记录或本地笔记里,切回某个任务前很难一眼看到「还剩多久」。Deadline Pulse 把倒计时做成会话标题栏右侧的胶囊,并支持多 deadline 冲突检测与通过代理改期;数据落在全局 JSON,所有会话共享同一份列表。

下面介绍插件定位、能力、安装与典型用法。事实以 GitHub 仓库 README 为准。

这是什么

Deadline Pulse(npm 包名 @wjw0419/deadline-pulse,当前 package.json 版本 1.2.1)由维护者 wjw0419 发布,在 SkillHub 目录中归类为「记忆」。一句话:在 DSH Web 会话标题栏展示截止倒计时胶囊,离 due 越近视觉越醒目;v1.1 起增加多 deadline 准备窗口冲突检测与重新调度,并可通过自然语言让代理调用 deadline_tool 维护数据。

插件以 DSH 进程权限读写 ~/.dsh/deadline-pulse/deadlines.json,安装前建议自行查看源码与 MIT 许可证。

核心功能

标题栏倒计时与分级提醒

  • 标题栏右侧常驻倒计时胶囊,每秒刷新,等宽数字显示。
  • 剩余 ≤1 天(含已过期):呼吸光晕与摆动动画。
  • ≤3 天:脉冲动画。
  • ≤7 天 与 >7 天:默认仅在展开面板中可见(胶囊在展开面板中仍可查看完整列表)。
  • 每个胶囊带环形进度,表示已消耗的时间比例。
  • 点击胶囊展开面板:颜色点、标签、备注、预估工时、进度条,以及已完成分区。
  • 当某条 deadline 跨过 3 天 或 24 小时 阈值时,页面内会下滑 toast(约 5 秒自动消失);已在临界状态的条目在仅页面加载时不会重复 toast。

冲突检测与重新调度(v1.1+)

  • conflicts:扫描所有未完成的 deadline,检测准备窗口是否重叠。
  • 严重度:
  • High:同一天 due 且准备窗口重叠。
  • Medium:不同天 due 但准备窗口重叠。
  • Low:同一天 due 但准备窗口不重叠。
  • 准备窗口定义为 [due - effort, due];未设置 effort 时默认按 2 小时 估算。
  • 面板内「冲突检测」按钮触发检测,结果内联展示,并提供改期快捷入口。
  • reschedule:修改 due(可选同时改 effort);可从面板行、冲突结果卡片或自然语言发起;若此前跑过冲突检测,改期后会自动刷新检测结果。

代理与自然语言

代理通过 deadline_tool 支持:add / list / done / remove / conflicts / reschedule,写入同一 deadlines.json。

热更新与无障碍

手动编辑 JSON 后,UI 约 15 秒内同步;窗口重新获得焦点时可立即刷新。系统开启 prefers-reduced-motion 时,脉冲与摆动动画关闭,仅保留颜色状态。

安装与启用

命令行(推荐发布包)

指定你的 DSH profile 后执行:

dsh plugin --profile <your-profile> add @wjw0419/deadline-pulse

本地目录尚未发布到 npm 时,可用绝对路径:

dsh plugin --profile <your-profile> add "file:<absolute-path-to>/deadline-pulse"

通过 DSH 代理安装本地 bundle

在任意 DSH 会话中对代理说明使用 plugin_manager 的 install_bundle,目标为本地插件目录的绝对路径,例如:

plugin_manager { action: "install_bundle", target: "<absolute-path-to>/deadline-pulse" }

安装返回 application: applied 后,刷新浏览器(F5) 以加载客户端模块。

卸载时可对代理说:用 plugin_manager 移除 @local/deadline-pulse;deadlines.json 会保留。

典型用法

方式一:对代理说话

"帮我记一个截止日期:周五 18:00 交插件作业,标签'课程',预估 4 小时"
"看看我现在有哪些截止日期"
"检查一下我的截止日期有没有冲突"
"把英语演讲比赛调整到下周一"
"英语演讲比赛那个截止日完成了"
"把'坏数据测试'那条删掉"

方式二:编辑 deadlines.json

创建或编辑 ~/.dsh/deadline-pulse/deadlines.json:

{
  "deadlines": [
    { "title": "提交插件作业", "due": "2026-02-10 18:00", "tag": "课程", "note": "含演示视频", "effort": 4, "done": false },
    { "title": "英语演讲比赛", "due": "2026-02-10 15:00", "tag": "社团", "effort": 3, "done": false }
  ]
}

字段说明(README 原文):

  • due 支持 "2026-02-10 18:00"、"2026-02-10"(视为当天 23:59)或 ISO 格式。
  • tag、note、effort、done、created 均为可选。

JSON 格式错误时插件不会崩溃:面板显示红色 parse failed,并保留上一次成功解析的数据。

适用场景与注意

适合谁: 需要在 DSH Web 界面里常驻看到多个项目/课程 deadline、并希望在任务堆叠时用准备窗口做简单冲突检查的用户。

务必注意:

  1. 数据全局共享于 ~/.dsh/deadline-pulse/deadlines.json,与具体会话无关。
  2. 冲突检测至少需要 2 条未完成的 deadline。
  3. 插件在 DSH 生态中按「一切皆插件」方式分发;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
  4. 安装与运行等同于信任维护者代码在本机 DSH 环境内执行;安装前请阅读仓库源码与许可证。

链接

  • 目录页:https://www.skillhub.cn/plugins/wjw0419/-deadline-pulse
  • GitHub:https://github.com/wjw0419/-deadline-pulse

经过上面的步骤,你可以在会话标题栏直接感知截止压力,并用冲突检测与改期减少同一时间段内多条任务抢准备窗口的情况。

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

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

Xiaoye