年终奖到账350元,我冷静打卡下班,当晚公司12亿核心数据遭受攻击,领导疯狂给我打了350个电话,我就不接怎么着!

免责声明:本文为虚构故事,请读者朋友注意辨别,理智思考。

年终奖到账350元,我冷静打卡下班,当晚公司12亿核心数据遭受攻击,领导疯狂给我打了350个电话,我就不接怎么着!

年终奖到账350元,我冷静打卡下班,当晚公司12亿核心数据遭受攻击,领导疯狂给我打了350个电话,我就不接怎么着!-有驾

18:01。手机震动。

中国银行您尾号8831的账户收到年终奖金,金额350.00元。

我盯着那个数字看了三秒,把手机屏幕朝下扣在桌上。隔壁工位的赵姐凑过来,她身上有一股隔夜韭菜盒子的味儿:“小周,你奖金多少?我听说今年研发部都砍半了。”

“三千五。”我把手机翻过来亮了一下给她看,锁屏上的时间正好跳到18:02。

“三千五?”赵姐的音调拔高了半个八度,“那你去年……”

“去年十三万五。”我笑了一下,把手机揣进兜里,“年终奖到账350元,我冷静打卡下班,姐。”

赵姐嘴张了一下,没出声。

我退出所有系统,关机,拔掉充电线,把桌上的东西收进背包。那沓A4纸还在原地,评定表上的“D”被咖啡渍洇了一小块。我拿起那杯剩了大半的咖啡,走到茶水间倒进水池,杯子冲了两遍,放回柜子里。洗手的时候看了一眼镜子,镜子里那个人脸色还行,就是眼皮底下青了一小块,连着熬了四十多个小时的代价。

18:30。打卡机“滴”一声。我穿过后门,走进十二月上海的夜风里。

地铁上人不多,我靠着车门刷了会儿微博,想了想,又把微博关掉。给母亲发了条微信:“这周加班,不回了。”她秒回:“别老熬夜,暖气费我给你打过去了。”我看着那行字,把手机锁屏,盯着窗外黑洞洞的隧道墙壁。

到家八点。出租屋十二平,一张床一个桌子一个衣柜,墙上贴着两张A4打印的进度表,日期划到昨天。我在楼下便利店买了桶泡面和两根火腿肠,水烧开的时候,手机开始震动。

王总监。

我没接。把泡面盖好,压在火腿肠上。手机又震,还是他。然后是微信语音,连着三条,每条都是59秒。我不看内容,直接从最近通话里把“王建明”三个字拉进了黑名单。

泡面吃完,汤喝完,我把桶折好扔进垃圾桶。打开电脑——不是公司的,是我自己那台装了双系统的旧ThinkPad——连上热点。屏幕右下角弹出新闻推送:我司今日股价收跌4.7%。

我靠在床头,打开一个黑色的命令行窗口。

20:14。前同事老刘发来一条微信:“周哥,你们那出事儿了你知道不?”紧跟着一条语音,我没点开,打字回:“什么事。”

“据说核心数据库被黑了,客户数据全挂了,王建明现在快疯了,在群里艾特所有人回去加班。”老刘顿了一下,“你不是早下班了吗?”

我看着这条消息,没回。手机又震,陌生号码,属地北京。我按掉。

我打开公司的远程VPN,输入那个我三个月前就申请却从未被批准的数据库高级权限账号。账号是活着的——IT部陈姐上周偷偷给我开的,她说“周彦你走之前把东西拷出来,别便宜了那帮孙子”。陈姐不知道的是,我不仅拷了东西。

我关掉窗口,合上电脑。

20:37。手机又开始震。一个接一个,屏幕亮成一片。我数到第十七个的时候觉得烦,直接把手机调成静音,扣在桌上,屏幕朝下。

屏幕还在亮,一下,一下,像某种心跳监护仪。

我拉开抽屉,拿出那份打印好的、盖了公司公章但还没签字的离职申请,上面生效日期是今天。我拿起笔,在乙方签字栏写下“周彦”,日期“2026.12.3”。

然后我躺下来,盯着天花板。天花板有一块水渍,形状像一只歪着头的企鹅。上一次盯着它看是三个月前,那天我交上去的算法优化方案被王建明在全员大会上当众驳回,理由就三个字:“看不懂。”

手机还在震。灯光从屏幕边缘漏出来,在桌子上形成一块不断跳动的小光斑。

我翻了个身,把被子拉到下巴。

21:47。热度上来了。微博上开始有人截图,说是某知名互联网公司数据泄露,客户身份证号、银行卡后四位在网上明码标价地挂出来。评论里有人猜是内鬼。有人猜是竞争对手。有人猜是离职员工报复。

我刷到第二条的时候,老刘的电话终于打进来了——不是微信,是直接打的手机号。我看着屏幕上的“刘铭”两个字,按了接听。

“周哥!”老刘的声音压得很低,像是在厕所或者楼梯间,“你知不知道数据库的事?王建明现在在技术部撂话了,说今晚查不出来是谁,整个部门明年别想有一个人拿年终奖。”

“他今年给我发了350。”我说。

老刘沉默了两秒。“……多少?”

“三百五。”

“……操。”老刘那声“操”吐得很轻,但很重。他吸了口气,“周哥,你跟我说实话,是不是你?”

我没回答。我看着那只歪头的企鹅,说:“老刘,你还记不记得八月份那次,我提的那个内存热迁移方案?”

“记得啊,你不是说能降低40%延迟吗?王建明说测试环境跑不通,给毙了。”

“他根本没跑。”我说,“测试环境的日志我调出来看过,他连部署都没部署。”

老刘没说话。电话里只有他喘气的声音。过了一会儿他说:“周哥,你打算怎么办?你现在人在哪?”

“在家。”我说。

“王建明在群里发了你家庭住址,说让人去你家堵你。”

我看着门口那把折叠椅。椅子腿底下压着一捆打包用的透明胶带。

“让他来。”我说。

挂了电话,手机屏幕又亮起来。未接来电的数字跳到63。然后是微信群里有人把王建明在钉钉上的新消息截图发出来——消息是@所有人的:“周彦,不管你做了什么,现在回来,我们还有的谈。公司的损失你担不起。”

