前言¶
在 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¶
同一套说明有两种交付方式:
- 运行时注册:挂载时
ctx.skills.register(),模型在 skill 目录中看到hydration-coach,无需文件系统 skill 根目录。 - 磁盘副本:
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 的钳制。
典型用法¶
- 按上文命令把插件加入 web profile 并重载 / 重启 Harness。
- 打开 Web 界面,在侧边栏 💧 面板查看倒计时与当日进度;需要浏览器通知时,在面板内用 🔔 控件完成用户手势授权。
- 在对话中让助手调用
water_log记一杯,或water_status查看进度;想推迟时用water_snooze,想立刻提醒一次用water_control的remind-now。 - 在设置页调整目标、区间、静默时段与通道;改
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返回紧凑文本。
链接¶
- 社区目录页:https://www.skillhub.cn/plugins/Smallballoons01/dsh-water-reminder
- 源码与完整说明:https://github.com/Smallballoons01/dsh-water-reminder
SkillHub 为社区独立站点,与 DeepSeek / 幻方无官方从属关系;插件以「一切皆插件」的 DSH 生态形式分发,而非官方应用商店内置应用。