创作声明:本文为虚构创作,请勿与现实关联

“表决结果已经出来了。”江崇山把平板电脑往前推了推,“六票赞成,两票弃权,通过罢免苏澄董事职务的议案,收回其名下5%期权股。”

打开网易新闻 查看精彩图片

苏澄没急着接话。他看了一眼屏幕上的表决名单,六票里有两个名字他已经很久没有联系过了。

“表决之前,没人通知我今天的议题是这个。”他说。

“苏澄,我们谈过很多次了。”陆明远坐在会议桌的另一头,手指交握放在桌面上,“你没有一次听进去的。”

“谈过?你指的是你三次发邮件,每次都是三个字——‘请配合’?”苏澄的视线从屏幕上移开,“配合什么?配合你们把云枢的底层架构换成那套外包的中间件?”

“因为你的底层架构已经不适合现在的商业节奏了。”陆明远的语气压得很低,“我们自己人都跑不起来的东西,怎么让客户用?”

“跑不起来?”苏澄忽然笑了,“云枢现在的日活峰值是四千七百万,这个数从哪来的?你心里没数?”

江崇山咳嗽了一声:“苏澄,请注意场合。”

会议室安静了几秒。空调出风口的声音嗡嗡地响,像一只疲倦的飞虫绕在众人头顶。

苏澄低下头,看着桌边那份已经打印好的罢免决议。文件很薄,两页纸,里面写着他们今天找他来的全部理由——战略方向存在重大分歧、连续两个季度未完成既定研发目标、以及他拒绝向董事会提供核心代码的完整授权。

他拿起桌上的签字笔,笔帽拔开,又合上。

“我签。”他说。

他签得很慢,笔画清晰,像他平时在代码里写注释一样细致。搁下笔的那一刻,他把文件朝着会议长桌的中央推回去,然后站起来,伸手去够自己的外套。

“苏澄。”陆明远叫住他。

苏澄转过头,目光从陆明远脸上扫过,又扫过江崇山,最后落在那块投影幕布上——幕布上还挂着会议开始前展示的季度报表,曲线很好看,一路向上。

他说:“原集团所有系统,从今天起,停止使用我的28项核心代码。”

会议室里像被按下了静音键。没有人立刻理解这句话的分量。坐在末席的财务总监叶清抬起头,皱着眉看了苏澄一眼,又去看陆明远。陆明远的表情凝固了,像是在算一道很难的题。

“你说什么?”陆明远道。

苏澄已经把外套搭到臂弯上,往门口走。

“我说的是,我写的那些东西,不允许你们继续用了。包括今天你们坐在这里用的这套会议室预定系统——那也是我写的。”

门在他身后合拢,发出一声闷响。

走廊里的灯亮得有点刺眼。苏澄沿着地毯走了一段,拐进电梯间,按了下行键。墙上的镜子里映出一个穿深灰色衬衫的男人,肩膀微微往前塌,像是累极了。

电梯门开了。

他走进电梯,靠着厢壁站定,任凭数字一层一层往下跳。直到手机在口袋里震起来。是陆明远打来的。他没接。

直到手机安静下来,他才发现自己撑着电梯一侧扶手的手指在发抖。不是什么紧张或者愤怒——他认得这种抖法,太久没吃东西了,低血糖。

他记得上一次发生这种状况,是2019年冬天,云枢上线前夜的第七次压测。那天他在机房旁边的行军床上睡了不到三个小时,半夜被陆明远摇醒,陆明远拿了一盒热了的咖喱饭递给他。

“苏澄,你要是把自己熬死了,这摊子就散伙了。”那是陆明远当时说的话。

那时候陆明远还没有学会用“请配合”这种措辞,也没有学会在董事会上跟他谈“商业节奏”。

云枢科技是在2018年成立的。

苏澄至今记得注册公司那天,他和陆明远共用一张身份证复印件租下了华贸中心一间六十平的办公间。陆明远管钱和商务,他管技术,两个人没签过任何书面协议——聊了半小时,就约定股权五五开,三线城市的写字楼里,连打印机都是从二手市场淘的。

头一年他们做外包养活自己,苏澄在外面接了三家公司的系统维护,陆明远跑客户,跑完回来把需求往他桌上一扔,说“客户说这个星期要”。他熬了两个通宵把他们接的第一个项目做完,凌晨五点躺在地上看天花板,陆明远蹲在旁边说:“苏澄,咱们自己的产品呢?”

“会有的。”他回答。

后来他知道,陆明远说的“自己的产品”,不是他脑子里的那套底层架构。陆明远想要的是一套能批量复制、快速交付的商业方案,而苏澄想做的,是一套能应对任何数据压力、永远不会被淘汰的底层系统。

他花了四年,写了28项核心代码,从云计算资源调度到分布式存储,从权限管理到实时数据分析引擎。其中23项在云枢自己的服务器上运行,另外5项被封装成可授权使用的独立模块,授权给了其他三家公司——其中一家后来被并购,并购方是他们现在最大的竞争对手,凌潮科技。

