dsh-coros-sport
COROS Sport panel for DeepSeek Harness: sign in to COROS inside the panel, read the account, bound devices, recovery, fitness, recent workouts, daily health and the training schedule in one dashboard, and get a plan from the model with /coros-plan. The plan page writes a fixed four-week, 16-session
Install
dsh plugin --profile web add dsh-coros-sport
Sandbox test
This plugin has not been tested yet. Submit a test →
README
高驰运动 · dsh-coros-sport
在 DeepSeek Harness 桌面端里直接登录高驰(COROS)账号,查看你的设备、运动记录、恢复与体能状态、每日健康数据。
登录在应用窗口内完成 —— 不弹系统浏览器、不跳外部应用、不需要手工粘贴令牌。
当前版本1.0.4。读取全部数据,写能力只有一处:「训练安排 → 详细」里的计划页可以把一份四周跑步计划创建到高驰账号里,写入前会先列出全部 16 节课、标出与已有计划重叠的日期,需要二次确认才真正写。/coros-plan指令生成的新计划只以文本形式返回,不自动写入。
目录
- [功能](#功能)
- [安装](#安装)
- [使用](#使用)
- [训练计划](#训练计划)
- [工作原理](#工作原理)
- [数据与隐私](#数据与隐私)
- [区域](#区域)
- [配置](#配置)
- [故障排查](#故障排查)
- [开发](#开发)
- [许可](#许可)
功能
安装后,桌面端左侧面板列表会出现「高驰运动」入口(位于「插件市场」之后、「自动化任务」之前)。点击进入:
区块 · 内容 · 数据来源(MCP 工具)
账号 · 昵称、性别、身高、体重、生日 · queryUserInfo
设备 · 绑定的高驰设备名称、蓝牙 ID、型号、序列号、保修到期 · queryDevices
恢复 · 恢复百分比、状态等级、预计完全恢复时间 · queryRecoveryStatus
体能 · VO₂max、跑力等级、阈值配速、5K/10K/半马/全马预测 · queryFitnessAssessmentOverview
运动记录 · 近 7 天活动的类型、日期、地点、距离、时长、配速、平均心率、卡路里 · querySportRecords
健康 · 逐日步数、卡路里、锻炼时长、压力、睡眠分期,以及静息心率与 HRV 基线 · queryDailyHealthData
训练安排 · 本周安排的训练课;账号里是否已有训练计划(整份四周计划的详情在「训练安排 → 详细」里看) · queryTrainingSchedule、queryTrainingPlanLibrary
七个区块并行加载,任何一个失败只影响它自己的卡片,不会让整页白屏。
安装
前提:DeepSeek Harness 桌面端已安装并至少启动过一次(需要 profile 目录已初始化)。
方式一:本地目录安装(推荐用于开发)
1. 获取代码:
git clone <repo-url> dsh-coros-sport cd dsh-coros-sport
2. 在 Harness 会话里安装该目录:
plugin_manager action=install_bundle target=D:\path\to\dsh-coros-sport
其中 target 必须是绝对路径。安装工具会自行处理依赖与 profile 里的 bundle 注册,请不要手工编辑 profile 的 package.json 或 cordis.patch.yml。
3. 重启桌面端,左侧面板列表即出现「高驰运动」。
方式二:从 npm 安装
plugin_manager action=install_bundle target=dsh-coros-sport
安装结果里 application 为 applied 才算生效;若出现 warnings,按其提示处理后再重启。
使用
1. 点击左侧「高驰运动」。
2. 首次进入是一个登录页,点「登录高驰账号」。
3. 登录表单会在面板内部展开:输入高驰账号(邮箱/手机号)与密码,按页面提示完成授权。
4. 授权成功后表单自动收起,数据立即加载。
5. 之后每次打开都是直接显示数据,直到令牌过期。
令牌过期后页面会提示重新登录,点击即可,无需重新输入任何配置。
退出登录:面板右上角菜单可以清除本机保存的令牌。
生成训练计划
两个入口,走的是同一条链路:
入口一:/coros-plan 指令
在任意会话里输入 /coros-plan,后面跟一句你的目标:
/coros-plan 6 周后跑完 10 公里,每周能练 4 次
插件会读取你的账号数据(个人信息、恢复状态、体能评估、近期训练、本周安排、已有计划),把结果整理成一份简报,连同这句话一起交给模型,由模型给出逐周训练表。
入口二:训练计划面板的「创建训练计划」
当面板显示「这个账号还没有训练计划」时,卡片上会出现「创建训练计划」按钮。点击后:
1. 自动打开一个新会话;
2. 输入框里已经填好 /coros-plan (光标在指令之后),你直接补上目标即可发送。
按钮只在账号里一个训练计划都没有时出现。「本周暂无训练课」不等于没有计划 —— 那可能只是休息周,此时不会再给创建入口,避免建出两个重叠的计划。计划总是从下一个周一开始,所以刚建完计划的那一周,卡片会补一句「训练从 MM-DD 开始」,而不是让你对着下方列出的计划怀疑自己看错了。
生成出来的计划是文本。要把它落到账号里,用面板「训练安排」右上角的「详细」:进去后按周列出整份四周计划,确认后才写进高驰。
如果提示「现在打不开新会话」,说明当前没有可用的工作区:先在左侧工作区新建一个会话,再手动输入 /coros-plan。
训练计划
训练计划是「训练安排」的详情页,不在看板上直接铺开 —— 看板只留当天要看的数字。看板「训练安排」标题右侧有一个「详细」,点进去是这一页;页头左上角的「返回看板」回到看板。这两个视图只是面板内部的切换,不写 URL、也不进浏览历史:面板是宿主的一个 slot,URL 归宿主管,从 slot 里 push 一条路由会和宿主自己的导航打架。
打开本页时自动读一次计划库(只读),把插件内置的四周计划整份列出来:每周的周标题、周量,以及这一周每节课的日期、星期、时间、时长和距离;当前所在的那一周带「本周」标记。四周一次看全,不再翻页。整份计划共 16 节、约 149 km。
这一页也要读账号,所以它也可能会先发现令牌过期。这时不会停在「重新读取」上(那个按钮重试多少次都还是过期),而是直接切回登录卡片;登录回来仍然停在这一页。
确认无误后点「创建训练计划」,按钮变成「确认创建,写入 16 节」并给出不可撤销的提示 —— 第一次点击只改本地状态,第二次才真的调用 createTrainingPlan,一次性把整份计划建到账号里。
计划内容是固定的四周循环(基础 2 周 / 强化 1 周 / 减量 1 周),不随对话漂移 —— 面板和命令行用的是同一份 lib/plan-workouts.js,而写请求由宿主机端按自己的代码重建 payload,客户端传上来的课程内容一律不采用。这样即使页面被改过或者缓存的计划已过期,也写不进意料之外的课。
四周的结构(起点是创建时最近的周一):
周 · 主题 · 周量 · 周四质量课
1 · 建立节奏 · 37.7 km · 阈值 3 × 8′
2 · 加长阈值 · 41.0 km · 阈值 2 × 15′
3 · 短间歇 · 40.1 km · 间歇 4 × 1000 m
4 · 减量恢复 · 30.6 km · 轻松跑 + 6 × 30″ 加速
每周四节,固定周一 / 周二 / 周四 / 周日:周三、周五、周六全休,周二与周四之间留 48 小时。周一至周四的重课在 18:30,周日的长距离在 17:30。
三条限制值得先知道:
- 没有开始时间。
createTrainingPlan的课程入参只有日期 + 课程内容,没有时间字段。18:30 / 17:30 写在课程说明里,不会变成日历提醒或手表提示。 - 不能删。高驰的 MCP 接口没有删除训练计划的工具,写错了只能在高驰 App 里逐节改。这也是为什么必须先看一眼清单。
- 不覆盖,但会重叠。高驰不会把新计划合并到已有计划上,日期重叠时两份计划会同时存在、同一天出现两节课。所以预览会读一遍计划库,把重叠的旧计划列出来提醒你。
工作原理
高驰官方 MCP 服务使用 OAuth 2.0 授权码 + PKCE。本插件的完整流程:
点击登录 ↓ 动态注册客户端 (POST /connect/register) → client_id ↓ 创建 CLI 登录会话 (POST /api/v1/cli/login-sessions) → loginUrl ↓ 在面板内用 iframe 打开 loginUrl ← 你在这里输入账号密码并授权 ↓ 轮询会话状态 (POST .../claim, X-Poll-Token) → authorized + loginTicket ↓ 用 loginTicket 换授权码 (GET /oauth2/authorize?login_ticket=...) ↓ 换令牌 (POST /oauth2/token, PKCE code_verifier) → access_token + refresh_token ↓ 调用 MCP 工具 (POST /mcp, JSON-RPC tools/call)
几个实现上的关键点:
- 令牌 30 天、refresh token 180 天,且每次刷新都会换发新的 refresh token。所以刷新必须串行(单飞),否则并发刷新会让其中一个令牌作废。
loginTicket一次性:拿到后必须立刻兑换授权码,不能存起来稍后再用。- 高驰的
tools/call返回的是一段人类可读的纯文本,不是 JSON,所以每个区块都有对应的文本解析器。 - MCP 传输是无状态的(
protocolVersion 2025-06-18),不需要Mcp-Session-Id,也不发notifications/initialized。
数据与隐私
- 密码不落盘。密码只在你本机的浏览器环境里提交给高驰的登录页(
opencn.coros.com),插件本身从不读取、不存储、不转发它。 - 只保存令牌。令牌存在 Harness 的
credentials服务里(CredentialKey = coros-sport:oauth);该服务不可用时退回~/.dsh-coros-sport/token.json,文件权限0600。 - 不经过第三方服务器。所有请求从你的机器直连高驰官方端点(
mcpcn.coros.com/mcpeu.coros.com/mcpus.coros.com),插件没有自建后端。 - 退出登录会删除本机令牌,并在高驰侧调用
revoke端点尝试吊销。 - 面板默认只读取数据。唯一会写入的路径是「训练计划」:它先发一次只读请求(列出整份四周计划 + 计划库里日期重叠的旧计划),再由你点击确认才调用高驰的
createTrainingPlan写入一份计划。 - 写入不可撤销。高驰的 MCP 接口没有删除训练计划的工具,也没有「移动」:写错了只能在 App 里逐节修改或删除。所以面板把确认做成两步,并在确认前显示完整计划。
- 会与旧计划重叠。高驰不合并计划:日期重叠时两份计划同时存在,同一天会出现两节课。预览会读一次计划库并列出重叠的旧计划,但不会阻止你创建。
- 写入没有开始时间。
createTrainingPlan的课程入参里没有时间字段(只有日期和课程内容),所以 18:30 / 17:30 只会出现在课程名和说明文字里,不会变成日历提醒或手表提示。 /coros-plan只读取数据并把结果作为文字交给模型,不写回账号。- 账号数据会被送到模型:使用
/coros-plan时,插件把你账号里的昵称、身体指标、恢复与体能数据、近期训练记录、本周安排和已有计划整理成一段文本,作为一条用户消息发给当前会话的模型(与你在对话框里粘贴这些内容等价)。不用这个指令就不会发送;面板本身只在本地渲染。
区域
高驰把服务分成三个集群,账号属于哪个就选哪个,选错会登录失败或查不到数据:
区域 · 端点
中国大陆(默认) · https://mcpcn.coros.com
默认是 cn。如果你在海外注册的账号,可在 Harness 的插件配置里改 region 为 eu 或 us。
配置
插件配置项(在 profile 的 bundle patch 里可覆盖):
键 · 类型 · 默认 · 说明
region
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::3,最后更新 2026-11-04