dsh-mihealthlink:把小米运动健康接进 DSH 本地记忆

前言

在 DSH 里做 AI 伴侣时,对话往往缺少「你昨天走了多少步、昨晚睡了多久」这类身体状态。手动口述或每次打开 Mi Fitness App 再复制,既费事又难让模型稳定引用。常见做法是写一次性脚本拉云端数据,但和 DSH 工具链、对话上下文是割裂的。

下面介绍社区插件 dsh-mihealthlink(维护者 Tsurukyuha,GitHub:Tsurukyuha/dsh-mihealthlink)。它在 DeepSeek Harness 桌面版中注册一组健康相关工具,把步数、睡眠、心率、血氧、压力等同步到本机 SQLite,便于用自然语言问「我昨晚睡得怎么样」。数据抓取依赖上游 shkyyy18/mi_fitness_data_bridge;本仓库是其上的 DSH 插件壳与命令行脚本封装。不需要 root、不上传数据、不依赖手机端 App——前提是手环数据已同步到小米云端。

这是什么

dsh-mihealthlink 属于 DSH 社区目录中的「记忆」类插件(目录页:skillhub.cn/plugins/Tsurukyuha/dsh-mihealthlink)。封装代码许可为 MIT(package.json 版本 0.2.0);通过命令行调用上游 bridge,不修改其源码(上游 AGPL-3.0)。

插件以 Cordis bundle 形式接入 profile,在 Windows + WSL2 或 Linux / macOS 上通过 Python 3.11+ 调用 bridge,将账号数据写入默认路径 data/mi_fitness.db(可用环境变量 MI_FITNESS_DB_PATH 覆盖)。

核心功能

DSH 工具

README 中注册的工具如下(对话里由模型按需调用):

工具 作用
mi_health_status 体检:配置、凭证、连通性、可用数据类型(只读)
mi_health_sync(days) 同步最近 N 天到本地库(默认 7,幂等)
mi_health_report(json?, days?) 完整日报:活动、睡眠、心率、趋势
mi_health_brief(days?) 一句话总结,省 token
mi_health_nudge(dryRun?, force?) 可选:按阈值检查后通过 SurfCore 控制台向指定 QQ 会话投递后台提醒

mi_health_brief 示例输出形态:

昨天 2859 步,昨晚睡了 7 小时 50 分,心率均值 70.9 bpm。

后台还可按配置每 3 小时自动同步一次(autoSyncHours,设为 0 可关闭)。

本地库内容

同步成功后,SQLite 中可能包含:daily_activity(步数等)、sleep_sessions、heart_rate_samples、spo2_samples / stress_samples、运动与身体成分等表。具体条数取决于设备、固件与账号地区;同步成功但某类为 0 条,通常是设备未上报该类数据。

命令行(不经过对话)

在插件目录的 tools/ 下可独立使用:

tools/check_env.sh            # 自检 + 生成 config.local.json 片段
tools/sync.sh                 # 最近 7 天
tools/sync.sh 30              # 最近 30 天
tools/sync.sh 2026-10-01 2026-11-01
tools/report.sh               # 日报
tools/report.sh --json        # 结构化
tools/report.sh --brief       # 一句话

前置条件

使用前请对照 README 中的条件表:

  1. Windows + WSL2,或 Linux / macOS(Windows 下插件经 wsl.exe 调 WSL 内 Python;配置路径须为 WSL 内部路径,不能写 C:\...)。
  2. Python 3.11+(上游 bridge 要求)。
  3. DSH 桌面版,且会把插件挂进 profile 的 dsh.profile.bundles。
  4. 小米账号在 cn 区,手环数据已上云(Mi Fitness App 能看到当日步数)。
  5. 能取得 userId / passToken 并导入系统 keyring(见下文「凭证」)。
  6. 在本机插件目录维护 config.local.json(绝对路径,勿改会被升级覆盖的 cordis.patch.yml)。

装完 Python 依赖后,可先跑自检:

tools/check_env.sh

退出码 0 表示 Python、bridge、keyring、凭证、数据目录等项通过,并会打印可直接存成 config.local.json 的 JSON。

安装与启用

官方 README 未提供 dsh plugin add github:... 一类命令;接进 DSH 的步骤如下。