这个隐患,他在2022年就跟陆明远提过一回。

当时云枢刚完成B轮融资,估值翻了四倍,办公室里多了不少人。陆明远把他拉到会议室,表情很松快,说苏澄,咱们有钱了,你那个底层架构可以升级了,找外包团队来做,你腾出手来管产品。

苏澄拒绝了。

“那套架构是我从头写的,没有文档,也没法交接给不了解语境的人。”他说,“只能我来维护,我来迭代。”

“那你永远都出不来。”

“我本来就没打算出来。”

陆明远沉默了很久,然后说:“你这样,我们怎么跟董事会交代?”

苏澄想起来的就这些。他记得那天的会议室和今天没什么分别,外面是同样的车流和灯火,只是人不一样,语气也不一样。那天他们还没学会用“战略”这个词来替代“我们想找替罪羊”。

电梯到了底楼。门开的时候,苏澄看见外面下起了雨,不大,但挺密的,打在广场的地砖上,像一层细碎的银针。

他站在大堂门口,低头看自己的手,想了想,还是把手机拿了出来。两个未接来电,都是陆明远。微信里还躺着江崇山下午三点十七分的消息:“小苏,会议前方便的话,来我办公室坐坐。”

他没去。

他现在有点后悔没进去坐坐,至少那样他还能提前知道今天的主菜是什么。不过他很快又想,知道不知道,结果都一样,陆明远决定的事,是从来不会因为几句话轻飘飘地改的。

他把手机放回口袋,撑开伞,走进雨里。

他叫了辆网约车,报的是自己家的小区地址。车在雨中开得慢,前挡风玻璃上一层水雾,雨刷来回地扫。他靠着窗,看路边的霓虹灯晕开,不知不觉间想起自己写第17项核心代码的那年冬天。

那天他写了一行代码,功能是处理服务器的突增流量自动容灾,写完以后他在那一行底下加了一个注释:// 给云枢的。

他到现在还记得当时的心情。那是一种很奇怪的感觉,像是自己在一个没有窗户的房间里搭了一栋房子,然后又亲手给房子装了一扇朝南的窗。他把那扇窗做得很牢固,四面墙都很扎实,觉得能遮风挡雨很久。

那栋房子,今天被判定为不符合“商业节奏”了。

回家的路很短。苏澄到家的时候,雨已经停了,客厅里的窗户开着,风吹进来,凉凉的。他在茶几上放下钥匙,没有开灯,走到窗台前站了一会儿。远处的国贸写字楼群还亮着,只有零星几扇窗灭了。他不知道云枢那边现在是什么状况。

手机又震了一下,还是陆明远的消息,这次是一条语音,他按了播放。

陆明远的声音有点哑:“苏澄,今天会上说的那些话,我本来以为……算了。你这个态度,我们真的很难往下谈。那28项代码的事,你冷静下来,我们明天好好聊聊。”

苏澄没回。

他把手机搁在茶几上,去厨房给自己倒了杯热水。杯壁的温度透过玻璃传到掌心里,他才感觉到自己从会议室到家的这一路,手都是冰凉的。他仰起头,喝水,胃里的空落感稍微缓解了一些。

他在沙发上坐了很久,久到茶几上的水彻底凉了。

这期间江崇山的助理打来过一个电话,语气职业而客气,说“苏总,江董想问您明天下午方不方便见面”,他嗯了一声,没确定,挂了。

深夜十二点左右,他打开放在门口的那台旧笔记本电脑,这台笔记本是他写第一版核心代码时用的,后来换了新机器,就一直搁着。他插上电源,等它开机,屏幕亮起来时,桌面上还保留着2018年命名的那几份文件夹。

他找到那个文件夹,里面躺着28个文件,按编号排得整整齐齐。他写了四年的东西,一口一口喂大的东西,从一张白纸到现在这些密密麻麻的字符。

他没有打开任何一个文件,只是看着这些文件名,在黑暗里待了一会儿。然后他点开邮箱,新建了一封邮件,收件人那一栏空着,标题也空着,正文里只写了五个字:“后天,九点,见。”

写完这封邮件,他没有发送,直接关闭了电脑。

窗外的城市静下来,偶尔有车经过远处的高架桥,留下一点模糊的声响。苏澄坐在沙发上,没有睡意,也没有特别想去做的事。他知道明天一早,陆明远会把这件事捅到其他几个投资人面前,叶清会连夜拉一个合规评估的会议,江崇山会试图用他惯常的手腕把这件事压下去,而凌潮科技那边,说不定此时已经在研究那5项授权出去的代码到底能造成多大影响。

他都知道。他只是不太确定,自己刚才在会议室说的那句话,到底算是一时冲动的反抗,还是他准备了很久的决定。

