Ai Coach

# AI Coach · 个人铁三教练

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Ai Coach" with this command: npx skills add ciaefengye/triathlon-ai-coach

AI Coach · 个人铁三教练

智能生成每日训练计划,根据你的比赛目标和身体状态动态调整。

核心功能

  • 📊 TP 实时数据:CTL/ATL/TSB/IF 每日更新(Cookie 认证)
  • 🏊 智能计划:根据 TSB 和比赛倒计时自动调整
  • 📅 多比赛支持:所有报名比赛综合考虑
  • 🧠 自我学习:根据你的反馈优化建议
  • 📱 两种推送模式:晚间/早晨自定义
  • 💓 Garmin 健康:睡眠/准备度/HRV/压力实时分析

推送内容格式

复盘板块(每日动态,来源:TrainingPeaks)

📋 今日训练复盘(数据来源:TrainingPeaks)
📅 周二 2026-04-14

✅ 完成 1/1 项计划
➕ 额外训练 Running 6.9km 36min HR139 TSS67
总距离: 6.9km | TSS: 67 | 能量: 492 kcal
💪 今天训练完成很好,保持这个节奏!

明日计划板块

📅 周三 2026-04-15
[具体训练内容]

☀️ 天气: Patchy rain nearby | 7°C
📊 体能状态: CTL 33.1 | TSB -16.5 | 疲劳积累
💓 Garmin健康: 睡眠 56/100 | 准备度 LOW 26/100 | HRV 54ms | 压力 20.0
⚠️ 准备度过低,自动调整为休息

推送模式

  • 模式A(晚间):22:00 左右 → 复盘当天 + 明日计划
  • 模式B(早晨):06:30 左右 → 复盘昨天 + 今日计划

TrainingPeaks 认证配置

第一步:获取 Cookie

  1. 用浏览器登录 TrainingPeaks
  2. 按 F12 打开开发者工具 → Network(网络) 面板
  3. 刷新页面,任意请求中找到请求头里的 Cookie
  4. 找到包含 Production_tpAuth= 的完整 cookie 值(一长串字符串)

第二步:存储 Cookie

方式A(推荐):写入文件

mkdir -p ~/.trainingpeaks
echo "你的cookie值" > ~/.trainingpeaks/cookie
chmod 600 ~/.trainingpeaks/cookie

方式B:设置环境变量

export TP_AUTH_COOKIE="你的cookie值"

⚠️ 安全提示:cookie 文件包含认证凭证,请务必设置 chmod 600 限制权限,不要分享或上传到公开仓库。

验证认证

python3 ~/.openclaw/workspace/skills/ai-coach/scripts/tp_client.py auth "你的cookie值"

数据优先级

有 TP → TP 训练数据(CTL/TSB)+ Garmin 健康
无 TP → Garmin 运动 + Garmin 健康

Garmin 认证配置

配置方式:在 user_config.json 中设置 garmin_emailgarmin_password,或设置环境变量 GARMIN_EMAIL / GARMIN_PASSWORD

  • Token 缓存:~/.garmin_tokens/

使用方式(garth v0.2+ API):

import garth
from garminconnect import Garmin

client = Garmin()
client.garth.load("~/.garmin_tokens")  # garth v0.2+ 用 garth.Client 加载目录
# 无需重新登录,直接获取数据
sleep = client.get_sleep_data(today)
readiness = client.get_training_readiness(today)

健康数据字段

  • sleep_score:睡眠得分
  • sleep_hours:睡眠时长
  • readiness_score:训练准备度
  • readiness_level:准备度等级 (LOW/MODERATE/HIGH)
  • hrv:心率变异性 (ms)
  • avg_stress:平均压力水平

比赛配置

支持多个比赛,AI 自动选择最近比赛倒计时:

{
  "races": [
    {"name": "金海湖游跑两项", "date": "2026-05-17", "type": "aquathlon", "goal": "站台"}
  ]
}

训练周期

阶段倒计时特点
基础期>90天有氧基础
构建期43-90天强度增加
冲刺期15-42天高强度
减量期1-14天减量保持
恢复期赛后休息

