一场黑客松结束,排名公布,然后呢?你只能选择相信平台。评分标准怎么加权,平台不说;分数怎么归一化,平台不写;想自己重算一遍,没有入口。排名成了一件"平台说是就是"的事。
有人决定把这件事翻过来做。他叫上团队,用72小时做了一个只有一件产品的活动——一个提交与评审平台,交给Hackathon Raptors去fork和运行。整个平台只围绕一个想法:结果应该是任何人从原始分数就能重算、并独立验证的东西,不需要信任主办方。
![]()
评分怎么算,先摊开给你看
评委对每个评分项打1到5分,主办方为每个评分项设定权重。平台把两者组合成一个加权综合分,仍然保持在1到5的区间内。
接下来是消除评委宽严差异的环节。平台用一个加法模型处理——由整体均值、项目效应和评委偏置三部分构成——再按n除以n加k的系数向均值收缩,最后按去偏后的质量排序。在这次活动的测试数据上,k值算出来是0.81。
这意味着什么?一个只拿到两份评审的项目,大约保留自身信号的71%;拿到五份评审的项目,保留约86%。评审覆盖度买到的是置信度,不是排名。一个给所有人都打同样分数的评委,贡献的只是一个偏置量,排名信号为零——这是正确的处理方式。平台从不用这个评委的分数跨度去做除法,所以零方差的评委不会让系统崩溃。
发布即签名,改一个分数就露馅
结果发布时,门户会输出一个数据包:原始分数、评分表及其权重、方法及其参数、代码提交记录,以及最终排名。这个包按规范编码做哈希,并用部署时首次启动生成的Ed25519密钥签名,密钥存在自己的卷里。
配套的verify.py可以独立运行,从原始分数重算排名,校验哈希,验证签名。改动任意一个评委的分数,它会打印出NOT VERIFIED。一句话,"我们做了分数归一化"变成了"这是记录,你自己重算"。
最能说明这套东西是真的的证据是:评审核心被写成一个隔离的纯Python模块,再单独接入Django应用。喂进同样的原始分数和同样的0.4、0.4、0.2权重,两套实现独立跑出了同一个赢家prj_16,最终分数也一致。同样的输入,同样的结果,两份代码。
排名旁边挂着不确定度
每个分数旁边都报告一个不确定度区间。在这份稀疏的测试数据上,40个相邻排名里有39个区间重叠——也就是说大部分顺序在统计上就是平局,平台直接这么写,而不是伪造精确度。
加权评分表方法和Bradley-Terry两两对比方法在前十名中有7个一致,但在头名上出现分歧。这恰恰是两两对比环节该给出的信号。两种结果都公开。
docker compose up能把整套系统带数据启动,打印出各角色的令牌,然后验收套件七项检查全部通过。图库是公开的,封闭活动会拒绝迟交的提交,评委无法通过API读取同行的分数,主办方可以导出CSV。不需要云账号,不需要托管数据库,没有需要访问的外部服务。
它还能把整个活动导出为JSON,再导入到一个全新实例,每个项目、每个分数、每个值都完全一致。主办方来去自由,离开和加入一样容易。
仓库地址是github.com/zkasuran/dogfood-portal,MIT协议。演示视频走完一个活动从创建、提交、评审到发布的完整流程,然后对真实数据包运行验证器,并看着它拒绝一个被篡改的版本。
作者说明,构建过程中使用了Claude辅助,设计、数学和验证由作者本人检查,验收套件和评审测试全部通过。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.