dsh-water-reminder:在 DeepSeek Harness 里用随机节奏提醒喝水

前言

在 DeepSeek Harness(DSH)里长时间写代码、调智能体时,很容易一两个小时不碰杯子。系统日历或固定整点提醒往往很快被关掉——规律太可预测,大脑会自动忽略。社区插件 dsh-water-reminder(维护者 Smallballoons01,npm 包名 @dsh-plugin/water-reminder,当前版本 0.3.0)把「喝水提醒」做成 Harness 内的一等公民:会话存活期间每 40–60 分钟随机 抽一次间隔,并通过三条互不依赖的通道同时触达;少看一条,另外两条仍可能生效。

下面介绍它是什么、能做什么,以及如何安装与配置。

这是什么

dsh-water-reminder 是面向 DeepSeek Harness 的 hydration reminder 插件:零运行时依赖(Harness 在运行时提供 @deepseek-ai/dsh-tools 等 peer 依赖),在 Web profile 下提供侧边栏倒计时、设置页,以及内嵌的 hydration-coach skill。

插件在 SkillHub 社区目录中的分类为「趣味换装」;GitHub 仓库 Smallballoons01/dsh-water-reminder 采用 MIT 许可证,要求 Node.js ≥ 20。开发目标 Harness 版本为 0.2.1-alpha.4 一带(README 安装说明提到 DeepSeek Harness ≥ 0.2.1-alpha.3 且开启热重载时,代码更新可不必重启)。

为什么用 40–60 分钟随机

README 说明:固定周期容易让人养成「到点关提醒」的习惯;每次提醒结束后从 [intervalMinMinutes, intervalMaxMinutes] 重新随机抽取下一次间隔,节奏不可预测,目的是降低被忽略的概率。默认区间为 40–60 分钟,可在配置中修改(有效范围会被钳制在 5–720 分钟)。

核心功能

三条提醒通道

通道 落地方式 依赖
操作系统通知 macOS 用 osascript,Windows 用 WinRT toast,Linux 用 notify-send ctx.subprocess(dsh-base 提供)
会话内轻推 向每个 live root session 注入插件消息,助手用一句话提醒 agents 服务
浏览器通知 侧边栏面板监听 reminderSeq,标签页自行弹出通知 页面打开 + 用户授权

另有一条 侧边栏倒计时面板、设置页,以及嵌入的 hydration-coach skill(见下文)。

Agent 工具

工具 用途
water_status 当日摄入、剩余量、杯数、目标 streak、当前区间、静默时段、下次提醒、7 日序列(工具输出为紧凑单行文本,不含嵌套数组)
water_log 记录一杯(默认按配置的杯容量;可传 milliliters、note);仅追加,不去重
water_snooze 推迟下次提醒,默认 5 分钟
water_control start / stop / set-band / set-goal / remind-now / reset

water_control 把运行时覆盖写入状态文件,不直接改 profile 配置;reset 清除覆盖并回到配置默认值。

Web 界面

  • 侧边栏底部 💧 按钮:显示距离下次提醒的倒计时(关闭时显示 Paused,达标显示 ✅);面板含当日进度条、杯数/streak/区间、下次提醒、7 日柱状图、+250ml 记录、snooze、立即提醒、暂停/恢复,以及申请浏览器通知权限的控件。
  • 设置页:区间、目标、静默时段、通道等完整表单;写入 $DSH_HOME/settings.yaml 并热重载;改区间或静默时段会立即重新 arm 定时器。

标记为「(restart)」的 promptSection、skill 在加载时读取,变更后需重载 Harness。

hydration-coach skill

同一套说明有两种交付方式:

  1. 运行时注册:挂载时 ctx.skills.register(),模型在 skill 目录中看到 hydration-coach,无需文件系统 skill 根目录。
  2. 磁盘副本:skills/hydration-coach/SKILL.md,供使用 ~/.dsh/skills 等路径的部署。

skill.js 为单一事实来源;npm test 校验 SKILL.md 与嵌入正文逐字节一致。编辑正文后需执行 npm run skill。

skill 约定:收到提醒时助手只说一句短话、不展开健康说教、不打断当前任务;记录规则、如何调节奏、按体重粗估目标(30 ml × kg)、语气与安全边界(不做医疗宣称)。

