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