dsh-sim-telemetryv0.2.5

jingjie43/dsh-sim-telemetry

工作流 MIT 最近更新 2026-11-07
0Stars
0Forks
0待解决 Issue
安装命令 dsh plugin --profile web add github:jingjie43/dsh-sim-telemetry#71be74f921a96b8cf426374ce20978cf75f19d08

介绍

给 DeepSeek Harness 的 F1 25 遥测插件:跑完几圈自动出比赛工程师报告 —— 逐弯定位哪里慢了、为什么慢、该往哪个方向改。

标签

deepseek-harness dsh-plugin f1 f1-25 motorsport race-engineer sim-racing telemetry telemetry-analysis

概述

dsh-sim-telemetry

给 DeepSeek Harness 的赛车遥测插件:跑完几圈,它像比赛工程师一样告诉你「哪儿慢了、为什么慢、怎么改」。

不用装第三方遥测软件,不用上传数据 —— 采集和分析全在你自己的电脑上跑。


它是什么

跑赛车的时候,你知道自己慢,但往往说不清慢在哪 —— 是刹车踩早了?出弯给油太晚?还是方向盘打多了?

游戏只给你一个圈速,不给你答案。

这个插件把游戏的 UDP 遥测抓下来,按赛道距离对齐多圈,用曲率识别弯道、检测失控、归因时间损失,然后输出:

  • 圈速与一致性:三圈差多少秒,稳不稳
  • 逐弯对比:第几弯、每圈 apex 速度差多少
  • 失误定位:哪一圈、哪个位置 spin 了,速度掉了多少
  • 时间损失归因:每 100 米丢了多少秒
  • 该改什么:先改哪个弯、怎么改

分析全在本地 Python 里完成,模型只读结论那几行 —— 省 token 也省心。


核心能力

采集

  • F1 25 UDP 遥测(端口可配置,和游戏里的设置保持一致即可)
  • 玩家完整数据 + 全部 22 辆车摘要
  • Motion 包:世界坐标、三轴 G、车头朝向 yaw
  • 方向盘转角
  • 赛道位置(m_lapDistance,0 ~ 赛道全长)
  • 原始数据落盘,可反复分析

分析

  • 多圈按赛道距离对齐:圈速差几秒也不会错位,逐弯对比是真在比同一个弯
  • 曲率识别弯道:由车头朝向变化率求弯的曲率,不依赖「减速」—— 高速全油弯也能认、S 弯不会粘成一段;弯道数量 = 官方弯数
  • 多圈平均曲率:单圈走线差异和 yaw 噪声互相抵消,弯位更稳
  • 自动检测 spin / 打滑:速度断崖 且 横向 G 塌陷才算失控,正常刹车不会误报
  • 时间损失按 100 米归因
  • 逐弯操作对比:apex 速度 / 方向盘峰值 / 出弯给油点 / 刹车点

产出(跑完自动全出)

  • 工程师报告:圈速、失误、时间损失、逐弯表(第 N 弯)、改进建议
  • 轨迹诊断图:你自己的实跑轨迹 + 弯位编号 + 颜色分级 + 带方向性的调整建议 (方向 多打 −0.36 表示打多了要收,给油 晚 −125 m 表示晚了要提前)
  • 速度曲线图 / 油门刹车图
  • CSV 表格 + 完整明细 md

主动引导

报告检出失误后会直接问:「想知道这一下到底怎么发生的、下次怎么避免吗?」 你说想,它就把这一圈和最快圈逐秒拉出来对比 —— 告诉你第几弯、哪一脚刹车踩重了、哪一次方向打多了。


安装

三种输入都支持:包名(npm)、本地 tgz 安装包、本地目录路径。推荐用包名。

方式一:npm 包名(推荐)

dsh plugin --profile web add dsh-sim-telemetry

装完重启 DSH → 设置左侧出现「赛车遥测」。

(profile 名按你的实际情况,桌面版一般是 desktop)

方式二:Release 安装包(离线 / 内网用)

  1. 打开 Releases,下载最新的 dsh-sim-telemetry-0.2.5.tgz
  2. 安装:
dsh plugin --profile web add ./dsh-sim-telemetry-0.2.5.tgz
  1. 重启 DSH

方式三:本地目录路径(开发者)

源码已经在本地(clone 或解压)时,直接指向目录:

dsh plugin --profile web add file:C:你的路径dsh-sim-telemetry

Linux / macOS 用 file:/path/to/dsh-sim-telemetry。实测可用,不需要任何授权。

方式四:GitHub 源码(不推荐,仅开发者)

在 DSH「设置 → 插件」里填仓库地址:

https://github.com/jingjie43/dsh-sim-telemetry

⚠️ 这条路有两个坑:

  1. pnpm 默认拒绝执行 git 来源包的构建脚本,要手动加 allowBuilds 白名单
  2. 即使加了白名单,pnpm 还要跑 npm install 准备源码 —— 而 DSH 只内置 node + pnpm、没有 npm,大概率失败

普通用户别走这条,用方式一 / 二 / 三。

环境依赖

  • Python 3.10+(3.11 / 3.12 / 3.13 都行)
  • Pillow(只有画图需要)

