Skip to main content
H

dsh-fitness

hardlic/dsh-fitness

Workout logging plugin: a fitness_log agent tool (log, history, stats, weekly plans) storing data in local SQLite; the repo also ships a separate optional left-rail panel bundle under ui/.

Install

dsh plugin --profile web add github:hardlic/dsh-fitness

README

dsh-fitness 🏋️

DeepSeek Harness 生态插件:在你的 AI 助手里加一套健身打卡能力——Agent 工具(fitness_log)+ 左侧栏可视化画报面板。本地优先,不联网、无账号,数据存本机 SQLite。

DeepSeek Harness(DSH)是一个可扩展的本地 AI 工作台:插件以 bundle 形式安装,向 Agent 注册工具、向网页注册界面。dsh-fitness 就是这样一个 bundle——装进 DSH 后,你的助手(含接入 LLM 的任意 Agent)就能替你做健身记录和统计,网页左侧栏还会长出一个「健身」画报页。

DSH 生态里的位置

  DeepSeek Harness
   ├─ 会话 / 工作区 / 记忆 / 日程 ……        ← DSH 本体能力
   ├─ 第三方插件(可选生态)                 ← 你装的一个个 bundle
   │   ├─ dsh-fitness   ← 本插件
   │   │     ├─ Agent 工具:fitness_log(记/查/统计/计划)
   │   │     └─ Web 面板:健身画报(ui/)
   │   ├─ 其他插件(QQ 助手、语音、日历……)  ← 可与本插件共存
   │   └─ ……
   └─ 数据目录 $DSH_HOME
         └─ dsh-fitness/fitness.sqlite      ← 本插件的数据(只在你机器上)

功能

一、Agent 工具 fitness_log

装了本插件,你的助手就拥有 8 个健身动作(同一个工具的 8 种 action):

action能做什么示例说法
log记录一次训练:动作、组数、每组次数、重量、日期、备注「记一下,卧推 4组 8次 60公斤」
today查看今天的训练记录「今天我练了啥?」
history按动作/天数查历史「深蹲最近两周是多少重量?」
stats周报:总组数、总容量(组数×次数×重量)、各动作容量榜「这周练得怎么样?」
plan_add新建训练计划:计划名、星期几、动作列表(组×次@重量)「帮我建个周一练胸日:卧推4组8次60公斤、夹胸3组12次」
plan_list列出所有计划「我的训练计划都有什么?」
plan_remove删除计划「删掉计划 3」
plan_today今天该练什么 + 完成对照(哪些动作还差几组)「今天该练什么?」

工具对 Agent 使用标准 JSON Schema 声明,任何接入 DSH 的模型都能正确调用;返回结构化 JSON(训练记录/统计/计划),助手可自然地转述给你。

二、健身画报(左侧栏 Web 面板,ui/)v0.3

围绕本地单机训练记录的实际需求设计:

  • 周历条:周一~周日 + 日期 + 当天容量,今天高亮;点任意日期切换查看;‹ › 可前后翻周(浏览任意历史周),「回今天」一键返回
  • 任意日期详情:选中的那天不管是上周还是上个月,都能看到当天计划对照与全部记录;非当日在面板补录(记录 变 补录),打卡按钮仅今天出现
  • 连续打卡:🔥 N 天(从今天或昨天往前连续有记录的天数)
  • 时间轴:选中日的计划项(⭕/✅ + 一键「打卡」)与已记录动作(组×次@kg + ✕ 撤销)
  • 训练流水:近 30 / 90 / 365 天按天分组列表(动作 + 条数 + 当天容量),点一行直接跳到那天
  • 快速记录:动作 + 4x8@60 / 12,10,8@40 一行写入,不必开聊天
  • 本周概览:训练天数 / 总组数 / 总容量 / 本周打卡 X/7(翻到历史周时显示该周)
  • 训练计划、动作榜、健身建议(保留)
  • 面板自带窄写接口(quick-log / check-item / unlog),与 fitness_log 工具共用同一 SQLite

安装后在左侧插件栏生成「健身」图标,点开即可使用。旧版只读看板说明如下(v0.1 形态):

  • 统计卡片:近 7/30/90 天训练天数、总组数、总容量(吨)
  • 训练计划:全部计划列表,今天该练的计划高亮「今天」
  • 今日计划对照:每个动作 ✅ 完成 / ⭕ 已 X 组;没安排时提示「休息日」
  • 今日训练:今天每条记录(动作、组×次@kg、备注、单条容量)
  • 动作榜:近 N 天各动作容量排名
  • 训练历史:按天分组,显示当天练了什么 + 当天容量
  • 健身建议(根据你的真实数据动态生成):
    • 训练频率:本周 0 练提醒从 30 分钟开始;连练 ≥6 天提醒安排休息日
    • 计划完成度:今天还差几组
    • 动作休眠:某动作 ≥10 天没练,提醒别掉队
    • 部位平衡:近两周缺推/拉/腿哪一类
    • 容量趋势:本周 vs 上周容量变化(涨/跌超 20% 给对应提醒)
    • 常驻原则:渐进超负荷、蛋白质与睡眠建议