我点开钉钉,发现我的账号已经被移出所有部门群,只剩一个叫“临时沟通”的个人对话窗口。王建明在里面留了一句话:“周彦,12亿的项目数据,你收手还来得及。”

12亿。那是公司今年最大的客户——华盛科技——的全年合作案。我的算法是那套系统的底层骨架。我写的每一行代码,包括我最后提交的“final_v37_真最终版”里,藏着一个逻辑:当系统检测到主账号被移除权限的第三个小时,它将自动执行一个我命名为“回声”的操作。

不是删除。不是破坏。是“完全镜像”——把所有数据打包,同时发送给华盛科技的CTO邮箱、我的私有云,以及,监管部门的举报信箱。

那个操作会在今晚22:00准时触发。还有十三分钟。

手机又震了。这次不是电话,是一串短信,发件人是王建明的新号码:“周彦,我已经报警了。”

我打了四个字发过去:“报警罪名?”

他回得很快:“破坏计算机信息系统罪。十年。”

我笑了。我把那张“绩效D”评定表的照片——上面还有咖啡渍——从手机里翻出来,连同那笔350块的银行到账截图、三个月前我提交高级权限申请被驳回的系统截图,一起打包,点了发送。收件人:王建明。

然后我把手机放在枕头边,屏幕朝上。

22:00。

“回声”触发。

我闭上眼。那只水渍企鹅在天花板上歪着头看我。手机屏幕开始连续震动,来电数字从87跳到104,再跳到137,然后是209。电池温度开始发烫,我把它拿到床头柜上,屏幕的光在黑暗里闪得像一盏坏掉的信号灯。

209。217。233。278。303。

我迷迷糊糊睡过去之前扫了最后一眼——328。

然后是343。

天亮的时候我醒了,手机黑屏,彻底没电。我插上充电线,开机。未接来电350个——一个不多,一个不少。

我刷牙洗脸,煮了个鸡蛋,撕了片面包。然后打开邮箱。

华盛科技CTO的回信躺在收件箱里,就一句:“周工,我们聊过。下周一来面试。”

监管部门的自动回复说已受理。

还有一封,来自公司HR,是“解除劳动合同通知书”,落款时间是昨晚23:47。附件里除了正式解聘文件,还夹了一页手写扫描件——王建明的辞职信。

“因个人管理失职,引咎辞职。”

我把鸡蛋壳扔进垃圾桶,拿起手机,打开钉钉那个“临时沟通”窗口。王建明最后一条消息停留在凌晨02:13:“你到底想要什么?”

我打了四个字。

“350块。”

发完,我退出了钉钉。

窗外是上海十二月灰白色的早晨。楼下早餐摊的油锅滋滋响,有人的电动车警报器被碰响了,短促地叫了两声又停住。我拿起那杯刚冲好的速溶咖啡,喝了一口,苦的。想了想,又从抽屉里翻出一块放了快半年的方糖,扔进去。

糖化了。

我拎起背包,出门。门关上的时候,那只天花板上的水渍企鹅还歪着头看着空荡荡的十二平米。我走了三步,又折回来,把那张“final_v37_真最终版”的打印稿从桌上抽走,揣进包里。

电梯门打开的时候,老刘站在里面,手里拎着两杯热豆浆。

“给你一杯,”他说,“糖放多了,凑合喝。”

“你怎么知道我住这儿?”

“你他妈自己发给我的地址,忘了?上回半夜叫我去你家修路由器。”老刘把豆浆塞进我手里,按了一楼。

电梯往下走。

“打算去哪?”他看着楼层数字从9跳到8。

“面试。”我说。

“哪家?”

“华盛。”

老刘愣了一下,然后嘴角动了一下,像是想笑又没笑出来。“……操。”

“嗯。”

电梯到一楼。

门打开。外面是一片干干净净的、十二月早晨的阳光。

老刘的豆浆是烫的,烫到我左手虎口发红。我换到右手拎着,左手揣进兜里,跟着他走出单元门。门口停了辆银灰色凯美瑞,车身上落了一层薄霜,老刘用袖子擦了把后视镜,拉开车门。

“上来。”他说,“送你一段。”

我没客气,拉开副驾坐进去。车里暖气开得足,一股薄荷味空气清新剂混着烟味。老刘启动车子,没急着走,从储物格里摸出一包软中华,自己点上一根,窗户摇下来一条缝。

“昨晚到底怎么回事。”他吐出一口烟,不是问句,是陈述句,“你跟我说实话。”

我把豆浆放在杯架上,把背包搁在腿上,拉链拉开一道缝,露出那张打印稿一角。“我用‘回声’把华盛的数据全量镜像了一份,发给三方。”

老刘夹着烟的手顿了一下。“……你什么时候写的这段代码?”

“三个月前。”我说,“当时王建明在全会上驳回我方案那天,晚上我就写了。原本只是想留个底,防止他哪天把我优化掉的代码拿去改个名用。后来发现他连我的高级权限都不批,我就把触发器挂上了。”

“挂在哪?”

“我最后一次提交的版本。就是昨天下午五点多发他的那个‘真最终版’。”我把豆浆盖子掀开,喝了一口。确实太甜了,“只要我的主账号被移出系统,三小时后自动触发。”

老刘沉默了一会儿,把烟摁灭在车载烟灰缸里,烟灰缸里堆了七八个烟头。“你知不知道你这么做,在法律上叫什么?”

“叫取证。”我说。

老刘转过头看着我,眼袋很深,估计昨晚也没怎么睡。“华盛那边的CTO是不是早跟你通过气了?”

“两个月前。”我说,“他们在脉脉上找我聊了三次。我当时没接,因为觉得手上还有项目没做完。”

“那现在呢?”

“项目做完了。”我说,“他们拿到了完整系统,我拿到了面试通知。”

老刘发动车子,轮胎碾过路边结霜的落叶,发出细碎的咔嚓声。他开了两百米,在第一个红绿灯前停下来,手指敲着方向盘。

“周哥,”他说,“你知道昨天你走之后发生什么了吗?王建明把你那套方案调出来,让人连夜跑了一遍。你猜怎么着?”

我没说话。

“延迟降低了百分之四十三。”老刘加重了语气,“他抱着那打印出来的数据坐在自己办公室里,门关着,灯关着。我从玻璃上看见他坐在那,一动不动,坐了快俩钟头。”

