Garmin Connect 运动健康 AI 教练插件 for DeepSeek Harness
29.8/100
综合分
2
GitHub 星标
55
npm 周下载
—/5
用户评分
数据截至 2026/10/14 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-garmin-coachnpm 源 · dsh-garmin-coach 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-garmin-coach @ 0.2.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 13:51:57
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 38 处,展示前 27 条)
- 发起网络请求lib/auth/client.js:302
return await fetch(url, { ...init, signal: c.signal }); - 删除本地文件lib/auth/file-store.js:32
await unlink(this.tokenPath).catch(() => undefined); - 删除本地文件lib/auth/file-store.js:41
await unlink(this.mfaPath).catch(() => undefined); - 读取本地文件lib/auth/file-store.js:46
if (!existsSync(path)) - 读取本地文件lib/auth/file-store.js:48
const txt = await readFile(path, 'utf8'); - 写入本地文件lib/auth/file-store.js:56
await mkdir(dirname(path), { recursive: true }); - 写入本地文件lib/auth/file-store.js:57
await writeFile(path, JSON.stringify(value, null, 2), 'utf8'); - 写入本地文件lib/auth/file-store.js:59
await chmod(path, mode); - 写入本地文件lib/storage.js:91
await writeFile(testPath, 'perm-test', 'utf8'); - 删除本地文件lib/storage.js:92
await unlink(testPath).catch(() => { }); - 读取本地文件lib/storage.js:156
const raw = await readFile(this.metaPath, 'utf8'); - 读取本地文件lib/storage.js:176
const raw = await readFile(this.activitiesPath, 'utf8'); - 读取本地文件lib/storage.js:214
const raw = await readFile(this.legacyFilePath, 'utf8'); - 写入本地文件lib/storage.js:219
await rename(this.legacyFilePath, bakPath); - 读取本地文件lib/storage.js:241
await readFile(p, 'utf8'); - 写入本地文件lib/storage.js:272
await mkdir(this.dataDir, { recursive: true }); - 写入本地文件lib/storage.js:274
await writeFile(tmp, JSON.stringify(meta, null, 2), 'utf8'); - 写入本地文件lib/storage.js:275
await rename(tmp, this.metaPath); - 写入本地文件lib/storage.js:282
await mkdir(this.dataDir, { recursive: true }); - 删除本地文件lib/storage.js:398
await rm(this.metaPath, { force: true }); - 删除本地文件lib/storage.js:399
await rm(this.activitiesPath, { force: true }); - 读取本地文件lib/storage.js:408
const raw = await readFile(this.planPath, 'utf8'); - 读取本地文件lib/storage.js:453
const files = (await readdir(historyDir)).filter(function (f) { return f.endsWith('.json'); }); - 删除本地文件lib/storage.js:513
await rm(this.planPath, { force: true }); - 读取本地文件lib/logger.js:26
if (!existsSync(logDir)) { - 写入本地文件lib/logger.js:28
mkdirSync(logDir, { recursive: true }); - 写入本地文件lib/logger.js:75
appendFileSync(LOG_PATH, format(level, scope, msg, extra) + '\n', 'utf8');
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-util-values@deepseek-ai/schemastery@deepseek-ai/dsh@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 同步佳明运动数据
- AI生成训练计划
- 运动数据分析
README
由 DeepSeek 最新模型翻译生成Garmin Coach(DSH Garmin 运动 AI 教练)
Garmin Connect 同步 + AI 教练分析 + 训练计划生成 — DeepSeek Harness 插件。
把你的 Garmin 账号连到 DSH,自动同步活动/健康/HRV 数据,AI 基于真实数据给出专业训练建议。
⚠️ 免责声明
本插件通过逆向分析调用 Garmin Connect 的内部接口,使用非佳明官方公开的 client_id 模拟客户端登录。佳明不为第三方使用背书,账号可能因异常登录被限流或封禁。
本插件仅供学习与个人研究使用,请勿用于批量同步他人账号或任何违反佳明《Terms of Service》或所在地区法规的场景。
本插件按 「现状」(AS IS) 提供,作者不承担因以下原因造成的任何损失:
- 佳明账号被封禁、限流或任何处置
- 同步数据丢失、错乱、延迟
- 训练建议 / 训练计划不当造成的健康问题
- 佳明接口改版导致插件不可用
- 你违反佳明 ToS 或所在地法规而产生的法律后果
使用即表示你已理解并接受上述风险。
展开完整文档(README 剩余 1 节)
Garmin Coach(DSH Garmin 运动 AI 教练)
Garmin Connect 同步 + AI 教练分析 + 训练计划生成 — DeepSeek Harness 插件。
把你的 Garmin 账号连到 DSH,自动同步活动/健康/HRV 数据,AI 基于真实数据给出专业训练建议。
⚠️ 免责声明
本插件通过逆向分析调用 Garmin Connect 的内部接口,使用非佳明官方公开的 client_id 模拟客户端登录。佳明不为第三方使用背书,账号可能因异常登录被限流或封禁。
本插件仅供学习与个人研究使用,请勿用于批量同步他人账号或任何违反佳明《Terms of Service》或所在地区法规的场景。
本插件按 「现状」(AS IS) 提供,作者不承担因以下原因造成的任何损失:
- 佳明账号被封禁、限流或任何处置
- 同步数据丢失、错乱、延迟
- 训练建议 / 训练计划不当造成的健康问题
- 佳明接口改版导致插件不可用
- 你违反佳明 ToS 或所在地法规而产生的法律后果
使用即表示你已理解并接受上述风险。
✨ 功能
| 模块 | 内容 |
| 🔐 认证 | CN 账号 + 短信 MFA + DI OAuth2(access token ~1h 自动 refresh) |
| 📊 数据同步 | 增量同步(不重复拉全量),手动触发(防 Garmin 行为指纹检测) |
| 📈 运动看板 | 30+ 分析(距离/配速/心率/HR-Pace/步频/TRIMP/时段/一致性等)|
| 🤖 AI 训练建议 | 规则生成洞察(PB 变化、跑量趋势、步频建议等)|
| 📋 训练计划 | AI 生成结构化计划 + 打卡勾选 + 历史版本/恢复 |
| 📓 训练日记 | 训练后记感受/评分 + 时间线查看 |
| 🔄 AI 工具 | 17 个工具,AI 对话中可直接调用(如"月报"/"训练计划")|
| 💾 持久化 | 数据存 ~/data/(garmin.json + training-plan.json + training-diary.json)|
📦 安装
前置条件
- DSH (DeepSeek Harness) 已安装并运行
- Garmin 账号(支持 CN/国际)
- Node.js 18+
- pnpm(推荐)或 npm
💡 为什么需要手动加 bundles?
DSH 启动时只显式加载 dsh.profile.bundles 列表里的包,不自动扫 node_modules/ 加载所有 dsh-* 包(这是设计:稳定性、隔离性、性能)。所以 pnpm add dsh-garmin-coach 装包后,必须手动加到 bundles——这是 DSH 的工作方式,不是 bug。
DSH 官方推荐用 dshmarket(应用市场)装包——它会自动加 bundles。dsh-garmin-coach 目前还在审核中,临时手动加即可。
一键安装(推荐)
cd ~/.dsh/profiles/web
pnpm add dsh-garmin-coach
装完后还需要把 dsh-garmin-coach 加到 bundles(DSH 启动时只显式加载 bundles 里的包):
方法 1:手动改 package.json
编辑 ~/.dsh/profiles/web/package.json,在 dsh.profile.bundles 列表末尾加:
"dsh": {
"profile": {
"bundles": [
...其他包, "dsh-garmin-coach" ← 加这行 ] } }
方法 2:命令行追加
cd ~/.dsh/profiles/web
node -e "
const fs = require('fs');
const p = JSON.parse(fs.readFileSync('package.json', 'utf8'));
if (!p.dsh.profile.bundles.includes('dsh-garmin-coach')) {
p.dsh.profile.bundles.push('dsh-garmin-coach');
fs.writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n');
}
"
加完后重启 DSH(你自己执行):
ddsh restart
打开 DSH → 设置 → 应该看到 Garmin Coach 卡片。
手动注册(旧方式,不推荐)
在 ~/.dsh/profiles/web/cordis.patch.yml 手动添加(如果不想用 bundles):
- insert:
- id: garmin-coach
name: dsh-garmin-coach
首次配置
1. 打开 DSH 设置 → Garmin Coach
2. 选择账号区域(CN 或 国际)
3. 输入邮箱 + 密码
4. 登录后如需要 MFA,输入短信验证码
5. 点击保存配置
6. 等待几秒,token 会自动保存(加密)
7. 点击立即同步 → 按设置中的"回看天数"拉取(默认 30 天,可在 Garmin Coach 设置页修改)
⚠️ 首次同步后,数据存到 ~/data/garmin.json(macOS/Linux 用户 Home 目录)。Windows 用户在 DSH 启动目录下的 data\garmin.json。
🚀 使用
运动看板
点击侧栏 Garmin Coach → 打开运动看板。
默认显示:
- 运动总览(总距离/次数/时长/配速/最长)
- 健康数据(步数/心率/压力/Body Battery)
- AI 训练建议(💡⚠️🔴)
- 训练计划(折叠)+打卡
- 各项分析 section
最近活动表支持:
- 筛选(按运动类型:跑步/骑行/登山等)
- 排序(按日期/距离/配速/心率)
- + 按钮展开心率区间(Z1恢复/Z2有氧/Z3节奏/Z4阈值/Z5无氧)和运动时间(10:00-11:30)
AI 对话
直接用自然语言提问,AI 自动调用工具:
| 自然语言 | AI 调用 |
| "六月份报告" | garmin_report(month) |
| "我十公里最好成绩" | garmin_best_pace(10000) |
| "本周跑量" | garmin_distance_stats(week) |
| "帮我制定半马破2计划" | garmin_training_plan + garmin_save_training_plan |
| "记录今天的训练:跑了 6km,4星" | garmin_log_diary |
| "我的训练进度" | garmin_plan_progress |
训练计划工作流
对话:"帮我制定 10km 进 5:30 的计划" → AI 调 garmin_training_plan(基于您的基线数据) → AI 生成 4 周计划 + 16 个训练任务 → AI 调 garmin_save_training_plan 保存
打开看板 → 看到训练计划(默认折叠)→ 点 ▶ 展开 → 勾选完成的任务
误操作:AI 误覆盖 → 对话:"找回之前的计划" → AI 调 garmin_plan_history + garmin_restore_plan
⚙️ 配置
账号区域
- CN:sso.garmin.cn(中国账号)
- 国际:sso.garmin.com(其他地区)
数据存储位置
所有数据存到 DSH 用户的 data/ 目录(macOS/Linux 是 Home 目录,Windows 是 DSH 启动目录):
~/data/ # macOS/Linux
%USERPROFILE%\data\ 或 <DSH_cwd>\data\ # Windows ├── garmin.json # meta + daily(同步数据,约 100 KB) ├── garmin-activities.json # activities(约 1.75 MB,单独文件) ├── training-plan.json # 当前训练计划 + 打卡状态 ├── training-diary.json # 训练日记 └── training-plan-history/ # 计划历史(自动备份)
同步策略
- 手动同步(推荐):点击卡片"立即同步"按钮或对话"同步数据"
- 增量:每次只拉上次同步后的新数据(从 lastSyncAt 前一天到今天),但若距上次同步已超过"回看天数"配置,则至少回看该配置值(默认 14 天)
- 防行为指纹:无定时同步(避免被 Garmin 检测为自动化)
⚠️ 重要:文件写入权限
本插件需要把同步数据、训练计划、训练日记写入 ~/data/(macOS/Linux)或 C:\Users\<you>\.dsh\data\(Windows)。
DSH 在沙箱里运行,默认没 full access 权限——会导致:
- 同步数据看起来成功但实际写错地方(或失败丢失)
- 训练计划看板看不到刚保存的内容
- 打卡后重启数据丢失
修复方法(在 DSH 里启用文件写权限):
| 平台 | 步骤 |
| macOS | 第一次写文件时会弹"权限"请求 → 允许"完整文件访问" |
| Windows | DSH 设置 → 沙箱/安全 → 开启「完整文件访问」(full file access) → 重启 DSH |
| Linux | 通常默认有权限;如有问题检查 ~/data/ 目录权限 chmod 755 ~/data |
插件已自带保护:写文件前会探测权限,权限不足时会返回明确错误(包含路径 + 修复方法),而不是静默失败。
🔧 AI 工具列表(17 个)
基础查询(6,src/tools/register.ts)
- garmin_whoami / garmin_daily / garmin_sleep / garmin_hrv
- garmin_activities / garmin_summary
统计与计划(11,src/tools/stats-tools.ts)
- garmin_sync / garmin_recent_activities / garmin_best_pace
- garmin_report / garmin_training_plan / garmin_save_training_plan
- garmin_toggle_task / garmin_plan_progress / garmin_restore_plan
- garmin_log_diary / garmin_diary
🔐 安全
Garmin 账号安全(铁律)
1. 不自动重试登录 — 任何重试必须先经您同意(避免封号)
2. token 自动 refresh — ~28h access token,过期前自动换新
3. refresh 也失效 → 提示重新连接 — 自动清除失效 token
数据隐私
- 所有数据存本地(~/data/),不上传任何服务器
- 密码/email 不持久化到 settings——只在登录时通过 HTTP body 传给后端(DSH 默认监听 127.0.0.1,外部网络拿不到)
- 仅与 Garmin API 通信(直接 HTTPS,无中间服务)
🛠️ 开发
构建
npm install
npm run build # tsc → lib/
npm run typecheck # 类型检查
数据目录
- 开发时 cwd 是插件目录 → 数据存 data/
- DSH 进程 cwd 是用户主目录 → 数据存 ~/data/
- 代码自动用 process.env.HOME/data(统一路径)
项目结构
src/
├── index.ts # 插件主入口(apply/register/工具注册) ├── storage.ts # GarminStoreFile(数据存储 + 3 文件 IO + 计划缓存) ├── sync.ts # 同步逻辑(增量 + 4 端点并行 + 空 daily 过滤) ├── stats.ts # 运动分析 + 报告聚合 + dailyRecent 推送 ├── settings-web.ts # settings route(/garmin-settings) ├── boundary.ts # 错误边界(withBoundary 容错) ├── logger.ts # 日志(落盘到 plugin 日志文件) ├── tools/ │ ├── register.ts # 基础工具(6) │ └── stats-tools.ts # 统计工具(11) ├── auth/ │ ├── client.ts # DI OAuth2 + token refresh │ ├── file-store.ts # 持久化 token/mfa state │ ├── cookie-jar.ts # Set-Cookie 解析 │ ├── token-store.ts # TokenStore 接口 │ ├── types.ts # 类型定义 │ └── constants.ts # CN/国际端点 └── api/ └── queries.ts # 5 端点查询方法(daily/sleep/hrv/readiness/training/activities/summary/whoami)
lib/ # 编译产物 ├── .js + .d.ts └── client.js # 看板前端(手写 React IIFE)
cordis.patch.yml # 注册入口 package.json tsconfig.json
📝 更新日志
见 CHANGELOG.md。
🤝 贡献
欢迎提 issue / PR。建议先开 issue 讨论再改。
📄 License
MIT — 详见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
csustyang/dsh-garmin-coach
Garmin Connect 运动健康 AI 教练插件 for DeepSeek Harness
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这是你的仓库?认领条目