第一次用不用自己折腾:面板会自动检测 Python,没装会出现「一键安装 Python 3.12」按钮。


使用方法

游戏里先开遥测

F1 25 → 设置 → 遥测设置:

项目值
UDP 遥测开
UDP 广播关
端口和插件设置里填的一样(默认 20777,两边保持一致就行)
发送频率20Hz
格式2025

三步搞定

  1. 设置里选圈数(1 / 3 / 5 圈)
  2. 点「开始记录」,然后正常跑
  3. 跑满自动停,全部结果自动生成 —— 不用再点任何东西

数据在哪

~/.dsh/sim-telemetry/
├── frames_*.jsonl      # 原始遥测
├── laps_*.csv          # 每圈汇总
├── summary_full_*.md   # 完整明细
├── plots/              # 速度图 / 油门图 / 轨迹诊断图
└── settings.json       # 面板设置

已知限制

⚠️ 弯位校准进度:3 / 24 条赛道(都含官方弯名)

  • ✅ 银石(Silverstone):18 个弯,validated —— 2026-10-28 重建:旧表用「取曲率最强的 18 个峰」凑弯数,同一赛道两份数据最多差 870 米; 现改为「转角法找弯段 + 三份数据三取二」。官方弯名:Abbey / Farm Curve / Village / The Loop / Aintree / Brooklands / Luffield / Woodcote / Copse / Maggotts ×2 / Becketts ×2 / Chapel / Stowe / Vale / Club ×2
  • ✅ 蒙扎(Monza):11 个弯,validated —— 三份数据交叉验证 + 官方弯名:Prima Variante / Curva Grande / Seconda Variante / Lesmo 1 / Lesmo 2 / Ascari / Parabolica(来源:F1 官方《How every corner at Monza got its name》)
  • ✅ 斯帕(Spa-Francorchamps):19 个弯,validated(2026-11-03)—— 三份实跑数据三取二 + 官方弯名:La Source / Eau Rouge ×2 / Raidillon / Les Combes ×2 / Malmedy / Bruxelles / Jacky Ickx Curve / Pouhon ×2 / Fagnes ×2 / Campus / Curve Paul Frere / Blanchimont ×2 / Bus Stop ×2 (来源:F1 官方《How every corner at the Circuit de Spa-Francorchamps got its name》) ⚠️ 校准中修掉一个关键 bug:DEFAULT_LEN=5890 被所有赛道共用,Spa 7007 米后段(Blanchimont/Bus Stop)被整段丢弃; 现在按数据里的 trackLen 检测实际长度
  • ⚠️ 其余 22 条赛道:还没填官方弯数,弯道识别会不准

为什么:弯位必须用实跑数据校准,不能凭空填 —— 公开资料只有弯名和赛道全长, 游戏内的赛道资源是加密的私有格式。唯一可靠的数据源就是玩家实跑一圈的遥测。 弯名可以从公开资料拿,但「哪个弯对应哪段距离」只能靠实跑数据(用转角、半径、apex 速度的形状特征去匹配)。

会怎么解决:一条一条来,哪条赛道跑过就能校准。现在的流程是:

  1. scripts/corners_by_angle.py 用累计转角找弯段(比曲率峰值稳,大半径长弯也不会漏)
  2. scripts/calibrate_track.py <赛道key> <官方弯数> 生成 tracks.py 条目
  3. 多份数据交叉验证(三取二),再按 F1 官方弯名文章对名字
  4. scripts/make_track_map.py <赛道key> 出赛道图(弯号 + 弯名)和弯位表

其他

  • 同时只能跑一个采集任务,只能监听一个端口
  • 只支持 F1 25 的「2025 赛制」UDP 格式;F2、经典模式未适配
  • 弯位误差量级 几十米(算的是你的实际走线,不是赛道中心线)
  • 银石、蒙扎已对应官方弯名;其他未校准赛道只有「第 N 弯」+ 轨迹图

未来展望

目标不是「F1 专用」,而是通用赛车遥测助手。

优先级游戏状态
1F1 25已支持(持续打磨)
2神力科莎竞速(ACC)计划中
3神力科莎(AC)计划中
4其他大众赛车游戏视需求

架构上「采集」和「分析」是分开的:每个游戏一个适配器(lib/py/collect_<game>.py), 分析管线(切圈 / 弯道 / 对比 / 报告 / 图)全部共用 —— 加新游戏只是加一个文件。

远期想做:

  • 理想圈:把各段最好表现拼起来,看理论上能跑多少
  • 与 AI 车手遥测对比(「AI 在这个弯比你快多少」)
  • 圈速进步曲线(跨场次记录)
  • 更多赛道的弯位校准

License

MIT

星级评价

0.0 按 GitHub Stars 换算的社区热度,非用户打分
Stars0
Forks0
待解决 Issue0
最近更新2026-11-07

基本信息

作者jingjie43
版本0.2.5
开源许可MIT
默认分支main
入库时间2026-11-07

插件信息来自公开 GitHub 仓库与 SkillHub,版权归原作者所有;安装前请自行审查仓库代码。