他把桌上的水杯拿起来,发现水已经凉透了,便又放下。

天快亮之前,他给一个很久没联系的人发去了一条消息:“云枢不用我的代码了,你说过的那个地方,还在招人吗?”

发完消息,他终于感到一阵久违的困意。他把手机扣在沙发上,没等回复,就在沙发里侧躺着,蜷起身子,闭上了眼。

手机在黑暗里轻轻震了一下,屏幕亮起来,上面显示一个名字:安薇。

但苏澄已经睡着了。

苏澄是被手机震动吵醒的。

窗外还没全亮,窗帘透进一线灰白的光,墙角那台空气净化器的指示灯幽幽地亮着蓝色。他伸手从床头柜上摸过手机,屏幕上的时间刚过六点,安薇的回复停在凌晨四点过一分:“顾衍之问了第二遍。他说条件可以谈,但不想隔着一张餐桌谈。你什么时候能见他?”

苏澄把手机放下,又拿起来,打了一行字:“明天下午吧。今天有事。”

发完,他正想坐起来,手机又震了一下。这次是一条行业群里的转发——有人凌晨五点五十分发了一张截图,是云枢科技在某处平台发布的技术公告,标题是“关于云枢系统架构升级计划的说明”,正文里有段话被红线圈出来:“为更好地适应当前业务规模,公司已完成新一代中间件的部署评估,计划于本月底启动系统切换,届时部分历史架构模块将停止运行。”

红色的划线停在那句“历史架构模块将停止运行”上面,底下跟着一条评论:“历史架构?他们说的不会是苏澄那套东西吧?”

群里没人再接话。苏澄把手机锁了屏,在沙发上坐了片刻,然后去洗了把脸,煮了碗面。吃完后,他回房间换了一身干净衣服,把那台旧笔记本装进包里,出了门。

时间还早,他不想那么早去云枢拿东西,就先在楼下路边的长椅上坐了一会儿。今天是周六,写字楼底层的几家店开门很晚,街上人不多,偶尔有几个背书包的学生跑过。他坐了一阵子,看着对面人行道上的梧桐树发了一会儿呆,然后掏出手机,给叶清发了条消息:“上午我去拿东西,方便的话,想见你一面。”

叶清的回信过了快二十分钟才到:“十点半,12楼茶水间,别待太久。”

十点,苏澄到云枢楼下,拿着上周被注销过的那张门禁卡试了一下,闸机没有反应。他站在闸口等,前台重新替他登记了一回访客牌,让他从侧边小门进去。他上了12楼,穿过熟悉的工区,走向走廊尽头的储物间。路过技术团队的开放办公区时,他看见几个年轻工程师坐在工位上,屏幕上是密密麻麻的日志输出,其中一个背对他的人正低着头打电话,声音压得很低:“……生产环境还在回滚,监控还没恢复,中午之前可能上不了。”

苏澄没有停下脚步,继续往前走。

储物间的门虚掩着,他推门进去。里面堆了几箱杂物,纸箱上用记号笔写着花名和日期。靠墙角放着一个黑色双肩包,那是他的——里面装着他的保温杯、一块键盘、一条数据线,以及一个没有贴标签的移动硬盘。他蹲下去,把硬盘拿出来,翻过来看了一眼背面贴着的旧标签,上面写着“备份201811”。

他把硬盘放进自己包里,往茶水间走。叶清已经站在茶水角,手上端着一杯黑咖啡,面前放着一个空杯。她看见他,没有说话,只微抬了下下巴,示意他坐。

苏澄坐下来,把移动硬盘放在桌上。叶清扫了一眼,目光停了一瞬:“2018年的备份?”

“那时候的系统核心,最后一份全量备份。”苏澄说,“后来都迁到公司服务器上了,这是唯一一份留在本地的。”

“你打算带走?”

“这是个人设备上的备份,写的是我的私人存储。”他想了想,“严格说,这就算上法庭,也算不上公司资产。但你可能会介意,所以我跟你说了。”

叶清喝了一口咖啡,没有立刻接话。那杯咖啡很烫,她喝得很慢,目光落在移动硬盘上,像是在衡量什么。半晌,她放下杯子:“你来跟我说这件事,是想让我做什么?装作没看见?”

“不用装作没看见。你可以留个记录。”苏澄说,“我只是不想让这件事变成一份黑材料。你看到了,记录在案,我带走,咱们之间两清。”

叶清抬眉,像是被他的直白抵住了。她顿了顿:“你比昨天状态好多了。”

“吃了顿饭。”

“那就好。”她低下头,又喝了一口咖啡,“你等下还要见江崇山?”

“下午两点。”

“他知道你跟我见过。”

苏澄没有接话。叶清把空杯子放在托盘上,站起来:“我不问你们谈什么。我只提醒你一件事——他昨天晚上让法务拟定了一份新的保密协议,内容比原来的多了一条,关于‘离职后不得利用在职期间获得的商业信息从事与原业务直接相关的研发’。这个条款,我建议你不要签。”

