系统很抽象,还好我也是: 第635章 皇帝的后宫真是令人欢喜
那就不奇怪了,那就不奇怪了。
校尉这么一解释,林立又不是笨木头,自然感受到了其中蕴含的人间美好。
不愧是文明古城,世界灯塔,法律里就是会藏着温情。
“感谢,实在感谢。”
“不必...
三月八号凌晨两点半,我蹲在电脑前,手指悬在回车键上方,迟迟没有按下去。
屏幕上是那个熟悉的随机数生成网页,蓝底白字,简洁得近乎冷淡。光标在输入框里无声跳动,像一颗将停未停的心脏。我刚把1668这个数字输进去,还没点生成——窗外忽然掠过一道惨白的光,紧接着是沉闷的雷声,由远及近,碾过整片居民楼的屋顶,震得窗框嗡嗡发颤。
我下意识抬头看了眼挂钟:02:27。
距离截止时间还有三分钟。
手机在桌角震动起来,不是铃声,是微信消息的提示音,一连串,急促得像敲鼓。我瞥了一眼——全订群头像齐刷刷亮着,十几条未读消息浮在最顶上:
【@天线】大佬还在吗?!
【@天线】西北风是不是抽到9号了??我票根序号就是9!!
【@天线】我截图了!真伪二维码完整!求快看一眼!!
【@天线】……我刚查完月票纪念册,序号1314,冬风,是我……但我刚发现我三月七号凌晨删了一张月票,系统显示“已撤回”,但序号还在计数池里吗???
【@天线】(发送一张模糊截图)这个是不是你后台看到的原始数据?
我盯着最后那条,没点开。不是不想,是不敢。因为我知道,这张图如果真来自后台——它就该带水印、带时间戳、带加密签名,可它没有。只有一行手打字:“系统说‘撤回即剔除’,但抽奖池没刷新。”
我喉结动了动,指尖冰凉。
这不对劲。
不是读者记错,也不是系统出bug——是规则本身,在我写公告时,悄悄漏掉了一行前提。
【月票票根以起点官方服务器最终结算为准,非客户端实时显示。】
而起点服务器每日凌晨两点同步一次数据,三月八号的同步,要等到02:00整。可我的截止时间,设的是02:30。
中间这三十分钟,就是灰域。
有人在这三十分钟里,补投、撤回、转赠、甚至……用脚本批量刷票根再立刻撤回——只要不触发风控阈值,序号就会短暂滞留在抽奖池里,像一枚没落地的骰子,悬在概率边缘。
我猛地拉开抽屉,翻出一张皱巴巴的便签纸,上面是我三天前手写的原始逻辑链:
【保底30个零食礼包 → 对应30个中奖序号 → 每个序号必须唯一且有效 → 有效=服务器已确认+未撤回+在03.01–03.08区间内】
可现在,零食中奖名单里赫然躺着“57”和“28”——这两个数字,我昨天核对后台日志时就发现了异常:它们对应的用户,在03.07 23:59:47和03.08 02:01:13分别撤回月票,但撤回动作并未从抽奖池中即时移除序号。系统把它当作了“已存在”的静态ID,照常参与了随机抽取。
换言之——有两个人,凭空多出了中奖资格。
而真正该中的,可能被挤出去了。
我抓起手机,点进起点APP,手指发虚地点开【月票纪念册】,切到“三月”页。页面加载缓慢,白色圆圈转了三秒才跳出数据。我快速滑动,找到序号57——用户昵称“阿沅不吃葱”,头像是一只蔫头耷脑的柴犬;再往下,序号28——“山海不倦”,头像空白,简介栏写着“正在修仙,勿扰”。
我点开阿沅不吃葱的主页,最新动态停在三月六号晚:“刚给《系统很抽象》投完月票!蹲一个春风礼包!”配图是票根二维码,清晰完整,时间戳03.06 22:17。
可后台日志明明白白写着:该用户于03.07 23:59:47撤回。
他根本不知道自己撤回了。
我点开山海不倦的主页,一片死寂。没有动态,没有书评,连关注列表都是空的。唯独月票记录里,孤零零挂着一条:03.07 23:58:02 投出,03.08 02:01:13 撤回。
两分钟差。
像被谁掐着脖子,硬生生从系统手里抢走两秒。
我盯着屏幕,突然想起一件事——三月一号凌晨,我发布活动公告后,曾收到一条起点编辑部的私信,只有七个字:“风控接口今晚升级。”我没当回事,以为只是例行维护。可现在看,那场升级,把“撤回即同步剔除”的逻辑,临时降级成了“撤回后延迟同步”。
而我,把抽奖截止时间,卡在了延迟窗口里。
我慢慢靠向椅背,椅子发出一声不堪重负的呻吟。窗外又是一道闪电,这次更近,白光劈开窗帘缝隙,在我脸上投下一瞬惨青。我闭了下眼,再睁开时,手机屏幕自动亮起,弹出新消息:
【起点编辑-林姐】
天线老师,紧急同步下:03.08批次月票风控策略临时回滚,所有撤回操作将于02:30准时从数据库剥离。但抽奖池已于02:00冻结,无法二次校验。建议——以原始抽取结果为准,后续争议个案,人工复核补发。
下面还附了一张表格截图,标题是《03.08 02:00冻结快照》,里面清清楚楚列着1668个序号,57和28赫然在列,状态栏标注着“有效”。
我盯着那两个数字,胃里像被人攥了一把冰渣。
“以原始抽取结果为准”——意思是,哪怕错了,也得认。
可读者不是数据。
阿沅不吃葱会开心地晒出春风礼包开箱视频,而真正该中的那个人,此刻可能正刷新着群消息,等一个永远不会来的@。
我伸手抹了把脸,掌心湿冷。
就在这时,电脑右下角,QQ图标疯狂闪烁。是备用群——那个只有三百人的小群,成员全是老读者,头像统一用小说里主角“林砚”的Q版简笔画。群名早就改成了【抽象守夜人】。
我点进去,最新一条消息来自管理员“老陈”:
【老陈】天线,刚扒完起点API文档。撤回操作触发的是“soft delete”,ID还在索引表里,但标记为deleted。抽奖脚本读取的是raw ID list,没加where status!='deleted'条件。
【老陈】所以……57和28不是bug,是脚本裸奔。
【老陈】(发送一张代码截图)
【老陈】你看第87行。
我点开截图——一行Python代码孤零零躺在那里,像句遗言:
`winners = random.sample(pool_ids, k=total_wins)`
pool_ids,就是那个未经清洗的、塞满1668个序号的原始数组。
没有过滤,没有校验,没有try…except,甚至没加个注释。
它就那么跑着,跑过了三年,跑过了两百多万字,跑过了四千次更新,跑到了今天凌晨,把两个幽灵塞进了中奖名单。
我盯着那行代码,忽然笑了一声。
笑声干涩,把自己都吓了一跳。
原来最抽象的从来不是系统——是我。
是我亲手写的规则,是我懒得加的校验,是我以为“应该没问题”的侥幸,是我把“相信平台”当成了免责条款。
我低头,看着自己左手无名指上那道浅疤——去年签纸质出版合同时划的,钢笔尖扎进去半厘米,血珠冒出来,像一粒凝固的红痣。当时编辑笑着说:“你这手气,写小说够狠,签字都带血光。”
现在想想,那哪是血光。
那是预警。
我重新坐直,打开Word文档,新建一页,标题栏敲下:
【致所有在灰域里等光的人】
手指悬停半秒,删掉。
再敲:
【关于03.08抽奖池的静默修正说明】
还是不对。
太冷,太公文,太像在推卸。
我关掉文档,点开备忘录,新建一条,只写了一句话:
“对不起,是我把你们的期待,算进了系统的bug里。”
然后我把这句话,复制,粘贴进全订群。
发送。
群里安静了三秒。
接着,消息像潮水一样涌上来:
【阿沅不吃葱】……啊?
【山海不倦】……?
【纸鸢与猫】所以……我中了的秋风,作废?
【青黛】等等,我序号1211,秋风,我刚把票根二维码发给你了……
【老陈】(撤回了一条消息)
【老陈】天线,你先别慌。我黑进了测试环境。
我一怔。
“黑进”?老陈是银行IT,不是黑客。他上次说“黑进”,还是为了帮我查某章错别字的IP来源。
我正想问,他发来一张截图——不是代码,是起点内部测试后台的界面,灰蓝色调,左侧导航栏写着【抽奖沙盒模拟器】。他正在手动导入数据:把1668个序号过一遍风控库,筛掉所有marked as deleted的ID。
最终,有效池缩减为1666人。
而57和28,已被标红剔除。
他接着发来一行字:
【老陈】重抽。现在。用你电脑上的网页。我语音教你改参数。
我咬了咬后槽牙,点开语音通话。
老陈的声音透过听筒传来,冷静得像在调试ATM机:“打开你那个随机数网页源码,Ctrl+U。找到第142行,把max_num改成1666。别怕,这是沙盒,不连生产库。”
我照做。手抖,但没点错。
“然后,把刚才抽中的57和28,手动从零食名单里删掉。”
我删了。
光标在“57”上停留半秒,按下Backspace。数字消失,像从未存在过。
“现在,生成两个新号。”他顿了顿,“记住,只生成两次。不多不少。”
我深吸一口气,点下回车。
网页刷新——
第一个数字:**1193**
第二个数字:**301**
我抄下来,发到群里:
【天线】零食新增中奖序号:1193、301。原57、28名额作废,已同步通知两位读者。补发流程今日内完成。
群里安静了一瞬。
然后,【阿沅不吃葱】发来一张图——不是票根,是他家窗台。一盆绿萝,叶片上还挂着水珠,底下压着张便利贴,手写字迹稚拙:
“中了!但听说有问题,等你通知~”
【山海不倦】发来三个字:
“知道了。”
再无其他。
我盯着那三个字,忽然想起什么,点开起点后台,搜“山海不倦”的阅读历史。最近一本,是《系统很抽象》第一卷,发布时间:02.28。
他入坑,只比活动开始早三天。
而他撤回月票的时间,是03.07 23:58:02——就在活动结束前两小时。
为什么?
我点开他的书架,只有两本书:《系统很抽象》,和一本叫《灰域生存指南》的冷门科幻。
作者名:佚名。
我心头一跳,点进那本书的详情页——简介栏只有一行:
“所有被系统判定为‘无效’的存在,都在灰域里排队等一个重载指令。”
发布时间:03.07。
就在他撤回月票前五分钟。
我猛地抬头看向窗外。
雨停了。东方天际渗出一线微青,像伤口初愈时泛起的淡痕。
手机又震。
是起点编辑林姐:
【林姐】天线老师,刚收到技术组加急通知——《灰域生存指南》作者实名认证失败,IP归属地与注册信息严重不符,疑似……测试账号。
【林姐】他们让我转告你:
【林姐】“如果有人在灰域里喊你的名字,请一定回头看看。”
我盯着最后那句话,手指悬在屏幕上方,迟迟没有落下。
这时,QQ弹出一条好友申请。
头像是一片纯白。
昵称栏空着。
验证消息只有一串数字:
**1667**
我点通过。
对话框弹出,对方秒发来一张图。
不是二维码,不是截图,是一张手绘。
铅笔线条,潦草却精准:一个穿旧卫衣的少年坐在数据流组成的台阶上,仰头望着上方。台阶尽头不是天空,而是一扇半开的门,门缝里漏出暖黄光线。少年脚边散落着几颗糖纸,其中一张,印着歪歪扭扭的“零食礼包”四个字。
画角写着小字:
“系统很抽象,还好我也是。”
我盯着那幅画,眼眶突然发热。
原来不是我在写故事。
是故事,在等我醒来。
我抬起手,用拇指用力擦了下眼角,然后点开输入框,打下第一行字:
“好。那我们重载吧。”
刚敲完,手机震动再起。
是支付宝到账提醒。
金额:¥199.00
备注:春风三月礼包·补发
我点开付款人详情——昵称栏显示:“阿沅不吃葱”。
下面还有一行小字:“不用退,留着买糖。下次抽我,我保证不撤回。”
我笑了。
是真的笑,肩膀微微发颤。
窗外,第一缕真正的晨光刺破云层,不偏不倚,落在我摊开的左手掌心。那道旧疤在光下泛着淡粉,像一枚尚未拆封的、小小的承诺。
我打开文档,新建一页。
标题不再斟酌。
只写:
【第四卷 灰域重载】
第一章 名字
——林砚站在数据洪流中央,听见身后有人轻轻喊他。
他没有立刻回头。
因为他知道,这一次,他得先把自己的名字,好好写对。
(名字,从来不是系统赋予的ID。
是千万次点击、截图、转发、争吵、等待、原谅,
是无数个“我”,在灰域里反复校准,
才终于拼出的那个,
带着体温的,
人间的,
回声。)
我保存文档,关掉所有网页,拔掉主机电源。
屏幕陷入黑暗前,最后映出我的脸——眼下有青黑,头发乱翘,但眼睛亮得惊人。
像一颗刚刚完成自检、正准备升空的卫星。
我起身,拉开窗帘。
阳光汹涌而入,填满整个房间,把地板、键盘、散落的草稿纸、半凉的茶杯,全部镀上一层流动的金边。
我走到窗边,深深吸了一口气。
空气清冽,混着楼下早点铺飘来的葱油香。
新的一天开始了。
而我的故事,才刚刚加载到百分之二。
我摸出手机,点开起点作家后台,找到【作品相关】栏目。
光标在“新章节发布”按钮上悬停一秒,然后,稳稳按下。
输入标题:
《第四卷 灰域重载》
正文第一行,我敲下:
“林砚不是主角的名字。”
第二行:
“是系统在第一次崩溃时,自动抓取的、作者输入法里最新一条搜索记录。”
第三行:
“那天,我搜的是——‘林砚,我的猫又不见了’。”
我停顿片刻,喝了一口冷掉的茶,继续敲:
“而它,真的把我的猫,编进了世界观底层代码里。”
“现在,它正蹲在服务器最深处,啃着一段废弃的缓存,等我把它抱回来。”
发送。
页面跳转,绿色提示浮现:
【章节发布成功】
【预计五分钟后同步至全站】
我放下手机,转身走向厨房。
冰箱上贴着一张便签,是我昨天写的采购清单:
【买菜】
鸡蛋×6
青椒×2
——还有,
一包没拆封的、草莓味的,
润喉糖。
我拉开冰箱门。
冷气扑面而来。
在层层叠叠的速冻水饺和酸奶盒之间,静静躺着一小袋糖。透明包装,粉红糖粒在灯下折射出细碎的光。
我拿起它,撕开一角。
糖纸窸窣作响。
我倒出一颗,放进嘴里。
甜味缓慢化开,带着一丝极淡的、几乎察觉不到的,铁锈般的余韵。
像未干的墨迹。
像刚愈合的疤。
像所有在灰域里,不肯熄灭的,
人间的,
光。