1. Python 依赖

cd dsh-mihealthlink/tools
./install.sh

脚本会创建 tools/.venv,安装 mi-fitness-data-bridge(PyPI → 本地源码 → GitHub → 镜像逐级回退),必要时安装 keyrings.alt。中国大陆网络下若 GitHub 回退较慢,可先为终端设置代理,例如:

export https_proxy=http://127.0.0.1:7890

2. 本机路径配置

在插件目录创建 config.local.json(已在 .gitignore,优先级高于占位用的 cordis.patch.yml)。字段示例:

{
  "pythonPath": "/home/alice/mi-fitness/.venv/bin/python",
  "bridgePath": "/home/alice/mi-fitness/.venv/bin/mi-fitness-bridge",
  "reportScript": "/home/alice/dsh-mihealthlink/tools/daily_report.py",
  "dbPath": "/home/alice/dsh-mihealthlink/data/mi_fitness.db"
}

~ 与 $HOME 不会展开;路径错误时工具可能返回 No such file or directory 或 code=-2。建议用 tools/check_env.sh 生成真实路径。

3. 挂进 DSH profile

Windows 示例(将目标路径换成你本机克隆或下载的插件目录):

$prof = "$env:USERPROFILE\.dsh\profiles\desktop"
New-Item -ItemType Junction -Path "$prof\node_modules\dsh-mihealthlink" `
  -Target "E:\AI\projects\dsh-mihealthlink"

在 profile 的 package.json 中:

  • dependencies 增加 "dsh-mihealthlink": "link:E:/AI/projects/dsh-mihealthlink"
  • dsh.profile.bundles 追加 "dsh-mihealthlink"

重启 DSH 后工具应出现在宿主中。

凭证(云端鉴权)

数据从小米云端拉取,需在浏览器登录 account.xiaomi.com,从 Cookie 中取得 userId 与 passToken,写入 tools/credentials.txt:

user_id=你的userId
passToken=你的passToken

然后执行:

tools/import_credentials.sh

脚本会写入 keyring、删除该明文文件并再跑体检;看到连接状态为成功即可。passToken 等同登录凭证,勿提交仓库或贴到聊天;泄露后应退出账号重新登录使旧 token 失效。

典型用法

经过上面的步骤后,在 DSH 对话中可以:

  • 问「健康数据接上了吗」→ 触发 mi_health_status
  • 说「更新一下我的数据」→ mi_health_sync
  • 说「给我看看这周的情况」→ mi_health_report
  • 说「我昨晚睡得怎么样」→ mi_health_brief

可选的 主动关心(默认关闭):开启 nudgeEnabled 等项于 config.local.json,插件会按睡眠、步数、心率阈值检查本地库,并通过 SurfCore 的 127.0.0.1:3100 控制台接口向 QQ 投递提醒;Windows + WSL 场景下 HTTP 投递在 Node 侧完成,避免 WSL 内访问本机 SurfCore 被拒绝。预演与强制发送:

mi_health_nudge
mi_health_nudge force=true

适用场景与注意

适合谁:已用 DSH 桌面版、佩戴小米手环且数据在 cn 区云端可见,希望把运动健康纳入本地记忆与对话的开发者或高级用户。

权限与信任:插件以当前 DSH 进程权限运行;安装前应阅读仓库源码与 MIT 许可。非小米官方项目,使用的是非公开接口,可能失效;自动拉取存在账号风险,需自行评估。健康数据仅作展示与对话上下文,不是医疗建议。

隐私:只读写本账号数据并落本地 SQLite;README 声明不提供上传、分享、云同步;数据库与凭证由本机保管。

已验证环境(作者 README):Windows 11 + WSL2 (Ubuntu 24.04) + Python 3.12,小米手环、账号 cn;其他平台按代码逻辑应可用但未实机验证。

DSH 生态强调「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-mihealthlink 把 Mi Fitness 云端数据同步到本地 SQLite,并在 DSH 中提供体检、同步、日报、简报与可选提醒工具,让伴侣式对话能基于真实步数与睡眠作答。详情与 issue 见 GitHub 仓库,条目索引见 SkillHub 目录页。

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

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

小夜