路灯变了。老刘踩油门。

“今天早上华盛的律师函就发到公司法务部了,说如果48小时内公司不能证明数据完整性,他们保留终止合同的权力。董事会开了个紧急会,然后王建明就辞职了。”老刘顿了顿,“走的时候,他跟我碰了个面,让我转告你一句话。”

“什么?”

“他说,‘那350块,是我的错。’”

我把豆浆喝完,杯子捏扁,放在脚边。“没了?”

“没了。”老刘说,“他那个人你也知道,能说到这一步,等于把脸撕下来递给你了。”

我转头看窗外。车正经过我公司那栋写字楼,玻璃幕墙反射着早晨灰白的天光,门口平时挤满外卖小哥的台阶上空荡荡的,只有一个保安站在那里抽闷烟。

“周哥,”老刘打了个右转,车子靠边停下,“华盛那边你打算去?”

“去。”我说。

“那我送你到地铁口。”

我拎包下车。老刘叫住我:“周彦,你那份‘回声’的代码……能给我看看吗?”

我看了他一眼。他坐在驾驶座上,手还搭在方向盘上,脸上的表情我说不出来是什么——大概是黄灯闪烁时不知道该不该踩油门的那种犹豫。

“你不是技术岗。”我说。

“我知道。”他说,“我就想看看你藏了三行还是三百行。”

我想了想,从包里掏出手机,摁亮屏幕——昨晚350个未接来电已经清空,短信箱里还剩一条没删的,来自一个陌生号码:“周彦,你赢了一次。但别以为每次都能赢。”

我看了两秒,把那条短信删了,然后打开一个文件共享链接,把二维码递给老刘。

“自己扫,三小时后自动过期。”

老刘接过手机扫了一下,抬头看着我。“三小时?跟‘回声’一样?”

“习惯。”我说。

我关上车门。老刘的车在路边停了一下,然后汇进早高峰的车流里,尾灯在雾蒙蒙的空气里亮成一团红。

我站在地铁口,打开手机地图查华盛科技的地址。在搜索框输入“华盛科技”四个字,下面跳出来的第一条关联搜索是“华盛科技 数据安全事件声明”。我点进去,页面还没加载完,手机又震了。

我妈。

“喂。”

“小彦,”我妈的声音听起来比平时紧,“你昨晚没回我消息,我不放心。你没事吧?”

“没事。昨晚加班,手机没电了。”

“你那个公司……”她迟疑了一下,“我早上看新闻,说是你们公司出事了,说有人把客户资料偷了。妈不放心你。”

“跟我没关系。”我说,“我辞职了,下周去新公司面试。”

电话那头安静了大概三秒钟。“……那好。那好。”她连说了两遍,然后声音又紧了,“你还有钱用吗?妈给你转点。”

“有,够用。”

“别硬撑。”她说完这三个字,顿了一下,“你爸去年走之前让我跟你说,做人要留余地。你说你那个性格,什么事都非要走到头……”

“妈,”我打断她,“我心里有数。”

她没再说什么,只叹了口气。“那你自己好好的,周末回来吃饭。”

“嗯。”

挂了电话,我站在地铁闸机口,人流从我两侧涌过去,有人撞了一下我的肩膀,说句“抱歉”头也不回地走了。我看着手机屏幕,那条被删掉的陌生短信已经无迹可寻,但我记得那串号码的后四位——和公司服务器的root密码后四位一样。

我收起手机,刷卡进站。

地铁来了,车厢里人不多。我找了个角落站着,拉着吊环,看着隧道里明暗交替的光闪过车窗玻璃。我的脸映在玻璃上,和后面那个低头看手机的女生叠在一起。她屏幕上是微博热搜榜,第七条写着:“互联网公司数据泄露 警方介入调查。”

我移开视线。

到站。换乘。出站。华盛科技的写字楼在浦东,玻璃幕墙比旧公司更高,更亮。我站在一楼大厅门口,还没进去,手机又响了。这次是老刘。

“周哥,我扫了那二维码。”

“嗯。”

“你那份代码里……最后一段注释,写的是什么?”

我想了想,那段注释是三行。

第一行:// 如果有一天你看到这段文字,说明我已经不在权限列表里了。

第二行:// 别慌。这三小时够你备份所有东西。

第三行:// 然后,记得给自己买杯好咖啡。

“就是三行备注。”我说。

老刘在电话那头笑起来,声音哑哑的:“操,你这个人……你给人留后路的时候,连备注都写得跟遗书一样。”

我没接话。抬头看华盛科技的大堂——前台后面站着一个穿灰色西装的男人,三十多岁,正低头看手机。他抬起头,目光穿过玻璃门,和我对上。

他笑了一下,朝我点了点头。

我也点了一下头。

然后推门走了进去。

那个灰色西装的男人叫沈默。华盛科技CTO,三十五岁,比我大三岁,头发剪得很短,白头发却已经沿着鬓角密匝匝地长出来一茬。他领我进了二十七层的会客室,泡了一壶铁观音,第一泡倒掉,第二泡才递给我。

“周工,昨晚的事我听说了。”他把茶杯推过来,杯底在玻璃桌面上磕了一声轻响,“我给你发邮件之前,就已经收到了数据包。”

我端起茶杯喝了一口。“你早就知道‘回声’的存在?”

“我不知道具体代码,”沈默靠在椅背上,双手交叉搁在腹前,“但我猜到了。你两个月前在脉脉上跟我提过一句‘有一种备份方式不需要对方配合’,我琢磨了挺久。”

窗外是黄浦江,江面上有几条驳船慢悠悠地过去,汽笛声隔着玻璃传进来,闷闷的。

“面试分三部分,”沈默看了一下表,“技术面、场景面、我跟你的最后一轮。如果你准备好了,我们十点开始。”

“现在九点五十。”我说。

“所以你先喝茶。”他给自己也倒了一杯,端起来抿了一口,又放下,“还有一件事提前说清楚——你的劳动关系会挂在我们这边,但前三个月我们需要你以‘外部顾问’的身份介入。理由是,旧公司那边48小时的博弈期还没结束,如果你直接入职华盛,对方可以以‘商业机密转移’为由反诉你。”

