前言¶
在 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 中的条件表:
- Windows + WSL2,或 Linux / macOS(Windows 下插件经
wsl.exe调 WSL 内 Python;配置路径须为 WSL 内部路径,不能写C:\...)。 - Python 3.11+(上游 bridge 要求)。
- DSH 桌面版,且会把插件挂进 profile 的
dsh.profile.bundles。 - 小米账号在 cn 区,手环数据已上云(Mi Fitness App 能看到当日步数)。
- 能取得
userId/passToken并导入系统 keyring(见下文「凭证」)。 - 在本机插件目录维护
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 目录页。