公平竞技

选手数据采集

裁判台。只有工作人员能进,选手看不到任何分析。

工作人员账号由管理员发放;分牌后台的管理员从「选手数据采集」页签直接进入,也可以用那边的账号密码在这里登录。
—
本次由分牌登录
最近上线
登录地按 IP 离线查的,只能到城市/运营商这一级,仅供参考。

赛事 · 场次墙

点一张卡进那一场;离开「赛事」之前一直停在那一场,左上角「回场次墙」回到这里。红 = 现在处理(比赛进行中,采集断了 / 没开始 / 账号被别处登录),琥珀 = 需要看一下。只说要不要看、为什么,不做任何判定。

赛事板

从表格导入名单
一次建好多场 + 发密码
竖着排
组别选手A组爆哥A组陈浩然B组李明哲
横着排
A组B组爆哥李明哲陈浩然王思远
只有名字
爆哥陈浩然李明哲
按 8 人一场顺序切
还没选文件

认出来是这样
比赛类别
发号结果
密码只在这里显示一次,发给选手后关掉即可;忘了就在「账号」页点开那个人重置。场次建好后停在「等待开赛」,开赛由你自己按。
新建场次
创建后自动设为当前场次
名单一行一个,也可以用逗号、顿号、分号隔开;从 Excel 粘一列或一行都行,名字中间的空格会留着
比赛类别
只有报名顺序就是喷漆顺序时才勾。这里的颜色是按名单顺序硬派的,不是从游戏里读的:顺序一变颜色就跟着变,照着认人会认错。
选手
提醒名单(复制的就是这些字)
只说要不要看、为什么,任一单项都不定性;结论由工作人员在选手页看过原始依据后写。APM、事件数、风险分、键位在每个人的详情里。
复核队列
其他场次
不用切过去也看得到
本场局次
秒
正式版由分牌赛果自动登记;这里只在需要时手动补。
详情 读数带(复核排序 / L0 / L1 / 间隔 CV / 等间隔连串)· 会话编号与批次
概览按键与回放键位设备与环境按局对照原始数据
按键顺序技术动作赛道回放

证据逐项信号;只说看到了什么,任一单项都不定性

层级信号数值含义
按下沿计数
键类总次数平均 / 秒1 秒峰值峰值时刻
峰值 = 任意 1 秒内按下次数最大值,按软件接收时刻计。这几个数与「技术动作」那一格的「按键频率」表同一口径、同一份帧,必然相等;下面的表格仍逐条列出收到的每一次上报,一条不少。
按住时段
横轴为时间,一行一个功能
同时按下的组合
组合次数时间差中位抖动(标准差)取值完全相同按下顺序

#标准时功能物理键按住距上次通道
功能选手自报全局确认本场按下确认为(多键用 + 连接)

功能键按下抬起配对中位时长长按率(≥150ms)
使用道具 / 三段:按下到抬起隔多久
本表描述已观察的使用道具与三段按压,不确认游戏效果。相近时长和连串不是人手极限或违规证明;先核对采集质量、正常操作及设备。
按键频率
含 1 秒滑动窗口峰值
键类总次数平均 / 秒1 秒峰值峰值时刻
峰值 = 任意 1 秒内按下次数最大值,按软件接收时刻计。
按压时长

键类配对中位P90最短CV长按率
快拉间隔分布

漂移相邻按下间隔

前进重按间隔

0–500 毫秒,10 毫秒一格;超过 500 毫秒的单列。只统计,不判定:这里只画分布,不划阈值线、不给合格区间。同一个人在不同弯道、不同车上的节奏本来就不是一条线。
逐秒按下次数
进程是什么软件分类发布者签名首次 / 末次出现启动 / 退出
复核结论

场次

场次状态选手局采集记录创建开赛 / 结束
点一行进去看那一场的采集情况。删场次不会删采集数据;要清数据在「设置 → 数据清理」。每位管理员各看各的场次,互不影响。

复核

按风险分排序的待处理队列。每一条都要人看过、写明依据,系统不下结论。
规矩:注入与规则线索进入人工复核;时序分数尚未由真实 PC 基线验证,采集质量问题不归责于选手。任何指标都不自动定性或处罚。选手看不到这里的任何内容。
从左侧队列里点开一位选手,证据与结论坞都在这一屏。

发号验收

账号发下去之后谁真的跑通了。每几秒自动刷新,有人新登录会在右下角提示。
自检通过
选手机器键盘游戏进程版本最近登录
没就绪
选手卡在哪机器版本最近登录
还没登录过
选手批次口令发放
「自检通过」= 登录过 + 设过键位 + 真的采到按键 + 认到了游戏进程。任一没满足就落到「没就绪」,那一列会写明差什么。某一场开赛前人齐没齐(还要看版本、采集器、多处登录),看赛事页那一场的开赛前就绪表。