“为什么?”

“因为那28项代码的技术细节,你自己也清楚,都属于‘在职期间获得的商业信息’的范畴。签了,你连重新写一套一模一样的都不行。”叶清说,“你要是不想签,就不要去见江崇山之前先把自己的答案定死。”

她说得很轻,语气平淡,但话里的分量足够。苏澄把移动硬盘放进包里,站起来:“知道了。”

他走出茶水间时,回头看了一眼。叶清站在窗边,手里玩了玩那只空杯,没有看他。

下午一点五十分,苏澄到了江崇山助理发来的那间会议室。地点是城中另一栋写字楼的25层,一间小型会客室,视野很好,能看见远处的瞭望塔。江崇山还没到,桌上放着一壶泡好的茶,茶杯冒着热气。苏澄坐下来,没有动那壶茶。

两点整,江崇山推门进来,穿着藏蓝色的暗格西装,没有系领带,头发比上次见面时白了不少。他在苏澄对面坐下,自己倒了杯茶,推了一杯到苏澄面前。

“你脸色比昨天好了。”江崇山开口。

苏澄没有否认,也没有接话。

江崇山喝了一口茶,把茶杯放下,目光越过杯沿看着他:“我昨晚跟明远谈了很久。他说你上午来公司了,跟叶清见了一面。我不问你们聊了什么。我只想跟你谈谈往后的路。”

“什么路?”

“陆明远提出的那个方案,你考虑了吗?”江崇山的语气不紧不慢,像是讨论天气,“我把话说前面,这个方案我赞成过。不是因为别的什么,而是因为公司现阶段确实需要一个能守住底层的人。外包团队接口接了三天,日志里已经出现两次缓存穿透了。我们等不起。”

苏澄没接话。江崇山也不急,继续说:“但如果你不肯签顾问协议,我还有另一个方案。那28项核心代码,公司可以给你保留著作权署名,同时由公司继续使用,前提是你签署一份授权书,授权范围全部改为非独占的、可转让的。你签字,公司给你一笔一次性买断费。”

“多少钱?”

“按公司估值算,不低于三百万。”江崇山说,“这个数你可以再谈,但方向是这个方向。”

苏澄点了点头,像是把这句话默记了一遍。然后他问:“我听说,授权给那家公司的五份变更,是去年在董事会过了一遍的。他们当时是怎么通过的?”

江崇山的手停了一下,然后他放下茶杯,双手交叠放在桌上:“那五份授权文件的变更,不是董事会通过的,是管理层的批准流程。明远签的字。”

“那他有没有跟我提过?”

“没有。”江崇山停顿了一下,“但小苏,那是公司运营层面的决策。明远作为CEO,有授权范围内变更合作方的权限。这一点,在融资后历次章程修改中没有被推翻过。哪怕你知道,去法院打官司,你的赢面也不大。”

“所以他是打算让我用‘历史架构模块’这个说法在通报里过一轮,然后拿走我写的代码,再让我签一份顾问协议,继续给公司打工?”苏澄说,“你们想要的不是我的代码,你们是想要我这个人从此以后不要再说话。”

江崇山没有否认。他看着苏澄,眼神里有一瞬间的复杂,随即恢复正常:“你可以这样理解。但你也要理解一件事——你写了四年的东西,已经不只是你的了。它们长在公司的骨头上。你走,它们不会跟着你走。这个道理,你当年应该就想明白过。”

“我没想明白。”苏澄说,“我当年想的只是,把这些代码写好,让客户用上不会崩溃的系统。”

“那现在想明白了吗?”

苏澄没有回答。隔着会客室长桌,两个人对坐,茶壶里的水慢慢凉下去,窗外的阳光移动了一点角度,落在桌面上,照出两杯已经不再冒热气的茶。

“你的原雇佣合同里有一条。”江崇山从手边文件袋里抽出一份复印件,推到苏澄面前,“第九条第二款——‘员工在任职期间独立或合作完成的职务成果,其知识产权归公司所有。’这条在云枢成立后一直沿用,没有改过。”

苏澄低头看着那份复印件。纸面已经有些发黄,页眉印着的logo还是当年第一版,橙色的小写的“yun”,是他在一个周六下午临时做的。他记得那天他画完logo,陆明远说“太素了”,他答“能用就行”,于是就这么用了。那条版权条款印在第九条,字体不大,周围留白很宽,像是对它自身的重量毫不在意。

他看完了,没有把那份文件拿起来,只是平放在桌上,说:“所以你们今天所有的话,都是从这一条推出来的。”

“这条一直存在。”

“我知道它存在。”苏澄说,“但我签它的时候,还不叫‘云枢’。”

江崇山看着他,像是没有预料到他会在这句话上做文章。他顿了一下:“名字变了,公司主体没变。”