强度决策

综合评分 = 准备度(50%) + 睡眠(30%) + TSB(20%)
综合评分强度
>75高强度
50-75中等
30-50低强度
<30休息

教练理念库

  • Joe Friel:CTL/ATL/TSB 监控
  • Joe Filliol:游泳体能优先
  • Brett Sutton:高强度间歇
  • Mark Allen:心理训练

文件结构

ai-coach/
├── SKILL.md
├── user_config.json             # 用户配置(比赛、推送模式)
├── config.yaml                  # 默认配置
├── scripts/
│   ├── trainer.py               # 主入口:计划生成 + 复盘(向后兼容)
│   ├── plan_engine.py           # 计划生成引擎
│   ├── formatter.py             # 格式化输出
│   ├── send_daily_plan.py       # IMA 推送入口
│   ├── garmin_sync.py           # Garmin 健康数据同步
│   └── tp_sync.py               # TrainingPeaks 数据同步
└── data/
    └── coach_knowledge_base.json

IMA 笔记推送

API 调用方式

import json, urllib.request

headers = {
    "ima-openapi-clientid": client_id,  # ~/.config/ima/client_id
    "ima-openapi-apikey": api_key,      # ~/.config/ima/api_key
    "Content-Type": "application/json"
}

data = {
    "content_format": 1,  # 1 = Markdown
    "content": markdown_content,
    "title": "训练日报 2026-04-08"
}

req = urllib.request.Request(
    "https://ima.qq.com/openapi/note/v1/import_doc",
    data=json.dumps(data, ensure_ascii=False).encode('utf-8'),
    headers=headers,
    method="POST"
)

⚠️ 注意事项

  • 某些 emoji 会导致 Markdown2Json fail 错误
  • 推送前过滤或去掉 emoji

依赖说明

模块依赖来源
trainer.py / plan_engine.pygarminconnect, garthpip install
formatter.py无外部依赖标准库
garmin_sync.pygarminconnect, garthpip install

⚠️ garminconnect 库 v0.2+ API 变更:不再接受 token_dir,需用 garth.Client.load(目录路径) 初始化。

已知 Bug 修复记录

日期Bug修复
2026-04-14复盘日期硬编码为"周二 2026-03-24"改为 datetime 动态计算
2026-04-14garminconnect API 变更导致 Garmin 连接失败改用 garth.Client.load(目录)
2026-04-14daily_plans.json 重复记录导致复盘重复log_daily_plan 增加去重逻辑
2026-04-14CTL/TSB 小数位数过多(15位)保留 1 位小数
2026-04-14emoji 导致 IMA Markdown2Json 错误emoji 替换为文字 LOW/NORMAL/GOOD

首次配置

  1. 填写 user_config.json(比赛信息、推送模式)
  2. 配置 TP 认证 cookie(见上方)
  3. 可选:配置 Garmin 账号
  4. 首次配置后运行一次 python3 trainer.py 验证

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Section 11: Endurance Training Coach (Intervals.icu)

Evidence-based endurance coaching protocol (v11.35). Use when analyzing training data, reviewing sessions, generating pre/post-workout reports, planning work...

Registry SourceRecently Updated
2.5K5Profile unavailable
General

🦞 小龙虾入职培训手册

AI图像生成与编辑。支持文生图、图+文生图、风格转换。当用户要求画图、生成图片、编辑图片、图片风格转换时使用此 skill。支持多种比例(1:1、3:2、16:9、21:9 等)和分辨率(标准、2K、4K)。

Registry SourceRecently Updated
840Profile unavailable
General

个人健康教练

Personal health coach for gym and daily reminders with weather-aware outfit suggestions.

Registry SourceRecently Updated
860Profile unavailable
General

Wellness Coach AI

Launch a personalized AI wellness coach video session (Baymax persona) using Tavus CVI + Claude. Fetches real wearable health data (sleep, HRV, recovery) and...

Registry SourceRecently Updated
690Profile unavailable