下一章 目录 设置
1、神陨雨 沈清珩 ...
-
沈清珩觉得自己这辈子最错误的选择,就是在周五晚上八点说了一句“这个Bug我十分钟就能修好”。
现在是凌晨一点四十七分。
他还坐在工位上。
屏幕上的代码像一条条发光的毒蛇,盘踞在他眼前。那个该死的Bug从“十分钟”变成了“四小时”,从“一行代码的事”变成了“底层逻辑重构”。咖啡喝了四杯,外卖盒子还敞着口扔在桌角,红烧肉的油已经凝固成了一层白色的膜。
他盯着屏幕,眼睛干涩得像两片砂纸。
“沈老师,还不走?”
保洁阿姨推着拖把车经过,看了他一眼。
“快了,”沈清珩揉了揉眼睛,“您先忙。”
保洁阿姨摇摇头走了。整层楼只剩下他一个人。
北纬科技大厦的十七层,白天挤满了人,现在安静得像一座坟墓。日光灯管发出细微的电流声,偶尔有中央空调的风口响一下,像某种巨型生物在喘息。
沈清珩靠在椅背上,盯着天花板发了三秒钟的呆。
然后他重新看向屏幕。
Bug还在。那个该死的时间戳转换错误,像一只蟑螂一样藏在他写了三千行的支付系统里。日志显示它已经存活了十一天,制造了四百七十二笔异常订单,让客服部接到了两百多个投诉电话。
他的leader在下午六点的周会上说:“清珩啊,这个问题客户很关注,周末之前一定要解决。”
周末之前。那就是今晚。
他深吸一口气,重新开始梳理调用链。
手指在键盘上敲击的声音在空旷的办公室里回荡。
---
凌晨两点十五分。
沈清珩终于找到了Bug的根源。
不是逻辑错误。不是边界条件问题。是一个他从来没见过的异常——某个中间件的返回值,在特定毫秒级时间窗口内,会凭空多出一个他从未定义过的字段。
这个字段叫“rule_id”。
他追踪了一整个晚上,翻遍了所有代码仓库、所有依赖包、所有第三方文档,都没有找到这个“rule_id”的任何来源。
它就像是……从空气里长出来的。
沈清珩盯着屏幕上那个诡异的字段,后背微微发凉。
他做了四年开发,从没遇到过这种事。
“算了,”他自言自语,“先睡一觉,明天再说。”
他保存代码,合上笔记本电脑,把手机揣进兜里,拿起那件挂在椅背上的黑色卫衣。
就在他穿衣服的瞬间,窗外闪过一道白光。
不是闪电。闪电是从上往下的。
这道光是从下往上的。
沈清珩的动作顿住了。他慢慢转向落地窗。
北纬科技大厦的十七层,能看到大半个科技园。此刻,园区里所有的路灯、所有的写字楼灯光、所有加班窗口透出的亮光,都同时闪了一下。
然后,天空开始下雨。
不是普通的雨。
那些雨滴在落下的过程中,会发出微弱的光。不是反光——是它们本身在发光。每一滴都像是被点燃的细小星辰,拖着淡蓝色的尾迹,从云层中倾泻而下。
沈清珩下意识看了一眼手机。
凌晨两点十八分。信号满格。没有天气预警。
他又看了一眼窗外。
雨越下越大。那些发光的雨滴落在柏油路面上,溅起的不是水花,而是像碎玻璃一样的光点。落在行道树的叶片上,叶片会短暂地亮一下,像一个LED灯被按下了开关。
“这是什么鬼……”
他拿起手机想拍视频,手指刚点开相机应用,屏幕上突然弹出一个他从未见过的界面。
不是APP的通知。不是系统的弹窗。
是直接覆盖在所有内容之上的——一个极简风格的深□□面,像是从屏幕底层浮现出来的。
上面只有一行字:
【系统提示】检测到“神陨雨”覆盖。你已被选为“天命人”。
沈清珩愣住了。
他以为是手机中了病毒,用力按了几下电源键。屏幕黑了又亮,那个界面还在。
他重启了手机。
开机动画结束后,那个界面又出现了。
只不过这次多了一行字:
【紧急工单#0001】重力场局部溢出。修复时限:00:12:47。
下面还有一个倒计时。
00:12:38
00:12:37
00:12:36
沈清珩盯着屏幕,脑子里只有一个念头:这他妈是哪个同事在整我?
他环顾四周。办公室空无一人。所有的工位都是暗的。
他又看了一眼窗外。
然后他看到了让他这辈子都忘不掉的一幕。
科技园中央的那条主干道上,一辆白色的厢式货车正在悬浮。
不是被什么举起来的。是它自己飘起来的。四个轮子悬空半米,像一个被隐形的手托起的玩具车。车头灯还亮着,照出一片惨白的光。
而在那辆货车的正下方,有一个人。
一个穿着黄色外卖服的人,骑着一辆电动车,正停在货车悬浮的位置。他显然也懵了,仰着头看着头顶的庞然大物,电动车的踏板灯一闪一闪的。
沈清珩的大脑瞬间从“有人在整我”切换到了“出事了”。
他冲到窗前,脸几乎贴在玻璃上。
那辆货车在缓缓下沉。
一秒一厘米。
不。不是下沉。是重力在恢复。
但恢复的速度不均匀。货车先往左偏了一下,又往右偏了一下,像是在被两股不同的力量拉扯。车厢上印着的“顺丰速运”四个字在灯光下忽明忽暗。
倒计时还在走。
00:09:41
沈清珩低头看手机,又抬头看窗外,又低头看手机。
他不知道自己为什么要看那个倒计时。他连这个界面是什么都不懂。什么叫“重力场局部溢出”?什么叫“天命人”?他只是一名写Java的后端开发工程师,他的工作是把需求文档变成可运行的代码,他的世界里最危险的事情是生产环境被删库。
但现在有一辆货车要砸到一个外卖员头上。
他转身冲向电梯。
电梯还在十七楼。他疯狂地按着关门键,门关上又打开了一次——有东西挡住了感应器?不,没有人,是空气。他再次按关门键,这次门终于关上了。
电梯开始下降。
十七、十六、十五。
手机又震了一下。他低头看,那个界面自己更新了。
【紧急工单#0001】重力场局部溢出。
修复方式:代码注入。
请在倒计时结束前输入修复代码。
下面多了一个输入框。
光标在输入框里一闪一闪的。
像极了他每天都在用的IDE。
沈清珩盯着那个输入框,脑子里闪过一万个念头。最后只有一个念头落了下来:
我是一个程序员。
我每天都在做的事情,就是把不工作的东西,变成工作的。
电梯到了五楼。
他咬咬牙,在输入框里敲下了第一行字:
```javascript
if (vehicle.isSuspended && person.isUnderneath) {
```
电梯到了二楼。
他继续敲:
```javascript
vehicle.gravity = 9.8;
```
电梯到负一层。门开了。
他最后敲下:
```javascript
} else {
vehicle.gravity = 9.8;
}
```
点击“提交”。
电梯门完全打开的那一刻,他听到了外面传来的声音。
哐当。
货车落地的声音。
不是砸落。是稳稳地落下的声音。四个轮子同时接触地面,连一点多余的颠簸都没有,像是被一只无形的手轻轻放下的。
沈清珩冲出电梯。一楼大厅的玻璃门外,那辆货车已经稳稳地停在路上,车灯还亮着,发动机还在响。
那个外卖员站在旁边,电动车倒在地上,他显然是被吓到了,嘴唇哆嗦着说不出话。
货车司机从驾驶座探出头来:“兄弟你没事吧?我刚才……我刚才感觉车飞起来了!”
沈清珩站在大厅里,浑身冷汗。
手机又震了。
【工单#0001】已修复。
修复耗时:00:00:04。
奖励:运维积分+50。当前积分:50。
排名:第47,231名。
他盯着那行“第47,231名”,喉咙干涩。
这不是整蛊。
这是真的。
这个世界上,有至少四万七千个人,和他一样,在刚才那场雨里,接到了这样的工单。
---
凌晨两点四十一分。
沈清珩坐在科技园路边的花坛上。
雨已经停了。路面湿漉漉的,但那些发光的东西已经消失了,像是从来没有存在过。路灯重新亮了起来,写字楼的灯也恢复了正常。
如果不是手机上那个界面还在,他会以为自己在做梦。
那个界面现在变成了一个“主面板”,像一个极简版的监控后台。
“盖亚指令”主面板
·天命人ID:QH-0427
·运维积分:50
·当前排名:47,231
·待接工单:0
·历史工单:1(已修复)
底部有几个标签页:工单、社区、排行榜、我的。
他点开了“社区”。
里面像是一个论坛的简化版,全是帖子。发帖时间都在最近半小时内。
· “我靠你也有???”
· “北京朝阳区求组队,这玩意儿到底是什么?”
· “别慌,我刚修复了一个概率异常,感觉就是写代码”
· “有没有人知道积分有什么用???”
· “我不信,这一定是腾讯的新游戏测试”
沈清珩快速刷了几条,信息很零散,但有几个共同点:
第一,所有被“神陨雨”淋到的人,收到的都是类似的界面。
第二,大多数人修复的都是小问题——有人修复了一个“摩擦力异常”,有人修复了“声音传播速度偏斜”。
第三,每个人都提到了同一个词:代码注入。
就像是……世界本身是一套系统。
而他们是临时被拉来修Bug的外包。
沈清珩盯着屏幕,脑子里突然蹦出一个念头:如果世界是一套系统,那它的代码是谁写的?
系统本身。
“盖亚指令”。
这个名字听起来不像是一个临时起的名字。它太正式了,像是早就存在的东西。
他又看了一眼排名:第47,231名。
四万七千多个人。
这个数字还在涨。在他盯着看的这十几秒里,排名从47,231跳到了47,258。
说明雨还在其他地方下。还在不断有新人被选为“天命人”。
沈清珩深吸一口气。
他站起来,拍了拍裤子上的灰。
“先回家。”他对自己说,“睡一觉。明天再说。”
---
凌晨三点零五分。
沈清珩骑着共享单车到了出租屋楼下。
那是一个老小区的六楼,没有电梯。他爬楼梯的时候,脑子里一直在转。
重力场溢出。代码注入。if else语句。提交。
他修那个Bug的方式,和他平时修Bug的方式没有任何区别——先判断条件,再给出解决方案。唯一不同的是,这次他的代码在一个完全陌生的环境里被执行了。
而且被执行成功了。
货车落地的那一刹那,他感受到了一种奇怪的感觉。不是成就感。不是后怕。
是一种……熟悉感。
好像他曾经做过类似的事情。
好像他本来就应该会这个。
他摇了摇头,把这个荒谬的念头甩掉。
爬到六楼,掏出钥匙开门。一室一厅的小房子,进门就是客厅,沙发上堆着快递盒和换下来的衣服。他把书包扔在玄关,走进卧室,倒在了床上。
手机又亮了。
不是那个系统界面。是微信。
苏晓棠:你还在加班吗?
苏晓棠是他公司楼下便利店的店员。他每天晚上都会去买一罐无糖可乐,时间久了就认识了。苏晓棠眼睛很大,笑起来有酒窝,说话声音不大,但每个字都很清楚。
沈清珩回了两个字:刚到家。
苏晓棠:刚才那场雨你看到了吗?
沈清珩的手指在键盘上停了半秒。
他:看到了。很怪。
苏晓棠:我看到了很神奇的东西。
他:你也被淋到了?
苏晓棠:嗯。但我不是被淋到。我是……我在收银台里,雨下到一半的时候,我看到店里的监控屏幕上出现了很多奇怪的数字。
他:什么数字?
苏晓棠:我不确定。那些数字一闪就没了。但是我觉得……它们是在描述刚才那辆飞起来的货车。
沈清珩猛地从床上坐起来。
苏晓棠不是被雨淋到的。她没有收到系统界面。没有工单。没有积分。但她看到了异常。
这意味着什么?
意味着普通人也有可能感知到“系统”的存在?
他:你怎么知道货车飞起来了?
苏晓棠:我看到它了。从便利店的窗户看到的。我跑出去看的时候,它已经落地了。
她停顿了一下。
苏晓棠:沈老师,你那时候在附近吗?
沈清珩犹豫了三秒钟。
他:嗯。我在。
苏晓棠发了一个笑脸表情。
苏晓棠:那就好。我还以为我出现幻觉了。晚安!
他:晚安。
沈清珩放下手机,盯着天花板。
出租屋的天花板有一块水渍,形状像一个被压扁的椭圆。他已经盯着这个水渍失眠过很多次了,但从没有哪一次像今天这样,脑子里塞满了问题。
“盖亚指令”是什么?
“神陨雨”从哪里来?
“天命人”为什么会被选中?
“运维积分”有什么用?
为什么苏晓棠能看到异常,却没有收到系统界面?
还有那个最让他不安的问题——
他刚才敲下那段代码的时候,为什么没有任何犹豫?
他从没有学过那种“语法”。if else是编程的基础结构,没错。但那段代码里使用的“vehicle.isSuspended”和“person.isUnderneath”这些属性和方法,他从来没有定义过。
可是“系统”认了。
它认了那些属性和方法,像是它们本来就存在。
像是他本来就应该知道它们存在。
沈清珩闭上了眼睛。在意识陷入黑暗的最后一秒,他的脑海里闪过一个画面——
一个他从未见过的界面。不是手机上那个简洁的黑底白字界面,而是一个巨大的、铺天盖地的、由无数发光的线条和字符构成的界面。
而他站在那个界面的正中央。
手里握着一行代码。
那是他三岁的时候。
他不记得这件事。
但他知道那是真的。