“对,主体没变。”苏澄说,“但我写第一行代码的时候,那个主体还叫‘寻光网络工作室’,法人是陆明远,合伙人是我。我们那时候没有雇佣关系。”

江崇山的脸色微微变了一下。

苏澄继续说:“工作室后来变更成股份有限公司之后,你说要补签一份任职合同。我签了,签的时候没有请律师看过。那条第九条第二款,我是认的。但九条第二款的生效范围,是‘任职期间完成的职务成果’,那28项核心代码里,前9项是工作室存续期间写的,那段期间我在合伙人位置上,不是雇员。”

江崇山没有立刻回应。他端起茶杯,喝了一口已经凉掉的茶,眉头皱了一瞬。

“你在意这份合同的界定,可以从这个角度打。”他说,“但你也清楚,走法律途径,不是一个星期能出结果的。公司业务不会等。”

“我不走法律途径。”苏澄说。

“你想干什么?”

苏澄站起来,把那份复印件推回江崇山面前:“我什么都不干。我手里的代码,我带走一部分,剩下的,已经不属于我了。我会把它们锁在硬盘里,不公开,不维护,不升级。对外,我一句话都不会说。”

他顿了顿:“至于你们用不用那套中间件,怎么切换,会不会崩,那是你们的事。我不发表意见,也不参与评估。我只是一个已经签了离职手续的普通离职人员。”

他转身走向门口。

江崇山在他身后叫住他:“苏澄,你以为你什么都不做,公司的业务就能继续?”

苏澄停在门口,没有回头:“我不知道。但你们决定罢免我的时候,没有问过我会不会继续。”

他拉开门,走出去。走廊里很安静,空调的风拂过绿植,发出细微的沙沙声。他走了一段,在电梯前停下来,按了向下的键。电梯门开的时候,他看见镜子里的自己——衬衫有些皱了,头发长了,眼眶底下的青色还没消干净,但眼睛是亮的。

他走进电梯,靠着厢壁站定,门合上,楼层数字一格一格往下跳。他拿出手机,删掉了云枢法务部那个存档联系人的备注,只留下那个名字本来的模样,然后给安薇发了一条消息:“下午见面吧。你找个时间。”

安薇几乎秒回:“四点半,还是昨天那家咖啡店?”

“可以。”

“对了,”安薇又发来一条,“顾衍之刚才说他下午正好也在国贸,如果你愿意,他可以直接过来聊聊。”

苏澄看着这行字,电梯到了底层,门开了。他没有立刻走出去,站在门框边,手指在屏幕上停了片刻,然后打出一行字:“我先见你。顾先生那边,改约下周。”

发完消息,他走出电梯。阳光已经斜过正午,街上的行人多了起来,梧桐树影落在地砖上,风一吹,碎影摇动。他站在写字楼门口,让眼睛适应了几秒外面的光线,然后朝地铁站的方向走去。

下午四点半,还是那家咖啡店。安薇已经到了,坐在靠窗的老位置上,面前还是那杯气泡水,但桌上多了一块小蛋糕,巧克力味,看起来像是刚买的。她看到苏澄进来,指了指蛋糕,说:“还没吃下午饭,怕你等下又低血糖。”

苏澄坐下来,没有动那块蛋糕,先说:“我今天跟江崇山见了一面。”

“谈崩了?”

“没谈崩。我把他要的东西,还给他了。”苏澄说,“他说那28项代码在合同上属于公司职务成果。我告诉他,其中9项是工作室存续期间写的,那时候我没有签任职合同。”

安薇眨了一下眼,露出一个若有所思的表情:“这是差异点。”

“但我不打算打官司。”苏澄说,“打不起,也没有意义。他们现在换中间件要三个月,切换后如果稳定运行,我就真的成了一个历史模块。如果不稳定,我打官司也没用。”

“那你打算怎么弄?”

苏澄沉默了片刻,说:“我想自己重新写。”

安薇看着他,没有立刻接话。蛋糕放在桌上,她用小叉子切下一角,推到他那边:“重新写什么的?”

“写一套新的底子。”苏澄说,“不用原来的架构,不用原来那28项里的任何一行代码。我要用四年前写第一版的思路,从头写一遍。这次写的时候,我会把所有文档留好,所有注释写清楚,让任何人都能接手。”

“你想挑战自己?”安薇问。

“不是挑战。”苏澄说,“我想看看,四年前我能从一张白纸写出一套让云枢活下来的系统,今天能不能再写一套更好的。”

安薇把那块蛋糕又往他那边推了推:“苏澄,这句话你四年前好像在这张桌子上跟我说过。”

苏澄看着她,想了想:“是吗?”

“2018年冬天。”安薇说,“你在楼下那家快餐店里,拿着草稿纸,跟我说‘我要写一套能跑十年的系统’。你那会儿还没写第一行

