Chapter 1 - 凌晨一点四十三分
梦开始的地方
显示器右下角的时间跳到 01:43。
Darf 盯着那四个数字看了两秒,然后把视线移回屏幕中央。进度条停在 71%,已经停了十一分钟。
开放式办公区只剩他这一排的灯还亮着。其余区域的感应灯在十一点左右陆续熄灭,现在整层楼像被一块黑布盖住,只有他头顶这一格白色的冷光,把工位切成一个很小的、孤零零的方块。
中央空调在九点关掉了。冷意从脚底一点点漫上来,他把手缩回袖子里,只露出指尖敲键盘。
隔壁工位空着。
准确地说,是今天下午才空的。小周办完离职手续,抱着纸箱在他桌边站了一会儿,好像想说点什么,最后只把桌上那盆绿萝推过来,贴了张便利贴:
「帮我浇水,一周一次就行,别淹死它。」
Darf 当时点了点头,说了声“好”。
小周走的时候拍了一下他的肩。他的耳朵往后压了一下,很快又立回来,但小周大概没注意到。
绿萝现在就摆在他显示器左边,叶子被冷光照得有点发灰。便利贴他没撕,只是把它贴得更正了一些,和桌沿对齐。
这是三个月里第四个离开的人。
最开始一起进公司的有六个人,都是同一届,同一个项目推荐来的。第一个月大家还会约着吃午饭,在群里吐槽 KPI,抱怨标注规范一周改三次。第二个月开始有人请假,第三个月有人直接不来了。群聊的消息越来越少,最后一条停在两周前,是某人发的一张表情包,没有人回。
Darf 没有退群,也没有发言。
他把注意力拉回屏幕上。
进度条还是 71%。
他切到终端,敲了一行命令。返回结果很快,内容却不太对。他皱了一下眉,又敲了一行。
内网的标注平台返回 502。
他写的那套标注工具是挂在公司平台接口上的。平台一挂,工具就只能干等着。而这一批数据,明天早上九点之前要交。
他没有急着慌。
他打开一个新的文本文件,在第一行写上日期和时间,然后开始一条一条往下排查。
01:47 平台 502
- 本机网络正常,外网可达
- 平台服务器 ping 不通
- 同网段其他机器 ping 不通
- 网关 ping 延迟极高,丢包严重
→ 不像是服务端的问题,更像是内网交换层他又测了几次,把丢包率和延迟一行一行记下来,格式对齐,每一项前面空两格。
写到最后,他停了一下,在末尾补了一行:
推测:广播风暴 / 环路?需要看机柜。机柜在走廊尽头那个上锁的小房间里,他没有钥匙。
他盯着那一行字看了一会儿,拿起手机。
负责人的头像是一张在高尔夫球场拍的照片。他打了一段话,删掉,重新打,把“可能”改成“推测”,把“麻烦您”改成“抱歉这么晚打扰”,最后把刚才的排查记录作为附件一起发了过去。
发送之前,他又检查了一遍有没有错别字。
两分钟后,回复来了。
「我不懂这些。我把外包运维的电话推给你,你直接联系他们。」
后面跟着一张名片。
Darf 看着那张名片,耳朵往下垂了一点。
他不太喜欢打电话,尤其是半夜给陌生人打电话。
他又看了一眼右下角的时间,01:52,然后按下了拨号键。
响到第四声,那边接了。
“喂。”
声音比他预想中清醒,带着一点刚从外面进屋的微喘,背景里有雨声。
“你好,我是……”Darf 顿了一下,报了公司名字和楼层,“内网好像出了问题,我初步排查过,怀疑是交换层有环路。机柜我进不去。”
那边安静了一秒。
“你排查过了?”
“嗯。记录我可以发给你。”
“发吧。”对方说,“我四十分钟左右到。”
电话挂断之后,Darf 把那份文本文件又整理了一遍,发到对方的号码上。
对方回了一个字:「收。」
他把手机扣在桌上,靠回椅背,盯着天花板上那一格冷白色的灯。
办公室里只剩主机风扇的声音。
四十分钟后,电梯口传来“叮”的一声。
Darf 的耳朵先动了,然后他才抬起头。
走廊那头的感应灯一格一格亮起来,一个身影从光里走过来。
是一个龙兽人。
很白,白得在昏暗的走廊里有些显眼。鬃毛被雨打湿了一部分,贴在颈侧,末端透出一点很淡的蓝色。头顶两只半透明的灰白色角,在冷光下看起来像磨砂玻璃。他穿着一件深色的防水外套,肩上挂着电脑包,手里拎着一只便利店的塑料袋,袋子外面挂满了水珠。
他走到工位区边缘停下来,看了一眼这一排唯一亮着的灯,然后看向 Darf。
浅金色的眼睛。
Darf 站起来,下意识往后退了半步,让出和对方之间一个比较舒服的距离。
“是你打的电话?”
“嗯。”
“极渊。”对方自我介绍,很简短,“机柜在哪?”
Darf 指了一下走廊尽头。
极渊点点头,把便利店的袋子放在门口空着的那张桌子上,没有往 Darf 的工位上放。然后他从包里摸出一串钥匙,往机柜间走去。
Darf 站在原地犹豫了两秒,还是跟了过去。
他在门口停下,没有进去。
机柜间很窄,里面的温度比外面高,空气里有一股灰尘被烘热的味道。指示灯密密麻麻闪成一片,绿色和橙色交替跳动,快得不正常。
极渊把外套脱下来,随手搭在门把手上。里面是一件浅灰色的长袖 T 恤,袖子被他推到小臂上。他的尾巴很长,末端也是淡蓝色,进门的时候他把尾巴往身侧收了收,避开了地上的一堆线缆。
他蹲下来,一边看指示灯,一边打开笔记本电脑,接上串口线。
“你那份记录,”他开口,眼睛没离开屏幕,“写得挺好。”
Darf 愣了一下。
“时间点、测试对象、结果,全都分开列了。”极渊敲了几下键盘,“我们工单系统里一半的报修只有一句话:网断了。”
Darf 不知道该怎么接这句话,只是“嗯”了一声。
他的耳朵却往前转了一点。
极渊没有回头,但尾巴尖轻轻摆了一下。
接下来的十几分钟,两个人都没有说话。
极渊查看交换机的日志,偶尔低声念几个端口号。Darf 站在门口,看着那一排疯狂闪烁的灯,在心里默默推测是哪一台。
“找到了。”
极渊顺着一根黄色网线往下摸,一直摸到机柜底部。那根线的两头,插在同一台交换机的两个端口上。
“有人把一根线插了个环。”他把线拔下来,举起来给 Darf 看,“可能是白天有人整理线缆,顺手插回去了。”
指示灯的闪烁在几秒内慢了下来,恢复成正常的节奏。
Darf 看着那根线,没说话,心里却有一种说不太清楚的轻松感。
不是因为问题解决了,而是因为他的推测是对的。
极渊回头看了他一眼。
“你猜到了?”
“……猜到可能是环路。”Darf 说,“不知道具体是哪。”
“那也够了。”极渊把线卷好,放在机柜顶上,又贴了一张写着“勿插”的标签,“大部分人连环路这个词都不知道。”
他站起来,拍了拍膝盖上的灰,拿起外套走出来。
Darf 往旁边让了一步,给他让出位置。
这一步让得有点大,他的背几乎贴到了走廊墙上。
极渊看了一眼他们之间的距离,没说什么,也没有靠近,只是从他面前走过去,回到工位区。
平台恢复了。
Darf 回到自己的座位,刷新页面,那个停在 71% 的进度条终于开始动了。
他松了口气,肩膀往下沉了一点。
极渊没有马上走。他在门口那张空桌子边坐下,打开笔记本,大概是在写工单。
过了一会儿,他拎着那只便利店袋子走过来,在离 Darf 工位大概一米半的地方停下。
“要喝点东西吗?”
他从袋子里拿出两瓶。
一罐冰咖啡,罐身上还挂着冷凝水。一瓶热奶茶,是便利店加热柜里拿出来的,塑料瓶身微微有点变形。
“买的时候不知道你喜欢哪种,就各拿了一个。”极渊说,“挑一个。”
Darf 看了看两瓶饮料,又看了看极渊。
他本来想说不用了,但对方已经把东西举到他面前,拒绝好像反而更麻烦。
他伸手拿了那瓶热奶茶。
瓶身是温热的,隔着袖口的布料也能感觉到那股温度。他的指尖不由自主地收紧了一点。
“谢谢。”
“猜也是。”极渊说。
Darf 抬头。
“你刚才一直把手缩在袖子里。”极渊拉开冰咖啡的拉环,“而且刚才在机柜间门口,你站的位置刚好是出风口的正下方。”
他喝了一口咖啡,然后补了一句:
“那里比较暖。”
Darf 没说话。
他低头看着手里的奶茶,耳朵慢慢往后压了下去,压得不太明显,像是被人看穿了一件很小的事情,但又不知道该怎么回应。
这种感觉很奇怪。
他习惯观察别人。观察同事的脸色,观察负责人的语气,观察群聊里谁突然不说话了。他很少意识到,自己也会被别人这样观察。
极渊似乎没有等他回应的意思。他靠在隔壁那张空桌子的边缘,喝着咖啡,视线落在 Darf 的屏幕上。
屏幕上是 Darf 自己写的那套标注工具。深灰色的界面,左边是图片预览,右边是一排快捷操作,底部有一行很小的状态栏,显示当前的处理速度和剩余时间。
“这个是公司的系统?”
“不是。”Darf 顿了一下,“我自己写的。”
“挺干净的。”
极渊的尾巴从桌子边缘垂下来,尾尖离 Darf 的椅子腿只有十几公分。
Darf 的尾巴原本垂在椅子一侧,这时不动声色地往自己这边收了收。
“状态栏那个剩余时间,”极渊忽然问,“是按最近几次的平均速度算的,还是按整体算的?”
Darf 看了他一眼。
“最近二十次的滑动平均。”
“为什么是二十次?”
“太少了波动大,太多了反应慢。”Darf 说,“试过几个数,二十次看起来最稳。”
极渊点了点头,没有再问。
但 Darf 注意到,他又看了那个状态栏很久。
那种看法,不像是在客气地找话题,更像是真的对这件事感兴趣。
Darf 心里有一个念头轻轻动了一下,他没有去碰它。
凌晨三点,进度条走到 100%。
Darf 把结果导出,检查了一遍文件数和格式,确认无误之后上传,然后在自己的 todo 清单上把那一项划掉。
他的 todo 清单开在屏幕右侧,每一项前面都有一个小方框,已完成的被划上一道横线,没完成的整整齐齐排在下面。最后一行写着:
[ ] 浇水(周五)极渊的工单大概也写完了。他合上电脑,站起来伸了个懒腰,尾巴跟着往后拉直了一下。
“走吗?”
Darf 愣了一下。
“你也住附近?”
“不算近。”极渊说,“但这个点打不到车,我走回去。”
Darf 关电脑、关显示器,把椅子推回桌子下面,推到和桌沿平行的位置。他把绿萝往里挪了一点,免得早上保洁阿姨拖地的时候碰到。
极渊站在工位区边缘等他,没有催。
外面在下雨。
不大,是那种细得几乎看不见、却能很快打湿衣服的雨。路灯把雨丝照成一条条斜线,路面上积着薄薄一层水,反射着便利店和红绿灯的颜色。
这个时间,街上几乎没有人。
Darf 把帽子拉起来,双手插在口袋里,那瓶喝了一半的奶茶揣在外套口袋里,贴着腰侧,还有一点余温。
极渊从包里抽出一把折叠伞,撑开,看了一眼 Darf。
“一起?”
Darf 看了一眼那把伞。伞不大,如果两个人一起撑,肩膀大概会碰到。
“不用,我有帽子。”
极渊点点头,没有坚持。他把伞收回一半,自己也没撑,就那样拎在手里。
两个人并排走着,中间隔着大概一个人的距离。
走了一段,Darf 注意到一件事。
他们一开始是随意并排的。过第一个路口之后,极渊不知道什么时候走到了他的外侧,靠近机动车道的那一侧。有一辆外卖电动车从后面疾驰过去,溅起一片水花,水花大部分落在了极渊的裤腿上。
极渊低头看了一眼,没有说什么,继续往前走。
Darf 看了看他湿掉的裤腿,又看了看自己干燥的这一侧。
他什么也没说。
但他把手从口袋里拿出来,又放进去,耳朵往极渊的方向偏了一点点。
“你经常这个时间出来?”Darf 问。
说出口之后他就有点后悔。他不太擅长开启话题,每次开口都像是往水里扔一块石头,扔完之后就开始担心水花会不会溅得太大。
“最近比较多。”极渊说,“负责的几栋楼设备都老了,隔三差五出问题。”
“会不会很累?”
极渊偏过头看了他一眼。
“还好。”他说,“半夜的活比白天安静。没人在旁边问‘好了没有’。”
Darf 没忍住,嘴角动了一下。
“你呢?”极渊问,“经常加班到这个点?”
“这周比较多。”
“就你一个人?”
Darf 沉默了一会儿。
“之前不是。”
极渊没有追问。
雨丝落在他的鬃毛上,一点点聚成水珠,顺着颈侧滑下去。他走路的节奏很稳,不快也不慢,像是刻意配合着 Darf 的步子。
这段沉默并不尴尬。
Darf 意识到这一点的时候,稍微有点意外。
他很少和刚认识的人在沉默里待得这么自然。通常情况下,他会在脑子里不停地找话题,推测对方是不是觉得无聊,推测自己是不是应该说点什么。
但现在,他脑子里只有雨落在帽子上的声音,还有旁边那个人不紧不慢的脚步声。
走了二十多分钟,两个人拐进同一条小巷。
Darf 的脚步稍微慢了一下。
这是通往他住的那片老小区的路。巷子很窄,两边是自行车和堆在墙角的杂物,路灯坏了一盏,另一盏的光是暖黄色的,在一片冷色调的夜里显得有点突兀。
他以为极渊会在某个岔路口拐走。
但对方没有,一直跟着他走到了七号楼的楼下。
Darf 在门禁前停下来,回头看他。
极渊也停下来,从口袋里摸出一张门禁卡,在感应区上刷了一下。
“嘀。”
门开了。
两个人对视了一眼。
“你住这里?”Darf 问。
“刚搬来一周。”
电梯很旧,墙上贴满了开锁和疏通下水道的小广告,头顶的灯管有一截在闪。
Darf 按了 11。
极渊伸出手,手停在按钮前,又收了回去。
Darf 看着他收回去的手,耳朵慢慢竖了起来。
他想起了一件事。
上周有好几天,他下班回来的时候,对门 1103 门口堆满了纸箱。有一个晚上,大概十一点多,对门传来一阵很吵的搬东西声,还有重物拖过地面的声音。他当时戴着耳机写代码,被吵得摘下耳机,盯着门看了很久,最后还是没有过去敲门。
他当时还在心里想,希望新邻居不是那种会半夜开音乐的人。
电梯门打开。
十一楼的走廊很暗,感应灯要跺一下脚才亮。极渊先走出去,轻轻跺了一下,头顶的灯亮了,照出两扇相对的门。
1104。
1103。
1103 门口还有两个纸箱没拆,被推得很靠墙,贴得整整齐齐,没有挡住走廊。
Darf 站在自己门口,钥匙握在手里,没有马上开门。
极渊站在对门,也没有马上开。
“上周搬东西那天,”极渊先开口,“是不是吵到你了?”
Darf 顿了一下。
“……有一点。”
“抱歉。”极渊说,“那天搬家公司的人迟到了,只能晚上搬。本来想过去跟你说一声,但你家灯一直亮着,又没什么动静,我怕你在忙。”
原来他注意到了。
Darf 不知道该说“没关系”还是“下次注意”,最后什么都没说,只是点了点头。
极渊转过身,开了门。
门缝里透出一点光,是屋里没关的一盏落地灯,暖黄色的。
他站在门口,回头看了 Darf 一眼。雨水还挂在他的鬃毛末端,浅金色的眼睛在昏暗的走廊里显得很亮。
“对了。”他说,“我看到你工牌上写的名字了。”
Darf 下意识摸了一下胸口。工牌还挂在外套里面,他忘了摘。
上面印着:Darf(弧渊)。
“我们名字里都有个‘渊’。”极渊说。
他说完这句话,没有等 Darf 回应,只是很轻地笑了一下。
“晚安,邻居。”
门关上了。
走廊的感应灯过了几秒,自己暗了下去。
Darf 在黑暗里站了一会儿,才开门进屋。
他的房间不大,一室一厅,东西不多,但每样东西都有自己固定的位置。玄关的鞋子鞋尖朝外,摆成一排。书桌上是两台显示器、一台小型主机、一块手绘板,墙角还有一个嗡嗡作响的机架,里面放着他自己攒的 NAS 和一台旧服务器。
主机的风扇声是这个房间里唯一的声音。
他没有开灯,直接在书桌前坐下,把那瓶已经凉掉的奶茶拿出来,放在桌上。
奶茶瓶和桌沿没有对齐。
他看了它一会儿,没有去动。
他的尾巴从椅子一侧垂下来,尾尖在地板上很轻地扫了一下,又扫了一下。
窗外的雨还在下。
对面那栋楼只剩零星几扇窗户亮着。他从自己的窗户看不到 1103,但他知道,一墙之隔的那一边,那盏暖黄色的灯大概还亮着。
他晃了一下鼠标,屏幕亮起来。
右侧的 todo 清单还开着,最后一行是“浇水(周五)”。
他在下面新建了一行。
[ ] 谢谢 1103打完之后,他盯着这一行看了很久。
然后把它删掉了。
光标在空白的那一行闪了几下。
他又重新敲了一遍,这次写得更长了一点:
[ ] 伞(下次记得带)
[ ] 谢谢 1103他没有再删。
关掉显示器之前,他看了一眼右下角。
04:12。
主机的风扇还在转。他靠在椅背上,闭上眼睛,耳朵却一直朝着门的方向,过了很久都没有放下来。
【第一章 完】