萤幕上的监控面板已经恢复了正常,Raft方案的曲线重新出现了,蓝色的,平稳的,像什么都没有发生过。但程司白知道发生过了。那条曲线断过,系统崩过,她崩过。曲线可以恢复,系统可以重启,但她不知道自己要多久才能恢复。
“裴衍之。”她说。
“嗯。”
“对不起。”
这三个字说出来的时候,她的声音很轻,轻到像一段被压缩过度的音频,大部分频率都丢失了,只剩下一个模糊的轮廓。但她知道他能听到。他总是能听到。
裴衍之转头看著她。窗外的光从侧面照进来,照在她的脸上,把她眼睛下面那两道阴影照得很清楚。她的头发乱了,外套的领口歪在一边,嘴唇干得起了皮。她看起来像一个刚刚经历了系统崩溃的节点——还在运行,但日志里全是警告。
“我不是要你道歉。”他说。
程司白转头看著他。他的表情很平静,平静得像在说一个他一直知道的事实。但她的眼睛里有什么东西在动——不是眼泪,是某种比眼泪更深的、被压了很久之后终于开始松动的东西。
“我是想告诉你一件事。”裴衍之把水杯放在桌上,转过身面对她,双手放在膝盖上,手掌朝上。那是一个开放的姿势——不设防,不防御,不保护自己。
“系统可以容错。”他看著她的眼睛,一个字一个字地说,“我也可以。”
程司白觉得自己的胸口被什么东西击中了。不是痛,是一种她说不清楚的感觉——像一个被她关了很久的门被打开了,光从门缝里照进来,刺眼,但她不想把门关上。她的嘴唇在抖,不是冷,是某种她控制不住的东西。她把嘴唇咬住了,不让它抖。但咬不住。那个抖动从嘴唇蔓延到下巴,从下巴蔓延到整个脸颊,从脸颊蔓延到眼眶。
她没有哭。她只是坐在那里,眼睛里有东西在闪,嘴唇在抖,手指攥著椅子边缘,指节发白。
裴衍之没有动。他只是坐在她旁边,手掌朝上,放在膝盖上。他在等她。不是等一个答案,是等她愿意。
程司白看著他的手。手掌朝上,手指微微张开,像一个空的容器——等待被填满,等待被握住,等待被选择。她想起三年前,他也是这样伸出手的。在公司楼下,在她家楼下,在每一个说“晚安”的夜晚。每一次她都看到了,每一次她都没有握。不是不想握,是不敢。她怕握住了就会依赖,依赖了就会脆弱,脆弱了就会被剩下。
但现在她不怕了。不是因为她变强了,是因为她发现——脆弱不会被剩下,脆弱只会被接住。被他的手接住,被他的人接住,被他的“我也可以”接住。
她伸出手,放在他的掌心里。
她的手很凉,他的手很暖。她的手指碰到了他的掌心,那里的皮肤很柔软,温度透过指尖传进来,像一个信号——连接已建立,通道已开通,数据开始传输。
裴衍之的手指合拢了,轻轻地,慢慢地,像在握一件容易碎的东西。他的手指穿过她的指缝,扣住了她的手背。力度不重,但很稳,稳到像一个被确认了的连接——握手成功,协议协商完成,共识已达成。
两个人沉默地坐著,面对著萤幕上那排绿色的“PASS”。窗外的那层橘色变成了金色,太阳出来了,光照在会议室的玻璃窗上,照在桌上那两杯凉掉的水上,照在两个人交握的手上。
程司白低头看著那只手。她的手在他的手里,显得很小,很白,很凉。他的手很大,很暖,指节分明,指甲剪得很短。她注意到他无名指的根部有一道浅浅的疤,很旧了,几乎看不出来。她以前没有注意到这道疤。也许三年前就有了,也许是她走了之后才有的。她不知道。
她以前不知道的事情太多了。
“裴衍之。”她说。
“嗯。”
“你刚才说系统可以容错。”
“嗯。”
“你的容错机制是什么?”
裴衍之沉默了一会儿。窗外的光照在他脸上,把他的侧脸照得很柔和。他的嘴角动了一下,不是笑,是一种放松——一种只有在确信什么东西终于被确认之后才会出现的放松。
“心跳检测。”他说,“超时重试。优雅降级。还有——”
他停了一下,转头看著她。两个人的目光在空气中相遇,很近,近到她能看清他瞳孔里自己的倒影——头发乱了,眼睛红了,嘴唇干了,但她在笑。很小很小的笑,小到如果不是在他的瞳孔里看到,她自己都不会发现。
“还有什么?”她问。
“手动恢复。”他说,“需要人工介入的那种。”
程司白笑了。不是嘴角动一下的那种,是真的笑了。笑容从她的眼睛里开始,蔓延到脸颊,蔓延到嘴角,蔓延到整个脸上。她笑得不好看,眼睛瞇成了一条缝,鼻子皱了一下,嘴唇因为干裂而有点疼。但她没有停下来。
她已经很久没有笑过了。久到她都快忘记笑是什么感觉了。
裴衍之看著她笑,他的嘴角也扬起来了。不是那种克制的、理性的、成年人的微笑,是那种从心底里涌上来的、压不住的、想要跟著一起笑的笑。
“程司白。”他说。
“嗯。”她还在笑,声音里带著一点点颤,不是哭的那种颤,是笑的那种。
“我们试试看。”
程司白停住了笑。她看著他,窗外的光照在他眼睛里,把那双深棕色的瞳孔照得很亮。他的表情很认真,认真得像在签一份技术方案——每一个字都确认过了,每一条条款都考虑过了,没有歧义,没有模糊地带。
“不结婚,不谈未来。”他说,声音很轻,轻到像是在说一个秘密,“就试试看,能不能像两个节点一样,保持连接。”
程司白看著他。她的手指在他掌心里动了一下,不是要抽出来,是要握得更紧。她的手指穿过他的指缝,扣住了他的手背,和他的手指交缠在一起。
“不结婚?”她问。
“不结婚。”
“不谈未来?”
“不谈未来。”
“那谈什么?”
“谈今天。”裴衍之说,“谈明天的测试用例,谈后天的灰度上线,谈下周的技术评审会。谈你今天吃了什么,谈你今天几点睡的,谈你今天有没有笑。”
程司白低下头,看著两个人交握的手。她的手在他的手里,他的手指扣著她的手背,她的手指扣著他的手腕。两个人的心跳在不同的频率上运行,但通道是开的,数据在传输,共识在达成。
“好。”她说。
一个字。很轻,轻到像一个确认信号——收到,理解,同意。不需要重发,不需要超时,不需要备份。就是一个简单的ACK,告诉对方:我收到了你的请求,我同意你的提案,我们达成共识了。
裴衍之的手指在她手背上轻轻按了一下。不是用力,是确认——你说了,我听到了,我记住了。
两个人在会议室里并排坐著,肩膀轻轻挨在一起。程司白的右肩靠著裴衍之的左肩,隔著两层布料,她能感觉到他的体温。不是那种烫的、灼人的热,是那种温的、恒定的、让人想靠上去的暖。
窗外的那层金色变成了白色,太阳完全升起来了,光照在整个城市的上空,把每一栋楼的玻璃幕墙都照得发亮。会议室的窗户朝东,阳光直射进来,照在两个人身上,把他们的影子投在身后的墙上——两个影子靠在一起,肩膀重叠,分不清哪个是谁的。
程司白没有说话。她也没有松手。她只是坐在那里,靠著他的肩膀,握著他的手,看著窗外的光。她的眼睛还是干的,嘴唇还是裂的,头发还是乱的,但她不觉得累了。不是因为休息了,是因为有人和她一起承担了。
她想起三年前的一个晚上。那天她加班到很晚,趴在桌上睡著了,醒来的时候身上盖著一件外套,桌上放著一杯咖啡和一张纸条。纸条上写著“别太累了”。她当时把纸条揉成一团扔进了垃圾桶。但现在她知道了——那张纸条她没有扔。她把它放在抽屉里,压在最下面。和那部旧手机放在一起,和那条“好,不打扰了”放在一起,和所有她说不需要的东西放在一起。
她从来没有扔掉过。
她只是不敢承认她需要。
“裴衍之。”她说。
“嗯。”
“你刚才说心跳检测。”
“嗯。”
“你的心跳频率是多少?”
裴衍之转头看著她。她的头靠在他肩膀上,他只能看到她的头顶——头发乱糟糟的,有几缕碎发翘起来,在阳光下泛著一点点棕色。她的耳朵从头发里露出来,耳尖是红的,不是那种被晒红的红,是那种从皮肤底下慢慢渗上来的、一层一层的红。
“不知道。”他说,“没测过。”
“那你现在测一下。”
裴衍之没有动。他坐在那里,肩膀靠著她的肩膀,手握著她的手,看著窗外的阳光。他能感觉到自己的心跳——不快,但很重,一下一下的,像在确认什么。
“大概每分钟七十二次。”他说。
“正常范围。”程司白的声音从他肩膀处传来,闷闷的,像隔了一层什么东西,“你的心率变异性怎么样?”
“什么?”
“心率变异性。心跳间隔的变化幅度。数值越高说明自主神经调节能力越强,越健康。”
裴衍之笑了。不是嘴角动一下的那种,是真的笑了。他的笑声很轻,轻到像一段低频的震动,从胸腔传到肩膀,从肩膀传到她的耳朵里。
“程司白,你连关心人的方式都像在做技术评审。”
程司白没有反驳。她只是靠在他肩膀上,嘴角微微上扬。她不想反驳,因为他说得对。她不会说“你累不累”“你睡得好不好”“你有没有压力”。她只会说“你的心跳频率是多少”“你的心率变异性怎么样”“你的容错机制是什么”。
这是她的语言。用技术词汇表达感情,用算法隐喻关系,用系统架构比喻人生。听不懂的人觉得她冷漠,听得懂的人知道她在说——我在乎你。
他听得懂。他一直听得懂。
窗外的阳光越来越亮了,照在会议室的每一个角落里,把桌上的灰尘都照出来了。那些灰尘在光柱里飘浮,缓慢地,无方向地,像一群没有目标的粒子。程司白看著那些灰尘,觉得自己就像其中的一颗——一直在飘,不知道要去哪里,不知道会落在哪里。但现在她知道自己不会一直飘了。因为有一个人伸出手,接住了她。
“裴衍之。”
“嗯。”
“你刚才说不结婚,不谈未来。”