“第一行倒是写了。”苏澄说,“只是没想到后面还会有二十七个。”

安薇没接话。那块巧克力蛋糕已经被她推到他面前,她用叉子在盘子边上轻轻划着圈,目光隔着空调冷气落在他脸上。她像在斟酌什么。

“苏澄,”她终于开口,“你有没有想过,你昨天那句话说出口,云枢那边晚上确实出了事。”

“什么事?”

“切换中间件——就是他们说的那套新架构——晚上七点上线,九点零八分的时候订单数据出现延迟,十一点二十分发了一条维护公告,然后他们回滚了。”安薇说,“旧系统恢复了运行,但凌晨两点到三点之间,有一组调用请求,来源IP在凌潮科技的机房。他们调用的是一台外部服务器的接口,不是云枢内网。接口返回的数据格式,和你的第17项容灾调度模块一模一样。”

苏澄的手停了一下。咖啡杯边缘抵在唇上,他愣了几秒才放下:“第17项只在云枢内网部署过,没有授权出去过,外部不可能调用到。”

“所以我也觉得奇怪。”安薇说,“我有个朋友做第三方监控,他说他一开始以为是撞库或伪造请求,但他抓了几条数据包做了指纹比对,发现函数命名规则和注释风格跟你公开的那几项一致。更关键的是,里面有一个参数默认值,叫`threshold_201811`——这个参数名是你2018年11月调试时写的,对不对?”

“你怎么知道这个名字?”

“因为那个监控朋友把代码特征截图发给我看了。”安薇说,“他说这个默认值是写死在生产环境里的,不是测试版本。苏澄,这个参数从来没有出现在任何文档、任何公开代码仓库、任何外包交接文件里。它只存在于你本地写的那份原始源码里。而它现在出现在凌潮科技的服务器上。”

苏澄没有立刻说话。他用拇指缓缓擦过咖啡杯沿,感受那层细小的釉面纹路。片刻后,他把杯子放下:“你朋友能拿到那台服务器的完整特征吗?还是只有几行代码?”

“只有几行。他说那台服务器做了反追踪,他只抓到一小段缓存。”安薇说,“但那段缓存里除了`threshold_201811`,还有一个函数名,是用拼音命名的。你写的函数命名,过去都是英文加数字,只有那一个模块用的是拼音——因为你说你当时一边接你妈电话一边写的,写完了懒得改,叫`rongzaitiaodu`。”

苏澄的表情没有变化,但身体往后靠了一下。

“你连这个都知道。”

“你告诉过我。”安薇说,“2019年你请我吃过一顿饭,那天你跟陆明远吵了一架,说你妈打电话来说你爸住院了,你一边改代码一边接电话,写完没改名字。”

苏澄低头,想了一会儿,像是从记忆深处捞起一个影子。然后他说:“知道这个命名的人,除了我,只有当时跟我一起调试过那个模块的人。整个云枢只有两个。”

“哪两个?”

“一个是我自己。”苏澄说,“另一个,是王朗。他当时做场景测试跑过那个模块。”他顿了顿,“但他那次跑完之后,我让他删掉了所有输出日志。他如果还留着,那说明他备份了。”

安薇看着他:“王朗昨天在罢免决议上投的是赞成票。”

“我知道。”

“那你打算怎么办?”

苏澄站起来,把外套拿起来搭在臂弯:“回家。找点东西。”

“找什么?”

“找那块2018年的备份。”他说,“我写第17项之前,有一段草稿版,存在移动硬盘里,文件名是乱码,日期是2018年10月底。如果凌潮那台服务器跑的代码里有`threshold_201811`,那个参数的初始版本应该跟我草稿里的某一版完全一致。我拿那个去对比,就能知道他们拿到的是哪一版。”

“苏澄,”安薇叫住他,“你刚才说要在那张桌子上重新写。现在,你还打算重新写吗?”

苏澄在门口停下,回头看了她一眼:“先搞清楚是谁把我的东西偷走了,再谈写不写的事。”

他推开玻璃门,走了出去。

回到家,天已经完全暗了。他没开客厅大灯,只开了书房那盏台灯。他把移动硬盘插上电脑,等待识别的那几秒里,他站在桌边,低头看着硬盘的指示灯,喉咙里有点干。

硬盘读取成功。他看到根目录下那个没有标签的“201811”文件夹,双击进去,里面是七个文件。文件名用日期和缩写标着,他挨个看过去,在最后找到了那个代号“RZTD”的子文件夹。文件名是乱码,但修改时间显示是2018年10月27日。

他点开,里面是容灾调度模块的草稿代码,只有几百行,注释里写着一行:“数据结构再改一版,缓存队列要加权重。”底下是日期。他翻到第68行,看到了那个参数的定义:`threshold_201811 = 0.43`。

和安薇描述的一致。

