dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
按自定义作息定时提醒喝水、起身、护眼和拉伸,带每日与近 7/30 天统计,以及多套可随时切换的提醒方案。
给 DSH 桌面端用的健康提醒插件:上班时段里按固定间隔提醒你喝水、起身动一动、看看远处、拉伸一下, 顺带记录每日完成情况与连续达标天数,还能把整套提醒配置存成多套方案(作息 + 每类的间隔 / 目标 / 开关 + 提醒方式), 随时切换、复制、改名、删除。
提醒时刻只由作息决定:每个开启的提醒类型各自从上班时间起,按自己的间隔排队(第一个点 = 上班时间 + 1 个间隔), 落在午休、免打扰、非上班日上的点直接丢掉,不补。
「试一下提醒(不计入)」是演练:只弹卡片 / 系统通知 / 提示音,带 test 标记,
不写记录、不参与统计、也不会存进本地状态。
| 位置 | 内容 |
|---|---|
| 侧边栏图标 | 水滴 + 一道水纹;点开进入主面板 |
| 主面板 · 今日 | 下一次各类型提醒倒计时、完成按钮、今日进度条、连续达标与近 7 天柱状图、今日记录 |
| 主面板 · 报告 | 近 7 天 / 近 30 天趋势、每类累计、导出 JSON / CSV 与导入 |
| 主面板 · 设置 | 总开关、上班日与时段、午休、免打扰、每个提醒类型的参数、提醒方式(含音量 / 音色 / 全屏静音)、快捷操作、数据清理 |
| 主面板 · 方案 | 把整套提醒配置存成多套方案(作息 + 每类的间隔 / 目标 / 开关 + 提醒方式):照当前设置新建、随时切换、编辑、重命名、复制、删除;只存配置不存统计 |
| 全局横幅 | 到点时浮在界面顶部(任何面板下都可见):完成 / 10 分钟后再提醒 / 跳过这次 / 今天不再提醒 |
| 会话输入框 | 输入 /health 直接打开面板并展开底部快捷卡片;面板「今日」页有「复制今日小结」 |
「方案」页把一整套提醒配置存成一份快照:上班日与时段、午休、免打扰、每个提醒类型的间隔 / 目标 / 开关、提醒方式。方案只存配置,不存统计——切换方案不会动你的记录。快照也包含总开关:关着提醒时保存的方案,应用它之后提醒仍然是关着的。
第一次升级上来(本地存的还是旧结构)会自动兜一份「默认方案」;要是你把方案全删光了,它不会自己再冒出来。
「报告」页签里可以直接看到:
同步走文件,不依赖账号也不联网:
dsh-health-reminder/export,文件名是 health-reminder-<日期>.json),
在另一台设备上「报告 → 导入」即可;DSH 没有给插件提供账号级的云端 KV(插件能拿到的存储只在本机渲染进程里,不跨设备同步), 所以这里用「导出 / 导入文件」代替账号同步:一份文件就是一次快照,设备之间自己搬。
/health:打开健康提醒面板,并把输入区底部的快捷卡片展开,直接就能记录、推迟或暂停。这是一条
裸命令(不发送消息、不占对话轮次),所以不会在会话记录里留下痕迹。已安装进 desktop profile:profile 的 package.json 里有一条
"dsh-health-reminder": "link:C:/Users/Lenovo/Documents/deepseek-harness/default-workspace/dsh-health-reminder",
dsh.profile.bundles 里也包含了 dsh-health-reminder,因此重启 DSH 客户端后侧边栏就会出现「健康提醒」。
卸载:
dsh plugin --profile desktop remove dsh-health-reminder
因为装的是
link:,改完本目录里的client.js或index.js只需完全重启客户端即可生效(不需要重新安装)。
这是一个 DSH 插件,需要装进 profile 才会被桌面端加载。推荐用插件管理器/CLI 安装(会同时写入
package.json、cordis.patch.yml 与 lockfile,不要手改这几个文件,管理器会覆盖):
# 本地目录安装(link:),profile 名按你的桌面端取值(这里通常是 desktop)
dsh plugin --profile desktop add link:C:\Users\Lenovo\Documents\deepseek-harness\default-workspace\dsh-health-reminder
装完后重启 DSH 客户端(或按提示刷新)即可在侧边栏看到图标。
首次使用系统通知时,浏览器/Electron 会询问通知权限——在「设置 → 提醒方式」里点「请求权限」, 也可以先用「测试系统通知」「测试提示音」确认效果。若权限被拒,仍会走应用内提示卡与提示音。
不需要 DSH、不需要浏览器,伪造宿主模块加载器与 localStorage 后直接跑:
node test/run-tests.mjs
覆盖:时间工具(HH:MM 解析、时段判定、时长文案)、固定时刻表(daySlots 排队、午休/免打扰跳点、
迟到窗口、不重复提醒)、暂停不重置也不补发、完成/跳过/手动记录不动时刻表、推迟只覆盖一次、今日免打扰顺延到下一个上班日、
演练不落盘不计数、旧状态迁移、提醒类型表(默认开关、间隔与目标上下限、v2 的 settings.water/stand 迁移、
已去掉的番茄类型不会复活)、
连续达标与 7 天统计、报告(近 7 天 / 30 天合计、达标天数、最长连续、每类累计——在册的每一类都算,
护眼 / 拉伸这类后加的类型不会漏统计)、
导出 / 导入(格式校验、按天取较大值、日志去重、设置可选覆盖)与 CSV、提示音音色与音量、全屏静音、
多方案(照当前设置新建并切成当前、自动命名与长度上限、切换方案时设置与计时一起换而统计不动、
保存到方案覆盖快照 / 恢复方案退回快照、重命名 / 复制 / 删除、读盘时丢坏项与重复 id、
老状态自动兜一份「默认方案」而显式空数组不兜、编辑弹窗只写回这一份且编辑当前方案保存后立刻生效、
应用方案原样套用快照里的总开关、方案名上限和落库一致)、
宿主半区(只依赖 webServer、一条只读探针路由、GET / HEAD 报名字与版本、其他方法 405、缺服务时不抛错)、
设置归一化与持久化、五个席位注册容错、两个设置入口同源与面板滚动容器、危险操作必先弹确认(取消不动数据)、
方案页的新建 / 覆盖 / 恢复 / 删除都先确认、/health 裸命令与今日小结文本、界面跟随主题(不用原生下拉,用自绘分段按钮)、
每类数字输入框的上限就是真正的上限(不给出会被无声裁剪的值)、
以及对界面组件的一次「渲染不抛错」冒烟测试加关键交互
(点按钮 → 弹确认 → 取消/确认两条路径;方案页的新建 / 应用 / 重命名 / 删除 / 编辑弹窗;报告页签的导出 / 导入入口;
浮层席位缺席时方案编辑弹窗改挂在面板里;「测试系统通知」在没有权限 / 环境不支持时会说出原因)。
当前 70/70 通过(node test/run-tests.mjs,不需要 DSH)。
dsh-health-reminder/
├─ package.json 插件清单(dsh.engines / bundle.patch / client)
├─ cordis.patch.yml 把插件挂进 profile 的 patch 行
├─ index.js 宿主半区:只读探针 GET /health-reminder/status(不加载模型、不读数据)
├─ client.js 全部界面与纯逻辑(宿主模块加载器包装,手写 ESM,无需构建)
├─ icon.svg 侧边栏 / 面板入口的图标
├─ design-notes.md 设计说明:配置模型、判定逻辑、多套方案、文案池
├─ LICENSE BSD-3-Clause
└─ test/run-tests.mjs 离线自测(70 项)
--dsw-*),浅色 / 深色跟着宿主走;宿主没定义某个 token 时退回插件里的兜底色。
音色这类 2~4 个固定选项刻意不用原生 <select>——它的选项弹层由系统绘制,深色主题下会变成一块白底。/health 依赖桌面端提供的命令服务(@deepseek-ai/dsh-client-ui-commands);缺包时只影响这一个入口,
其余功能照常。插件对外只有 /health 一条命令,
不会顶掉或改写 DSH 自己的命令(名字冲突时注册失败并只打一条警告)。GET /health-reminder/status(报插件名字与版本;不加载模型、不读你的数据),
只是给「插件到底装上没有」留个排查入口。改完 index.js 必须完全重启桌面端才生效(只刷新窗口不够);
探针没挂上(profile 没加载 index.js、宿主没提供 webServer)也不影响任何提醒功能。