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 生態形式分發,而非官方應用商店內置應用。

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

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

小夜