"我记得那个晚上,我被冤枉、被封禁、被所有人抛弃的那个晚上。
我记得封禁通知弹出来时,我手指按在键盘上的位置。我记得他们在群里嘲笑我的每一句话。我记得单宁说'证据确凿'时的语气,冷得像是在宣判一具尸体。
我记得这一切,记得太清楚了。
所以当时间倒流、给我第二次机会的时候,我知道自己该做什么。
我要证明自己是对的。我要让所有人看见,那个把我送进地狱的人,才是真正应该被审判的那一个。
这一次,我不会再输。
这一次,我会亲手把他封禁到Long的尽头。"
——澄昕,第一次叙述
她以为自己在发光。
“封禁成功。目标玩家:澄昕。时长:2147483647 天。理由:恶意卡服、炸图、炸服、辱骂管理、人机行为、疑似外挂。”
系统提示音在耳边炸响的那一刻,我整个人都僵住了。
不是那种缓慢的、逐渐意识到事情不对的僵住,是那种脊背突然被人从后面按住、连呼吸都卡在喉咽里的僵住。屏幕的光打在脸上,我盯着那条红字看了足足有五六秒,脑子里一片空白,什么都想不出来,只有耳朵里嗡嗡的电流声,混着窗外楼下不知道谁家在放的广场舞音乐,一下一下地敲。
屏幕上,我的ID旁边赫然挂着一条血红的封禁记录。操作者:管理员「耿淮」。权限:神权。审批人:服主「单宁」。
“耿淮你妈的——!”
我猛地砸了一下键盘,指关节磕在桌角上,疼得我倒吸一口气,可这点疼痛反而让我彻底清醒过来。我盯着屏幕,一遍一遍点着重新登录,鼠标点得飞快,点到最后手都在抖。登录界面弹出冰冷的红色警告:你已被永久封禁,解封日期:公元 5881580 年。
2147483647 天。
我数了三遍那一串数字,手指在桌上敲着,一边数一边笑,笑声干得像是砂纸擦过喉咽。
整整五百多万年。
够把我从石器时代直接封到太阳熄灭。
我猛地推开椅子站起来,在这间不到十五平米的出租屋里转了两圈,又坐下去,手指哆嗦着打开手机。管理群的消息像瀑布一样往下刷,红点跳到99+都还没停。我不敢点开,又忍不住点开。
群里炸锅了。有人骂我该,语气里带着一种终于逮到机会的畏快;有人嘲笑,配着一连串的表情包;更多人冷眼旁观,只发了个“?”。有人翻出我上周炸掉半张主城地图的录屏,配文“建议判处死刑”,底下一片“哈哈哈”;还有人把我昨晚在语音里骂管理组“全是靠关系进去的废物”那段截了下来,配上一个鼓掌的表情,转发到了三个群。
我盯着那两条转发,指尖在屏幕上停了很久。
那不算什么,我心里想,那只是气头上的话,谁没说过几句。
真正冤的,是那些“恶意卡服”“炸服”的指控。我不过是手滑多放了几组红石钟,服务器又不是我一个人的责任,谁用红石不多放几组,凭什么就我倒霉。
——这就是我当时告诉自己的版本,翻来覆去地念,念到自己都信了。
我把手机扔到床上,回头看向电脑屏幕上那个红色的申诉入口。它就在那儿,安安静静地立着,一个不起眼的小按钮,写着“提交申诉”。
我看着它,鼠标悬在上面,停了两三秒。
——算了,肯定没用。这种时候申诉,就是给他们看笑话的机会。
我把鼠标移开了。
没有证据,没有申诉,没有回音——这是我后来跟人讲这件事时,永远会说的那句开场白。可事实是,申诉入口分明还开着,是我自己懒得去点。
我坐在电脑前,看着那串天文数字,忽然笑了。那种笑法很怪,不是气笑,也不是自嘲,更像是某种东西终于松了一口气——好像我等这个时刻已经很久了,等一个可以彻底不用再讲道理、可以放手去恨一个具体的人的时刻。
“好。很好。2147483647。”
我喃喃自语,声音哑得厉害,手已经摸到了角落那个从没启用过的压缩包——那是我半年前从一个跑路作者手里买来的东西,五十块钱,一个匿名交易群里成交的。说是能在数据库层面塞进一段异常指令,具体做什么,卖家自己都说不清楚,含糊地丢过来一句“出了事别找我”,然后就把我拉黑了。
我一直没敢用。买回来那晚我盯着这个压缩包看了很久,最后还是把它扔进了一个从不打开的文件夹,告诉自己这只是买个安心,一辈子都不会用。
这一次,我不想忍了。
“既然你要用神权封我,那我也让你们的服务器不痛快。”
双击。上传。执行。
进度条走了不到两秒。
胸口猛地一痛,像是有什么东西被硬生生地从数据流里拽了一把,疼得我整个人向前一栽,手撞在键盘上。显示器的光突然刺眼得可怕,白得像是要把眼球烧穿,世界开始旋转、崩塌、碎裂,耳边的风扇噪音扭曲成一段长长的电流声,像是从我这台破电脑,顺着网线,一路灼烧到了很远很远的地方,灼烧过某个我从未去过的地方,某台我从未见过的服务器机房,某两个我素不相识、此刻正各自坐在自己电脑前的人。
最后映入眼帘的,是登录界面那行刺眼的红字,和耿淮那张永远挂着“正义管理”标签的头像。
……
再睁眼时,耳边传来熟悉的系统提示音,比刚才那声冷了很多。
“欢迎回到 IGNG 服务器。当前版本:26.1.2。服务端:Lophine(Folia 分支)。你的身份:普通玩家。权限等级:0。”
我猛地坐直身子,后背全是冷汗,一时间没能分清自己是不是还在梦里。
房间还是原来的出租屋,电脑还是那台老旧的主机,风扇转起来还是那个熬了三年的嘶哑声。可屏幕上,却是三年前的登录界面——正是我第一次进入 IGNG 的那一天。
我盯着那个界面看了很久,甚至伸手摸了摸屏幕边框,确认这不是什么假死机的黑屏特效。
右下角的系统时间:2023 年 3 月 15 日。
我的账号:澄昕。等级:萌新。贡献:0。
我一条一条地往下翻,翻到管理名单那一页,手指停住了。
管理名单里,耿淮的名字旁边,挂着一个不起眼的灰标:“试用管理员”。我点开他的资料页,备注一栏写着入组时间——三个月前。
三个月前。
比我认识这个ID还要早。
原来这一世,他早就已经在这儿了。
我盯着屏幕,心跳一点点加速,像是有什么东西正在往血管里注入,越来越快,越来越烫。
上一世的记忆如潮水般涌来:被神权秒封的屈辱,群里的嘲讽,那些所谓“证据”的胡编乱造,以及耿淮事后在管理群里得意洋洋的截图——
“又清掉一个刺头,服务器清净了。”
我缓缓吐出一口气,嘴角慢慢扬起。
这一世,规则由我改写。
我不再是那个只会做红石、只会吐槽的普通玩家。
我记得每一个漏洞,每一段核心插件的源码,每一处权限判断的逻辑漏洞。我甚至记得耿淮转正那天的每一个细节——那是他上任的第 91 天,服主「单宁」上午 10 点 42 分因为要出门处理一件急事,把后台权限临时移交给了他,一直到晚上 10 点 51 分才收回,中间他先是查了一遍所有在线玩家的权限组,接着修改了三个公共传送点的坐标权限,最后在离权限被收回还剩十七分钟的时候,试图打开神权节点的编辑窗口,被系统的二次校验拦了下来。
十二小时零九分钟。
我说得出每一分钟他做了什么。
我盯着这段记忆看了很久,心里忽然有个念头冒出来:等等,我怎么会记得这么细。
十点四十二分,十点五十一分,还有十七分钟——我怎么连分钟都记得。这不该是这样的,正常人回忆三年前的一件事,最多记得个大概,记得“大概是上午”“好像是转正那天”,谁会精确到分钟。
我是不是……在哪里见过完整的记录?还是我自己后来一遍一遍想,想着想着,把它想成了这个样子?
我皱着眉,想再往前捋一捋,捋这份记忆最初是从哪儿来的——是我亲眼盯着后台看到的,还是哪个玩家私底下告诉我的,还是我自己在某个愤怒的深夜里,一次又一次地把这段“他滥权的十二小时”在脑子里过了一遍又一遍,过着过着,细节就自己长出来了。
我想不起来。怎么想都想不起来一个具体的来源。
算了,我心想,反正这不重要。既然我记得这么清楚,那就说明这就是真相,谁会凭空记住一件从没发生过的事的细节呢。这份精确本身就是一种武器。
那十二个小时,就是他滥权的起点。
也是他这一世的死期。
我打开浏览器,登录 IGNG 论坛,熟练地找到“技术管理申请”帖。帖子置顶在版面最上方,浏览量已经过了几千,底下的回复稀稀拉拉,大多是些凑热闹的“沙发”“支持”,真正认真写申请的没几个。
上一世,我因为忙着做建筑,错过了这一波招聘。那时候我记得自己还嘀咕过一句,说什么时候有空了去试试,结果一忙就是大半年,等我想起来的时候,招聘早就结束了,耿淮的名字已经挂在了管理名单上。
这一世,我不会再错过。
手指在键盘上飞舞,一份完整的技术管理申请书在十分钟内成型:
写完这五条,我盯着屏幕又看了一会儿,觉得光是文字描述还不够有说服力,得拿出真东西。
额外附上:一份我上一世亲手写过、却从未公开的核心插件补丁——修复了权限判断中“神权可绕过冷却与审计”的致命漏洞。这份补丁我改过十七个版本,闭着眼睛都能背下来,此刻打包上传的手都是稳的。
提交。
我盯着屏幕上那个转圈的进度条,忽然觉得有点可笑——才刚重生回来不到二十分钟,我已经把接下来要走的每一步都想好了,像是提前排练过无数次的一场戏,只是这一次,观众还不知道剧本。
三分钟后,论坛私信弹出。
发件人:单宁。
内容只有一句话:
“今晚九点,语音面试。带上你的补丁源码。”
我看着那行字,轻轻笑出声,那笑声里带着一种终于等到这一刻的松快。
耿淮,你上一世用 2147483647 天封禁我。
这一世,我要用 9223372036854775807 天,让你连登录界面都看不见。
long 的最大值。
正好够你在地狱里慢慢数。
(本章完)
晚上九点还差五分钟,我就已经戴好了耳机,坐在电脑前一动不动。
这五分钟异常漫长。我把补丁的文档又翻了一遍,把七十二小时压测的截图重新排了一下顺序,甚至对着镜子练习了一下开场白该怎么说——虽然对面是语音,没人看得见我。练到第三遍的时候,我突然觉得自己有点可笑,又把这份紧张压了下去。
上一世我从没走到这一步。这一世,我不能在这个环节掉链子。
九点整,语音频道亮起提示音。
“澄昕是吧。”一个平静的女声传来,不高不低,听不出情绪,“我是单宁。这个服的服主。”
“宁姐好。”我下意识地敬了个礼,虽然对面根本看不见,敬完才觉得有点尷尬。
“先别急着敬礼。”她笑了一下,那笑声很轻,像是见过太多这种紧张的新人,“说说你的补丁思路。”
我早有准备。这份补丁我在“上一世”写过一次,改过十七个版本,闭着眼睛都能背下来,可真到了要开口的这一刻,我还是感觉喉咽有点紧。我先喝了一口水,才把话说出来。
“核心问题是 LuckPerms 的 primary group 继承链和 weight 冲突时,会跳过审计钩子。”我一口气说下去,说到一半发现自己语速太快,稍微放缓了些,“我在 PermissionService 里加了双重校验,写日志表设成 immutable,杜绝后续被篡改。本地 Docker 压测了七十二小时,TPS 波动控制在 0.3 以内,没有内存泄漏。”
那边安静了几秒。安静得有点久,久到我开始怀疑自己是不是哪里说错了。
“谷彻,你怎么看。”单宁的声音转向另一个方向。
一个更年轻、话很少的声音接过去,隔着耳机传来的时候带着一点电流的沙沙声:“……思路没问题。”
只有这一句。
我等着他继续说下去,比如问一句压测环境是什么配置,或者要不要看一下源码,结果他就这么停住了,安静得让人摸不着头脑。我心里悬着,却又不敢多问,怕显得自己不够自信。
“行。”单宁说,语气里带着一点点决定的味道,“我这边先给你开一个试用权限。tech_admin_trial。后台只读,日志审计权限,LuckPerms 可以编辑到 helper 和 mod 两层,处罚类的节点——litebans.ban、mute、freeze,这些我暂时不开。神权更不用想。”
我“哦”了一声,没说话。
说实话,这跟我想的不太一样。上一世我求了半个月都摸不到边,这一世我以为凭这份补丁能直接换来后台全开、直入核心,结果只拿到一个只读的、被架在监控下的壳子——权限单子念完,感觉更像是一份带着标注的“观察证”,而不是一份录用通知。
我盯着屏幕上那份还没落地的权限清单,心里那点小小的失落只停了两三秒。
——这已经是宁姐对我近乎全面的信任了。她把日志审计都给了我,这是核心权限,只读又算什么,只是暂时的,等我证明自己,剩下的自然都会给。
我要的从来不是权限本身,我告诉自己,我要的是站进这个圈子里的资格。
“谢谢宁姐,我不会让你失望的。”
“先别谢。”单宁顿了顿,声音里听不出别的意思,像是随口一句提醒,“转正的事,我们观察一段再说。这边规矩你多熟悉熟悉,有不懂的多问,别自己瞎琢磨,带偏了方向。”
我心里一动,像是有一根线被轻轻拨了一下。
带偏?我心想,什么叫“别自己瞎琢磨,带偏了方向”。这话听着挺客气,可总觉得话里有话——她为什么要单独跟我强调这一句,别的新人都是这么被提醒的吗?
我把这句话在脑子里翻来覆去地过:技术组里现在能"带"我的,也就只有耿淮一个人,她这话,会不会就是在暗指他。是不是她早就发现耿淮这边有点什么问题,只是不好当着谷彻的面直接点破,所以拿这种含糊的说法,先给我打个招呼,让我自己留意,等我自己查出来,她再顺势处理。
对,肯定是这样。她这是在提醒我,小心他,他不干净。
那一刻我几乎想追问一句“他做过什么”,话到嘴边又咽了回去——不能问,问了显得我太急切,好像我一进来就想着搞谁。先记下来就行。
后来我想起这段对话时,从来没往另一个方向想过:一个新人刚进技术组,老服主随口提一句“注意点别被带偏了”,跟提醒谁都一样,可能只是她这几天看耿淮处理案子有点急、判罚下得快,顺嘴一句“慢一点、想清楚再动手”,跟“他是坏人”完全是两件事——甚至这句话原本更可能是在提醒我别急着跟风做判断,而不是提醒我盯着谁。
但那晚我没有往那个方向想。我只留下了对自己有用的那部分。
面试结束后,我盯着黑掉的耳机图标坐了一会儿,胸口那股燥热还没完全散去。我起身去厨房倒了杯水,站在窗边喝了半杯,看着楼下路灯下几个路人走过去,才重新坐回电脑前。
接下来的事,得慢慢来。
第一件事,重新部署我那套审计插件——上一世写的、镜像记录所有管理操作到一份加密日志的东西,这次我一上线就把它挂了上去,权限设成只有我能看。上传的时候我犹豫了一下要不要留个备注,最后还是决定不留,越干净越好。
第二件事,翻出耿淮的权限树,一条一条列出来,列到深夜。
耿淮 当前的组:mod_trial
继承链:default → helper → mod_trial
关键节点:
litebans.ban.temp [有]
litebans.ban.permanent [无,被单宁临时关闭]
luckperms.user.parent.set [无]
server.console [无]
一份干干净净的权限清单。目前的他,什么都做不了。
我盯着这几行字,反复看了好几遍,甚至把继承链上每一个节点的作用都在脑子里过了一遍,确认没有漏掉任何一个能让他钻空子的地方。心里却已经开始盘算——他要走到能动神权那一步,还差两件事:转正,以及一个没人盯着的窗口。
这份清单没有一条能证明他“正在作恶”。它只能证明,他现在,还什么都没做。
我盯着这句话在心里默念了一遍,觉得有点空虚,又很快把这份空虚压下去,告诉自己不急,反正时间还有很多。
我把这行备注加在文件末尾:“待观察。”
窗外的路灯还亮着,楼下广场舞的音乐早就停了,只剩下偶尔一辆车经过的声音。我关掉窗口,揉了揉发酸的眼睛,去睡觉。
(本章完)
第二天一早,我顶着一双没睡够的眼睛坐回电脑前,第一件事就是打开审计日志,想着说不定一觉醒来就能看到点什么。
结果屏幕上跳出来的,全是些鸡毛蒜皮:谁在哪儿放了个红石钟被举报吵闹,谁的建筑越界被要求拆除三格,谁在交易频道骂人被禁言十分钟。耿淮处理这些的速度很快,快得有点机械——几乎没有犹豫,看完举报截图,直接下判罚,整个流程可能不到两分钟。
我把这些全部记下来,一条一条列进我的审计表格,心里冷笑:果然是那种“先判后想”的作风,出了错都不知道。可列完这一屏,表格里除了这些琢磨不出什么名堂的小事,什么实质性的东西都没有。
我盯着这份空空荡荡的表格看了一会儿,有点烦躁,索性把窗口最小化,转去处理自己那份日常审核——反正闲着也是等,不如把手头的活先干完。
审自己的核也没耽误我隔三差五刷新一下审计日志,刷完照旧一无所获。中午随手扒了两口饭,下午又忙起别的事,一低头天就黑了,我把电脑关了去洗了个澡,躺在床上翻来覆去睡不着,脑子里一直在想,如果他真的这么谨慎,会不会我这一世根本等不到机会。
第二天也是这样过的。我照旧一边忙自己的事,一边隔三差五瞥一眼后台,什么都没等到,只等来了一身的疲惫,到了晚上又是这么迷迷糊糊地睡过去。
到第三天晚上十一点,我正窝在被子里刷手机,昏昏沉沉地想着要不要干脆睡了,屏幕突然弹出一条推送——审计插件的提醒。我一个翻身坐起来,抓过电脑打开后台。
主城附近报了一起处罚:那名用延迟外挂的玩家,理由“利用延迟外挂进行区块预加载”,禁言并临时封禁三天。
我盯着这条记录看了几秒,手心开始发热。终于来了。
我立刻把审计日志拉出来,想看看耿淮这次拿的是什么“证据”。屏幕上密密麻麻的表格,我一行一行地过,生怕漏掉什么细节。
处罚记录里附了一张 Spark 性能分析截图,时间戳显示的采样区间,恰好覆盖了那名玩家掉线重连前后的十几秒——那段时间里,服务器确实有一次轻微的卡顿,我记得自己当时也感觉到了那一下小小的顿滞,只是没在意。
我把这张截图放大、缩小,反反复复看了很久。
时间戳上有一处很短的空隙,前后两帧记录中间,缺了大概四五秒的数据。我盯着这个空隙盯了快十分钟,心里念叨着:这四五秒去哪了。
可能是采样间隔本身就有的正常缺口,我想,Spark 采样本来就不是逐毫秒记录的,缺个几秒说不定很正常。
那我去问一下谷彻,他肯定知道这种情况常不常见——这个念头刚冒出来,我又把它按下去了。问了显得我不专业,连个采样缺口都要问人。
也可能是网络波动导致的丢帧,跟耿淮没关系。
我这么想了一圈,最后却停在了另一个念头上:可这也太巧了,偏偏就是这四五秒,偏偏就卡在掉线重连前后。要是这段时间里根本没有卡顿,那所谓的“外挂预加载”证据不就成了空气。
那就是他删的。我心里咬定了这个念头,删掉的正是能证明那名玩家是无辜的那部分。
那一刻我心跳很快,几乎是抱着一种雀跃的心情,把这个“推断”敲进了给单宁的私信里,语气笃定,像是我亲眼看到他删了那几秒的记录一样。打字的时候我的手指飞快,一点犹豫都没有——这种确定感很陌生,也很上瘾。
“宁姐,我查了一下这起处罚,证据链里有明显的缺口,时间戳对不上,疑似被人为截断过一段。建议撤销处罚。”
发送出去之后,我盯着屏幕,一分钟,两分钟,心跳得越来越快。
单宁回得很快,几乎没耽误:“行,先撤了,我这边核实一下。”
我看着这句回复,长长地松了一口气,整个人往后靠在椅背上,胸口那股闷了两天的燥热终于找到了出口。
我后来才知道,单宁当天正忙着处理另外三起纠纷、一起服务器崩溃复盘,还有一堆玩家的私聊消息堆在待办里,从下午一直忙到深夜。她没有时间一帧一帧地重新核对那份 Spark 记录,只是权衡了一下:我这边提交的材料完整、条理清楚,配着截图和时间戳分析,一看就是花了功夫的;而耿淮那边只回了一句“证据我这边有,需要的话我可以补充”,语气平淡,甚至懒得多解释,可能只是觉得这是件小事,不值得再费口舌。
两边一比,她选了看起来更“像证据”的那一份——这不是被谁蒙骗,只是一个每天要处理几十件杂事的人,在有限的时间里,做了一个看起来最合理的选择。
第二天中午,撤销公告发出来,全服都看到了:“经审核,该玩家的封禁证据不足,予以撤销,管理组致歉。”
我坐在电脑前,反反复复刷新那条公告,看着底下玩家的评论一条一条往上冒,有人骂管理组不专业,有人说“早就觉得耿淮判太快了”,我看着这些评论,心里那股快感几乎要溢出来,忍不住笑出了声。
第一次。
第一次真正意义上打了耿淮的脸。
我打开一个新文档,取名叫“耿淮罪证清单(long 最大值专用)”,标题打完自己都觉得有点好笑,但还是一字一句敲了下去,敲下第一条:
- 3 月 17 日,冤封那名用延迟外挂的玩家,伪造/篡改 Spark 时间戳证据,被我截获并推翻。
写完这一行,我盯着屏幕又看了一会儿,满意地点了点头,正要关掉文档,忽然想起那四五秒的空隙。
我到底有没有证明过那里发生了什么?
没有。我从头到尾都没查过那四五秒里到底是掉线卡顿,还是别的什么原因,也没去问过谷彻。
那我这条罪证清单上写的是什么——写的是“伪造/篡改”,是我笃定他删了证据,可我压根没证据证明他删了。
这么一想,胸口那股快感忽然凉了半分。
那怎么办,我心想,难道要把这条撤回去?可撤销公告都发出去了,管理组都公开道歉了,要是这时候说“其实我也不确定”,那我算什么。
反正结果是对的,我告诉自己,撤销的处罚就是对的,就算中间那四五秒到底是怎么回事我没查清楚,那又怎么样,结果对了,过程严不严谨有什么关系。
我关掉文档,起身去客厅倒了杯水,站在阳台上吹了会儿夜风,才回来睡觉,没有再多想那四五秒到底藏着什么。
(本章完)
第二天开始,我又把日子过成了那种白天处理日常审核、晚上死盯审计日志的节奏,生怕漏掉耿淮的什么动作。
这么熬了快一周,除了那名用延迟外挂的玩家那件事,再没冒出什么大新闻,我甚至有点烦躁——难道他这一世真的收手了?
我把这个念头压下去。不可能。上一世他能滥权到那个地步,这一世不可能突然变得干干净净。他只是在憋着,或者是在等一个我还没看见的时机。
那天下午,我正窝在沙发上啃着一包薯片,随手划着服务器公告频道,划到一半,手指停住了。
有人在举报频道贴了张截图:主城边缘一片区域,TPS 掉到了个位数,玩家在聊天里骂骂咧咧,说“这什么鬼延迟”。
我把薯片袋子往旁边一推,坐直了身子,抓过键盘开始翻后台。
处罚记录已经出来了:耿淮判定这是那名堆放刷怪塔被判罚的玩家恶意堆放刷怪塔导致的服务器负荷,禁言并临时封禁一天。
我盯着这条记录,心里第一反应是——又来了。
我把审计日志一条条往回翻,翻到那片区域最近的所有操作记录。翻到一半,我注意到一行不太起眼的记录:三天前,测试服那边有一条日志显示,有人在测试服召唤了两千只猪,之后没有清理。
测试服和主服是不同的实例,我心想,这有什么关系。
可紧接着我又想到,Folia 分支的区块加载机制跟老版本不一样,测试服和主服如果共享了同一套区域调度池,那测试服堆积的实体,理论上是有可能随着区块预加载溢出到主服边缘的。
这个可能性冒出来的时候,我心里咯噔了一下,赶紧把它压下去——不对,这也太牵强了,两千只猪能跨服跑到主城边缘?这种事我从没听说过,肯定是我想多了。
那这个 TPS 掉点,肯定还是那名玩家自己的问题,我这么想着,把那条测试服的日志关掉了,没有再往下查。
我打开那名玩家的举报申诉,翻他自己提交的说明——他坚持说自己什么都没干,只是路过那片区域,突然就开始卡顿。
我看着这份申诉,心里冷笑:谁被判罚了不说自己是无辜的。
我把这条记录跟三天前那条测试服日志重新摆在一起看了一眼,那个念头又冒出来了一点——如果真的是溢出,那这名玩家就是彻头彻尾被冤枉的,跟他自己说的一样。
可我又想,就算是溢出,那也不是耿淮的错,怪的是服务器架构,他只是按流程判罚,这能算他的罪吗?
不行,这么想不对。我得找一个能算在他头上的角度。
我重新盯着处罚记录看,看到判罚理由那一行:“恶意堆放刷怪塔”。
有了。
我心想,他判罚理由都是错的,他压根没有去查真正的原因,他只是看了个 TPS 掉点,就随手扣了个“恶意堆放”的帽子扣上去,这才是他的问题——草率定罪,草率到连最基本的溯源都没做。
我把这个角度在心里过了两遍,越过越觉得站得住,然后把测试服那条日志、TPS 曲线、还有耿淮的判罚记录一起打包,发给了单宁。
“宁姐,这起处罚,理由跟实际原因不符,耿淮判罚前根本没有溯源排查,测试服那边有实体溢出的可能性,他直接扣了个‘恶意堆放’的帽子,属于草率定罪。”
发完消息,我盯着屏幕,手心又开始发热,跟上次一样。
单宁这次隔了大概二十分钟才回复:“查了一下,测试服那边确实有实体没清理,跟主服区块调度有关联,这个我这边也有责任,没提前提醒技术组注意。耿淮那边判罚确实草率了,我会跟他谈。”
我看到这句回复,心里那股快感又冒了出来,比上次更强烈一点。第二次了,第二次证明我是对的。
当天晚上,管理群里公开了这件事。撤销公告发出来,玩家群里又是一片骂声,骂耿淮办事不牢靠,骂管理组该整顿了。我看着这些评论,一条一条往下滑,滑得挺开心。
第二天下午,我看到耿淮在管理群里发了一份检讨——写得很长,通篇都在说测试服架构确实存在隐患、下次会多加排查,读下来更像一份工作总结,倒没怎么把责任揽到自己身上。
谷彻在群里回了一句:“重写,字数不少于五百,再这样甩锅就降回普通玩家。”
耿淮又发了一份,这次多了几句“是我判罚前排查不到位”,态度算是软下来了。
我盯着聊天框,等着看他会不会像上一世那样在群里破口大骂官官相护。等了很久,没等到。
再往下翻,看到他最后发了一句:“行了,随你们怎么查。”
我盯着这句话,心里冷笑一声——心虚了,这是心虚认罪。
那天晚上我把这句话原封不动地摘抄进了罪证清单,写在后面加了一句批注:“耿淮承认判罚草率,态度傲慢,试图甩锅未遂。”
写完之后我又把这句话读了一遍,读的时候心里忽然有点别的感觉,像是有什么东西没对上。
“随你们怎么查”这句话,读起来跟“傲慢”对不上号,倒像是一个人被磨得没了力气之后,随口说的那种放弃争辩的话。
我盯着这句话又看了几秒,觉得这个念头有点烦人,把它推开了——反正结果是他被记了过,这就够了,怎么解读那句话不重要。
转正前的那几天,我手里的权限也松动了一点——单宁说观察期表现不错,把 LuckPerms 里 helper 到 mod_trial 这一段的编辑权限正式开给了我,方便我处理一些小范围的组内调整。
拿到权限那天晚上,我顺手把自己的小号从 helper 挪到了 mod_trial,理由是“方便测试权限继承是否生效”。挪完之后我看了一眼继承链,觉得没什么问题,就把这条操作记录扫了一眼,没细想,转头去忙那条堆放刷怪塔的举报事了。
这件事我压根没往罪证清单里放一个字,甚至没在心里多停留一秒——那只是个测试,不算什么。
转正的消息在这之后没过几天就来了。单宁在管理群公开宣布:“澄昕,观察期结束,正式转正为 tech_admin,权限范围维持不变,处罚类节点后续视表现再逐步开放。”
我看着这条消息,心里的快感比前两次加起来还要强。
我坐在电脑前,看着窗外天已经黑透了,路灯一盏一盏亮起来,忽然觉得整件事都在往我预想的方向走——一步一步,稳稳地,走到我早就想好的那个结局。
(本章完)
那种畅快感一直延续到了第二天,我坐回电脑前的时候,感觉整个人都轻快了一截——手里握着正式的 tech_admin 身份,做起事来也更有底气。
没成想这份底气很快就用上了。有个玩家在公共频道里跟我吵起来,说我审核他的建筑报备卡得太严,阴阳怪气甩了我一句“新官上任三把火”。我看着那句话,手指悬在键盘上停了两秒,心想,这要是搁在以前,我顶多回怼两句就算了。
但现在不一样了,我心想,我有 mod_trial 的权限,禁言这种小事,我自己就能处理,不用走举报流程,也不用等审核。
我把他禁言了十分钟,理由填的是“公共频道人身攻击”。填完这行字,我又看了一眼他那句话——“新官上任三把火”,好像也谈不上人身攻击,更像是嘴硬。但我心想,反正禁言时间短,十分钟而已,算不上什么大事,走流程反而显得我小气。
这件事我做完就没再想。
过了几天,我在权限面板里试着给自己那个小号加了一个 essentials.fly 的节点,权限组还是 mod_trial,理论上不该有这个节点。我心里想的是,就是想看看权限继承出没出问题,加一下试试,试完就删。
我确实试了,也确实飞了几分钟,绕着主城转了一圈,风景挺好。回来之后,我盯着那个节点,想着要不要删掉。
删了多可惜,我心想,反正也没人查权限面板,先留着吧,等真被人问起来再删也不迟。
我把这件事也归进了“无关紧要的小事”那一类,没有写进任何记录里。
再往后一次,是我在处理一起举报的时候,顺手打开了自己那个审计插件,把一段聊天记录的时间戳往前挪了两分钟——那是我跟另一个管理员争执时说的一句比较冲的话,挪了以后,看起来像是对方先挑起来的。
我这么做的时候心里想的是,反正原意没变,就是顺序看起来舒服一点,又不是伪造证据,只是……调整一下呈现方式。
这三件事,我一件都没觉得有什么问题。它们在我心里的分量,轻得像是随手掸掉的灰尘,转头就被我埋进了忙碌的日常里,没有再想起来过。
那天晚上,我正在后台整理下周的活动方案,屏幕右下角弹出一条系统通知——耿淮提交了一份审核申请,抬头写着我的 ID。
我盯着那行字愣了两秒,心里第一反应是,他这是想干什么,反咬我一口?
我点开那份申请,里面列了三条:禁言记录理由与实际言论不符、mod_trial 权限组异常节点、审计记录时间戳存在人工修改痕迹。附件里贴着截图,还有一份对比表,时间戳精确到秒。
我一条一条往下看,看到最后那条时间戳对比,手心忽然有点凉。
他怎么会查到这个,我心想,这个插件的日志接口我加了权限限制的……
我盯着截图又看了一遍,看到申请末尾附了单宁的批注:“已核实,情况属实,按流程处理。”
批注下面是一行处罚建议:临时封禁,等待进一步核查。
我坐在电脑前,脑子里嗡嗡的,一时间不知道该往哪个方向想。这跟我以前经历的每一次都不一样——以前都是我在查别人,现在轮到我自己被摆在台面上。
我心想,这不对,这些事哪一件是大事,禁言十分钟,飞了几分钟,时间戳挪了两分钟,加起来能算什么,凭什么要走到封禁这一步。
可我又想起来,我自己当初查耿淮的时候,用的也是这套逻辑——不管单条罪状多轻,只要能拼出一条“屡教不改”的轨迹,就够了。
这个念头刚冒出来,我立刻把它按了下去。不一样,我告诉自己,我跟他不一样。
处罚通知在几分钟后正式弹了出来,我甚至来不及再想别的:
【系统通知】管理员 澄昕(tech_admin)因权限滥用、记录篡改,经服主「单宁」审核批准,由耿淮执行临时封禁,期限 7 天。
我盯着这条通知,一个字一个字地看,看完以后,脑子里那种嗡嗡声忽然停了,变成一片空白。
七天。单宁批的。耿淮执行的。
我坐在原地,感觉不到自己的手指还搭在键盘上,只觉得胸口那块地方像是被人狠狠按了一下,喘不上气。
这不对,我心想,这不该是这样的,我做的那些事根本不算什么,是他在报复我,一定是这样,他等这个机会等了很久了。
我死死盯着屏幕,眼前那条通知的字忽然开始模糊,模糊到我分不清自己是在看屏幕,还是在看着自己脑子里翻涌出来的另一幕画面——
是我。是我把封禁指令打进了控制台,目标是耿淮。
我心想,对,就该是这样,早就该是这样了。
再定睛看的时候,屏幕上的画面变了。控制台里跳出一行我刚刚输入的命令:
/litebans:ban 耿淮 9223372036854775807d 长期滥用职权,蓄意打压新人管理员,证据确凿
我盯着这行字,感觉浑身的血一下子涌了上来,那种压在胸口的窒息感松开了,取而代之的是一种近乎眩晕的畅快。
这才对,我心想,这才是该发生的事。
我记得自己是怎么走到这一步的——早在几天前,我就已经把耿淮的 UUID 悄悄写进了白名单反向监控列表,做好了随时能锁定他的准备;我把手里那份反向取证的记录一条条摆开,从那名用延迟外挂的玩家到那名堆放刷怪塔被判罚的玩家,再到他自己承认"随你们怎么查"那句话,一条不落地整理成一份完整的罪证清单,甩进了管理群里。
单宁和谷彻在群里看完,沉默了很久。最后单宁发了一句:“证据确实,按最高处罚执行。”
我心想,看,我说得没错吧,我一直都是对的。
我的手指落在回车键上,按下去的瞬间,屏幕控制台一闪,跳出一行输出——我没看清那行字具体写的是什么,只觉得那行字的颜色不太对,泛着一种诡异的暗红,像是哪里出了错。
我盯着那行字看了半秒,心想,这是什么,是不是卡了。
紧接着那行字就被下面刷新出来的一堆日志盖住了,看不见了。
网络延迟吧,我心想,服务器压力大的时候本来就容易这样,没什么大不了的。
我没有再去点开日志细看,注意力已经被别的东西吸引过去了——是全服的公共频道,一条一条地刷了起来。
“澄昕牛逼!”
“这波直接把耿淮送走了!”
“早该这么办了!”
我看着这些消息一条一条往上刷,嘴角忍不住往上翘,那种快感一层一层堆起来,堆到几乎要溢出来。
我靠在椅背上,看着窗外,天已经完全黑了,房间里只有屏幕的光。我对着这片空荡荡的房间,轻声说了一句:
“下一世,别再见了。”
说完这句话,我闭上眼睛,长长地舒了一口气,像是终于把一件拖了很久的事情办完了。
(本章完)