周早上九点,林小溪被手机铃声吵醒。
不是闹钟,是周浩。
“小溪!江湖救急!”周浩的声音在电话那头火烧火燎,“‘星海’测试服凌晨三点突然崩溃,到现在还没恢复!初步判断是咱们那个寻路优化模块刚集成进去,跟老版的物理引擎碰撞检测起了冲突,数据溢出了!”
林小溪瞬间清醒,从床上弹坐起来:“我马上远程连上去看看!”
“别远程了!情况比较复杂,得现场看志和调试。沈总已经往公司赶了,你也赶紧过来吧!十分钟后我到你家楼下接你!”
电话挂断。林小溪用最快速度洗漱换衣,抓起背包冲出家门。周浩的车果然已经在楼下等着,引擎都没熄。
“具体什么情况?”林小溪一上车就问。
“鬼知道!”周浩猛打方向盘,“凌晨值班的运维发现服务器负载异常飙升,然后全线宕机。重启后跑不了几分钟又崩。志里全是寻路模块和物理引擎互掐的报错。沈总昨晚好像就在研究这个,半夜还给我发了封邮件讨论一个边界条件……估计他现在火气不小。”
林小溪心往下沉。她负责的预研模块刚初步集成,就捅出这么大篓子,这责任……
“别慌。”周浩瞥了她一眼,看出她的不安,“新模块出问题太正常了,沈总有心理准备。关键是尽快定位解决。今天怕是要打硬仗了。”
车子一路疾驰到公司。周末的办公楼空荡荡的,只有“星海”组的区域亮着灯。几个被紧急叫来的核心骨已经在了,个个脸色凝重地盯着屏幕。
沈泽站在中央的白板前,上面已经写满了密密麻麻的公式和调用链分析。他依旧穿着昨天团建时那件深蓝色卫衣,头发有些凌乱,眼底带着明显的血丝,但眼神锐利如常,甚至比平时更专注。
“小溪到了?过来。”他看到林小溪,直接招手,语气没有责备,只有纯粹的紧迫感,“这是凌晨崩溃时的核心栈和内存快照。你的优化算法在第十三步,调用物理引擎的碰撞查询接口时,传入了一个非法参数。但问题源不在你的参数生成逻辑。”
他快速在白板上画出数据流图:“看这里。物理引擎的老版接口,在处理高速移动动态物体连续查询时,内部状态机有个隐藏的竞态条件bug。平时触发概率极低,但你的新算法查询频率和模式恰好踩中了这个雷区。两个模块都没错,但组合起来就炸了。”
他一针见血,瞬间将问题从“谁的责任”拉回到了“如何解决”的技术层面。林小溪原本忐忑的心,立刻被强大的专业分析吸引,凑近白板仔细看。
“所以,要么修改我们的算法,绕开这个调用模式;要么,我们帮物理引擎组把这个陈年bug修了。”周浩在旁边嘴。
“修复bug。”沈泽毫不犹豫,“绕开意味着性能妥协,而且治标不治本。物理引擎组负责人老王在国外度假,联系不上。我们自己来。”
他看向林小溪,语速很快:“你对这个调用路径最熟。我需要你以最快速度,精确定位物理引擎源码里那个竞态条件发生的具置和触发逻辑。周浩,你带两个人负责搭建隔离测试环境,模拟高并发压力。其他人,按照我刚刚分的任务,准备应急预案和回滚方案。中午十二点前,我要看到问题因的详细报告。”
指令清晰,分工明确。所有人立刻行动起来。
林小溪坐到电脑前,深吸一口气,打开了物理引擎庞大的源码库和凌晨的海量志。这是她第一次接触如此底层的、并非自己负责的核心模块代码,压力巨大。但沈泽刚才那番抽丝剥茧的分析,和他毫不犹豫选择“治”而非“妥协”的决策,给了她莫名的信心和力量。
她戴上耳机,隔绝杂音,整个人沉浸到代码的海洋里。
时间一分一秒过去。
会议室里只剩下键盘敲击声和偶尔低声的技术讨论。沈泽没有回自己办公室,而是拉了一把椅子,坐在林小溪斜后方不远处,同样对着电脑屏幕,审阅着周浩他们不断发来的测试报告和数据,时而快速回复邮件,协调资源。
他的存在本身就像一种无形的压力,但奇怪的是,林小溪并不感到窒息。相反,她能感觉到他的注意力有一部分始终笼罩在她这边,并非监视,而更像是一种……守护和随时待命的支持。有一次她遇到一个极其晦涩的汇编指令,皱眉思索时,身后忽然传来沈泽的声音:
“那个指令是早期硬件兼容性留下的特殊内存屏障,文档里没写。它和上面那条缓存预取指令组合,在超线程环境下可能会打乱执行顺序。看第2104行,那里有个条件分支,就是规避这个的。”
他甚至没有看她的屏幕,只是凭刚才走过时瞥到的片段和自己的知识储备,就给出了精准的提示。
林小溪依言看去,果然如此!心中豁然开朗,回头想道谢,却见沈泽已经重新专注于自己的屏幕,侧脸线条在屏幕冷光下显得格外专注。
她收回目光,指尖在键盘上飞舞得更快。
上午十一点四十,林小溪猛地敲下最后一行注释,长出一口气:“找到了!”
所有人都围了过来。
她指着屏幕上高亮的一段代码,快速解释:“就是这里。一个全局的状态标志位,在中断处理函数和主更新线程中同时被访问,但没有正确的锁保护。当我们的寻路算法在极短时间内发起大量异步碰撞查询时,两个线程同时修改这个标志,导致状态机进入非法状态,内存越界,最终崩溃。”
问题因清晰呈现。
沈泽盯着代码,点了点头:“很好。修复方案?”
“最简单的办法,在这个标志位访问前后加互斥锁。”林小溪说,“但可能会引入微小的性能开销。还有一个更优雅但复杂点的方案,利用原子作和无锁编程改写这个状态机……”
“用原子作。”沈泽再次果断选择,“性能不能妥协。有信心吗?”
林小溪看着那段并不算复杂的逻辑,重重点头:“有!”
“需要多久?”
“给我两个小时……不,一个半小时!”林小溪估算了一下。
“好。”沈泽看向周浩,“测试环境准备好没有?她改完,立刻进行压力测试。其他人,按原计划准备,一旦修复通过,下午两点前完成全量部署。”
任务分配完毕,众人散去。林小溪立刻投入到紧张的编码中。沈泽这次没有离开,而是拖了把椅子,坐到了她旁边稍后的位置,继续处理自己的事务,但显然留出了一部分注意力,随时准备应对她的提问。
这种无声的、近距离的并肩作战,让林小溪的心跳有些不稳。她能闻到他身上极淡的、熬夜后特有的清冽气息,混杂着一点咖啡的味道。他的存在感太强了,但奇异的是,并没有扰她的专注,反而让她更加绷紧神经,想要做到最好。
指尖在键盘上跳跃,一行行代码流淌而出。她全神贯注,偶尔会低声自语,推敲某个细节。有一次,她下意识地喃喃:“这个地方用memory_order_acquire还是release……”
“用acquire。”沈泽的声音几乎在她问题刚落时就响起,平静而肯定,“后面那个写作需要release配对。这里顺序不能错。”
林小溪一愣,随即照做。他甚至没有看她具体的代码上下文,仅凭她对语义的模糊描述,就给出了准确答案。这种技术上的绝对默契和碾压般的实力,让她在紧张之余,竟感到一丝……难以言喻的悸动。
下午一点二十,林小溪完成了修改,并自己进行了初步验证。代码提交,周浩那边立刻开始全压力测试。
等待结果的时间,格外煎熬。林小溪坐立不安,手指无意识地抠着桌沿。
沈泽递过来一杯刚冲好的热咖啡,放在她手边。“休息一下。你做得很好。”
简单的肯定,却让林小溪紧绷的神经稍微松弛了些。她端起咖啡,小口啜饮。温热的液体滑入喉咙,带来些许暖意。
“沈总,”她忍不住问,“您……好像对物理引擎的代码也很熟?” 连那种深藏的、文档都没写的指令细节都知道。
沈泽靠向椅背,揉了揉眉心,脸上透出一丝疲惫,但语气依然平稳:“‘星海’的很多底层模块,最初的设计稿甚至部分原型代码,是我写的。后来团队扩大,才交接出去。这个物理引擎,是初代版本的核心之一,当时为了赶进度,有些地方……写得比较糙,留下了隐患。” 他看了一眼屏幕,“这次的问题,源在我。”
他在主动承担不属于他的责任。林小溪连忙摇头:“不,是我的新模块触发了它……”
“bug就在那里,迟早会炸。你的算法只是让它在最不合适的时间暴露了。” 沈泽打断她,语气没有波澜,“早点发现是好事。所以,不必有负担。”
他总能用最冷静客观的方式,化解她的焦虑。林小溪看着他眼下的淡青,想起周浩说他半夜还在研究边界条件,心头微微一软。
“您昨晚……没休息好?” 话一出口,又觉得逾越。
沈泽看了她一眼,没直接回答,反而问:“你呢?团建玩到那么晚,早上又被抓来救火。”
“我还好。”林小溪说,顿了顿,还是没忍住,“昨晚团建……挺有意思的。没想到您游戏玩得那么好。”
又绕回了这个话题。空气似乎静了一瞬。
沈泽转着手中的笔,目光落在远处测试服务器闪烁的指示灯上,侧脸看不出情绪。“年轻时沉迷过一段时间。后来发现,构建游戏世界,比单纯玩更有意思。” 他停了停,声音低了些,“而且,游戏里……也能遇到一些很有意思的人。”
林小溪的心,猛地一跳。
他这话……是什么意思?
是在说“临渊”和“溪风”吗?
她张了张嘴,想问,却又不知从何问起。直接问“您是不是临渊”?万一不是,岂不是尴尬到极点?万一是,他这样隐瞒,自己贸然戳破,他又会如何反应?
就在她内心激烈挣扎时,周浩那边传来一声欢呼:“过了!压力测试全通过!性能指标还略有提升!”
紧绷的气氛瞬间被打破。所有人都松了口气,露出笑容。
沈泽也站了起来,脸上闪过一丝如释重负的轻松。他拍了拍手:“大家辛苦了!周浩,安排后续部署和监控。其他人,可以回去休息了,今天算三倍加班。”
众人欢呼着开始收拾东西。
林小溪也赶紧整理自己的物品,心中那点想问的冲动,随着危机解除而悄然消散,取而代之的是一阵强烈的疲惫和……淡淡的失落。
沈泽走到她身边,看着她:“今天表现非常出色。回去好好休息。”
“谢谢沈总。”林小溪低头收拾背包。
“我送你回去。”沈泽说,语气自然,不容拒绝。
车上依旧很安静。午后的阳光透过车窗洒进来,暖洋洋的。
疲惫感如水般涌上,林小溪靠着椅背,有些昏昏欲睡。但她脑子却异常清醒,反复回放着今天沈泽说的每一句话,每一个细节。
他对代码无与伦比的熟悉。
他对自己下意识的“指导”和默契。
他提到“游戏里遇到有意思的人”时,那意味深长的语气。
还有昨天团建时,他那神似“临渊”的作……
碎片越来越多,拼图似乎越来越完整。
车子在她公寓楼下停稳。林小溪解开安全带,低声道谢,准备下车。
“林小溪。”沈泽忽然叫住她。
她回头。
沈泽看着她,眼神深邃,里面翻涌着许多她看不懂的情绪。他的嘴唇动了动,似乎想说什么很重要的话。阳光落在他脸上,将他长长的睫毛染成淡金色,也在他眼底投下小片阴影。
那一刻,时间仿佛被拉长。
林小溪屏住呼吸,心脏悬在半空。她预感到,他可能要说出那个秘密了。
然而,沈泽最终只是抬手,极其轻柔地,拂开了她颊边一缕不知何时散落的头发。指尖的温度一触即逝。
“头发乱了。”他说,声音有些低哑,“好好休息。”
然后,他收回了手,重新握紧方向盘,目视前方。
动作自然,理由充分,却让林小溪整颗心都颤了一下。那触碰太轻,太短暂,却带着一种难以言喻的亲密和温柔,与他平时冷硬的形象截然不同。
“……嗯。沈总再见。”她几乎是仓促地推开车门,头也不回地跑进了单元门。
直到站在电梯里,看着镜面中自己微红的脸颊和有些慌乱的眼睛,她才后知后觉地按住口,那里心跳如鼓。
他刚才……到底想说什么?
那个动作……又是什么意思?
回到空荡荡的公寓,疲惫终于将林小溪淹没。她草草吃了点东西,洗了个澡,倒在床上,本想立刻睡去,但大脑却异常活跃。
今天发生的一切,像电影般在脑海里回放。最终定格在沈泽最后那个欲言又止的眼神,和那轻柔的、拂过她发丝的手指。
心烦意乱。她摸出手机,习惯性地点开游戏。
“临渊”在线。
她看着那个亮着的头像,今天所有的疑惑、猜测、以及那丝隐秘的心动,混合着疲惫,一股脑地涌了上来。
她点开私聊窗口,手指悬在键盘上良久。
最终,她没有问任何关于沈泽的问题,也没有提及今天的崩溃和加班。她只是打了一行字,发送过去:
“今天好累。但解决了一个很难的问题,又好像没那么累了。”
这是她真实的感受,也是她此刻唯一想分享的。
几乎在她消息发出的瞬间,对方就回复了,速度快得不寻常:
“听说‘星海’测试服今天凌晨出问题了?解决了?”
他怎么知道?林小溪一愣。公司内部问题,虽然不算绝密,但也不是随便一个游戏好友能立刻知晓的。除非……
她心跳加速,试探着回复:“嗯,一个底层bug,刚修好。你怎么知道?”
对方沉默了几秒。
“猜的。看你上线时间,这个点才出现,而且说很累解决了问题,很像紧急加班处理线上事故的状态。”
解释合理,但依然透着一股不寻常的关注。
林小溪咬了咬唇,决定再进一步。
“是啊,加班到现在。我们老板……挺厉害的,一下子就找到了问题关键。”她故意提起沈泽。
这一次,“临渊”沉默得更久了。
久到林小溪以为他掉线了。
然后,他发来一句:
“他……一直很厉害。”
这句话,彻底击中了林小溪。
不是“你们老板”,也不是“听说他很厉害”,而是“他一直很厉害”。
那种熟稔的、带着复杂情绪的肯定口吻……
她手指有些颤抖,打下一行字,又删掉。反复几次,最终发出去的是:
“你……认识他吗?”
发送。
等待。
屏幕那头,再也没有回复。
几分钟后,“临渊”的头像,灰了下去。
他下线了。
没有回答。
但有时候,沉默本身,就是一种最响亮的回答。
林小溪握着手机,呆呆地坐在床边。
窗外,夕阳西沉,将天空染成一片暖橙色。
她心中那个巨大的谜团,并没有因为这句沉默的“回答”而解开,反而裹上了更浓重的迷雾,和更尖锐的、亟待确认的冲动。
沈泽。
临渊。
这两个名字,在她心中疯狂地碰撞、交织。
她需要证据。确凿的证据。
她打开电脑,不是游戏,也不是工作文档,而是开始搜索一切能将这两个身份联系起来的蛛丝马迹。
游戏论坛里关于“临渊”的稀少信息?
公司内网沈泽的早期技术分享记录?
甚至……她开始回忆“临渊”曾提过的、关于他“家里公司”的零星话语……
一场由她主动发起的、小心翼翼的“侦查”,在这个疲惫又清醒的傍晚,悄然开始。
而城市的另一端,书房里没有开灯。
沈泽坐在黑暗中,面前是已经熄屏的游戏客户端和手机。
手机上,是林小溪最后那条“你认识他吗?”的追问。
他终究还是没有回答。
也无法回答。
他靠在椅背上,闭上眼。
今天并肩作战时的心动,指尖触及她发丝时的柔软,以及此刻面对追问的无力与恐慌,交织成一张密不透风的网,将他紧紧缠绕。
他知道,她开始怀疑了。
甚至,已经在寻找答案了。
他精心维持的平衡,正在以不可逆转的速度倾斜。
是继续沉默,等待她自行发现,可能伴随着失望和愤怒?
还是主动坦白,迎接一切未知的后果?
黑夜中,他缓缓睁开眼,眼底深处,挣扎与决断的光芒,激烈地交替闪烁。