我把茶杯放回桌面。“明白。”

“你不问我具体怎么操作?”

“你既然提前说了方案,说明你已经想到了怎么规避法律风险。”我说,“沈总,我管技术,你管策略,各司其职。”

沈默看了我两秒,然后笑了一下。“周工,你比我简历上看到的更清楚。”

十点。技术面来了三个人,一个架构师一个算法工程师一个安全负责人。他们带着我的那份“final_v37”打印稿,翻了四十分钟,问了二十三个问题。最后一个问题是安全负责人问的:“你这个‘回声’触发器,有没有给自己留控制台?如果触发之后想取消,能不能?”

“不能。”我说,“设定就是不可逆的。因为可逆就意味着可被逼迫。”

三个人互相看了一眼,在评分表上写了什么。我没看。

场景面安排在下午一点。沈默让人送来一份盒饭,红烧肉加炒青菜,配了一碗紫菜蛋花汤。我吃完把盒子收好,坐在会客室里等。阳光从落地窗斜着打进来,在地毯上拉出一道明晃晃的梯形。

一点十五分,一个年轻女生推门进来,看着不到二十五岁,扎着马尾,手里抱着个笔记本。她在我对面坐下,把笔记本翻开,屏幕朝向我——上面是一段伪代码。

“周工,我是场景面的面试官许棠。”她把笔记本推过来一点,“这是我们为某金融机构设计的实时风控系统底层逻辑。现在的问题是,客户要求数据驻留在本地,不能上云,但延迟必须控制在50毫秒以内。本地集群算力有限。”

我看了一眼那页代码,又翻到下一页看了架构图。“你们现在用的哈希分区方案,负载均衡是静态的?”

“对。这是瓶颈。”

“改成动态采样分区,”我拿过她的笔,在架构图上画了两条线,“把高频用户的特征向量单独拉出来,做二级索引。牺牲百分之五的本地存储,换取百分之四十的哈希命中率。延迟能压到三十毫秒以内。”

许棠盯着我画的线看了大概十秒钟。然后她合上笔记本。“周工,我给你十分钟,你把这段逻辑写成伪代码。我去叫沈总。”

我接过她的笔记本,在键盘上敲字。十分钟后沈默推门进来,许棠跟在他身后,脸上没什么表情。沈默低头看屏幕上的伪代码,看了两遍,退后一步。

“周彦,”他说,“我改一下面试流程。第三轮现在就开始。”

他坐下来,把手机放在桌上,屏幕亮着。上面是一条短信,发信人显示“王建明”。

“今早九点,王建明给我发了这条消息。”沈默把手机转过来给我看。

短信写着:“沈总,周彦的方案是我公司核心资产。贵司如果录用他,我们保留追究连带责任的权利。”

我把手机推回去。“所以他辞了职,但没打算放过我。”

“他没说不放过你。”沈默把手机收起来,“他说的是‘追究连带责任’——这话是说给华盛听的,不是说给你听的。他想逼我放弃你。”

我靠回椅背。“那你打算怎么办?”

沈默把身体往前倾了倾。“周彦,我在业内做了十三年,什么威胁我没见过。”他从西装内袋里掏出一张纸,展开,上面是华盛科技法务部出具的《外部顾问协议》,“这份协议里有一条:乙方向甲方提供的所有技术方案,其知识产权归属以源代码首次提交时间为准。你的‘回声’代码写于三个月前,那时候你还在职,但你没用公司设备、没走公司网络、没在上班时间完成。你写的是一份‘个人技术笔记’——而我们华盛科技一个月前就跟你签了初步合作备忘录。”

他把协议推到我面前。“王建明可以起诉你,但他要证明的那条‘商业机密转移’链条上,缺了一个最关键的环节——他拿不出你在职期间向华盛泄露过任何数据的证据。因为你的数据是在离职之后才发出来的。离职之后。”

我看着那份协议,然后拿起笔。“沈总,你连备忘录都提前准备好了。”

“我做了十五年技术,前五年被人抢过项目,中间五年被人偷过代码,后五年我只信一个道理。”沈默站起身,走到窗前背对着我,“你不给对手留余地,对手也不会给你留后路。可如果你给自己留好后路,对方所有的‘余地’都会自动变成你的护城河。”

我签了字。

沈默转回身,看了一眼桌上那份签名,点了点头。“从下周一开始,你正式以顾问身份参与华盛的底层架构优化。另外,许棠会做你的对接人。”

许棠站在门边,抱着笔记本,对我点了点头。“周工,下午三点有个项目例会,你要不要先看一眼材料?”

“发我邮箱。”

她正要转身出去,又停了一下。“还有一件事——”她语气平淡,但目光从我脸上扫过的时候多停了一秒,“您旧公司的业务系统从今早八点开始出现间歇性高延迟。技术部查了日志,没有外部攻击痕迹。”

沈默站在窗边没回头。“周彦,你觉得呢?”

我看着窗外的黄浦江。那条驳船已经驶远了,江面上一道白色的水痕慢慢散开,被后面的波纹吞掉。

“不是系统的问题。”我说,“那是‘回声’的二次效应。”

沈默终于转过身来。“你还有后手?”

“不是后手。”我把背包拉链拉上,“‘回声’在执行镜像的时候,会把原系统的数据读写压力复制一份。镜像完成之后,这套压力会以‘回放’的形式从原系统里剥离出来,这个过程持续七十二小时。也就是说,旧公司的系统在未来三天里,会经历一次‘被自己数据反噬’的延迟。”

我站起来。“这不是攻击。是‘回声’离开时带走的最后一口气。”

许棠抱着笔记本站在门口,眼珠微微动了一下,像是把这句话记在了什么地方。

沈默站在窗前没动,江面的光折在他脸上,那撮白发亮得像一根银线。他沉默了很久,然后说了一句话:

“周彦,你这个人,连告别都写得像一首诗。”

我拎起背包走到门口。许棠替我拉开门,门外的走廊又长又亮,地板新打了蜡,我的鞋踩上去有点涩。走出一段距离之后,许棠在我身后轻声说了一句:

“周工,有一件事你可能不知道——王建明今天上午去找了旧公司的董事长,谈了两个小时。出来的时候,他手里拿的不是离职证明。”

我停下来,回头看她。