选手

选手档案:这个人的账号、登录与机器、比赛、键位、游戏昵称、样本、日志都在这一页。

概况

去列表页 · 验收 ›
账号
自检与版本
与验收页同一个结论

登录与机器

去列表页 · 账号 ›
这台电脑
登录后就上报的最新一份(选手端 0.6.6 起),以前的版本用最近一次开采时的快照 · 只给工作人员看
变化时间变了什么
IP首次末次
这个账号用过的机器
选手端 2.30.0 起:按 Windows 安装标识认(没有就按网卡 MAC)
标识MAC内网 IP公网 IP有线 / 无线首次最近登录次数
只用来看「是不是同一台电脑」:长期用同一台、某一场突然换了一台,结合手法一起看。换机本身有正常原因(换座位、笔记本带去现场),不单独说明任何事。
上线记录
最近 30 次 · 查代打看「有没有换地方上线」
上线时间来源 IP大致归属地在线时长
归属地按 IP 离线查的,只能到城市/运营商这一级,仅供参考,不能当作精确定位。同一个网吧的选手 IP 会相同。

比赛

去列表页 · 场次 ›
参加过的场次与会话
最近 20 次
开始场次状态风险换机赛道遥测事件
风险是试验性的复核排序,不是结论;换机只是事实提示。点一行进这一场的分析页。

键位

去列表页 · 验收 ›
选手自报
工作人员确认的版本
只作标注,不覆盖选手自报
版本自何时起确认人键位

游戏昵称

去列表页 · 账号 ›

样本

去列表页 · 指法样本 ›
这个人上传的指法样本
上传时间动作名标签时长事件

日志

去列表页 · 账号 ›
上传的日志
选手端传上来的运行日志,不含按键内容
时间大小

工作人员

分牌后台的管理员从页签进来即为管理员,不需要在这里建号。

账号

选手账号按名单批量生成;工作人员账号单独开,与分牌后台的账号无关。
选手在线
状态 · 在做什么账号选手端采集器游戏遥测 / 测试模式 / 诊断IP · 本次在线
在线的排在最上面(正在采集 / 比赛中、或者选手端报「卡住了」的再往前),离线的按最后在线从近到远。版本是选手端每次轮询自己带的;服务端刚重启、还没收到轮询的人显示账号上记的「上次记录」。点一行看这个人的档案。
选手账号 · 批量新增
登录名 = 名单上的名字;一次最多 200 人;先预览再确认
登录名预览

生成结果
登录名密码状态
口令同时弹在面板里(关掉才收起);之后也能在账号页「口令」一格点「显示」再看。
选手账号 · 批量操作
选中的账号:

登录名批次状态遥测采集计时赛
一次最多 200 人;每个人记一条审计。删除连同账号上的机器历史、上线记录一起删,不删采集数据(会话与遥测在「设置 → 数据清理」)。
新建工作人员账号

分牌后台的管理员从页签进来即为管理员,不需要在这里建号。
登录锁定
账号来源 IP状态操作
连续输错就会锁住这个「账号 + IP」的组合,锁上之后等一会儿自动解开。选手在现场等不及就在这里手动解除,不用改口令。
管理员自己被锁在外面时进不来这个页面,那种情况只能等——防爆破的底线,不留后门。
密码不落明文;账号文件只有服务本身能读。失败 8 次锁 10 分钟。左侧列表点开任一账号可重置、停用、删除。

计时赛

指法样本

采样人员用选手端采集器录的命名动作,按人按动作名归档。这是研究材料,不是比赛记录,也不是对任何人的判断。
两份样本对比
项目左右
00:00.000
这张表是两段记录的按键事实。只统计,不判定——不排名、不给合格线,也不是对采样人员或任何选手的评价。
标注与间隔分布
动作名、校验码、时长这些来自包体本身,后台改不得。

漂移相邻按下间隔

前进重按间隔

0–500 毫秒,10 毫秒一格;超过 500 毫秒的单列。只统计,不判定。
已收到的样本
对比上传时间采样人动作名标签时长事件数大小校验码操作
样本只含采样人员设置过的功能键,和比赛数据分开存放,不进「数据清理」;不要的由管理员在这里删。下载回去的是原样的导出文件,带 SHA-256,可用随选手端的离线回放页逐条重算核对。

观众视图预览