苏澄盯着屏幕看了一会儿,然后关掉窗口,开始在整个硬盘里搜索所有包含“201811”的文件。搜索结果出来了,除了他刚才看到的那个草稿,还有一个PDF文件。文件名是“技术资产移交清单.pdf”,修改时间显示为今年1月15日,凌晨3时17分。

苏澄很确定自己从来没有创建过这个PDF。他点开它。一份一页纸的表格。抬头写的是“云枢科技技术资产移交确认单”,甲方是云枢科技,乙方是凌潮科技。表格里列着三行:第一行,第1项至第16项核心代码,授权范围“非独占、可转让”;第二行,第17项至第28项核心代码,交付方式、交付地点;第三行,备注栏里歪歪扭扭写着一行字:“包含全部源码及配置参数说明。”落款处有陆明远的签名,还有一枚公章。

日期是上周三。

苏澄把那页PDF翻来覆去看了三遍。最后,他注意到表格右下角有一个小方格,里面印着“经办人:李德”。他不认识叫李德的人。但那个“李德”的“德”字,右边少了一点,像是打错了一样。

他截了个图,把截图发给安薇:“帮我查一下这个名字。越快越好。”

安薇回得很快:“哪来的?”

“我硬盘里。”

“你硬盘里为什么会有别的东西?”

苏澄盯着屏幕,没有回。他也想知道答案。硬盘一直锁在储物间的包里,除了他,只有一个人知道那个包的密码。那是很多年前他告诉对方的——当时他对那个人说:“要是哪天我出意外了,你帮我打开这个包,里面有一份遗嘱。”那个人是陆明远。

他关掉PDF,重新打开草稿文件夹,把第68行那行代码和PDF里的“包含全部源码及配置参数说明”放在一起,在页面上并列。然后他坐在电脑前,很久没有动。台灯的光圈在墙上投下一片暖黄色的影子。他拿起手机,拨出一个号码。

电话响了四声,陆明远接起来。

“苏澄?”陆明远的声音听起来有些意外,还有一点杂音,像是走在室外,“这么晚了,怎么想起打电话?”

“你在哪?”苏澄问。

“在公司。”陆明远顿了顿,“你不在,有些事情还没处理完。怎么了?”

“明天见一面吧。老地方,城南那家面馆。”苏澄说,“有件事,我想问你。”

电话那头沉默了几秒。陆明远没有拒绝:“明天几点?”

“中午十二点。我等你。”

挂了电话,苏澄把手机放在桌上,看向窗外。夜色很深,楼下的路灯亮着,树叶在风里轻轻摇晃。他把那份PDF打印出来,折好放进外套内袋,然后关了电脑,在沙发上躺下来。

第二天中午,城南那家面馆还是老样子。塑料桌布上压着一层透明薄膜,菜单贴在墙面上,几张塑料凳子空着。苏澄到的时候,陆明远已经坐在靠里的位置,面前放着一碗热汤面,还没动。看见苏澄进来,他把筷子从纸套里抽出来,搁在碗沿上。

“你瘦了。”陆明远说。

苏澄没接话,在对面坐下,也点了一碗面。店里没有别的客人,风扇在头顶嗡嗡地转。两个人沉默了一会儿,直到面端上来,苏澄没有动筷子。他低下头,从外套内袋里拿出那页折好的PDF,展开,放在桌子中央,隔着那碗面推过去。

陆明远低头看了一眼,手里的筷子停住了。

“你认识这个文件?”苏澄问。

陆明远没说话。他放下筷子,拿起那张纸,凑近看了一会儿,又放下。他的表情没有太大变化,但苏澄注意到他拿纸的右手手指微微蜷了一下。

“哪来的?”陆明远问。

“我自己的硬盘里。”苏澄说,“上周三,凌晨三点十七分,有人把它放进了我的2018年备份文件夹。”

陆明远又看了一眼那份清单,然后抬起目光看他:“你怀疑我?”

“我必须怀疑。”苏澄说,“那个硬盘的密码,我只告诉过你一个人。”

陆明远沉默了片刻,端起碗喝了口汤。汤还很烫,他喝得很慢,嘴唇碰了一下碗沿就放下了。他把碗搁回去,指尖在桌面敲了两下。

“苏澄,”他说,“如果我说我没有打开过那个硬盘,你信吗?”

“我想信。”苏澄说,“但这份文件是怎么进到我硬盘里的?”

陆明远避开他的目光,看着窗外。街对面有一棵老梧桐树,叶子已经泛黄,风一吹就落下来几片,粘在路面的砖缝里。他沉默的时间比苏澄预想的长。

“你有没有想过,”陆明远终于转回头来,声音压得很低,“你的硬盘,不一定只有用密码打开一条路。”

“什么意思?”

“意思是,如果有人在你不知情的情况下,先读了你硬盘的完整镜像,再把一份新文件塞进你原来的数据里,最后把镜像原样写回去——你不需要密码,只要有那份镜像和写入工具,就能做到。”