“他拿的是那份你发的350块年终奖的截图。”许棠说,“董事长看到截图之后说了两句话——第一句是‘十二亿的项目,给核心工程师发三百五,他脑子进了什么?’第二句是——”

她顿了一下。

“第二句是,‘通知财务,把王建明今年所有未发放的绩效奖金,全数追回。’”

走廊尽头,电梯“叮”一声到了。

我走进电梯,门合上之前,我看到许棠还站在走廊里,阳光从她背后的窗户涌进来,把她整个人镀成一道浅金色的轮廓。

电梯往下走。

我掏出手机,打开银行APP。账户余额:4273.50元。其中350是昨天刚到账的年终奖。

我把手机锁屏,揣回兜里。

电梯到了一楼。

门打开。

外面站着一个穿黑色羽绒服的男人,手里捏着一份快递文件袋,袋子封口上印着“上海市公安局网络安全保卫总队”的红章。他看见我,没有让开。

“周彦?”

“……是。”

“有人实名举报你涉嫌非法获取计算机信息系统数据。请你跟我们去一趟。”

他身后停着一辆白色面包车,没有警灯。

我看着他手里的文件袋,又看了一眼大厅玻璃门外那片十二月阴沉的天空。手机在口袋里震了一下。

我握住手机,没拿出来。

“走吧。”我说。

白色面包车里暖气开得很低,后座皮面冰凉。我坐进去的时候,坐垫发出“吱”的一声,像在替我叹口气。穿黑羽绒服的男人坐我对面,副驾上还有一个年轻的短发女生,手里拿着一个平板,从上车起就没抬过头。

“我是网安支队二大队的,姓钟。”黑羽绒服的男人把警官证在我面前亮了一下,合上,“周彦,你在昨天20:00到22:00之间,是否通过远程VPN对原公司核心数据库执行过数据操作?”

“是。”

“操作内容?”

“数据镜像复制。”

“有没有删除或篡改行为?”

“没有。”

钟警官看了我两秒,从文件袋里抽出一张纸。“这是你原公司法务部今天上午提交的报案材料。里面说你利用职务便利,编写恶意代码,在公司系统内植入后门程序,导致公司核心业务中断。”

我扫了一眼那张纸,然后抬起头。“他们给你的材料里,有没有附上那段代码的原文?”

“正在做技术鉴定。”

“我建议你们看一下最后三行注释。”我说。

钟警官皱了一下眉,回头跟副驾的短发女生交换了一个眼神。女生的手指在平板上飞快地划了两下,然后停住。她抬起头,看着钟警官,表情有点微妙。

“警官,”我说,“那段代码的触发条件是‘账号被移出权限组满三小时’,而不是‘点击某个按钮’或‘输入某条指令’。一个恶意程序不会把自己设计成‘必须先让公司主动开除我’才能运行——因为如果公司不开除我,这段代码永远是一段废码。”

钟警官没说话。他的目光从我的脸上移到车窗外面,车正开过一座跨线桥,桥下的马路堵成一条暗红色的长河。

“你为什么要这么做?”他问。

“因为三个月前,我把一份延迟优化方案提交给技术总监,他当众驳回,说看不懂。”我说,“上个月,我申请数据库高级权限用于项目调试,被拒绝。昨天下午,我拿到350元年终奖——去年是十三万五。我写了三年代码,那套系统的底层架构全部出自我的手。我跟他们之间的对话渠道,最后只剩一条——把事实摆到所有人面前,让他们不得不看。”

车厢里安静了很久。副驾的短发女生把平板转过来,屏幕朝向我——上面是我那三段注释的截图:

// 如果有一天你看到这段文字,说明我已经不在权限列表里了。

// 别慌。这三小时够你备份所有东西。

// 然后,记得给自己买杯好咖啡。

“周彦,”钟警官的声音比刚才低了一点,“你知不知道,如果你原公司的董事长没有在今天上午跟法务部说‘撤案’两个字,你现在坐的不是我这辆车,是另一辆。”

“撤案?”

“一小时前。法务部主动撤回了报案,理由是‘经内部核查,系统异常为员工误操作导致’。”钟警官把那份报案材料收回去,折好放进文件袋里,“但实名举报这条线还没结——举报人用的不是公司法人名义,是个人名义。那个人叫王建明。”

我低头看着自己手背。指甲盖底下有一小片昨天敲键盘磨出来的薄茧。

“王建明昨天深夜辞职,今天上午去找了董事长谈了两个小时,出来之后拿着的是一张截图——你发的350块的年终奖截屏。”钟警官说,“董事长当场决定追回王建明所有未发放的绩效奖金。王建明离开董事长办公室之后四十分钟,实名举报材料就交到了我们支队。”

“他是用被追回的奖金换了一个举报。”我说。

“差不多。”钟警官把文件袋封好,“法务部撤案之后,他的实名举报就成了‘个人行为’,我们这边可以受理,也可以走调解程序。周彦,你愿不愿意接受调解?”

“对方提出的条件是什么?”

“王建明要求你公开声明,那段‘回声’代码是在公司框架内完成的,知识产权归属旧公司。”钟警官靠在座椅上,抱着胳膊,“条件是——他撤回举报,并且不追究你任何法律责任。”

我笑了一下。“那我换来什么?把代码签给他们,我拿回自由?”

“还有一条附加条件他没写在调解书里,但我们谈话的时候他提了——如果你签了那份声明,他个人补给你十三万,就当你今年完整的年终奖。”

我伸手摸了一下口袋里的手机。屏幕是黑的,但我能感觉到它在发热,像某种等待被说出的话。

“警官,”我说,“如果我不签呢?”

钟警官看着我,眼神里有一点很淡的东西——不是同情,也不是警告,大概是一种提前看到答案但仍然愿意等对方说出来的耐心。

“不签的话,”他说,“实名举报这条线会进入正式调查流程。取证周期大概两到四周。期间你需要在上海配合调查,不能出境。”

“那就调查。”

“你想清楚了?”

“我想得很清楚。”我说,“我给过他们三个月的时间来‘看懂’我的代码。他们没看。现在他们想要那段代码——可以,按市场价来买。十三万不是我的价格。王建明自己应该知道,华盛科技今年给同一套系统的报价是十二亿——十二亿的底层方案,拆给我一个工程师的‘核心技术贡献’部分,如果按行业惯例折算,这笔钱不是十三万后面加个零。”