面板只读数据库;记录仍通过 fitness_log 工具(聊天里说一句话即可),避免两边写冲突。

安装

前置:已安装 DeepSeek Harness,并有可用的插件管理器(plugin_manager)。

git clone https://github.com/hardlic/dsh-fitness.git

然后在 DSH 里安装本插件(任选其一):

  • 让助手执行:plugin_manager install_bundle target=<克隆目录>
  • 或 DSH 的插件页面「添加插件」选择本地目录

安装画报面板(可选,同一个仓库的 ui/):plugin_manager install_bundle target=<克隆目录>/ui

npm 渠道:dsh-fitness 名字已被他人占用,本项目发布名为 @hardlic/dsh-fitness(发布后可用 dsh plugin add @hardlic/dsh-fitness)。

使用流程

  1. 练习结束,对助手(或接入了 DSH 的 QQ 机器人)说:「记一下,深蹲 4组 8次 80公斤」
  2. 第二天问:「今天该练什么?」——助手按计划对照完成度回答
  3. 打开网页左侧栏「健身」,看统计、历史、动作榜和建议

数据与隐私

  • 全部数据存本机:$DSH_HOME/dsh-fitness/fitness.sqlite($DSH_HOME 默认 ~/.dsh)
  • 表:sets(训练记录)、plans(训练计划)
  • 不联网、无账号、无遥测;删除文件即清空全部数据

架构

  • 根目录 = 插件包:lib/index.js 导出 Cordis 插件 apply(ctx),通过 ctx.inject(['tools']) 注册 fitness_log;node:sqlite 的 DatabaseSync 存储数据
  • ui/ = 画报包:宿主半 index.js 用只读 SQLite 连接把数据聚合为一个 HTTP 接口(/fitness-panel/api/data);浏览器半 client.js 注册到 DSH 的 main 与 sidebar.panellist 插槽渲染
  • cordis.patch.yml:向 DSH 的 Loader 插入插件行,安装即生效,卸载即移除

开发

node --test test/smoke.mjs   # 插件冒烟测试(会创建/清理临时库)
node --check ui/index.js     # 画报宿主半语法检查

CI:GitHub Actions 在每次 push / PR 跑上述检查。

License

MIT © hardlic

更新记录

v0.3.1

  • 历史浏览:周历条新增 ‹ › 翻周(可回到任意历史周,下一周到本周为止)与「回今天」按钮——过了一周也能回看之前的训练
  • 任意日期详情:/data 支持 date / anchor 参数,选中日的计划对照与记录直接查库,不再受 30 天窗口限制;过去的日子可补录(快速记录自动带日期)
  • 训练流水:日程页新增「近 N 天训练流水」卡片(按天分组:动作列表 + 条数 + 容量),点一行跳到那天;范围 30 / 90 / 365 天一键切换
  • 非今日隐藏「打卡」按钮(补录用快速记录),统计卡「本周打卡」在历史周显示为「该周打卡」
  • 新增测试 test/panel-history.mjs(任意日期 / 任意周 / 无效参数回退)

v0.3.0

  • 训练计划页:「日程 / 训练计划」双页签;计划可在面板内新建、编辑、删除(名称、星期、动作行:组/次/kg),不再只能靠聊天
  • 交互动画:页签下划线动画、卡片渐入、日期 chip 弹性反馈、打卡勾选弹出动画、进度条缓动、操作结果 toast 提示
  • 交互优化:每个计划支持「全部打卡」一键写入;今日进度条(完成 x/y)实时更新;输入框聚焦高亮与回车提交;删除计划二次确认
  • 计划写接口:/plan-add、/plan-update、/plan-remove

v0.2.2

  • 适配 DSH 面板布局规范:root 自适应滚动(overflow:auto)、max-width 1040、13px 正文、640px 响应式两列
  • 修复文字被裁剪:内容不再被截断,长文案自动换行;周历条改弹性布局
  • 字号恢复为 DSH 常规(12~13.5px),统计数字放大,按钮 13px

v0.2.1

  • 修正画报显示逻辑:同一动作不再出现「计划行 + 记录行」两行,改为一行一事项(已完成项直接带实际组次与完成时间)
  • 分「待完成 / 已完成」两段展示
  • 时间轴显示完成时间(来自记录 createdAt)
  • 布局适配 DSH 窄侧栏:紧凑行高、缩小卡片内边距、周历条「今」字 chip

v0.2.0

  • 画报面板重构为「日程」形态:周历条、连续打卡(streak)、时间轴打卡
  • 面板可直接记录 / 一键打卡 / 撤销(新增 quick-log、check-item、unlog 接口)
  • 本周概览(训练天数、组数、容量、X/7)
  • 只做本地训练记录需要的功能,不做会员 / 社交 / 三环(没有手环数据源)
  • 插件的 fitness_log 工具不变,两侧共用 fitness.sqlite

v0.1.0

  • 首发:fitness_log 工具 + 左侧栏画报(只读)+ MIT 发布

Related plugins