苏澄看着他:“谁能拿到镜像?”

陆明远没有立刻回答。他低下头,用筷子挑了一根面,却没有送进嘴里,举在半空又放下。然后他说:“你以为我为什么要同意罢免你?”

“因为你想让我走。”

“我是想让你走。”陆明远说,“但不是因为我觉得你的代码影响公司了。是因为我看到了东西,知道你必须走,否则会出事。”他停顿了一下,“上周二晚上,我在自己的工位上收到一封没有落款的邮件,附件是一个你云枢账号的登录日志。日志显示,上周一凌晨,你的账号在公司服务器上登录过,做了全量导出,一共导出一百二十八G数据。导出的内容,正好是你那28项代码的完整源码。”

苏澄的呼吸顿了一下:“我上周一在深圳出差,凌晨在酒店,登录不了公司内网。”

“我知道。”陆明远说,“但那条登录日志使用的是你个人的SSH密钥,密钥指纹匹配,而且那个时间点,你手机上有过一条验证码接收记录。”

“我没有收到过验证码。”

“你收到了。”陆明远说着,从外套口袋里掏出一张打印纸,放在那碗面旁边,“你当时睡着了,手机屏幕亮了,我拍的。因为那天晚上我正好有事找你,你一直没回,我给你打电话,打了两通都没接。第二天早上你回电话说在洗澡。我当时觉得奇怪,后来才看到你那部手机上有那条验证码短信。”

苏澄拿起那张打印纸。上面是一张手机截图,显示的时间是凌晨1点47分,短信内容:“云枢账号登录验证码:734921。请勿向任何人泄露。”发件人号码确实是他用的那个号。

他放下纸,看着陆明远:“你拍过我的手机屏幕?你什么时候进过我房间?”

“上周二凌晨,你在深圳。你房间的门锁密码没换过,之前你让我帮你拿过线缆。”陆明远说,“我看到你的手机亮着,屏幕上的验证码跟你账号的登录记录对上了。”

苏澄盯着他,半晌没说话。面馆后厨传来锅碗碰撞的声音,风扇在他头顶一圈一圈地转。

“所以你早就知道有人用我的账号登录过服务器?”苏澄问,“你为什么不告诉我?”

“我以为是你做的。”陆明远说,“我以为你知道了董事会要罢免你的计划,自己先动了手,把源码导出去当后手。所以我才没有在董事会上反对罢免——因为我以为你们已经闹翻了,你自己有退路。”他顿了顿,“直到你在会上宣布停止使用代码,我才知道我错了。”

“那封登录日志是谁发给你的?”

“没有署名。”陆明远说,“但我查了发件地址,是一台废弃服务器的自动发信程序。那台服务器,绑定的是云枢前管理员账号。”

苏澄的脑子里闪过一个名字:“王朗?”

陆明远没有接话。他低下头,把那碗面推得远了一点,像是突然没了胃口。他沉默了很久,店里只剩下风扇声。然后他抬起头,目光穿过苏澄肩膀,看向门口。

“苏澄,那封邮件不是王朗发的。”他说,“但发送日志里有一条备注,写的是‘已抄送凌潮科技顾衍之’。”

苏澄心里一动:“顾衍之?”

“你认识他?”

“听说过。”

陆明远撑着桌子站起来,像是要走了。他站在桌边,低头看着苏澄,声音低下来:“那份PDF——什么‘技术资产移交确认单’——我从来没有签过。但你看那个签字,是不是很像我写的?”

苏澄低头看了一眼那张纸上的签名,又抬头看他:“不像。你这个人的签名,最后那一笔总是往上挑。这个签字是平的。”

陆明远的脸色白了一瞬。他站在那里,嘴唇动了动,像是想说什么,却又咽了回去。店门口的风铃响了一声,门被推开,一个人走进来,在门口停住了。

苏澄下意识抬头。进来的那个人穿着灰绿色风衣,个子不高,戴着一副窄框眼镜,站在门内,目光扫过苏澄的脸,又越过他看向陆明远,嘴角牵出一个很淡的弧度。

陆明远的手攥紧了桌角:“你怎么在这里?”

那人没理会他,只是看着苏澄,说:“你就是苏澄?我姓顾,叫顾衍之。你硬盘里那份文件,是我放进去的。”

苏澄的瞳孔缩了一下。

顾衍之往前走了一步,从外套内侧口袋里拿出一枚小U盘,放在那张打印纸上,说:“你想知道的东西都在里面。但有个条件——你跟我走一趟,我带你去看一样东西。看完之后,你再决定要不要重新写你的代码。”

苏澄没有动。他低头看着那枚U盘,又抬起眼看向顾衍之:“你为什么要放那份文件?”

顾衍之笑了笑,目光从苏澄脸上滑过去,落在那份PDF的落款处,然后说:“因为我想看看,一个人要花多长时间,才能发现自己身边被安了多少双眼睛。”