钟警官沉默了很久。面包车已经停下来,停在路边一棵梧桐树底下,树上的叶子掉光了,枝桠在风里划着灰色的天空。

“周彦,”他终于说,“你今天从这儿走出去之后,这个案子会转到调解科,后续会有专人跟你对接。我给你一个建议——如果对方下次再来谈条件,你让他把报价写在纸上,拍照留存。”

他说完这句话,伸手拉开车门。十二月的风灌进来,带着马路上灰尘和尾气的味道。

“你可以走了。”

我下了车。面包车没关车门,钟警官坐在里面,又补了一句:“对了——你那段注释里写的‘买杯好咖啡’,买了吗?”

我站在路边,手插在口袋里,风把头发吹乱了一角。“还没。”

“去吧。”他拉上车门。

面包车汇入车流,后尾灯闪了两下,拐过路口消失。我站在原地,掏出手机。屏幕上有一条未读微信,来自沈默。

“网安那边我打过招呼了。如果你决定走调查程序,华盛给你提供全部法律援助。另外——许棠在你家楼下等你。”

我站在十二月灰白的天光底下,把手机揣回兜里。风从梧桐树杈间穿过去,发出干燥的呜呜声。我走了两条街,买了一杯热美式,站在便利店门口的台阶上喝了两口。

苦的。没加糖。

口袋里的手机又震了。老刘发来一条语音,我点开,他的声音从听筒里传出来,带着一点说不清是笑还是叹气的东西:“周哥,王建明刚才又来找我了。他说他愿意把那十三万加到三十万。”

我对着手机话筒说了一句话,然后松开。

我说:“告诉他,报价的下一轮起点,是十二亿的百分之一。”

语音发出去之后,老刘隔了整整四分钟才回。只有三个字:

“你疯了。”

我喝完最后一口咖啡,把纸杯扔进垃圾桶,转身朝家走。走了大概二百米,远远看到单元门口蹲着一个人。马尾,灰色羽绒服,膝盖上摊着一个笔记本。

许棠抬起头,看见我,站起来拍了拍裤子上的灰。

“周工,”她说,“沈总让我给你送样东西。”

她从羽绒服口袋里掏出一个牛皮信封,没封口,里面露出一份文件的第一页。我抽出来看了一眼——是华盛科技技术顾问聘任合同,附件里还有一页手写的补充条款,字迹是沈默的。

补充条款第三行写着:“乙方有权将‘回声’方案以个人技术成果形式申请著作权登记。甲方不做任何权利主张。”

我把那份合同折好放回信封里。

“许棠,”我说,“你蹲了多久?”

“没多久。”她把笔记本合上,抱在胸口,“够看完一份七页的合同文本。”

楼道里的声控灯亮了一下。许棠侧身让开门口,朝我微微点了一下头。

“周工,”她说,“沈总让我转告你最后一句话——‘给对手留余地的人,最后都会发现,那些余地原来都是给自己留的。’”

我走上台阶,声控灯在我身后灭了。脚步声在楼道里一下一下地响着,像某种倒计时。

到了门口我掏出钥匙,插进锁孔的时候,手机亮了一下。

银行APP推送。

中国银行您尾号8831的账户收到转账,金额50,000.00元,附言:“沈默——预付款。下周一来上班。”

我拧开门把手。

十二平米。天花板上的企鹅还在。阳光从窗帘缝隙里挤进来,在地板上拖出一道细细的金线。

我把那份合同放在桌上,烧了一壶水,给自己泡了杯茶。

窗外有一群鸽子扑棱棱飞过去,翅膀的声音灌满了整个灰白色的下午。

后来我才知道,王建明那封辞职信其实没交出去。董事长看完那张350块的截图之后,当场让人事重新拟了一份东西——不是离职申请,是“停职调查通知”。白纸黑字,盖了公章,调查事由写的是“重大管理过失与薪酬分配严重不合理”。

那份文件送到王建明手里的时候,他正坐在自己办公室里,灯关着,窗帘拉了一半。据老刘后来跟我转述,王建明看完那份通知之后,把电脑里所有项目文件删了个干净,然后拎着那个用了六年的黑色双肩包,从消防通道走了下去。保安说看见他走的时候,脸上的表情很平,嘴角甚至微微翘着,像刚讲完一个没人听懂的冷笑话。

他再也没出现在那栋楼里。

那个星期我每天去华盛报到,坐在许棠工位旁边一间临时隔出来的小办公室里。沈默批了一笔预算,让我把“回声”方案正式写成白皮书,前面加一段技术背景说明,后面附上完整的测试数据。许棠帮我整理前三个月的性能日志,一个数据一个数据地核对,花了四天半,最后在表格里圈出来三行异常——那些都是“回声”镜像过程中产生的一次性负载峰值。

“这三处峰值对应的原系统操作,全都被标记为‘王建明审批’。”许棠把表格推过来,笔尖点在第三行,“你看这个时间戳——八月份,你方案被驳回那天下午三点二十七分,系统内同时生成了三条读写请求,审批人都是他。但他当时在会上说的是‘我没看懂你写的东西,先放一放’。”

我看了那三行数据,然后把表格折起来放进抽屉里。“留着。”

“留作什么用?”

“如果有一天有人问我为什么这么做,我就把这页纸给他看。”我说。

许棠没再追问,转身走了。她走路声音很轻,地毯上几乎听不到脚步,只有门合上时那一声“咔哒”。

周五晚上下班的时候,沈默叫住我,手里拿着两杯咖啡,递给我一杯。“不加糖。”他说,“我记住了。”

我接过来。

“下周一正式入职,”他靠在门框上,喝了一口自己的那杯,“你的工牌我已经让人做了。工位在三楼东侧靠窗,对面是许棠。薪水比照行业头部上浮百分之十五,年终奖按项目分成走。还有什么要求吗?”

“有。”我说,“把加班餐的预算从十五块提到二十块。楼下那家煲仔饭十六,现在十五块只能买半份。”

沈默看了我两秒,笑了。“行,我批。”

他说完转身走了两步,又停住,没回头。“周彦,你这个人,连提要求都提得让人没法拒绝。”

