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 目錄頁。

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

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

小夜