观众看到的就是这八个键的亮灭,别的什么都没有。开播之前先在这里核一遍。
对外开关
默认关,只有管理员能改,开关变动会记一条审计。开着的时候任何人都能看到这一场选手当下按着哪几个功能键。接口字段与接入方式见 docs/观众实时键位接口-v1.md。
实时键位
只有「按住 / 抬起」。不含物理键名、扫描码、设备、地址、账号,也不含任何统计、采集质量、风险或结论。引擎说未知的键一律当没按着显示,不猜、不补。

设置

这个后台没有可调的判定参数;规则改动走版本发布。
本后台
数据规矩
数据长期保存,由工作人员在「数据清理」手动清理;计时赛成绩在「计时赛」页逐把删。
风险分只决定复核顺序;任一单项不定性;结论由工作人员署名给出。
版本与更新记录
每个版本在 git 里都有标签和说明(仓库 CHANGELOG.md),这里读的就是那份。判定口径的改动一律走版本,不在后台改参数。
遥测采集
开了「遥测采集」的账号,选手端从服务器取采集器,比赛时自动采赛道遥测(选手端不用再手动打开)。单个账号在选手档案里开关,几个人一起在「账号 → 批量操作」里开关。
只有管理员能改;每改一个账号记一条审计。
游戏进程名单
只有这些进程在前台时才记录按键。改完保存,选手端下一次轮询(5 秒内)就生效,不用重装。
不确定进程名叫什么:让选手打开游戏,在选手端「采集」页那行「未检测到游戏窗口」后面会写着当前前台是什么,照抄过来即可。
窗口类名(可不填):前台窗口的类名对上这里任一个,也算游戏在前台。游戏大更新(比如换成 64 位)以后 exe 名变了、一时说不准时用;不填就只看上面的进程名。
选手端日志上传:调试期设成「自动」,选手那边一有问题日志就传上来;测完改成「只手动」或「关闭」。日志里只有程序自身的运行记录,没有任何按键内容。
采集方式:标准(默认,正常别动)= 键盘钩子 + 设备通道。2026-09-07 实测:钩子每次按键只花 0.064 毫秒,约 144Hz 一帧的百分之一,不是卡顿的原因(见 docs/研究-键盘钩子成本与替代方案-2026-09-07.md)。
省资源 = 应急开关:只用设备通道,软件宏(注入类)就查不出来了,厂商虚拟键盘的宏与时序统计仍在。只有在标准模式下复测、确认那台机器仍然卡时才用;用了之后该场次的注入类结论不成立,后台会如实标注。改完对下一次开始的采集生效。
名单不能清空——空名单等于永远不开始采集。
选手端下载
把链接发给选手即可;装过的选手端会自己在线更新(收进托盘且不在采集时自动换新,安装版与绿色版都一样)。

读取中…

读取中…

读取中…

读取中…

数据清理(手动)
数据长期保存,这里只在需要时手动清理。采集中的会话一律不会被删;删除不可恢复。复核结论记录会保留。「超过 N 天」也会删超过 N 天的选手端日志与 KartData 导入结算;计时赛成绩不在这里清理。
整理存储(无损)
仅管理员可执行
只换存法、不删任何数据:每个数字、字段、按键事件都原样保留,读出来与原文逐字节一致。每一份都先还原比对,一处对不上就保留原文件不替换。采集中的不碰;遥测在会话封存满 25 小时后才整理。在后台限速进行,有人比赛时自动放慢,可以随时停下、下次接着做。
访问审计
时间谁动作对象来源
只记「谁看了谁的什么数据」,不记数据本身。每天的备份会把链头带到机器之外,用 backup.js audit-anchor 核对历史有没有被改过。
复制名单

复制出来只有名字,一行一个,按名单顺序;粘到新建场次的名单框就能用。只要几个人:先点「全不选」,再勾那几个。

会复制这几行:

从已有场次添加
按场次按账号批次
    批量删除选手账号

    • 账号连同机器历史、上线记录、自报键位、游戏昵称、已发放口令一起删,不能恢复;
    • 不删采集数据:会话与遥测还在,按「设置 → 数据清理」的规则清;
    • 每个人记一条审计「删除选手账号」。
    导出所选口令

    • 下载一份 CSV:选手名字、批次、登录口令、状态;文件里是明文口令,发完就删,别转发到群里;
    • 每人记一条审计「查看选手口令」(对象写「名字(批量导出)」),口令本身不进审计;
    • 0.3.0 之前发的口令服务器没存,这一栏写「未存,需重置」——要的话先重置再导出。
    口令

    场次 / 批次登录名口令状态
    口令也存在账号上:之后在账号页「口令」一格点「显示」随时能再看(每看一次记一条审计)。