“跟你学的。”我说。

周一到公司的时候,工位桌上摆着一盆绿萝,土还是湿的,像是刚浇过水。许棠从对面探出半个脑袋:“沈总让买的,说工程师桌上没点绿的不吉利。”她把一个文件盒推到我桌上,“另外,你那份‘回声’的著作权申请,今天下午去版权中心交材料。我替你约了辆车,一点二十楼下等。”

我翻了翻文件盒里的材料,最后一页的签名栏里,沈默已经签好了字,加盖了华盛科技的公章。落款日期写着“2026年12月8日”。

三点多办完材料回到公司,电梯门打开的时候,老刘站在走廊里,手里拎着一个牛皮纸袋,看见我就把纸袋塞过来。

“王建明托我转交的。”他说,“我不想知道里面是什么,你拿走。”

我打开纸袋。里面是一个信封,信封里是一张手写的字条,和一沓现金。现金用橡皮筋扎着,一共三捆,每捆一万。字条上的字我认得,是王建明的笔迹,潦草但有力:

“三十万。现金。你数一下。条件还是那个条件——声明‘回声’归公司所有。你可以不签,但这笔钱你拿着。我这辈子欠技术人的,这是第一笔。”

我把钱和字条一起放回纸袋,拎进办公室,锁进柜子。

老刘站在门口没走。“你不退回去?”

“不退。”我说,“他还欠我十二亿的百分之一。”

“那是多少?”

“一千二百万。”

老刘靠在门框上,两只手插在棉服口袋里,沉默了很久。“周哥,我有时候真不知道你到底是聪明还是轴。”

“有区别吗?”

“有。”老刘说,“聪明的人知道什么时候该停。轴的人一直走到底。你他妈是两个合一块儿了。”

他转身走了,走之前扔下一句:“那钱你拿着也好,回头请我吃饭。”

那笔钱在柜子里放了两个星期。两个星期里我做了三件事:第一件,完成了“回声”白皮书的初版,总共八十七页,许棠校对了四遍;第二件,帮华盛的风控系统把延迟从四十七毫秒压到了二十九毫秒,许棠在测试报告上写了八个字:“超出预期,建议推广”;第三件,我回了趟家。

我妈做了一桌子菜,红烧排骨、清炒时蔬、蛋花汤,还有一碟她腌的萝卜皮。吃饭的时候她没怎么说话,吃完收拾碗筷的时候,她才背对着我开口。

“你爸当年在厂里干了一辈子,最后评劳模的时候,被人顶了。他回来没跟我说,但是那半个月他每天晚上坐在阳台上抽烟,一根接一根。”她把碗放进水池,打开水龙头,水声哗哗地响,“后来他跟我说了一句——‘有些东西争不到就算了,但有些东西如果不争,这辈子翻篇儿的时候会后悔。’”

她关了水,转过身,手在围裙上擦了擦。

“你辞职的事,你爸如果还在,应该会说你做得对。”她说,“但是小彦,你以后做决定之前,先想想——这个东西值不值得你拿三年的安稳去换。”

我坐在桌边,看着那碟萝卜皮。“妈,我新公司给了我一盆绿萝。”

她愣了一下,然后笑了。“那就好好养着,别养死了。”

回上海的高铁上,我翻了翻手机。旧公司的内部群里还有人发消息,说系统延迟已经恢复正常,技术部重新换了底层架构——用的是我三个月前提交的那个方案。有人在群里问:“这方案是谁写的?优化效果挺猛。”没人回答。

我退出群聊,删了那个群对话框。

到上海南站的时候晚上九点多,地铁里空荡荡的。我刷卡出站,走在回家的路上,经过便利店的时候停下来,买了一桶泡面和两根火腿肠。

回到十二平米,烧水,泡面,把火腿肠压在盖子上面。

吃面的时候手机响了,是许棠发来的微信:“版权中心那边初审过了。三个工作日之内出证书。”

我回了一个字:“好。”

她把下一条消息发过来的时候隔了十分钟,是一张照片——拍的是华盛楼下那家煲仔饭的菜单,其中一份“腊味双拼煲仔饭”的价格被红笔圈了,旁边写着“已调至二十元”。备注栏里用铅笔加了三个小字:“周工批的。”

我看了那张照片很久,然后笑了。

面吃完,汤喝完,把桶折好扔进垃圾桶。我躺到床上,天花板那只水渍企鹅还在,在夜灯昏黄的光里歪着头。

我闭了一会儿眼睛,又睁开。

拿出手机,打开备忘录,在上面敲了一行字:

“三十万现金,柜子里。明天去存了,然后买个好点的行李箱。搬家。”

敲完,我把手机放到床头柜上,屏幕朝下。

灯灭了。

天花板上的企鹅在黑暗里慢慢地看不见了,只有那滩水渍的边缘还透着一丝隐约的、比周围颜色深一点的轮廓。

手机在床头柜上安静地待着,没有震动。

窗外有风,把楼下那棵梧桐树最后几片叶子吹落了。叶子刮过地面的时候,发出一阵细碎的、干燥的声音——像翻书页,又像有人把一件旧东西小心地叠起来,放进了抽屉最里面。

十二月的夜很长。

但天亮得也快。

半年后。

上海入夏了。六月的风裹着梧桐絮从窗外飘进来,落在桌面上那盆绿萝的叶子上,白花花一小团。我伸手拈掉,许棠从对面探过脑袋:“别老碰它,沈总说了,你这盆绿萝是整个技术部唯一一盆没养死的,让你珍惜。”

“它是好养活。”我说,“浇水就行,不用管别的。”

许棠哼了一声,把一沓打印好的测试报告放我桌上。“上周风控系统压力测试数据。延迟稳定在二十八毫秒以内,比合同承诺的还低两毫秒。客户那边回邮件了,说‘非常满意’——你知道这在华盛的客户评价体系里是什么级别吗?”

“什么级别?”

“沈总上一次收到这四个字,是三年前。”许棠说,“那之后他涨了百分之三十的薪水。”

我翻了翻报告,最后一页附了客户的签字确认,日期是昨天。我把报告合上,拉开抽屉放进去。抽屉里除了文件,还放着那个牛皮纸信封——三十万现金早就存进了银行,但信封我一直留着,压在最底下,扁扁的,像一张被抽空了内容的壳。

