trail-running-pace
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
耐力学社越野跑体感一致配速表 Skills · Even-effort trail running pace charts with checkpoint splits and SVG export.
体感一致配速表 Skills
基于耐力学社体感一致配速思路的社区独立实现。赛前,将 GPX、KML 或 FIT 路线转换成按检查点(CP)分段的多目标配速表;赛后,将 FIT 活动与方案对照,查看累计差距、相邻站耗时和地形差异。可通过 AI 助手调用 even-effort-pace-chart,也可直接使用命令行。
思路参考耐力学社 / Pili(表哥)的《耐力科学|体感一致配速表全面指南》。本项目独立实现等效距离与疲劳曲线,并非 RunArt.Net 官方工具或输出;详见来源与版权。
效果预览
| 示例与说明 | 配速表 | 活动对比 |
|---|---|---|
| 徽州古城 100K:GPX 制表与 FIT 赛后复盘 | GPX 方案 / FIT 路线方案 | 按赛前 GPX / 按实际 FIT |
| 大境门 DGW100K:公开 KML 可复现 | 10–24 小时 / 15 小时方案 | — |
| 大境门 MGW50K:使用公开的海拔补全副本生成配速表,含赛前 GPX 与实际 FIT 两版赛后对比 | 5–12.5 小时 / 6:15 单列 / FIT 路线方案 | 按赛前 GPX / 按实际 FIT |
各示例说明包含输入来源、配置、复现所需文件、命令和结果口径。
安装与使用
所有方式都需要 Python 3.10+。GPX/KML 配速表仅使用标准库;FIT 输入和活动对比需要可选依赖。
有两种方式,按需选择:
- 在 AI 助手中使用:先安装 Skill,再用自然语言调用。适合让助手检查路线、处理歧义并生成图表。
- 直接使用命令行:不需要安装 Skill,克隆仓库后运行脚本;见命令行使用。
在 AI 助手中使用
安装 Skill(任选一种)
npx(推荐):需要 Node.js、npm 和 Git。在项目目录执行:
npx skills add yihouzenmeban/trail-running-pace --skill even-effort-pace-chart按提示选择 AI 助手。默认安装到当前项目;加
-g安装到用户级技能目录,此时可在任意目录执行。手动安装:不需要 Node.js。从 GitHub Releases 下载带版本号的 ZIP,解压后得到
even-effort-pace-chart/;如果已克隆仓库,也可以直接复制skills/even-effort-pace-chart/。将even-effort-pace-chart/整个目录放入助手的技能目录即可。技能目录已包含运行所需文件,不依赖仓库示例或来源文章。WorkBuddy:如果你使用 WorkBuddy,用分享页安装,不需要执行上面的 npx 或手动复制:
- 打开 WorkBuddy 技能分享页,按提示在 WorkBuddy 客户端安装。
- 在「专家·技能·连接器 → 技能 → 已安装」中确认该技能已启用。
ClawHub:如果你使用 OpenClaw,用 ClawHub CLI 安装,需要 Node.js:
npx -y clawhub install @yihouzenmeban/even-effort-pace-chart装到
skills/@yihouzenmeban/even-effort-pace-chart/,内容完整(脚本、参考文档都在里面)。也可以在 ClawHub 页面查看。
首次使用
安装完成后,准备一份 GPX、KML 或 FIT 轨迹(也可以先用公开示例),向助手提供轨迹路径和目标时间。
Claude Code:用斜杠命令调用:
/even-effort-pace-chart 用 race.gpx 生成体感一致配速表,目标完赛时间 14 小时,输出到 output/my-race/。其他助手:在支持
$名称调用的助手中用$even-effort-pace-chart;也可以在自然语言请求中直接指定even-effort-pace-chart,让助手自行加载。
默认行为:
- 以目标时间为中心,向前、向后各展开两档,共五组方案,相邻间隔 30 分钟。例如目标 14:00 生成 13:00、13:30、14:00、14:30、15:00 五组完赛目标;这些是完赛用时,不是钟点。
- 默认 06:00 发枪。指定出发时间只影响钟点换算,不会把括号内容从区间配速改为到达钟点。
- 仅输出 SVG,括号内显示刚完成区间的配速,图表标签为中文。
- 优先使用轨迹内可识别的 CP;内嵌 CP 缺失或不可用时,改用人工 CP 列表(不能与内嵌 CP 混用);FIT 路线必须使用人工 CP。
默认水量按等效距离计算,仅供赛段比较,并非个人饮水建议。需要结合天气和个人情况规划携水时,直接告诉助手;它会按需询问比赛日期与出发时间、饮水经验、携水容量和站点供水情况,确认个人饮水速率后按赛段耗时计算。天气只用于辅助确认速率,程序不会自动调整。详见携水与天气。
命令行使用
不需要安装 Skill。先克隆仓库:
git clone https://github.com/yihouzenmeban/trail-running-pace.git
cd trail-running-pace
以下命令在仓库根目录执行。将下面内容保存为 race.json:
{
"name": "我的比赛",
"target": "14:00"
}
target 是完赛用时(这里为 14 小时),不是出发钟点。
先用 inspect 检查公开示例轨迹,再生成配速表:
python3 skills/even-effort-pace-chart/scripts/pace_chart.py inspect \
'examples/huizhou-gucheng-100k/徽州古城100K.gpx'
python3 skills/even-effort-pace-chart/scripts/pace_chart.py generate \
'examples/huizhou-gucheng-100k/徽州古城100K.gpx' \
--config race.json --output-dir output/my-race
生成 13:00、13:30、14:00、14:30、15:00 五组完赛目标(均为完赛用时),结果为 output/my-race/pace-chart.svg。output/ 已被 Git 忽略;替换已有结果时使用 --overwrite。
inspect 只输出检查结果,不写文件;generate 会重新读取轨迹。换成自己的轨迹时,先对该文件运行 inspect,处理完路线与 CP 歧义后再运行 generate。
两种方式共用同一套配置。配速表的所有配置项、默认值和取值说明见完整参数表,包括目标、站点、爬升处理、输出格式、携水和天气。可以用自然语言向助手指定,也可以写入 race.json;活动对比的命令参数见活动对比文档。
赛后活动对比
上图截取基于实际 FIT 路线的 16 小时方案;完整对比图包含 15、16、17 小时方案及各段爬升、下降。大境门 MGW50K 的示例说明同时提供赛前 GPX 与实际 FIT 两版对比,可对照路线输入带来的差异。
有两种方式:
在 AI 助手中使用:向助手提供比赛轨迹、配速配置和活动 FIT,例如:
用 even-effort-pace-chart 将 activity.fit 与 race.gpx、race.json 对比,
参照目标为 15、16、17 小时,包含每两个站之间的耗时,输出到 output/comparison/。
使用命令行:先安装 FIT 依赖,再离线检查并生成(以下命令在克隆后的仓库根目录执行):
python3 -m pip install -r skills/even-effort-pace-chart/scripts/requirements-comparison.txt
python3 skills/even-effort-pace-chart/scripts/compare_activity.py inspect race.gpx \
--config race.json --fit activity.fit \
--targets 15:00 16:00 17:00
python3 skills/even-effort-pace-chart/scripts/compare_activity.py generate race.gpx \
--config race.json --fit activity.fit \
--targets 15:00 16:00 17:00 --output-dir output/comparison
默认输出 garmin-comparison.svg,支持 FIT 或单活动 FIT ZIP,无需在线凭据。inspect 只输出活动汇总、站点匹配和诊断信息,不写文件;CP 匹配有歧义时按提示核对后再运行 generate。替换已有结果时使用 --overwrite。读图、平台汇总、按实际 FIT 重算路线及可选佳明下载,见活动对比文档。
文档导航
| 需要了解什么 | 文档 |
|---|---|
| 配速表完整参数、默认值和取值说明 | 完整参数表 |
| 目标列表、人工 CP、停留、关门和导出格式 | 配置与命令行 |
| 携水量、个人速率和天气预报 | 携水与天气 |
| KML 高度、FIT 设备距离与 CP 要求 | KML 输入 / FIT 路线输入 |
| 活动对比、差值方向、CP 匹配和佳明读取 | 活动对比 |
| 等效距离、疲劳曲线、距离与海拔处理 | 模型与限制 |
| 为什么默认不平滑+10 米阈值,如何切换 | 爬升方案与历史实验 |
| AI 助手的执行流程 | SKILL.md |
爬升统计和图示平滑各自独立;结果依赖输入海拔与处理参数,可能与赛事或其他平台统计不同。
开发与测试
在仓库根目录分别运行技能功能测试和发布流程测试:
python3 -m unittest discover -s skills/even-effort-pace-chart/tests -v
python3 -m unittest discover -s .github/tests -v
技能测试覆盖路线处理、配速和活动对比。独立复制 Skills、未携带 examples/ 时,真实赛道测试会跳过。自然语言用例及人工复核步骤见行为评测指南;开发经历见投稿文章。
推送涉及 skills/even-effort-pace-chart/ 的提交到 main 后,发布工作流会运行发布测试、递增补丁版本并同步两个版本字段,再向 main 写入版本提交、创建标签和 GitHub Release,上传仅包含技能目录的 ZIP。技能参考文档的修改也会触发该流程;继续开发前请同步自动生成的版本提交。
来源与版权
参考文章及配图归档保留原文来源与版权声明,权利归原权利人所有,使用条件以原文声明为准。比赛轨迹与活动对比的来源见各示例说明。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found