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.2
设计参考 Keep「日程」页的产品逻辑(周历条 / 时间轴 / 连续打卡 / 洞察建议),只取适合本地单机训练记录的部分:
- 周历条:周一~周日 + 日期 + 当天容量,今天高亮;点任意日期切换查看
- 连续打卡:🔥 N 天(从今天或昨天往前连续有记录的天数)
- 时间轴:选中日的计划项(⭕/✅ + 一键「打卡」)与已记录动作(组×次@kg + ✕ 撤销)
- 快速记录:动作 +
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)。
使用流程
- 练习结束,对助手(或接入了 DSH 的 QQ 机器人)说:「记一下,深蹲 4组 8次 80公斤」
- 第二天问:「今天该练什么?」——助手按计划对照完成度回答
- 打开网页左侧栏「健身」,看统计、历史、动作榜和建议
数据与隐私
- 全部数据存本机:
$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.2.0
- 画报面板重构为「日程」形态:周历条、连续打卡(streak)、时间轴打卡
- 面板可直接记录 / 一键打卡 / 撤销(新增
quick-log、check-item、unlog接口) - 本周概览(训练天数、组数、容量、X/7)
- 设计参考 Keep 日程页的产品逻辑,去掉会员墙 / 社交 / 三环(本插件没有手环数据源)
- 插件的
fitness_log工具不变,两侧共用fitness.sqlite
v0.1.0
- 首发:
fitness_log工具 + 左侧栏画报(只读)+ MIT 发布
No comments yet. Be the first to write one.