沈默今天没来公司。他上周出差去了深圳,临走前在我桌上留了一张便签:“周彦,华盛的底层架构白皮书已经递到行业协会做评审了。如果通过,‘回声’方案会成为今年行业技术案例库的推荐模板。署名是你个人,公司只做技术支持。”

便签的背面他用铅笔写了一行小字:“当初我说‘给对手留的余地’,其实是对自己说的。你做到的我没做到。替我收好。”

那张便签我压在显示器底座底下,每天看的时候,那行铅笔字在光的折射下会泛一点银灰色的反光。

老刘上周找我吃了顿饭。他还在旧公司,不过升了一级,现在管着一个八人的小组。吃饭的时候他喝了两瓶啤酒,脸有点红,举着筷子敲碗沿:“周哥,你知道现在旧公司的技术部墙上挂着什么吗?”

“什么?”

“你那张绩效D评定表的复印件。有人从垃圾桶里翻出来的,裱了个框,挂在茶水间门口,旁边贴了张纸写着‘年度警示’。董事长那天经过看了一眼,站了半分钟,然后走了。”

我把杯子里的可乐喝完。“王建明呢?有消息吗?”

老刘放下筷子,把最后一口啤酒干了。“他去了深圳。一家做边缘计算的小公司,技术总监。我听说他走之前,把你那三十万的剩余部分——就是一千二百万减三十万剩下那部分——用公司名义打进了华盛的账户,附言是‘技术授权费’。沈默没收,原路退回去了。”

“退回去了?”

“退了。”老刘看着我,“沈默给他回了一封邮件,就一句话:‘周彦的价值,他自己定价。你不配替他打折。’”

我靠在椅背上,看着老刘。他头上有新长出来的白头发,比半年前多了一小撮。

“周哥,”老刘把空瓶子立在桌上,“你现在回头想想,值吗?”

窗外是六月的夜,蝉还没叫起来,天边最后一线暮色正从深蓝褪成灰黑。我拿起桌上一张餐巾纸,叠了四折,放在啤酒瓶旁边。

“值。”我说。

老刘没再问。他把瓶子推给服务员:“再来两瓶。”

搬家的事拖到上个月才办完。我从那间十二平米搬到了沈默帮忙找的公寓,一室一厅,朝南,离公司两站地铁。搬家那天许棠来帮忙,她拎着那个新买的行李箱,里面装了我所有的书和资料。她站在客厅里环顾了一圈,说了一句话:“周工,你终于有一扇能看见树的窗户了。”

那扇窗外面是一棵槐树,六月初开满了白花,风吹过来的时候,花瓣会飘进窗台。

我搬进去的第二天早上,泡了杯咖啡坐在窗台上,看着那棵槐树。树枝上停了一只灰喜鹊,歪着头看了我几秒,扑棱一下飞走了。

手机响了。我妈。

“小彦,房子住得惯吗?”

“挺好的,有树。”

“那周末我跟你姨去上海看你,她非要带自己腌的腊肉给你。”我妈顿了一下,“对了,你之前那个公司的事……后来怎么样了?”

我喝了一口咖啡,看着窗外那只灰喜鹊飞远,消失在另一棵树的树叶后面。

“后来,”我说,“那笔钱我没要。那个声明我没签。那份代码我申请了著作权,现在挂在行业案例库里,署名是我。他们公司的系统换了我写的底层方案,用得很好。那个总监去了别的公司。带我的新老板每周按时下班,还给工程师申请到了二十块的加班餐。”

电话那头安静了两秒钟。

“那你自己呢?”我妈问,“你自己怎么样?”

我看着窗台上那盆绿萝——它跟着我从十二平米搬到新公寓,一路没蔫,叶子油亮亮的,昨天刚浇过水。

“妈,我挺好的。”我说。

“那就行。”她说,“那就行。”

挂了电话,我把杯子放进水槽,穿上外套出门。

走到楼下的时候,花坛边上蹲着一只橘猫,肥墩墩的,正在用爪子扒拉一片落下来的槐花瓣。我蹲下来看了它三秒钟,它抬了一下眼皮,又继续扒拉那片花瓣。

我站起来,往地铁站走。

六月的早晨,风不冷不热,路上有人在遛狗,有人拎着早餐袋走得很快,有人站在公交站牌下面低头看手机。阳光穿过槐树叶子的缝隙,在地上投出细碎的光斑,风一吹就晃一下,再一吹又晃到另一处。

我走到地铁口的时候,手机震了一下。沈默发来的消息:“行业评审结果出来了。‘回声’方案入选年度推荐案例库。下周三有个颁奖会,主办方想让你上台讲五分钟。”

下面跟了一张图片,是评审意见书最后一页的截图。上面最后一行写着:“推荐理由:该方案不仅解决了技术问题,同时提供了一套完整的‘技术成果保护与价值确认’的实践路径,对行业具有参考意义。”

我站在地铁闸机口,看着那行字,然后回了一条:“讲五分钟够吗?”

沈默秒回:“超时一分钟扣一百。”

我笑了一声,扫码进站。

地铁来了。我走进去,车门在身后关合,发出一声轻缓的“嘀——”。车厢里人不算多,我靠着门边站着,窗外的隧道壁一盏一盏地闪过。

玻璃窗上映着我的脸。比半年前精神了一些,下巴上没留着熬夜的胡茬,眼皮底下那片青色也淡了很多。我看着那扇玻璃窗里自己的轮廓,身后有个女生正低头读一本纸质书,书脊上写着《软件架构设计》。

车到站了。

门打开,外面的风涌进来,带着六月早晨特有的那种暖和又清爽的、让人想深吸一口气的温度。

我走出车厢,汇进人流。

电梯上行的过程中,我摸出手机,给许棠发了条消息:“那盆绿萝,今天浇水了吗?”

她回得很快:“浇了。周工,你已经连续问了二十八天了。它不会死的。”

“我知道。”我打完这三个字,又加了一句,“我就是想确认一下。”

我收起手机,电梯到了三楼,门打开。

走廊尽头,阳光从落地窗一整面地倾泻进来,把地板照得像铺了一层浅金色的水。

我朝工位走过去。

0
全部评论 (0)
暂无评论