手机在茶几上嗡嗡震动。
屏幕亮着,同一个号码。第十七次。我关掉声音,翻过手机。
窗外的雨敲着防盗网。
三年前陈国富把这张名片推给我时,手很稳。他说华荣需要我这样的脑子。现在他的号码在我黑名单外疯狂跳动。
凌晨两点,门被拍响。
陈璟雯站在楼道声控灯下,妆糊了,头发黏在脸颊。她没打伞,外套湿透,肩膀在抖。
“何维昱……”她嗓子哑得像砂纸磨过,“我爸进医院了。”
我没开门。
她手指抠着门框,指甲缝里都是灰。“公司要垮了。求你了,回去……回去救命。”
雨顺着楼梯往下淌。
![]()
01
庆功宴设在三十七层的旋转餐厅。
玻璃墙外,城市灯火像洒了一地的碎金子。香槟塔反射着水晶灯的光,晃得人眼晕。陈国富端着酒杯站到话筒前,全场静下来。
“磐石系统一期,提前四十三天上线。”
他声音不高,每个字都砸在地上。
“客户验收评分,九十六点七。行业里没有过。”他顿了顿,目光扫过来,“这功劳,技术部何维昱扛了一大半。”
掌声响起来。
我举杯示意,酒液在杯壁晃了晃。一百二十万的年薪,三年前签合同时觉得是个天文数字。现在觉得,也就是把命掰碎了,一年一年往里填。
刘荣华在旁边碰了碰我的杯子。
“少喝点。”他低声说,“明天还有二期启动会。”
我点头。老刘今年六十,华荣的创始元老之一。我进公司是他亲自招的,他说我眼睛里有种“死磕的劲儿”,像他年轻时候。
陈国富讲完话,人群又活络起来。
这时候她来了。
陈璟雯穿一身象牙白套装,高跟鞋踩在地毯上没声音。
她刚从国外读完商科回来,二十六岁,脸上还留着点儿学生气的紧绷。
陈国富搂着她的肩膀,带到人群中央。
“我女儿,璟雯。以后在公司,大家多关照。”
掌声更热烈了,夹杂着几句奉承。她微笑着点头,目光扫过每个人的脸。轮到我这桌时,她端了杯果汁过来。
“何总监。”她杯子举得很标准,“爸爸常提起你。”
“陈副总。”我起身。
她手指在杯壁上轻轻敲了两下。“听说磐石二期要整合物流模块?”
“已经在规划了。”
“挺好的。”她笑,“我在国外做过一个供应链优化的课题,有机会交流。”
杯子碰在一起,声音清脆。她喝了一小口果汁,转身去了下一桌。
老刘凑过来,声音压得极低。
“小心点。”
我没说话。
“空降的副总,还是董事长的独生女。”他抿了口酒,“她想立威,总要找个靶子。”
我看向陈璟雯的背影。她正和销售总监说笑,侧脸线条干净利落。不像个草包,但也绝不像能理解代码和系统架构的人。
宴会散场时快十一点。
我去地下车库取车,听见角落里有人说话。是陈璟雯的声音,带着不耐烦。
“……我知道他重要。但技术部现在铁板一块,针插不进。”
电话那头说了什么。
她嗤笑一声。“老臣?爸,现在不是讲情分的时候。华荣要转型,就得有壮士断腕的魄力。”
我站在原地,车钥匙硌着手心。
她挂了电话,高跟鞋的声音朝这边来。我低头解锁车门,装作刚到的样子。她看见我,愣了一下,随即恢复笑容。
“何总监还没走?”
“这就走。”我拉开车门。
“路上小心。”她说。
车子驶出车库,后视镜里她的身影越来越小。路灯一盏盏掠过,我忽然想起三年前签合同时,陈国富说的那句话。
“在华荣,功劳是你的,责任也是你的。”
当时觉得是信任。
现在品出别的味儿来。
02
调令下来那天是周一。
人事总监亲自来的技术部,表情有点尴尬。他把文件放在我桌上,手指在纸面上敲了敲。
“何总监,公司新成立物流数据部,陈副总点名让你过去牵头。”
我翻开文件。
部门地点:城西物流园区三号仓库二楼。薪资待遇:月薪一万,绩效另计。职务:数据调度专员。
办公室里静得能听见空调送风的声音。
几个项目经理抬起头,互相看了一眼,又迅速低下。没人说话。电脑风扇嗡嗡响着,屏幕上还开着磐石二期的架构图。
“这是降职。”我说。
人事总监搓了搓手。“陈副总说,这是为了让你深入一线,更好地推进物流模块整合。薪资……薪资是暂时的,等新部门走上正轨……”
“新部门几个人?”
“……目前就你一个。”
我合上文件。“陈国富董事长知道吗?”
“陈副总全权负责组织架构调整。”他避开我的眼睛,“调令今天生效。你手上的工作,这周内交接给王副总监。”
王副总监是上个月刚提的,陈璟雯面试的人。
我站起来,椅子腿在地板上划出刺耳的声音。办公室里所有人都停下了手里的活儿,几十道目光粘在背上。
“我去找陈副总谈谈。”
“她上午去园区视察了。”人事总监说,“让你直接去新部门报到。”
打包个人物品只用了十五分钟。
一个纸箱:几本技术书籍,一个保温杯,一盆多肉植物,还有摆在桌角的全家福。
照片里父亲站在老房子门前,笑得一脸褶子。
他去年肺癌走的,没等到我接他去新房子。
抱起箱子的那刻,老刘冲了进来。
他喘着气,额头有汗。“怎么回事?”
我把调令递给他。他扫了一眼,脸色沉下去。“胡闹!我去找陈国富!”
“老刘。”我拦住他,“算了。”
“什么算了?磐石二期刚启动,核心架构师被调去看仓库?这他妈是自毁长城!”
他声音很大,走廊里有人探头。
我压低声说:“她是董事长的女儿。”
“女儿怎么了?华荣是她爸一手打下来的,不是过家家的玩具!”老刘眼睛红了,“你等着,我今天非要讨个说法。”
他转身要走,我拉住他胳膊。
“别去。”
“何维昱!”
“别去。”我重复一遍,声音很平,“去了,你也得跟着倒霉。”
他盯着我看了很久,肩膀慢慢塌下去。这个六十岁的老人,背已经有些驼了。他张了张嘴,最后只是拍了拍我肩膀。
“先去看看情况。有事……有事给我打电话。”
我抱着纸箱走出技术部。
走廊很长,阳光从尽头的窗户斜射进来,灰尘在光柱里跳舞。经过会议室时,听见里面在开例会。陈璟雯的声音透过门缝传出来,清亮有力。
“……优化不是请客吃饭。该动的就要动,该换的就要换。”
有人鼓掌。
我按下电梯按钮。不锈钢门映出我的影子,西装衬衫,头发梳得整齐。三十二岁,年薪一百二十万的技术总监。现在要去仓库当调度员,月薪一万。
电梯门开,里面空无一人。
我把纸箱放在地上,靠着轿厢壁。数字一层层往下跳:三十七、三十六、三十五……像某种倒计时。
手机震了一下。
银行短信:您尾号8872的账户于本日入账工资,人民币100,000.00元。
下个月,就是一万了。
![]()
03
城西物流园区离市区二十公里。
三号仓库是个老库房,层高超过十米,钢架结构,墙皮有些地方已经剥落。叉车在货架间穿梭,柴油味混着灰尘,空气里飘着细小的纤维。
我的“办公室”在二楼角落。
说是办公室,其实是用石膏板隔出来的五平米空间。
一张旧办公桌,一把椅子,电脑是十年前的老款,开机用了三分钟。
窗外正对着装卸区,货车倒车的提示音此起彼伏。
仓库主管姓赵,五十来岁,皮肤黝黑。
他带我转了一圈,语气公事公办。“数据调度主要就是核对进出库单,录入系统。每天下午四点前,把当天报表发到总部邮箱。”
“系统用哪个?”
“华荣自研的仓储管理模块,和你们技术部那个什么……磐石,有接口。”
我心里动了一下。“对接稳定吗?”
赵主管看了我一眼。“能用就行。咱们这儿讲究实在,不整那些虚头巴脑的。”
他给我一沓纸质单据说先熟悉熟悉,转身去盯装卸了。我坐下来,打开电脑。系统界面很粗糙,功能也简陋,但确实看到了磐石系统的调用日志。
翻了几页,发现一个问题。
物流模块和磐石核心的数据同步,设置的容错时间窗是二十四小时。意思是,如果一次同步失败,系统会等二十四小时再试。
这在技术设计上没问题。
但仓库的实际操作是实时的。
一批货上午出库,系统里就应该立即扣减库存。
如果同步延迟二十四小时,意味着这二十四小时内,系统显示的库存数据是错的。
我调出最近一个月的日志。
找到了十七次同步失败记录。原因五花八门:网络波动、服务器重启、接口超时……每次失败后,系统都等到二十四小时后自动重试成功了。
所以从技术上看,没毛病。
但假如有一批贵重货品,在同步失败的二十四小时窗口期内,被人重复出库呢?
我翻出纸质单据,开始比对。
下午三点,赵主管又来了。他看我桌上一堆摊开的单子,皱了皱眉。“让你录入系统,不是搞研究。”
“我发现个问题。”我把情况简单说了。
他听完,点了根烟。
“何工,你以前坐办公室的,不懂仓库的规矩。系统是系统,实际是实际。咱们这儿,货出库要经三个人签字:仓管、调度、司机。系统错了,人不会错。”
“如果人配合系统一起错呢?”
他吐出一口烟,笑了。“那就是人的问题,不是系统的问题。你操心太多了。”
脚步声远去。
我坐回椅子上,看着窗外。一辆大货车正在倒车,后视镜上系着的红布条在风里飘。司机跳下车,和仓管说了几句话,两人一起笑起来。
手机响了。
是原来技术部的项目经理小李,声音压得很低。“何总,你走之后,陈副总把磐石二期的主导权交给新来的王副总监了。”
“嗯。”
“还有……她今天约谈了老刘,说公司要优化老员工结构,问他有没有退休打算。”
我握紧了手机。“老刘怎么说?”
“拍了桌子。现在全公司都传遍了。”小李顿了顿,“何总,你那边……还好吗?”
“挺好。”我说,“仓库挺凉快。”
挂了电话,我重新看向屏幕。日志还在滚动,又捕获到一次同步失败。时间戳是今天上午十点零三分,正好是一批进口芯片出库的时间。
这批芯片,单价超过三万。
我调出那批货的单据,找到了签字的仓管、调度和司机名字。然后打开公司内网——我还有权限——查了这三人的背景。
仓管是赵主管的外甥。
调度是上个月刚调来的,简历很漂亮,之前在外企做物流规划。
司机是外包公司的。
我关掉网页,靠在椅背上。石膏板隔音很差,能听见楼下叉车的轰鸣,还有工人吆喝的声音。空气里有灰尘的味道,混着淡淡的机油味。
窗外天色暗下来。
远处的城市轮廓亮起灯火,像一条镶了钻石的腰带。那里有旋转餐厅,有年薪一百二十万的生活,有我花了三年心血建起来的系统。
而现在,我坐在仓库里。
看着一个可能价值几百万、甚至几千万的漏洞,在日志里安静地闪烁。
04
我把漏洞写成书面报告。
措辞很克制,只陈述技术事实:数据同步机制存在二十四小时盲区,建议缩短容错窗口,或增加实时校验。
附上一个月内的失败日志和对应的货品清单。
报告发给三个人:陈璟雯、技术部王副总监、仓储部总经理。
邮件显示已读。
三天过去,没有回复。
第四天下午,赵主管把我叫到仓库外面的空地。他蹲在花坛边抽烟,见我来了,递过来一根。我摆摆手。
“报告我看到了。”他弹了弹烟灰,“总部转下来的,让我处理。”
“怎么处理?”
“何工。”他抬起头,眼睛被烟雾熏得眯起来,“你在仓库干了半个月了,觉得咱们这儿怎么样?”
“挺忙的。”
“忙就对了。仓库嘛,讲的是效率。货进来,出去,不出错,不耽误,就是功劳。”他站起来,踩灭烟头,“你那报告,总部技术部看过了,说没事。系统设计有冗余,二十四小时是安全考虑。”
“冗余不是漏洞的理由。”
“那什么是理由?”他盯着我,“何工,我知道你以前是大人物。但现在在这儿,就得守这儿的规矩。规矩就是,不该你管的事,别管。”
“如果出事呢?”
“出不了事。”他转身要走,又停下来,“对了,你这个月绩效,扣五百。理由是不安心本职工作,影响团队氛围。”
他走了。
我站在花坛边,看着仓库大门。货车进进出出,卷起一阵阵尘土。工人们穿着反光背心,在烈日下装卸货物,汗水把衣服浸出深色的印子。
老刘发来微信:晚上见个面?
我们约在园区外的小餐馆。老刘看起来老了五岁,眼袋很重。他要了瓶二锅头,给自己倒满,一口闷了半杯。
“陈国富找我谈了。”
我等着他说下去。
“劝我退休,给年轻人让位置。说会给我留个体面的头衔,年薪照发百分之八十,就当是顾问费。”他苦笑,“体面?我在华荣干了二十八年,现在跟我讲体面。”
“你答应了?”
“没答应,也没拒绝。”他又倒了一杯,“我说考虑考虑。何维昱,我不是贪那点钱。我是……”他声音哽了一下,“我是舍不得。”
我懂。
他喝了好几杯,话渐渐多起来。
说当年跟陈国富一起跑业务,两个人挤在绿皮火车里啃馒头;说公司第一次接到百万订单,陈国富抱着他哭;说技术部从三个人发展到三百人,每一层楼他都记得。
“陈璟雯那丫头,太急了。”他摇头,“她觉得公司是她爸的,就是她的。她不懂,公司是几百号人的饭碗,是几千个家庭的指望。她当是玩具,想怎么拆就怎么拆。”
“陈国富放任她?”
“他不是放任。”老刘盯着酒杯,“他是想让她练手。练手就得交学费,咱们就是那学费。”
餐馆老板在柜台后面打盹,风扇吱呀吱呀转着。窗外有摩托车驶过,灯光一晃而过。
老刘忽然问:“你那个漏洞报告,真有问题?”
“真有。”
“多大?”
“可大可小。运气好,永远不出事。运气不好……”我顿了顿,“一次就能让公司赔掉半年的利润。”
他沉默了很久。
“留着证据。”最后他说,“保护好自己。陈璟雯现在换血换得疯,你原来的团队,核心骨干被调走了四个。王副总监带来的人,全是新招的,对系统一知半解。”
“磐石二期呢?”
“还在推进。但进度慢了百分之四十。”他叹了口气,“那帮新人,连一期的架构文档都看不懂。”
结账的时候,老刘抢着付了钱。
走出餐馆,夜风吹过来,带着路边烧烤摊的烟火味。老刘拍拍我肩膀,手很重。
“撑不住就走吧。你才三十二岁,哪儿不能吃饭?”
他坐上出租车,车窗摇下来。“何维昱,记着。这世上没有离不开的人,只有离不开的利益。”
车尾灯消失在路口。
我走回仓库。夜班工人在卸货,探照灯把场地照得惨白。我上了二楼,打开电脑。系统显示,今天又有两次同步失败。
一次是下午两点,一批医疗设备出库。
一次是晚上八点,一批服务器组件出库。
我调出单据,拍照。然后打开一个加密文件夹,把照片拖进去。文件夹里已经存了七十多份单据,对应着过去半个月里每一次同步失败。
我给文件夹加了备注。
日期。时间。货品名称。预估价值。风险等级。
做完这些,已经凌晨一点。
仓库安静下来,只有远处保安室还亮着灯。我关掉电脑,站在窗前。夜空里没有星星,只有城市的夜光映着低垂的云。
手机屏幕亮着,停留在银行APP的界面。
余额还有六十几万。房贷每个月八千,车贷三千五,母亲在老家请护工,一个月四千。如果我现在辞职,这些钱能撑两年。
但如果漏洞爆发呢?
如果公司因为我的沉默而蒙受巨大损失呢?
我关了手机。
黑暗里,远处高速公路上的车流像一条发光的河,无声地流淌。我想起父亲临终前说的话。他握着我的手,手很瘦,骨头硌人。
“维昱,做人要对得起良心。”
“但良心不能当饭吃。”我当时说。
他笑了,笑得咳嗽起来。“那就……找个平衡。别把自己活成自己都看不起的样子。”
窗玻璃映出我的脸。
三十二岁,眼角已经有细纹了。头发还浓密,但白了几根。西装挂在椅背上,衬衫领口蹭到了灰尘。
我抬手,擦掉那点灰。
![]()
05
辞职信是手写的。
就三句话:因个人原因,申请离职。感谢公司多年培养。工作已按规定交接。
人事部的小姑娘接过信封,表情复杂。“何工,你真要走啊?陈副总那边……”
“调令是她下的,辞职是我提的。”我说,“不冲突。”
“可是……”她压低声音,“这几天总部气氛很怪。老刘总昨天正式提交了退休申请,技术部好几个老员工也在找下家。陈副总天天开会,脾气特别大。”
“跟我没关系了。”
交接清单列了三页纸。
仓库数据调度的日常工作,我已经整理成操作手册。
电脑里的文件全部归档,账号密码写在便签纸上。
私人物品昨天就带回家了,就剩桌上那盆多肉。
赵主管站在门口,没进来。
我抱着花盆走到他面前。“赵主管,这半个月,多谢照顾。”
他嘴唇动了动,最后说:“路上小心。”
走出仓库大门时,阳光很刺眼。我眯起眼睛,回头看了一眼。三号仓库的招牌锈了一角,在风里轻轻晃动。货车还在进出,工人们还在忙碌。
一切如常。
除了我电脑硬盘深处,那个加密文件夹。
里面有八十七次同步失败记录,涉及货品总估值超过九千万。
还有我写的完整风险分析,测试边界,以及模拟攻击路径。
人事部没查这个。
他们只收走了公司配的笔记本电脑,那里面干干净净。我自己的移动硬盘,早就装进了背包。
是陈国富的号码。
我盯着屏幕看了三秒,挂断。
然后关机,取出SIM卡,掰成两半,扔进路边的垃圾桶。
新卡上周就办好了,只有三个人知道号码:母亲、老刘、一个大学同学。
叫了辆网约车。
司机很健谈,问我是不是在园区上班,怎么这个点下班。我说辞职了。他哦了一声,从后视镜里看了我一眼。
“这年头,工作不好找啊。”
“是不好找。”
车子上高速,朝着市区开。我靠在座椅上,看着窗外飞逝的田野。远处有高压电塔,电线在阳光下反着银光。更远处是山,青灰色的轮廓。
手机震动,新号码有短信。
老刘发的:走了?
我回:走了。
他很快回复:也好。保重。
我没再回。闭上眼睛,脑海里却浮现出系统日志滚动的画面。那些错误代码,时间戳,货品编号。像一串串密码,等着被解读。
如果陈璟雯看到那份报告……
如果王副总监认真检查过接口设计……
如果仓储部的人在意过那些异常……
车停了。司机说:“到了。”
我睁开眼,是租住的小区门口。老式六层楼,外墙斑驳,爬山虎遮了半面墙。我在这里租了三年,月租三千五,离公司近。
现在公司不用去了。
上楼,开门。屋里很干净,上周大扫除过。书架上摆满了技术书籍,客厅墙上挂着一张城市地图,上面用红笔圈了几个地方。
那是之前看好的办公室选址。
我想自己干,做技术咨询。启动资金够了,客户资源也有一些。老刘说过,只要我开口,他能介绍几个靠谱的客户。
但一直没下决心。
现在不用犹豫了。
我把多肉放在窗台上,浇水。然后打开笔记本电脑,连上移动硬盘。加密文件夹还在,数据完整。我新建了一个文档,开始写创业计划书。
写到一半,手机又响了。
这次是陌生号码。我接起来,对方说是猎头,听说我离职了,有没有兴趣聊聊。我说暂时不考虑。对方很执着,说薪资可以谈,职位也很高。
“哪家公司?”我问。
他说了一个名字,是华荣的竞争对手。
我沉默了几秒。“你怎么知道我离职的?”
“行业里消息传得快。”对方笑,“何总监,您的技术在圈子里有口碑。我们老板说了,条件随您开。”
“我考虑考虑。”
挂了电话,我走到窗边。楼下有老人在遛狗,小孩在骑车。生活还在继续,和公司里的风云变幻无关。
但那些数据呢?
那些在系统黑暗角落里闪烁的漏洞呢?
我回到电脑前,打开文件夹。光标悬在“删除”键上,停留了很久。最终,我移动了文件夹,把它藏进层层嵌套的子目录里。
加了新的密码。
然后关掉电脑。
夜幕降临,我没开灯。坐在黑暗里,听着外面的声音:邻居家的炒菜声,电视声,孩子的哭声。空气里有油烟味,有洗衣粉的清香。
手机屏幕在茶几上亮了一下。
是母亲发来的微信:维昱,这周末回家吗?妈给你包饺子。
我回:回。
她发来一个笑脸。
窗外,城市的灯光一盏盏亮起。
远处CBD的高楼像巨大的发光积木,其中一栋的顶层,是华荣的办公楼。
那里现在应该还在加班,磐石二期,物流模块,各种会议。
陈璟雯可能在发脾气。
王副总监可能在焦头烂额。
陈国富可能在应酬。
而我在这个三十平米的老房子里,守着价值九千万的秘密。
手机又震了。
这次是新闻推送:华荣科技股价今日收涨2.3%,磐石系统获行业创新大奖。
我划掉推送,关掉手机。
夜很深了。
06
辞职第三天,早上七点。
我被手机震动吵醒。不是电话,是新闻APP的紧急推送。标题加粗:华荣科技重要客户数据大规模丢失,疑遭供应链攻击。
我坐起来,点开。
报道不长,但信息量很大。
华荣的长期客户“迅捷医疗”昨天凌晨发现,全国两百多家医院的医疗设备库存数据出现严重偏差。
系统显示有货,实际仓库已空。
导致三台紧急手术所需设备调拨失败,手术推迟。
迅捷医疗已启动调查。
初步怀疑是华荣“磐石”系统的物流模块存在漏洞,被恶意利用。损失预估超过八千万,不排除法律诉讼。
评论区炸了。
“华荣不是刚拿奖吗?”
“技术总监是不是前几天离职那个?”
“内部消息:离职是因为被董事长女儿排挤。”
我放下手机,走到窗边。天刚蒙蒙亮,云层很厚,要下雨的样子。楼下早餐摊已经出摊了,炸油条的香味飘上来。
手机开始响。
第一个电话,陌生号码。我没接。
第二个,第三个……同一个号码。我看了眼,是华荣总机。
第五个,陈国富的私人手机。
我盯着屏幕,震动从掌心传到手臂。响了四十秒,挂断。十秒后,又响起来。这次是他的另一个号码,我只在紧急联络人名单里见过。
还是没接。
震动停止。未接来电显示:6。
我进卫生间洗脸。冷水扑在脸上,清醒了一些。镜子里的人眼睛里有血丝,下巴冒出青色的胡茬。我刮胡子,手法很稳,没刮破。
回到客厅,手机在茶几上跳舞。
7、8、9……数字在跳。同一个号码,间隔不超过二十秒。像某种机械的、固执的叩门。
我打开电视,本地新闻台正在播报。画面里是华荣办公楼门口,记者围成一堆,保安在维持秩序。陈国富没露面,发言人正在念稿子。
“……公司高度重视,已成立专项工作组……”
电话又响了。
第15个。
我关掉电视,打开笔记本电脑。
登录一个不常用的邮箱,里面有几封未读邮件。
其中一封是昨晚发的,发件人是迅捷医疗的技术负责人,我以前打过交道。
邮件很短:何工,看到新闻了?方便电话聊吗?
我没回。
手机震动变成了连续的、不间断的嗡嗡声。电量提示跳出来:剩余20%。我插上充电器,看着屏幕上的未接来电数字从20跳到30,跳到40。
窗外开始下雨。
雨点打在玻璃上,留下一条条水痕。天色更暗了,屋里需要开灯。我没开,就坐在昏暗里,看着手机屏幕一次次亮起。
第50个。
充电到50%了。
我站起来,煮了壶开水。泡了杯茶,茶叶在杯子里慢慢舒展。茶香混着雨天的潮湿气味,有种不真实的感觉。
手机第65次响起时,我喝了口茶。
烫。
舌尖发麻。
第70个。雨下大了,能听见排水管哗哗的声音。楼下有人喊收衣服,声音隔着雨幕传上来,模糊不清。
第80个。
我打开手机通讯录,找到老刘的新号码——他退休后换了号。拨过去,响了两声就接了。
“何维昱?”他声音很急,“你在哪儿?”
“在家。”
“陈国富在找你,疯了似的。公司出大事了,你知道了吧?”