程越点了一下头。“需要我做什么?”
“你继续追那条链。我需要证据——完整的、不可否认的证据。同时我需要做一件事。”她拿出手机,拨了一个号码。
接电话的是宋晚晴。
“温姐?”
“你今天上午在实验室吗?”
“在啊,我在机房——”
“出来。现在。”
电话那头沉默了一秒。“……怎么了?”
“出来再说。”
她挂掉电话,转向程越。“我需要你继续待在实验室。像什么都没发生一样。继续写代码,继续在注释里留言。不要让任何人看出异常。”
“你呢?”
“我去院办。”她拿起笔记本电脑,“他们要终止合作,收回你的权限。我不同意,但我不会在没有证据的情况下跟他们硬扛。我需要时间。你帮我争取时间。”
“多久?”
“二十四小时。”
程越看著她。“够了。”
温以宁走到门口,回头看了一眼。程越已经坐回他的工位,打开电脑,手指放在键盘上。他的姿势和任何一个普通的上午一模一样——平静、专注、稳定。但她知道他在做什么。他在追一条线,一条通往真相的线。这条线穿过三层代理、两个国家的伺服器、一个她不认识名字的中转节点,最终会指向一个人的萤幕。
而她的任务是让那个人以为一切都没有被发现。
她走出实验室,走廊里空无一人。电梯门开的时候,她看到宋晚晴从楼梯间跑出来,脸色发白。
“温姐,出什么事了?”
温以宁走进电梯,按住开门键。
“进来。我有话问你。”
宋晚晴走进来。电梯门关了。
“上周二晚上你在哪里?”
宋晚晴的脸更白了。“上周二?我——我在家。我记得那天我走得早,六点多就走了。”
“有人可以证明吗?”
“我室友——等等,温姐,到底发生什么事了?”
温以宁看著电梯楼层显示器上的数字从八降到七,从七降到六。每一秒都在减少。
“核心代码库泄露了。”她说,“时间是周二凌晨两点十七分。用的是一台机房备用机生成的临时凭证。”
宋晚晴瞪大了眼睛。“什么——”
“你有机房权限。你知道系统更新的时间。你知道核心代码库的价值。”温以宁的声音很平,像在陈述一组实验数据。“我需要你告诉我,这些都是巧合。”
电梯到了四楼。门开了。
宋晚晴站在电梯里,嘴唇在发抖。“温姐,我没有——我可以给你看我的手机记录、我的电脑、我家的监控——我没有做这件事。我跟了你三年,我——”
“我知道。”温以宁走出电梯,回头看她。“所以我没有在院办说你的名字。”
她走进走廊,身后电梯门关上的声音很轻,但她的脚步比来的时候重。
院办会议室里的人还在等她。处长看到她回来,松了一口气。
“温博士,决定了吗?”
她坐下来,把笔记本电脑打开,萤幕朝向自己。
“我有一个条件。”
“什么条件?”
“给我二十四小时。在这二十四小时里,程越的权限暂时保留,合作不终止。二十四小时之后,如果我不能给你们一个确定的答案,我亲自终止合作,承担全部责任。”
处长皱眉。“这不符合规定——”
“这个项目是我从零开始做出来的。”温以宁的声音不大,但每一个字都很清楚。“技术是我的,实验室是我的,团队是我的。如果出了问题,责任也是我的。我只需要二十四小时。”
会议室里安静了很久。
那个中年男人开口了。“你有方向了?”
“有。”
“确定?”
“不确定。所以才需要二十四小时。”
中年男人看了处长一眼,点了一下头。
“二十四小时。”处长说,“明天这个时候,我要答案。”
温以宁站起来,走出会议室。走廊里的阳光从窗户照进来,在地板上画了一道一道的光栅。她穿过这些光栅,脚步没有停。
她拿出手机,给程越发了一条讯息:“二十四小时。”
秒回:“够了。晚上之前给你结果。”
她又发了一条:“我需要你同时做另一件事。”
“什么事?”
“帮我写一个程序。一个可以记录谁在什么时间访问了哪台备用机的程序。不需要阻断,只需要记录。我要证据。”
“写好了。昨天晚上写的。已经在跑了。”
温以宁站在走廊里,看著手机萤幕上这行字,突然觉得有什么东西在胸口堵了一下。不是感动,是某种更深的、更安静的情绪。像在黑暗中走了很长的路,突然看到一盏灯——不是那种刺眼的、照亮一切的灯,是一盏很小的、稳定的、不会灭的灯。它一直在那里,只是她刚刚注意到。
她打了一行字:“程越。”
“嗯。”
“谢谢你等我发现。”
发送之后她把手机放进口袋,没有等回复。她走进电梯,按下八楼。电梯上升的时候,她在想一件事——二十四小时之后,她会抓住那个人。不是因为程越的追踪,不是因为院办的压力,是因为她需要证明一件事。
她的实验室,她来守。
电梯门在八楼打开的时候,走廊里很安静。她推开实验室的门,里面和任何一个普通的上午一样——研究员们在各自的工位上写代码、跑数据、讨论问题。宋晚晴坐在机房门口,脸色还是有点白,但已经在整理文件了。程越坐在她的右边,手指在键盘上,萤幕上是一串她看不太懂的网路协议分析。
一切正常。太正常了。
温以宁走到自己的工位,坐下来,打开电脑。她看了一眼程越的萤幕,他没有转头,但他的手指在键盘上敲了一串节奏——三短一长,三短一长,重复了两次。
这是他们大学时约定的暗号。三短一长意思是“一切顺利”。
她转过去对著自己的萤幕,手指放在键盘上,回了同样的节奏。三短一长。两次。
键盘声在实验室里继续响著。她的快,他的稳;她的轻,他的重。和任何一个普通的上午一模一样。
但她知道,这个普通的上午底下,有一条线正在被一点一点地拉紧。
陷阱在当天下午三点布置完毕。
程越的方案很简单。在备用机上植入一个伪装成正常系统日志的监控程序,任何访问都会被完整记录——时间、操作内容、登录方式、物理埠。同时,他在核心代码库里放了一个诱饵:一份标记为“量子加密核心算法v3.0”的文件,内容是经过特殊设计的假代码,表面上看起来是真正的技术升级,实际运行会产生明显的错误特征。任何人把这份代码复制出去,都会留下不可逆转的数字指纹。
“如果对方足够聪明,会先验证代码的真实性。”程越把程序部署完毕,关掉远端连线界面。“但验证需要时间。而在验证完成之前,他会先把文件拷走。这是人性。”
“你不也是人?”温以宁站在他旁边,看著萤幕上跳动的监控数据。
“所以我更了解人性。”
她没有接这句话。但她站的位置比平时离他近了二十公分。
监控程序上线后的第一个小时,没有任何异常。第二个小时,也没有。温以宁坐在工位上正常处理工作,程越继续写他的优化算法,两个人的键盘声和任何一个下午一样——她的快,他的稳;她的轻,他的重。
第三个小时。四点三十一分。
监控程序弹出一条提示。备用机被远端唤醒,登录来源是实验室内部网路,IP地址指向——机房隔壁的会议室。
温以宁和程越同时看到了这条提示。
“会议室?”她皱眉。
“会议室有网路接口。”程越的手指已经在键盘上开始追踪,“任何人只要有一台笔记本电脑,在会议室里插上网线,就能接入内部网路。不需要门禁卡,不需要权限审批。”
温以宁站起来。
“等一下。”程越没有抬头,“让他先下载。下载完成之后,指纹才会写入文件。现在进去,证据不完整。”
她站著没动。监控萤幕上,备用机的访问记录在快速增加——登录、浏览目录、定位目标文件、开始传输。进度条从百分之十跳到百分之四十,从百分之四十跳到百分之七十。
“百分之八十五。”程越报数,声音冷静得像在念测试报告。“百分之九十三。百分之九十九。传输完成。”
他抬头看她。“现在。”
温以宁转身走出实验室。走廊很短,从实验室门口到会议室门口只有十五步。她走了十二秒,每一步都很稳。会议室的门关著,磨砂玻璃透出里面笔记本电脑萤幕的光。
她推开门。
坐在会议室里的人抬起头,手从键盘上缩回去,但来不及了。萤幕上显示著传输完成的对话框,旁边插著一根网线,连接著会议室墙上的网路接口。
宋晚晴。
两个人对视了大约三秒。三秒里温以宁的大脑处理了很多信息——宋晚晴的脸从惊慌变成苍白,从苍白变成灰,嘴唇在动但没有声音,手从键盘移到滑鼠又移开,像一个不知道该执行哪条指令的死循环。
“温姐。”宋晚晴的声音在发抖。
温以宁没有说话。她走过去,合上笔记本电脑的萤幕。动作很慢,很确定,像在关掉一个已经没有意义的程序。
“去实验室。”她说。
走廊里站了几个听到动静的研究员,程越靠在实验室门口,手里拿著手机。他看到温以宁和宋晚晴走过来,侧身让开,在温以宁经过他身边的时候低声说了两个字:“录好了。”
监控程序记录了完整的访问过程。备用机的操作日志、文件传输的完整链路、诱饵文件中嵌入的数字指纹——所有的证据都指向同一个来源,同一个时间,同一台设备。
宋晚晴坐在实验室的椅子上,面前摆著她的笔记本电脑。温以宁站在她对面,程越靠在门边。其他研究员被清场了,整个八楼只有他们三个人。
“从什么时候开始的?”温以宁问。
宋晚晴低著头,没有回答。
“我问你从什么时候开始的。”
“……去年十月。”
去年十月。那时候她刚拿到第三个专利,实验室的经费刚刚批下来,她正准备扩招团队。宋晚晴是她第一个想到的人——跟了她两年半,技术过硬,做事靠谱,是她最信任的下属。
“谁联系你的?”
“我不知道名字。邮件联系的。他们说——”宋晚晴的声音越来越小,“他们说只要拿到核心代码库的访问权限,就给我五十万。先付了二十万订金。”
“你收了?”
沉默。
“你收了。”
“温姐,我——”
“你收了二十万,用我给你的权限,在我不知情的情况下,打开了我的核心代码库。”温以宁的声音没有起伏,每一个字都像从冰箱里拿出来的。“然后你把我的技术卖给了我的竞争对手。”
宋晚晴抬起头,眼睛红了。“我不是——我不是想卖你的技术。他们说只是做竞品分析,不会用于商业——”
“你信吗?”
宋晚晴闭上嘴。
“你信一个陌生人花五十万买你的竞品分析?”温以宁的声音终于有了波动,不是愤怒,是一种很冷的、被压到极限的失望。“你在我身边三年,我教你写代码、教你跑实验、教你怎么申请专利、怎么应对审稿人、怎么在谈判桌上不被人骗。我教你这些,是为了让你学会骗我?”
宋晚晴的眼泪掉下来了。她没有擦,就让眼泪挂在下巴上,一滴一滴地落在实验室的白色地板上。
“温姐,对不起。”
“对不起没有用。”温以宁转过去对著萤幕,“程越,证据够了吗?”
“够了。”程越把手机举起来,“完整记录。时间、操作、文件指纹、网路链路。给院办的话,十分钟就能写完报告。”
“写吧。”
程越开始打字。键盘声在空荡荡的实验室里很响,比平时任何时候都响。温以宁站在宋晚晴面前,两个人的距离不到两步,但中间隔著的东西比五年的时间还厚。
“你从什么时候开始计划的?”
“不是计划的……他们先联系的我。十月第一次邮件,我没回。十一月又发了一次,报价从三十万涨到五十万。十二月——”
“十二月什么?”
宋晚晴咬了一下嘴唇。“十二月我妈住院了。需要一笔钱。医保报不了那么多。我——”
“你应该跟我说。”
“跟你说?让你借我钱?然后我还不起,在实验室里抬不起头?”
“所以你选择偷。”
这个字让宋晚晴整个人缩了一下。她坐在椅子上,肩膀塌下来,像一个被卸载了核心程序的机器人。
“温姐,我知道说什么都没有用。但我想让你知道——我没有想过害你。我以为他们只是做分析,不会真的——”
“你一个计算机硕士,你跟我说你不知道竞品分析的边界在哪里?”温以宁的声音终于大了一点,“你不知道什么叫商业机密?什么叫知识产权?什么叫窃取?”
宋晚晴没有再说话。
程越的键盘声停了。“报告写完了。院办现在要吗?”
温以宁沉默了很久。
“发吧。”她说。
程越看了她一眼。她站在那里,背对著他,肩膀线条很直,像一根绷到极限的弦。他没有问第二遍,按下了发送键。
邮件发出的提示音在实验室里响了一声。很轻,很短,像一个句号。
十分钟后院办的电话来了。又过了二十分钟,信息安全办公室的人到了。他们带走了宋晚晴的笔记本电脑、手机、所有实验室设备。宋晚晴走的时候在门口站了一下,回头看温以宁。
温以宁没有看她。
门关了。走廊里脚步声远了。实验室里只剩下两个人。
温以宁坐在自己的工位上,对著萤幕。萤幕上是她的核心代码库,几万行代码,三年的心血。她盯著第一行,光标在闪烁,她没有动。
程越坐在她旁边,没有说话。他没有问她还好吗,没有说“这不是你的错”,没有做任何安慰的事。他只是坐在那里,手指放在键盘上,不敲,就放著。
过了大概五分钟,温以宁开口了。
“她说她妈住院了。”
“嗯。”
“我不知道。她从来没跟我说过。”
“你不可能知道每个人所有的事。”
“我是她领导。”
“你是她领导,不是她妈。”程越的声音很平,“她做了选择,你承担后果。这是管理者的责任,但不是你的错。这两个不矛盾。”
温以宁没有说话。她看著萤幕上的代码,想起宋晚晴第一天来实验室报到的样子——穿著一件太大的白大褂,扎著马尾,站在门口说“温姐好”。她带她熟悉实验室环境,教她怎么用服务器、怎么跑测试、怎么写实验报告。三年。一千多天。她以为她们之间有信任。她以为信任是时间累积出来的,时间越长,信任越厚。
但信任不是时间的函数。信任是选择。她选择信任宋晚晴,宋晚晴选择背叛她。两个选择加在一起,等于现在这个结果。
“院办刚才打电话来了。”程越说。
“说什么?”
“调查结果确认了。泄露的技术是诱饵文件,真正的核心代码没有受影响。他们说你的处理方式很专业。”
“嗯。”
“还有一件事。”
“什么?”
“他们说这次合作虽然出了问题,但你的应对体现了项目的技术价值和管理水平。问我们要不要把合作协议延长——从项目制改成长期战略合作。”
温以宁转头看他。
程越的表情很平静,但她看到他放在键盘上的手指收紧了。不是紧张,是在等。
“你怎么想的?”她问。
“这是你的实验室。你决定。”
“我问你怎么想的。”
他沉默了几秒。“我想留下。”
很简单的四个字。没有修饰,没有条件,没有“如果你允许”。就像他写的代码——简洁、确定、不留歧义。
温以宁转回去对著萤幕,没有回答。
窗外天黑了。不知道什么时候黑的,她没有注意时间。实验室的灯亮著,白色的日光灯把每个人的工位照得清清楚楚。宋晚晴的工位在角落里,萤幕黑著,键盘静止,椅子上还搭著一件灰色的开衫。她走的时候忘了拿。
温以宁站起来,走到宋晚晴的工位前,把那件开衫叠好,放在桌上。然后她关掉宋晚晴的电脑,把椅子推回桌子下面。动作很慢,像在完成一个不需要著急的任务。
做完这些她回到自己的工位,发现程越给她倒了一杯水。不是蜂蜜柠檬水,是白开水。温的。
“蜂蜜柠檬粉用完了。”他说。
她端起来喝了一口。温度刚好。
“程越。”
“嗯。”
“你刚才说院办问长期合作的事。”
“嗯。”
“你回答了吗?”
“没有。我说等你决定。”
温以宁把水杯放下,转头看他。他坐在离她一臂的地方,手放在键盘上,没有敲。萤幕上的代码停在某一行,光标闪烁著,像一颗等待指令的心脏。
“我想好了。”她说。
程越等著。
“合作可以。但我有条件。”
“什么条件?”
“你来我的实验室工作。在我的地盘上。你的所有代码、所有数据、所有技术文档,都要经过我的审核才能对外提交。你不是合作伙伴,你是——”她停了一下,“你是我的首席算法工程师。我说了算。”
她等著他笑。这是她第二次说这些话。第一次是在谈判桌上,她用这些话来保持距离,用条件来掩盖恐惧,用“我说了算”来证明她不需要他。
但现在这些话的意思变了。不是防御,是邀请。不是控制,是定义。她不是在说“你不能靠近我”,她是在说“如果你要靠近,请用这种方式”。
程越没有笑。他看著她,眼睛里有一种她读不懂的东西——不是温柔,不是感动,是某种更深层的、更安静的确定。像一个已经被证明过无数次的定理,不需要再证明,只需要被陈述。
“好。”他说。
一个字。
温以宁等著后面的话。没有。就这一个字。
“你不问问待遇?”
“不问。”
“不问问工作强度?”
“不问。”
“不问问试用期?”
程越终于笑了。很轻的笑,嘴角动了一下就收回去了,但她看到了。和五年前那个桂花香的夜晚一样——他在路灯下说“我喜欢你”的时候,也是这个表情。确定、坦然、没有保留。
“温以宁,”他叫她的全名,“你问了我这么多问题,我能不能问你一个?”
“问。”
“你刚才说的那个条件——“我说了算”——适用范围是什么?只限于工作,还是——”
他没有说完。
因为温以宁站起来了。
她走到他面前,站在他和萤幕之间。两个人的距离很近,近到她能看到他睫毛的弧度——和五年前一模一样,微微往上翘,像两把打开的小扇子。她以前觉得这个细节很好笑,一个写代码的人长这么长的睫毛干什么。现在她不觉得好笑了。
“程越,你又要走了吗?”她问。
这个问题不在她的计划里。她原本想说的是“合作协议的事明天再谈”或者“院办那边你去回复”或者任何一个可以让她保持距离的、安全的、不会暴露自己的句子。但她说出口的是这句。
程越看著她。“你想让我走吗?”
温以宁没有回答。
她低下头,看著两个人之间的距离。大约二十公分。从五年前的桂花树下到现在,这二十公分她走了五年。每一次以为快要到达的时候就被拉远,每一次被拉远之后又重新开始走。她走得很慢,有时候会停下来,有时候会想放弃。但她一直在走。
现在她不想再走了。
她伸出手,握住了他的手。
不是被动地让他握,不是试探性地碰一下指尖,是主动的、确定的、用力的——像在键盘上按下一个她确定了很久的键。她的手指穿过他的手指,掌心贴著掌心,指缝对著指缝。两个人的手扣在一起,像两段被精准对接的代码——输入匹配,输出一致,没有冗余,没有错误。
“我不想。”她说。
程越低头看著两个人交握的手,沉默了几秒。然后他抬起头,看她。
“那我也不走。”
实验室的灯光在他们头顶,白色的、稳定的、不会闪烁的光。没有桂花,没有路灯,没有凌晨三点的校园。但温以宁觉得这间实验室比任何地方都像一个家——因为这里有她的代码、她的服务器、她的量子纠缠态示意图。还有一个人,坐在离她一臂的地方,喝她给他的咖啡,写她看得懂也喜欢看的代码,在凌晨两点追踪偷她技术的人,在她问“你又要走了吗”的时候说“我不想走”。
“你的手在抖。”她说。
“没有。”
“有。”
“那是你的手在抖。”
温以宁低头看了一眼。两个人的手都在抖。不是害怕,不是紧张,是一种被压抑了太久的、终于被允许释放的东西。像一个等待了五年的程序,终于找到了运行的权限。
她握紧了他的手。
“程越,我们有一件事需要现在确定。”
“什么事?”
“关系定义。”
程越看著她。“你想怎么定义?”
“技术文档的方式。版本号v1.0,适用范围、权限设置、异常处理。”
他笑了——这次是真的笑了,嘴角往上,眼睛弯起来。和她记忆中一模一样。
“好。”他说,“现在写?”
“现在写。”
温以宁坐回自己的工位,打开一个新文件。程越把椅子挪过来,坐在她旁边。两个人之间的距离从二十公分变成了零。肩膀几乎挨著肩膀,手臂几乎贴著手臂。她的萤幕上光标在闪烁,等待第一行字。
她打了一行:
“关系定义文档 v1.0”
然后停下来。
“第一条,”她说,“适用范围。”
程越想了想。“工作时间和非工作时间。全部适用。”
“第二条,权限设置。”
“你说了算。”他说。
温以宁转头看他。“认真的?”
“认真的。技术问题你决定。感情问题——”
“感情问题呢?”
“商量著来。”
她看著他的眼睛。他的眼神很认真,不是那种讨好的、退让的认真,是那种“我知道自己在说什么”的认真。和他在谈判桌上说“可以”的时候一样——确定、坦然、不留余地。
她在文件里打了第二条:
“权限设置:技术问题温以宁决定,感情问题共同决定。”
“第三条,异常处理。”
程越接过去:“如果吵架,冷战不超过二十四小时。”
“为什么是二十四小时?”
“因为二十四小时之后,新的代码就提交了。冷战超过二十四小时,版本会冲突。”
温以宁被这个理由逗笑了。不是那种精确的、被校准过的笑,是那种忍不住的、从喉咙里跑出来的笑。她笑的时候往左偏了一下头,因为左边有一颗虎牙,她觉得不好看。但她没有用手挡。
“第三条,”她打字,“冷战不超过二十四小时。”
“还有一条。”程越说。
“什么?”
“如果有一方想离开,必须提前告知。不得删除联系方式。”
温以宁的手指停在键盘上。她看著这行字,沉默了三秒。然后她打了第四条:
“离开需提前告知。不得删除联系方式。”
文件写完了。四条规则,不到五十个字。比任何一份技术文档都短,比任何一份商业合约都简单。但温以宁觉得这是她写过的最重要的代码——不是因为它复杂,是因为它没有bug。
她按下储存键,文件名打了一个字:“我们。”