Karma机制详细解

本文原作者:JochoiJochoi
译者:SenioriouscSenioriousc
原文地址在此

引言

对于绝大多数(甚至是全部)Wikidot 用户来说,网站的 Karma 系统仍是未知的。有传言称,达到 4K(也就是“非常高”活跃度)和 5K(也就是“上师”活跃度)分别需要 2000 次页面编辑和 8000 次页面编辑。

为了探究这个机制的运作原理,我进行了一系列的数据搜集。


概览

对于 Karma 系统,有如下的猜测:

5K 用户的数量相对于 Wikidot 总用户量的比例是恒定的。当 Wikidot 的注册用户增多时,5K 用户的名额随之增多并出现空缺,此时活跃度最高的那部分 4K 用户便可以晋升为 5K 用户;或者根据 Wikidot 的活跃度计算方式,某些4K 用户已经超出了对应的阈值,此时他们亦将晋升为5K 用户。

Wikidot源代码

Wikidot 用于计算 Karma 的源代码是公开的,你可以在 Github 上查看他们的 计算方式相关的规则

第一手数据

一个用于提升并且监控 Karma 实时数据的脚本。

第二手数据

获取目前已知的 5k 用户的编辑数和发帖数。


研究过程

灌水升K

灌水升 K 脚本基于 NodeJS 环境进行开发,由 Karma PoCKarma PoC 执行。

该代码不会对外公开以防滥用,但是其设计理念如下:

  1. 脚本登入账户。
  2. 对一个可以随时删除的、无用的废弃页面,每 3s 进行一次编辑和保存。
  3. 对这个页面的讨论版,每 60s 发送一个帖子。
  4. 每 60s 检查一遍该账户的 Karma 等级,达到 5K 后终止操作。

对 5K(上师)账户进行编辑数和发帖数检索

对编辑数和发帖数进行检索的脚本基于 NodeJS 环境开发。

代码如下:

我在个人服务器 https://zh.xjo.ch/wduserinfo 上为这串代码提供检索所需的服务。能够用 query string 的参数提供 用户Id用户_id 或使用使用 用户名 来进行这里的统计。

如果编辑数超过 20000 或者发帖数超过 10000,请尝试使用用户ID,不要用用户名,因为把用户名转化成id还需要大概 10s 的时间。

如果编辑数和发帖数量过多,该脚本可能会因为服务器网关超时而出错。

感谢UnihedronUnihedron在使用指数搜索算法上提出的建议。


研究结果

Wikidot源代码

由于可查阅的 Wikidot 源代码是十余年前的版本,它们可能无法准确反映当前 Karma 的计算方式,仅供参考。

通过检视 Wikidot 的源代码,可以发现如果希望取得任意一个 Karma 等级,至少需要达到对应的最小活跃值;然而,每个等级的用户比例是根据 Wikidot 用户总人数分配的。这验证了先前的猜想,至少在十年前的 Wikidot 的确如此。

Karma 数值

Karma PoCKarma PoC 在编辑约 2000 次、发帖 0 时达到了4 Karma 。
11631 次编辑、101 发帖时达到了 5 Karma。

可能存在的问题:由于 Wikidot 更新 Karma 的速度很慢,所以可能在超出 Karma 阈值之后脚本没有及时停止操作,从而导致数据偏大。

对于当前的 5k(上师)用户的统计

按照字母顺序排序
检索数据时间均为 北京时间(UTC+8) 2024 年 1 月 6 日 12:00。
由于被删除的页面的编辑数和发帖的数量不包含在内,所以检索的数据可能有所偏差。

用户 编辑数量 发帖数量
7happy77happy7 36352 751
djkaktusdjkaktus 9034 2642
feitagfeitag 13709 3643
Helmut_pdorfHelmut_pdorf 21508 10059
Karma PoCKarma PoC 11631 101
Lt FlopsLt Flops 23618 1333
M ElementM Element 17110 3891
NatVoltaicNatVoltaic 11783 1496
pokmpokm 6079 3380
RounderhouseRounderhouse 21800 2273
Sekai_sSekai_s 8661 762
WoedenazWoedenaz 13426 449
ZynZyn 10194 63955
[[*user ]] / /

结论

首先,关于“编辑页面 8000 次升 5K”的谣言是错误的,因为没有考虑到 Karma 计算的其他因素。实例包括pokmpokmSekai_sSekai_s 没有达到6000次编辑1。作为第一手实例的Karma PoCKarma PoC 却需要大约 11000+ 编辑和 100次 发帖。

其次,由于无法得知 Karma 机制的具体运作方式,只能作出如下结论:即,在十年前开源的 Wikidot 版本中,“比例决定Karma”是正确的;但是由于可能存在的多个错误,目前尚无法得到准确的结论。

除非特别注明,本站内容采用 Creative Commons Attribution-NonCommercial-ShareAlike 4.0 协议授权。