前言¶
在 DeepSeek Harness(DSH)裏做耐力訓練相關助手時,常見做法是讓用戶口頭描述最近的跑量、心率或主觀疲勞,再由模型給建議。問題在於:訓練負荷、Wellness、課表與實際活動若不能從同一數據源讀取,模型容易補全缺失數字;把周計劃寫進日曆又往往需要人工在 Intervals.icu 裏逐條錄入。若你已經在 Intervals.icu 上管理跑步或騎行數據,更希望智能體在「有數據再說話」的前提下,完成今日是否訓練、滾動周計劃、賽後復盤等可落地決策,並把確認後的課表寫回日曆,社區插件 dsh-endurance-coach(技能名 endurance-coach,包名 dsh-endurance-coach)即是針對這一路徑打包的可安裝技能提供方(skill provider)bundle。
這是什麼¶
Endurance Coach(耐力教練) 由維護者 xsnnnnnn 發佈,在 DSH 社區目錄中歸類爲 工作流。插件將一套 endurance-coach 技能註冊進 DSH 技能目錄,模型可通過常規的 skill 工具加載;技能正文與腳本隨包分發,不在包內捆綁個人運動員數據,閾值與目標等落在你的工作區文件中。
數據面僅對接 Intervals.icu:活動、間歇、流數據、訓練負荷(含 CTL/ATL/TSB/rampRate)、Wellness(靜息心率、HRV、在牀睡眠、eFTP 等)、功率曲線,以及訓練日曆(get_events 讀取,add_or_update_event 寫入或更新,delete_event 刪除)。天氣調整通過捆綁腳本調用 Open-Meteo 公共 API,無需賬號。包本身 零 npm 運行時依賴;捆綁 Python 腳本僅使用標準庫(需 Python 3.10+)。許可證爲 MIT;package.json 當前版本爲 1.1.0。GitHub 倉庫星標數爲 0(以目錄頁爲準)。
核心能力:五條工作流與硬約束¶
下面介紹插件 README 中歸納的五條工作流,以及模型與腳本共同遵守的護欄。
五條工作流¶
| 工作流 | 典型觸發 | 輸出 |
|---|---|---|
| W1 · Today | 「今天要不要練?」/ 晨間檢查 | 訓練 / 謹慎 / 休息 判定;當日課與天氣備註;一條提醒 |
| W2 · Week | 「幫我排這一週」/ 調整計劃 | 滾動兩週安排(階段、課型配比、天氣感知排課);經你確認後寫回 Intervals.icu 日曆事件 |
| W3 · Review | 「復盤這次跑/騎」/ 「這週怎麼樣」 | 基於完成情況的復盤:得失與下一步調整 |
| W4 · Race prep | 賽前 2–4 周 | 減量曲線、分段配速、補給方案、溼熱修正、恢復周 |
| W5 · Reassessment | 約每 4 周或出新成績後 | 重算 VDOT/閾值;僅在變化有意義時整體替換區間 |
能力側還包括:readiness 門控、VDOT 配速區間、會話回顧、比賽日配速與補給、天氣修正課表——與簡介及 README 描述一致。
非協商護欄(節選)¶
- 安全優先於科學與效率;缺數據時明確報告缺失,不臆造。
- 算術由
scripts/*.py完成(VDOT、配速換算、readiness、補給、天氣等),模型轉述結果。 - 單次調整幅度有上限(例如單次最多約 ±30%、每週最多兩次主動調整;連續三天紅燈觸發約 20–30% 減量周等,詳見技能文檔)。
- 每次向 Intervals.icu 日曆寫入、修改或刪除前,先說明並徵得確認;回答中不暴露內部活動/事件 ID。
- 不提供醫療診斷;持續疼痛、胸悶、心悸等情形應停止訓練並就醫。
若未配置 Intervals.icu MCP,技能會說明數據不可用,也可在僅有人工提供數字的場景下有限使用。
安裝與啓用¶
環境要求:DeepSeek Harness >= 0.2.1-rc.1、Node.js >= 20。package.json 中 engines 與 dsh.compatibility 還標明與部分 0.2.1-rc.5、0.2.2-rc.1 發行版兼容。
先做安裝,再重啓或重載 profile,使技能出現在目錄中:
dsh plugin --profile desktop add 'github:xsnnnnnn/dsh-endurance-coach'
安裝後重啓 DSH(或重載 profile)。驗證 bundle 是否掛載:
dsh --profile desktop --dump-config # 查找 id 爲 dsh-endurance-coach 的條目
dsh plugin --profile desktop list # 依賴列表中應出現 dsh-endurance-coach
卸載:
dsh plugin --profile desktop remove dsh-endurance-coach
若使用本地檢出目錄而非 GitHub,可將 add 指向包目錄(pnpm 會鏈接):
dsh plugin --profile desktop add /path/to/dsh-endurance-coach
注意: 插件在 當前 DSH 進程權限 下運行;安裝前請自行閱讀倉庫源碼與 MIT 許可證,確認符合你的安全與合規要求。社區目錄站點與 DeepSeek / 幻方無官方從屬關係,並非官方應用商店。
首次配置:運動員檔案與工作區路徑¶
技能刻意不把個人數字寫入包內,而是從工作區讀取 JSON,並把計劃調整記錄寫到 Markdown 日誌:
<your-workspace>/coach/athlete.json # 閾值、目標、可訓練日等
<your-workspace>/coach/decisions.log.md # 計劃調整流水
建議按下面步驟初始化:
- 在工作區目錄中,讓智能體執行初始化,或手動運行捆綁腳本。已安裝技能目錄通常在
<DSH_HOME>/profiles/<profile>/node_modules/dsh-endurance-coach/skill/endurance-coach:
cd /path/to/your-workspace
python <skill-dir>/scripts/init_athlete.py
- 編輯
coach/athlete.json,填入真實閾值、目標與每週可用時間;模板中的示例值均爲虛構,必須替換。 - 若希望教練文件不在默認的
<workspace>/coach,可設置環境變量
ENDURANCE_COACH_DIR=/absolute/path。
init_athlete.py 默認不覆蓋已有文件,除非傳入 --force。README 提示:上述文件含訓練數據,宜私有版本管理,勿公開發布。
外部依賴:Intervals.icu MCP 與天氣¶
| 組件 | 需求 | 說明 |
|---|---|---|
| Intervals.icu | MCP 服務(mcp__intervals__) |
活動、負荷、Wellness、功率曲線、日曆讀寫 |
| Python | 3.10+ | 僅標準庫腳本 |
| 天氣 | Open-Meteo | 捆綁 weather.py 調用公共 API,無需註冊 |
安裝插件不等於自動具備 Intervals.icu MCP;需在 DSH 環境中單獨配置該 MCP 後,W1–W5 中與平臺數據相關的步驟才能完整執行。
典型用法(可復現的交互方式)¶
完成安裝、初始化 athlete.json 並接好 Intervals.icu MCP 後,在對話中加載 endurance-coach 技能,用自然語言觸發對應工作流即可,例如:
- 晨間:「今天要不要訓練?」 → W1:結合 readiness 與天氣給出 go / caution / rest,並附當日課建議。
- 周計劃:「幫我排接下來兩週,考慮下週要比賽」 → W2:給出階段化課表草案;你確認後,再通過 MCP 將事件寫入 Intervals.icu 日曆。
- 課後:「復盤昨天那次間歇騎」 → W3:對照完成情況做回顧。
- 賽前:「三週後有一場比賽,幫我做減量和補給」 → W4。
- 定期:「根據最近成績更新一下閾值和配速區間」 → W5。
上述句式來自 README 對工作流觸發場景的歸納;具體話術可自擬,技能按 SKILL.md 與 references 中的規則路由到對應流程。
適用場景與注意¶
適合: 已將訓練與計劃集中在 Intervals.icu 的跑步/騎行愛好者或自建教練工作流者;希望在 DSH 內用統一技能完成「讀平臺數據 → 腳本算指標 → 人審後寫回日曆」閉環的開發者。
不適合或需自備條件: 未使用 Intervals.icu、且不願配置其 MCP 的用戶——多數自動化讀寫信道不可用;不接受「每次寫日曆前確認」的用戶——插件設計明確禁止靜默改寫課表。
再次強調:審視 GitHub 倉庫 源碼後再安裝;運動員數據僅存於你的工作區,由你控制備份與隱私。
結尾¶
dsh-endurance-coach 把 Intervals.icu 作爲唯一訓練數據源,用腳本固化 VDOT、readiness 與天氣等計算,用五條工作流覆蓋從「今天練不練」到賽前減量與週期重評;在 DSH「一切皆插件」的生態裏,屬於把工作流釘在真實日曆與真實負荷上的一類技能包。