关于 fastf1
fastf1 是面向 F1 数据查询与分析的技能,供 Agent 获取赛历、赛果及赛季和比赛数据。它通过 sports-skills CLI 或 Python SDK 提供多类查询,并指导按赛季时间选择年份。
主要功能
- 01查询赛历与比赛结果
- 02获取车手和车队信息
- 03分析逐圈计时与进站
- 04比较车手、车队及赛季数据
适用场景
- 01查看某赛季赛历和积分榜
- 02分析某场比赛的逐圈速度与轮胎策略
- 03比较两位车手或两支车队表现
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ machina-sports/ sports-skills --skill fastf1安装后在 Claude Code 中输入/fastf1确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/api-reference.mdcommands.mdschemas.mdscripts/validate_params.sh详细介绍
FastF1 — Formula 1 数据
编写查询前,请查阅 references/api-reference.md,了解端点、ID 约定和数据结构。
快速开始
优先使用 CLI,避免 Python 导入路径问题:
sports-skills f1 get_race_schedule --year=2025
sports-skills f1 get_race_results --year=2025 --event=Monza
Python SDK(备选):
from sports_skills import f1
schedule = f1.get_race_schedule(year=2025)
results = f1.get_race_results(year=2025, event="Monza")
重要:执行任何查询前
重要:调用任何数据端点前,请确认:
- 年份根据系统提示中的
currentDate推导,绝不可硬编码。 - 如果当前是 1 月或 2 月,请使用
year = current_year - 1(赛季开始前;新 F1 赛季尚未开始)。
选择年份
根据系统提示中的日期推导当前年份(例如,currentDate: 2026-02-16 → 当前年份为 2026)。
- 如果用户指定了年份,请按原样使用。
- 如果用户说“最新”“近期”“上赛季”或未指定年份:F1 赛季大致从 3 月持续到 12 月。如果当前是 1 月或 2 月,请使用
year = current_year - 1。从 3 月起,使用当前年份。
工作流
大奖赛周末分析
get_race_schedule --year=<year>— 查找赛事名称和日期get_race_results --year=<year> --event=<name>— 最终排名(名次、时间、积分)get_lap_data --year=<year> --event=<name> --session_type=R— 逐圈节奏分析get_tire_analysis --year=<year> --event=<name>— 策略细分(配方、单次连续使用时长、磨损情况)
车手/车队对比
get_championship_standings --year=<year>— 锦标赛背景信息(积分、获胜次数、领奖台次数)get_team_comparison --year=<year> --team1=<t1> --team2=<t2>或get_driver_comparison --year=<year> --driver1=<d1> --driver2=<d2>get_season_stats --year=<year>— 汇总表现(最快圈速、最高速度)
赛季概览
get_race_schedule --year=<year>— 包含日期和赛道的完整赛历get_championship_standings --year=<year>— 车手和车队积分榜get_season_stats --year=<year>— 赛季范围内的最快圈速、最高速度和积分领先者get_driver_info --year=<year>— 当前参赛车手阵容(车手号码、车队、国籍)
命令
| 命令 | 描述 |
|---|---|
get_race_schedule | 包含日期和赛道的完整赛季赛历 |
get_race_results | 最终比赛排名(名次、时间、积分) |
get_session_data | 原始比赛阶段信息(Q、FP1、FP2、FP3、R) |
get_driver_info | 参赛车手详情 |
get_team_info | 车队信息和车手阵容 |
get_lap_data | 包含分段计时和轮胎数据的逐圈计时 |
get_pit_stops | 进站信息,包括维修区通道用时(非静止时间)和车队平均值 |
get_speed_data | 速度检测点和中间测速数据 |
get_championship_standings | 车手和车队锦标赛积分榜(使用 --round=N 查询第 N 轮后的积分榜) |
get_season_stats | 赛季表现汇总 |
get_team_comparison | 车队正面对比:排位赛、正赛节奏、分段成绩 |
get_driver_comparison | 车手正面对比:排位赛对决、正赛对决、节奏差值 |
get_tire_analysis | 轮胎策略、单次连续使用时长、磨损速率 |
完整参数列表和返回数据结构请参阅 references/api-reference.md。
示例
示例 1:F1 赛历 用户说:“显示 F1 赛历” 操作:
- 从
currentDate推导年份 - 调用
get_race_schedule(year=<derived_year>)结果:包含赛事名称、日期和赛道的完整赛历
示例 2:车手比赛表现 用户说:“维斯塔潘在蒙扎表现如何?” 操作:
- 从
currentDate(或上下文)推导年份 - 调用
get_race_results(year=<year>, event="Monza")获取最终排名 - 调用
get_lap_data(year=<year>, event="Monza", session_type="R", driver="VER")获取单圈用时 结果:完赛名次、与领先者的差距、最快单圈和轮胎策略
示例 3:季前查询最新赛果 用户说:“F1 最新赛果是什么?”(于 2026 年 2 月提问) 操作:
- 当前月份是 2 月 → 赛季尚未开始 → 使用
year = 2025 - 调用
get_race_schedule(year=2025)查找该赛季的最后一场赛事 - 调用
get_race_results(year=2025, event=<last_event>)获取最后一场比赛的赛果 结果:2025 年最后一场比赛的赛果
不存在的命令——切勿调用
/get_qualifying— 不存在。排位赛请使用get_practiceget_session_data,并设置session_type="Q";练习赛请使用session_type="FP1"/"FP2"/"FP3"。— 不存在。请改用get_standingsget_championship_standings。— 不存在。请改用get_resultsget_race_results。— 不存在。请改用get_calendarget_race_schedule。
如果某个命令未列在上方的命令表中,则该命令不存在。
故障排除
错误:未找到赛事名称
原因:赛事名称拼写与 FastF1 的内部命名不一致
解决方案:先调用 get_race_schedule(year=<year>) 获取准确的赛事名称,然后使用正确的名称重试
错误:赛段数据为空
原因:该赛段尚未进行
解决方案:FastF1 仅返回已完成赛段的数据。请检查 get_race_schedule,确认该赛段的计划时间
错误:get_race_results 未返回 fastest_lap_time
原因:FastF1 没有该场比赛的单圈数据(fastest_lap_time 根据单圈数据计算得出)
解决方案:使用 get_lap_data(session_type="R"),并找出所有车手中的最小 lap_time
错误:在 1 月或 2 月查询当前年份时没有返回数据
原因:新的 F1 赛季尚未开始
解决方案:3 月之前的查询请使用 year = current_year - 1;3 月之前不要查询当前年份