提醒循环行为(摘要)

  • 状态保存在 $DSH_HOME/water-reminder.json(默认,可配置 stateFile),通过临时文件再 rename 写入,避免崩溃截断。
  • 重启后不补发积压:过期的 nextDueAt 会重新随机间隔,而不是一次性补所有错过的提醒。
  • 静默时段内若抽到提醒,推迟到窗口结束,而不是在窗口内重抽。
  • remind-now 只发一次,不重置 pending 的下次提醒节奏。
  • 卸载插件时会等待已排队的状态写入完成;定时器 unref(),不会单独拖住进程。

安装与启用

官方 README 给出的安装方式如下(需 DeepSeek Harness ≥ 0.2.1-alpha.3;安装后重载 harness;全新安装或切换 promptSection / skill 时需重启 dsh web):

# 本地 checkout(会写入 profile 的 package.json 与 dsh.profile.bundles)
dsh plugin --profile web add link:/path/to/water_reminder

# 或从打包的 tarball
pnpm pack && dsh plugin --profile web add ./dsh-plugin-water-reminder-$(node -p "require('./package.json').version").tgz

注意:

  • 同一 profile 里不要保留两条 water-reminder 记录——每条都会启动独立定时器并注册 /water/api 前缀路由,重复路由会导致整棵插件树无法启动。
  • 用 dsh … --from-default-profile 重建 profile 会替换该 profile(含插件列表),之后需重新添加本插件。

配置

在 profile 的 cordis.patch.yml 中覆盖(插件自带默认 cordis.patch.yml;用户 patch 会替换整个 entry config,改一项时要写全仍需保留的字段):

字段 类型 默认 含义
enabled boolean true 启动时是否运行循环
intervalMinMinutes number 40 随机区间下限(分钟)
intervalMaxMinutes number 60 随机区间上限(分钟)
dailyGoalMl number 2000 每日目标(ml)
cupMl number 250 一杯默认毫升数
snoozeMinutes number 5 water_snooze 默认推迟分钟
quietHours.enabled boolean false 是否启用本地时间静默窗口
quietHours.from / .to string 22:00 / 08:00 窗口(可跨午夜)
notify.os boolean true 操作系统通知
notify.agent boolean true 会话内轻推
notify.sound boolean true OS 通知是否带声音
stateFile string $DSH_HOME/water-reminder.json 持久化状态路径
promptSection boolean true 是否向 system prompt 注入提醒简报
skill boolean true 是否注册 hydration-coach skill

区间、目标、杯容量分别有 [5, 720] 分钟、[200, 20000] ml、[50, 2000] ml 的钳制。

典型用法

  1. 按上文命令把插件加入 web profile 并重载 / 重启 Harness。
  2. 打开 Web 界面,在侧边栏 💧 面板查看倒计时与当日进度;需要浏览器通知时,在面板内用 🔔 控件完成用户手势授权。
  3. 在对话中让助手调用 water_log 记一杯,或 water_status 查看进度;想推迟时用 water_snooze,想立刻提醒一次用 water_control 的 remind-now。
  4. 在设置页调整目标、区间、静默时段与通道;改 promptSection / skill 后按提示重启 dsh web。

适用场景与注意

适合谁:已在本地或团队环境跑 DSH Web、希望长时间结对编程 / 调 agent 时不完全依赖外部闹钟或手机 App 的开发者。

运行与安全:插件以当前 dsh 进程权限 运行,会调用子进程发 OS 通知、读写 $DSH_HOME 下状态与设置。安装前应阅读 仓库源码 与 MIT 许可证,确认符合你的环境策略。

已知限制(来自 README):

  • 提醒仅在 Harness 进程存活 时存在;无邮件、短信或独立 push;进程退出后只有「进程在跑时」的 OS 通道仍可能生效。
  • Windows toast 依赖 WinRT;若 PowerShell 被策略限制,OS 通道可能退化为日志行,另外两通道仍可触发。
  • 浏览器通知需用户手势授权。
  • 7 日序列图表仅在面板展示;water_status 返回紧凑文本。

链接

SkillHub 为社区独立站点,与 DeepSeek / 幻方无官方从属关系;插件以「一切皆插件」的 DSH 生态形式分发,而非官方应用商店内置应用。

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

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

小夜