裁员我排首位,签字走人,被保安拦下:总裁有请,我直接打车离去

楔子

十二月的风割过写字楼缝隙,周远山签完字推回协议,保安横臂拦住:“周先生,总裁有请。”他认得这是陆明远的人——裁员名单第一位就是他。摘下工牌搁在前台,电梯门合拢时身后脚步声急追而来。楼下出租车刚送完客,他拉门坐进去,报了父亲家地址。后视镜里云城智科越缩越小,六楼窗前,陆明远指节攥得发白。

第一章 签字那一刻

会议室里暖气开得很足,周远山却觉得后颈发凉。

长条桌两侧坐着技术部、产品部、测试部的负责人,总共十一个人。林晓站在投影幕布前,手里捏着一份打印文件,嘴唇抿成一条线。她已经念了八分钟,声音没有任何起伏,像在读一份与自己无关的采购清单。

“……周远山。”

名字排在第一个。会议室里安静得能听见投影仪散热风扇的嗡嗡声。周远山看见旁边产品部老赵的肩膀明显塌了一下,对面测试组的小陈低头翻手机,拇指划得飞快。

“公司战略调整,技术部人员冗余。”林晓合上文件,目光越过周远山的头顶,落在墙上的季度业绩图表上,“补偿方案按N加3执行,股权按上年末估值回购,请相关人员会后到人事部办理手续。”

周远山把签字笔从西装内袋里抽出来,笔帽咔嗒一声弹开。他翻到协议最后一页,没有看具体条款——N加3也好,N加1也罢,数字改变不了结果。笔尖落在纸面上,他签下自己的名字,字迹一如往常工整,每一笔都压着格线。

“周工。”坐在斜对面的沈若溪突然开口。她今天穿了一件深灰色西装,领口别着一枚小小的银色胸针,那是三年前周远山带着团队攻克星图算法第一版时,产品部发的纪念品。“你不再确认一下条款?”

“确认了。”周远山把协议推回给林晓,站起身,椅子腿在地面划出极短促的一声,“签字吧。”

林晓接过协议放在文件夹上,低头翻到签字页,指尖在周远山的名字旁边停了一瞬。她拿起笔,在人事经办人一栏写下自己的名字,笔画比平时重,几乎要把纸面划破。

“手续我会让助理跟进。”周远山把签字笔收回口袋,没有看林晓,也没有看任何人。他走出会议室,脚步不急不缓,大理石地面映出他略显单薄的影子。走廊尽头是技术部的大开间,格子间里有人探头,看见是他又迅速缩回去。

周远山走进自己的独立办公室,把桌面上仅有的几样私人物品收进纸箱:一个搪瓷杯,杯身上印着父亲学校的校徽;一本翻得卷了边的算法笔记;一张和产品团队在项目庆功宴上的合影,照片里沈若溪举着果汁笑弯了眼睛,他自己则被贺明搂着肩膀,表情有点无奈。

抽屉最里面还有一个绒布盒子。他打开看了一眼,里面是一对铂金袖扣,去年生日林晓送的,戴过两次。他合上盖子,放回抽屉,没拿。

纸箱不重,几本书几件杂物,却是他在这家公司六年的全部。他把工牌从脖子上摘下来,蓝色挂绳在指间绕了一圈,然后他走出办公室,穿过技术部的大开间。没有人抬头,键盘敲击声连成一片,比平时还要密集。

电梯口立着一个穿黑色制服的保安,三十来岁,国字脸。周远山按下行键,电梯门开的时候保安突然横过手臂:“周先生,请留步。”

“什么事?”

“总裁有请。”

周远山侧过身看他:“哪个总裁?”

“陆副总裁。”保安压低声音,“他在六楼办公室等您,说关于离职协议还有几个补充条款需要您确认。”

周远山看了一眼电梯显示屏上跳动的数字。六楼,产品总监办公室隔壁,那个能俯瞰半个云城CBD的角落。三个月前陆明远还在那里拍着他的肩膀说“星图是公司的未来”,两周前却在例会上当众宣布“技术路线需要重新评估”。

“协议我已经签完了。”周远山把纸箱换了个手,“如果还有补充条款,让法务发邮件。”

“周先生,陆总说——”

“你叫什么名字?”

保安愣了一下:“我姓王。”

“王师傅。”周远山按了一下电梯的下行键,“你只是在执行工作,我不为难你。但请你转告陆明远,签字那一刻起,我和云城智科的雇佣关系已经结束。竞业协议、保密条款、股权回购,所有法律文件我签过的都认,没签过的——”

电梯门再次打开,里头空无一人。

“——让他自己来。”

周远山走进电梯,按下一楼的按钮。门合拢前他看见王师傅举起对讲机说了句什么,语速很快,眼睛一直盯着他。

一楼大堂,前台小张正在给快递分类,抬头看见他抱着纸箱走出来,张了张嘴又闭上,最后只轻轻点了下头。周远山把工牌放在汉白玉台面上,蓝色挂绳自然垂落,工牌照上的人像微微侧着脸,那是六年前入职时拍的,头发比现在多,眼神比现在亮。

旋转门外面,十二月的风灌进衬衫领口。周远山站在台阶上,深深吸了一口气,冷空气割着喉咙,却比会议室里的暖气通透得多。一辆薄荷青的出租车刚在路边下完客,司机正低头数钱,他快步走过去拉开后门,纸箱放在旁边座位上。

“师傅,城东老教育局宿舍。”

“好嘞。”司机挂挡起步,从后视镜里打量了他一眼,“这个点下班挺早啊。”

周远山没接话,目光落在车窗外。出租车驶入主路,云城智科那栋银灰色写字楼在后视镜里越缩越小。他看见六楼临街的窗户后面似乎站了一个人影,深色西装,身形挺拔,站在那里一动不动。

是陆明远。

车流裹着出租车汇入晚高峰的洪流,红色的尾灯连成一片。周远山收回目光,把纸箱往身边拢了拢。手机屏幕亮了一下,推送的是财经新闻——云城智科宣布完成C轮融资,估值突破四十亿。

他锁了屏。

六楼办公室里,陆明远从窗边转过身,手机贴在耳边。“走了,没上来。”他听完电话那头的汇报,拇指掐灭屏幕,“竞业协议的事,让法务部明天出函。他新公司的方向,只要和工业算法沾边,就给我按最严的条款办。”

同一时刻,三楼会议室里只剩下林晓一个人。投影仪已经关了,顶灯也关了大半,只有靠门的一排还亮着。她把周远山签过的那页协议抽出来,对着光,看那个工整得近乎刻板的签名。指尖在纸面上轻轻划过,微微发颤。

窗外暮色一寸一寸沉下来,远处高架上的车灯连成流动的光带。她拿起手机翻到通讯录,周远山的名字排在“最近联系”的第三位。上一条通话记录停留在两周前,时长四十七秒,内容是通知他裁员面谈的时间。

拇指悬在拨号键上方,最终还是没有按下。

她把协议翻过去扣在桌面上,深吸一口气,抱起文件夹走出了会议室。门在她身后轻轻合上,咔嗒一声锁舌入位。走廊尽头的电梯方向传来脚步声,越来越近——是陆明远的助理,手里拿着一份刚打印出来的文件。

“林经理,陆总说这份竞业补充协议需要您配合核实一下条款。”

林晓接过文件,目光扫过第一页的标题,脸色没有变化。“知道了,”她说,“放我桌上,明天一早处理。”

助理转身离开。林晓站在原地,手里那页纸被她攥出一道浅浅的折痕,又慢慢抚平。

第二章 出租车后座上的电话

周远山把纸箱放在大腿上,箱子侧面的塑料提手勒进指节。出租车拐上高架引桥,手机在裤兜里震起来。他掏出来看了一眼屏幕,来电显示是“贺明”。

“远山,你是不是也出来了?”

贺明的声音从听筒里涌出来,带着车载收音机的底噪和转向灯回位的咔嗒声。周远山把纸箱往车门方向推了推,嗯了一声。

电话那头沉默了两秒,然后贺明压低嗓音:“我就知道,名单第一个,你当我看不出来?上礼拜我签的时候,名单上本来有十二个,我走之后又加了你——他们早就把你排进去了,只是分批放出来。”

“你也签了?”

“签了,十天前。”贺明说,“我现在跑网约车呢,这单刚把客人送到城西银泰。远山,你听我说,他们不是单纯的裁员。你那个星图项目,为什么先砍预算后裁人?陆明远把项目转给他自己带的人,我走之前就看见了,接手的那个团队连调度算法的基础框架都看不懂,开会问的问题跟刚毕业的学生一个水平。”

周远山看着车窗外面。高架桥两侧的玻璃幕墙建筑正在陆续亮灯,每一格窗户后面都是一间办公室,都有人加班,都有人在写代码或者开会或者喝茶。那些灯光密密匝匝地连成一片,看起来像某种算法生成的点阵图。

“我知道。”他说。

“你知道?你知道你还这么平静?”贺明的声音拔高了,收音机的电流声跟着刺啦响了一下,“他们把星图彻底抹掉,连带我们这些知道核心架构的人,全部清出去。周远山,那是你花了四年时间做出来的东西,从第一行伪代码到最后一次上线,你熬了多少个大夜,你……”

“贺明。”周远山打断他,“你现在车上拉着客人吗?”

“没有,空车。刚下完客。”

“找个能停车的地方,我们见面聊。”

电话那头安静了几秒,贺明呼出一口气:“行。明天上午,我把车停到城北科技园那边的咖啡馆,那地方我熟,门口好停车。我拉了你,被裁的事跟家里还没说,正好跟你商量商量。”

周远山的手指在纸箱边缘来回蹭了两下:“明天见。”

挂了电话,出租车已经下了高架,正沿着城东的主干道往老城区方向走。周远山把手机翻到微信界面,指尖上下划动。公司大群早就把他移出去了,但技术部还有一个私下的活跃群,四十几个人,这几天消息不断往上翻。他点进去,拉到三个月前的记录。

十二月,张工走了,说是“主动离职”,但周远山记得他走之前在技术评审会上和陆明远争过一轮,关于星图的数据接口规范。十一月,赵工走了,签完协议当天工位就被清空,连交接都没安排。十月,刘工走了,那天周远山正好在出差,回来只看见一副空桌椅,桌面上连一张便签都没留下。再往前,九月,小陈走了,八月,两个人同时走的……

他一条一条数下来,近三个月,技术部核心架构组、算法组、数据平台组,前前后后走了十一个人。十一颗螺丝钉,精准地从一处拆下来,丢进回收站。周远山记得每一个人走的时候,他都以为是正常的行业流动,甚至还在群里说过“前程似锦”之类的话。现在这些名字连起来看,分明是一张清洗名单,按顺序执行,一个接一个,不留痕迹。

他把手机翻过去扣在膝盖上。出租车驶入老城区,路两边是九十年代的多层住宅楼,梧桐树落光了叶子,枝干在路灯下发白,像一张张摊开的、瘦骨嶙峋的手掌。

三年前也是冬天,云城智科刚拿到B轮融资的那段时间。林晓坐在客厅的布艺沙发上,面前摊着一份离婚协议书。周远山记得她说那句话时的表情,眉毛没有皱,嘴角没有撇,眼睛直直地看着茶几上的玻璃杯,声音平得像在念一份会议纪要。

“你那个星图,能当饭吃吗?”

她当时说的是问句,语气却是陈述。周远山站在玄关,手里还攥着刚从公司带回来的笔记本电脑,领带没摘,外套没脱。客厅的吸顶灯把她的影子投在地板上,长长的,一直延伸到他的脚尖跟前。他张了张嘴,想说“再给我一年时间”,但看着她面前那份打印得整整齐齐的协议书,最终什么都没说。

出租车打了一把方向,拐进一条更窄的老街。司机从后视镜里看了他一眼:“城东老教育局宿舍,是前头那个红砖楼吧?”

“对,靠路东那栋。”

司机把车停在单元门口,周远山扫码付了钱,抱着纸箱下车。冷风灌进后脖颈,他缩了一下肩膀。回头看了一眼巷口,出租车正在掉头,尾灯在暮色里拖出一道暗红色的弧线,很快消失在拐角。

他站在单元门口,抬头看向四楼。厨房的灯亮着,暖黄色的光透过纱窗漫出来,模糊但笃定。是他的父亲在做饭,这个时间点多半是在煮面或者热中午的剩菜。

周远山低头看了看怀里的纸箱,里面是一个键盘、两本技术手册、一个印着公司Logo的马克杯,还有一张和算法组同事的合影。合影背面用签字笔写着四个字——“星图永在”,那是去年项目上线那天,团队聚餐时大家一起签的。

他把纸箱靠墙放在楼梯口,掏出手机给父亲发了一条消息:“爸,我路上买了点水果,马上到。”

发完消息,他把手机重新调回静音模式,屏幕上的群聊记录还停在最后一行。那是一串“前程似锦”的祝福,他发送时间显示为十六点四十七分,距离他被保安拦下不到二十分钟。

周远山吸了一口气,楼道里的声控灯亮起来。他抱起纸箱,脚步沉稳地爬上楼梯,一层,二层,三层,四层。钥匙插进锁孔转动的时候,他听见屋里传来父亲哼京剧的声音,跑调,但很有劲。

门开了。

第三章 父亲的饺子

门没锁,周远山一拧就开了。热气裹着白菜猪肉的香味扑面而来,厨房里抽油烟机嗡嗡响着,父亲背对着他站在灶台前,围裙带子在腰后系了个歪歪扭扭的活扣。

“回来了?”父亲没转身,手底下擀面杖滚得飞快,“今天怎么这个点就到家了?往常不都得八九点?”

周远山把纸箱放在玄关鞋柜旁边,弯腰换拖鞋:“公司调休,下午没什么事。”

“调休好,调休好。”父亲把一张饺子皮摊在掌心,筷子夹了馅往里送,手指一捏一挤,一个胖乎乎的饺子就蹲在了案板上,“你妈在的时候老说,人不是机器,该歇就得歇。你那个公司也真是的,天天加班,铁打的人也扛不住。”

周远山洗了手走进厨房,接过擀面杖:“我来擀皮,你包。”

父亲侧过身让出位置,手上动作没停。他穿着一件洗得发白的藏蓝色毛衣,袖口磨出了毛边,手背上褐斑星星点点,指节因为常年握粉笔有些变形,但捏饺子的动作干净利落,每个褶子都匀称。案板旁边放着一小碗水,用来封口,碗沿上搁着一只褪色的竹镊子,那是母亲在世时包饺子挑虾线的工具。

“今天白菜好,霜降之后的菜甜。”父亲念叨着,把又一个饺子摆进盖帘,“你张叔上午还过来了一趟,送了两棵,自己家阳台上种的。”

“张叔身体还好?”

“好着呢,上个月他儿子提了处长,高兴得不行,见谁跟谁说。”父亲拿起擀面杖旁边的一团面,重新揉了两下,“老张那人你也知道,藏不住事,拎着两瓶酒在我这儿坐了半下午,翻来覆去就那几句话——‘老周啊,你说这孩子怎么就这么争气’。”

周远山低头擀皮,面皮在擀面杖下旋转,薄厚均匀,边缘微微翘起。他没接话,父亲似乎也不在意,自顾自往下说。

“我说你家远山也不差,在云城智科干技术,正经大公司。老张就说,那不一样,人家是处长,管人的。我说管人有什么好,管技术才实在。”父亲停了一下,把一个馅多的饺子单独放在盖帘最边上,“不过话说回来,远山啊,你也在公司待了快五年了吧?有没有机会往上走一走?”

周远山手里的擀面杖顿了一下,面皮边缘被压出一道深痕。他把它重新卷起来,再展开,那道痕淡了一些,但没有完全消失。

“快了,爸。”他说,声音跟平常没什么区别,“公司有安排。”

“有安排就好,有安排就好。”父亲连说了两遍,把盖帘上单独放的那个饺子拿起来,在手里掂了掂,“这个馅大,等会儿你吃。你妈在的时候老说,吃饺子要吃馅大的,实在。”

灶台上的锅咕嘟咕嘟响了,父亲转身去掀锅盖,白气腾起来糊了半面窗户。周远山把擀好的皮一张张叠起来,码在案板边上。厨房安静了片刻,只有水沸的声音和擀面杖偶尔碰到案板的轻响。

父亲从灶台前转回来,手里多了手机,屏幕亮着。他不太会用智能手机,每次解锁都要戳好几下,这次也不例外。屏幕划开之后是一段视频,播放到一半暂停了,画面里是一间明亮的会议室,背景板上印着云城智科的Logo。

“你看看这个。”父亲把手机递过来,手指戳了一下播放键。

视频继续播放。镜头对着一块大屏幕,上面是“星图”智能调度算法的架构图,线条密密麻麻,节点层层嵌套。陆明远站在屏幕前,西装笔挺,手势大开大合,正在讲解。

“……完全自主研发的突破性成果,从底层架构到应用层全部由云城智科独立完成,拥有完整的知识产权。”陆明远的声音从手机外放孔里传出来,带着某种不容置疑的笃定,“这个算法将彻底改变行业调度效率,是我们对未来五年最重要的战略布局。”

父亲把手机音量调大了一些,眉头拧成一个川字:“这个人我见过,上回你们公司那个什么发布会,电视上放的。他讲得头头是道,可是远山——”

父亲转过头看着周远山,眼神里有种努力辨认什么的认真,像是在雾里找一条路。

“这不是你做的吗?你前年天天加班到后半夜,回来倒头就睡,我问你忙什么,你说弄一个调度的东西,能省好多电,还能让机器自己排班。对不对?”

周远山看着屏幕,陆明远正说到“星图”的异常检测模块,那个模块的核心代码是他一行一行敲出来的。有一年冬天,他在公司待到凌晨三点,为了解决一个并发调度的死锁问题,几乎把整个调度器的锁机制重写了一遍。那天早上他回家,父亲已经出门买菜了,桌上留了一碗粥,旁边压着张字条——“趁热喝,别凉了”。

手机屏幕里陆明远还在讲,声音洪亮,手势自信。周远山手里的擀面杖停在半空,面皮贴在杖面上,慢慢垂下来,拉成一个不规则的椭圆。他盯着屏幕看了两秒,三秒,然后把擀面杖放回案板,手指在围裙上蹭了蹭面粉。

“爸,”他说,把手机从父亲手里接过来,按灭屏幕,翻扣在台面上,“饺子皮擀好了,咱们先包吧。”

父亲看了他一眼,嘴唇动了动,像是想说什么,最终只是点了点头。他重新拿起饺子皮,手指捏得比刚才用力了一些,褶子收口的地方被指尖捏出几个浅浅的指甲印。

“这人不地道。”父亲低着头包饺子,声音闷在胸腔里,“抢你功劳。”

周远山拿起一张皮摊在掌心,挖了一勺馅放上去,学着父亲的手法捏口。他的动作不够熟练,饺子歪歪扭扭躺在案板上,边上的褶子大小不一。

“爸,饺子皮擀好了,先包完这盖帘,不然面干了。”

父亲没再追问,把手里的饺子捏紧,整整齐齐码好。厨房里只剩手指按捏面皮的声音,还有锅里第二次加水后重新沸腾的咕嘟声。窗外的天彻底暗下来了,对面楼的窗户亮起几盏灯,有人在阳台上收衣服,衣架碰撞的声音隔着玻璃传进来,叮叮当当。

周远山把一个包好的饺子摆在父亲那个“馅大”的饺子旁边。两个饺子并排站着,一个饱满挺括,一个瘦长歪斜,像两代人站在一起,一个用脊背撑着岁月的重量,一个还在学着把生活的褶皱捏出匀称的形状。

“爸,”他说,“今天的饺子闻着真香。”

父亲抬起头,眼睛眯了一下,像是把什么话咽了回去,又像是把什么话放进了心里。他拍了拍手上的面粉,转身去拿碗筷。

“香就多吃几个。你妈在的时候说,日子再难,饺子得包圆的。”

第四章 前妻的来电

电话是晚上九点四十七分打来的。

周远山刚把父亲安顿睡下,自己坐在客厅那张旧沙发上,茶几上摊着白天带回来的离职协议。他没开大灯,只点了沙发边那盏落地灯,光线昏黄,把A4纸上的条款照得有些发虚。手机震动的时候他正翻到保密条款那页,屏幕亮起来,备注名是“林晓”。他盯着那两个字看了几秒,等铃声快断掉才接起来。

听筒里很安静。

安静了大概三秒,或者四秒——客厅墙上挂钟的秒针走了四格——林晓的声音才传过来,比平时低一些,像是从很深的胸腔里挤出来的。

“今天的事,不是我一个人的决定。”

周远山靠在沙发靠背上,左手捏着那页保密协议,纸张在指间发出轻微的脆响。他回答得很平:“我知道,陆明远定的。”

林晓没接这句。又是一段沉默,这次更长。他能听到听筒里有关门的声音,很轻,应该是林晓把自己关在了某个房间里。她以前就这样,结婚那几年,每次要跟他说重要的事,都会先把卧室门关上,好像需要一道物理屏障才能把话讲完整。

“你的竞业协议是标准版,”林晓的声音重新响起来,语速比刚才快了一些,像在背诵一段她反复斟酌过的文字,“没有额外限制。十二个月,按月发放补偿金,标准就是合同上写的那个数。”

周远山嗯了一声。

“但是,”林晓停顿了一下,他听到她深吸了一口气,“保密条款涵盖星图所有核心代码,包括你经手过的每一个模块、每一份文档、每一段注释。法务部那边今天下午专门开会重新确认了范围,基本上……如果你之后做类似方向的东西,他们会追责。”

周远山把协议翻到保密条款那页,目光一行一行扫下去,条款的措辞他早就看过无数遍,但此刻他看的是字里行间的缝隙,是那些没有写出来、但被陆明远的口头解释无限扩大的部分。

“你是代表公司提醒我,”他问,“还是代表你自己。”

电话那头一下子安静了。

安静得不像挂了电话,因为能隐约听到对方的呼吸声,很轻,但确实在。周远山也不催,就靠在沙发上等着,目光停在茶几角上那张全家福上——照片里的父亲笑得眯起眼,他自己站在父亲旁边,比现在瘦一些,肩膀上搭着一只手。那只手不是林晓的,照片拍在离婚之后,是贺明帮忙按的快门。

“你自己注意。”

林晓终于开口,只有四个字,声音比之前更低了,尾音几乎是擦着空气过去的。然后没等周远山回应,听筒里传来一声轻微的咔嗒,电话断了。

周远山把手机从耳边拿下来,屏幕还亮着,通话时间显示一分四十八秒。他把手机扣在协议上,仰头盯着天花板,落地灯的光把墙角照出一小片暖黄,再往上是模糊的暗影。父亲房间里传来翻身的声音,接着是均匀的呼吸,又慢慢沉下去。

他坐了一会儿,大概两三分钟,然后起身去了卧室。

卧室里有一张书桌,桌面上只放了一台笔记本电脑和一只笔筒。他拉开最下面那层抽屉,里面码着一摞旧笔记本,最底下压着一块移动硬盘。硬盘是银灰色的,表面有几道细细的划痕,买的时候花了六百多块,当时林晓还说贵,不如买个便宜的凑合用。他没听,这块硬盘陪了他五年,里面存着从入职第一天到去年年底所有的工作备份——当然不是公司允许的那种备份,是他在私人设备上留存的架构草图和技术笔记。

硬盘插上笔记本,指示灯亮了,系统识别出盘符。他打开一个命名为“早期工作”的文件夹,里面按年份分了子文件夹。他点开三年前那个,文件列表展开,Excel、Word、图片、PDF排了半屏。他往下滚动,找到一个命名为“星图架构v0.3”的文件,修改日期显示三年前的十一月十七日,凌晨两点四十一分。

双击打开。

是一份架构草稿,手绘扫描后转成的PDF,线条歪歪扭扭但逻辑清晰,调度器、异常检测、任务队列、资源分配,每一个模块都标注了详细说明。画图的笔迹是他的,但右下角有一段手写的批注,字迹清秀工整,跟他的笔迹完全不同——

“这个调度逻辑有问题,并发超过一定阈值会触发死锁,需要加一个状态机兜底。另外异常检测模块的数据流可以跟调度层解耦,减少耦合风险。若溪。”

下面紧挨着另一行字,是他的笔迹,潦草但用力:“同意。明天改。”

两行字并排挤在PDF页面的角落里,像两个人并肩站在同一个战壕里,外面炮火连天,他们还在讨论手里的枪该怎么改。

周远山盯着那两行字看了很久。

三年前那个凌晨,他把草稿发出去的时候其实没抱太大希望,架构组当时没人看好这个方向,觉得调度器老老实实按传统方案做就行,没必要搞什么自适应优化。是沈若溪在第二天早上八点零七分回了邮件——“我昨晚改了一下你发的架构,你看看批注,如果没问题,下周一例会我帮你争取立项。”

他往下翻了翻文件,后面还有十几页类似的批注和回复,每一条都标注着具体的时间,大部分集中在深夜和凌晨,像两个人在别人都睡着的时段里偷偷搭建一个只有他们知道的工程。最后一份文件是项目立项申请书,签名栏写着两个人的名字,周远山在上面,沈若溪在下面,日期是三年前的十二月三日。

他把文件关掉,拔下硬盘,握在手心里。金属外壳残留着刚才运行的温度,稍微有些暖。

客厅的手机突然又响了一声,是短信。他走出去拿起来看,林晓发来的,只有一行字——“注意身体”。

他没回,把手机重新扣在桌上。父亲房间里又传来翻身声,这次带着几句含混的梦话,听不真切,像一个人在很远的地方喊另一个人回家吃饭。周远山站在客厅中间,左手握着硬盘,右手垂在身侧。落地灯的光把他的影子拉长,投在地板上,一直延伸到那张全家福前面,影子头部刚好停在照片里父亲的笑容上。

窗外对面楼的灯已经灭了大半,只剩零星几盏还亮着。有人在很远的地方按了一声汽车喇叭,声音被楼层和夜色层层削弱,传到这边只剩一个模糊的尾音,很快就散了。

他走进厨房,把硬盘放进挂在门口的外套内袋里,口袋很深,拉上拉链之后完全看不见。灶台上还剩半盖帘饺子没吃完,父亲睡前用湿布盖着,防止面皮风干。他掀开湿布看了一眼,那些饺子安静地躺着,其中两个并排的,一个饱满挺括,一个瘦长歪斜。

他把湿布重新盖好,关掉落地灯,整个客厅陷入黑暗。只有卧室方向亮着一线微弱的光,那是笔记本充电指示灯透过门缝漏出来的,蓝莹莹的,像一颗很小的星星嵌在夜晚的边缘。

第五章 网约车司机与代码

第二天早上七点,周远山给贺明发了条消息,问他上午有没有空。贺明回得很快,说上午跑完两单早高峰就收车,约在城北那家二十四小时营业的咖啡馆碰面。

咖啡馆在科技园西门的斜对面,店面不大,摆了七八张桌子,墙上挂着几幅黑白建筑摄影,角落里一台老式咖啡机嗡嗡作响。周远山到的时候,贺明已经坐在靠窗的位置,面前一杯美式喝掉了大半,手机架在杯托上看网约车平台的接单热力图。

贺明比他大两岁,圆脸,额头的发际线比上次见面又往上退了一点。看见周远山推门进来,他抬了抬下巴算是招呼,顺手把手机屏幕扣在桌上。

“坐。”贺明把菜单往他那边推,“给你点了杯拿铁。”

周远山坐下,从包里掏出笔记本的电源线先找插座。贺明看着他这个动作笑了一声:“还是老样子,先找电。”

“你跑车怎么样?”

“能怎么样,一单接一单,早高峰跑完腰跟断了似的。”贺明端起杯子喝了口凉掉的美式,“十天前被裁的时候我还想歇两天,歇到第三天就待不住了。房贷每月八千,孩子幼儿园学费一学期一万二,我老婆那点工资管吃喝都费劲。”

周远山把电源插好,没接话。贺明看他表情,摆摆手:“你不用那个眼神看我,比你好点,我至少没瞒着家里。我老婆当天就知道了,抱着我哭了一晚上,第二天早上跟我说没事,大不了卖房子回老家。”

“投简历了吗?”

“八十份。”贺明竖起右手比划了一个数字,“全是工业自动化相关的岗位,从技术经理到售后工程师,能投的都投了。回复了六家,三家直接说岗位取消,两家面试完让等通知,等了五天没信。还有一家挺有意思,电话里聊了二十分钟,技术问题一个没问,最后跟我说‘贺工,我们很认可你的能力,但是有些情况不方便说,你懂的’。”

“云城智科打招呼了。”

“你倒是反应快。”贺明把杯子重重放回碟子上,咖啡溅出来一滴落在桌沿,“我一开始没往这方面想,后来托以前一个老同事打听,人家支支吾吾半天,最后说了句‘陆总在圈里打过招呼了,说这批人涉及保密问题,建议同行谨慎录用’。涉及保密问题,这话说得真体面。”

周远山沉默了几秒。陆明远的手段比他预想的更周密,不光在云城智科内部清理,还要把这些人从这个行业里连根拔掉。裁员协议里那条保密条款的约束力远没有这么大威力,真正起作用的是陆明远在行业里的人脉——云城智科在工业自动化领域深耕十几年,供应商、客户、同行多少都要给他几分面子。

“所以我就跑车了。”贺明语气反倒平缓下来,“跑车不丢人,就是每天睁眼想着今天的份子钱在哪,那种感觉不太好受。”

周远山把面前那杯拿铁推到一边,从背包里取出笔记本电脑,掀开屏幕。贺明看他这个动作,身体微微前倾。“有想法了?”

“你先看。”

周远山点开一个文件夹,里面只有一个PPT文件,修改时间显示是昨晚十一点四十七分。他双击打开,首页是一行朴素的标题——基于轻量化视觉检测的工业质检系统方案,下面小字标注着“初稿·仅供内部讨论”。

贺明没说话,手指搭在触控板上往下翻。第二页是问题描述,列了中小型制造企业质检环节的六个痛点:人工目检效率低、招工难、标准不稳定、漏检率高、设备成本门槛高、现有视觉方案适配周期长。每一条后面都附了一个简单的手绘示意图,是周远山惯用的那种风格,线条简洁但说明性强。

第三页开始是技术方案。贺明翻到这一页的时候停住了,眉头皱起来,手指在触控板上滑动放大图片,仔细看了十几秒。

“你把星图的调度逻辑用在这里了?”

“对。”周远山指着屏幕上的架构图,“传统工业质检方案是单相机单工位,一台相机对应一个检测点,生产线上有多少个检测位就要配多少相机和处理器,成本降不下来。我用星图里任务队列和资源分配的思路,改成多相机异步调度,一个处理器管理四到六路相机,相机只在检测到可疑区域的时候触发高分辨率采样,其余时间维持低功耗预览模式。这样硬件成本能压到原来的三分之一。”

贺明把PPT翻到第四页,那是性能预估表格,对比了传统方案和轻量化方案在检测速度、准确率、硬件成本、部署周期四个维度的差异。数字做得很保守,但每一项都指向同一个结论:这个东西有市场。

他看完最后一页,身子往后靠在椅背上,盯着天花板看了半分钟。咖啡馆里放着一首很慢的爵士乐,萨克斯风的声音跟咖啡机的嗡鸣搅在一起。

“技术上没问题。”贺明终于开口,“算法你有现成的思路,视觉这块我之前做过两年表面缺陷检测,硬件选型和产线对接我来。问题只有一个——钱。”

“我算过。”周远山从笔记本下面抽出一张纸,上面用铅笔画了一个简表,“房租加押金一个月八千,二手服务器两台大概一万二,工业相机和镜头先买两套做原型,加光源和支架一万五,办公桌椅和网络设备五千,预留三个月的运营资金。总共需要四十万出头。”

“你手里多少?”

“二十八万。”

贺明愣了一下:“你不是去年刚还完房贷?”

“提前还了一部分,手里就这些。原计划今年年底把车换了,现在正好省了。”

贺明低下头,手指在桌面上无意识地画圈。周远山没有催他。窗外一辆洒水车经过,水花溅在玻璃上,几秒之后又干了。

“我能凑十二万。”贺明抬起头,“定期存款取出来,加上这两个月跑车的钱,差不多够。但我得跟你确认一件事——这个方向你有多确定?”

周远山看着他的眼睛:“五金厂、注塑厂、小型电子组装厂,光是云城周边就不下两千家。他们现在的质检要么靠人眼,要么用国外那套几十万的系统,中间层是空的。星图在云城智科被砍掉的时候我就想过,调度算法的核心价值不在云端大系统,在边缘侧轻量化。陆明远没看懂,或者他看懂了但故意装作看不懂,因为做大系统才有故事可讲,才能融到钱。”

“你恨他吗?”

这个问题来得有些突然。周远山偏过头看了看窗外,科技园里陆续有上班的人走进去,脖子上挂着不同颜色的工牌,步伐快慢不一。

“昨天之前恨。”他收回视线,“今天不恨了。恨一个人太占内存。”

贺明笑出了声,这是今天他第一次真正笑。“行。那公司叫什么?”

“星云。”

“星云?”贺明品味了一下这个名字,“星图被他们拿走了,你搞个星云。”

“星图是画在纸上的,星云是正在聚变的。”周远山合上笔记本,“星图死了,星云还没出生。但都会亮的。”

贺明看着他,慢慢点了点头,然后掏出手机开始打字。“我给我老婆发个消息,让她把定期取出来。你那边——办公室看好了吗?”

“城北科技园三号楼,最小的隔间,三十平米,月租四千,押二付三。我今天下午去签合同。”

“那我现在回去取钱,下午直接去科技园找你。”贺明站起来,把美式最后一口喝完,“对了,昨天那个事——保安拦你,没吃亏吧?”

“没。直接走了。”

“就该这样。”贺明把外套搭在手臂上,“跟那种地方多纠缠一秒都是浪费。走了,下午见。”

周远山看着贺明推开玻璃门走进冷风里,他把电脑装回背包,又坐了一会儿。咖啡已经彻底凉了,杯壁上的奶泡结了一层薄薄的膜。他拿起手机翻到林晓昨晚那条“注意身体”,看了两秒,锁屏,揣进口袋。

拉链拉上,硬盘贴着内袋的布料,隐约传来一丝暖意。他推开咖啡馆的门,初冬的风灌进领口,冷得人清醒。城北科技园就在马路对面,三号楼在园区最里面,外墙是灰色的,看起来毫不起眼。

周远山穿过马路,脚步很稳。

第六章 沈若溪的警告

城西的茶馆藏在一条老巷子深处,门脸不大,招牌上的漆都褪了色。周远山推门进去的时候,沈若溪已经坐在靠窗的位置,面前一壶龙井冒着热气,旁边还摆着一碟没动过的桂花糕。

她今天没穿平时在公司那身深色西装,换了件米白色的高领毛衣,头发松松地扎着,看上去不像产品总监,倒像大学时那个总坐在阶梯教室第三排的女生。

“坐。”沈若溪给他倒了杯茶,“这地方偏,没人认识我们。”

周远山在她对面坐下,没急着端杯子。“你在电话里说见面聊,什么事这么急?”

沈若溪从包里抽出一个牛皮纸信封,放在桌面上推过去。“先看看这个。”

周远山打开信封,里面是几页复印件,抬头是云城智科法务部内部备忘录,日期标着12月5日。他快速扫了几行,眉头越拧越紧。

“扩大版竞业协议?”他把文件放回桌面,“我签的裁员协议里没有这一条。”

“本来有。”沈若溪端起茶杯抿了一口,“裁员名单确认那天,陆明远让法务起草了这份补充协议,要求被裁的核心技术岗三年内不得从事同类业务,范围从原来的智能调度扩大到整个工业AI领域。赔偿金只按基本工资算,股权全部回收。”

“我记得我签的版本没有这么苛刻。”

“对,因为你签的那份是我换过的。”沈若溪从信封里又抽出一页,上面是她手写的批注,“陆明远把这份补充协议混在一摞文件里,想让你在签字的时候一块儿签了。我提前半小时到会议室,把这份抽了出来,换成了标准模板。”

周远山盯着那张手写批注看了几秒:“你用‘不符合劳动法’拦下来的?”

“对。我跟陆明远说,扩大竞业范围需要补偿金对等提高,否则一旦走仲裁公司必输。他当时急着去接投资人的电话,没细看就让我处理了。”沈若溪放下茶杯,声音轻但每个字都咬得很清楚,“但这件事没完。他昨天让人查了你的工商注册信息。”

“我还没注册。”

“知道。所以他在等。只要你开公司,经营范围里出现人工智能、图像识别、工业检测这些关键词,他就会拿保密条款说事。星图的保密协议里有一条规定是‘离职后两年内不得从事与公司业务有竞争关系的技术开发’,措辞很模糊,‘竞争关系’的解释权在法务部手里。”

周远山把虾饺夹进嘴里嚼了两下:“所以不管我做什么,只要跟AI沾边,他都可能起诉。”

“对。而且他还会申请冻结你的公司账户,哪怕最后官司打不赢,拖你半年现金流就能让你撑不下去。”沈若溪从包里又取出一个东西,这次是个黑色加密硬盘,比烟盒小一圈,金属外壳上有一道细长的划痕。

她把硬盘放在茶壶旁边。“这里面是我备份的星图最早期的代码库和完整的开发日志,从第一行核心框架代码到最终版本,所有关键提交的时间戳都在,git记录没删干净。还有你当初提交专利申报的原始文档,和后来陆明远团队改过的版本对比,时间线清清楚楚。”

周远山看着那块硬盘,没有立刻去拿。

“你备份这个的时候,就想到了今天?”他问。

沈若溪没有回避他的目光:“星图最初那个调度框架,是你主写,我帮着搭的产品架构。那年夏天我们窝在四楼小会议室里通宵改BUG,你写一行我测一行,困了就在白板上画流程图提神。我不甘心看它被拿去给陆明远的人贴金。”

周远山把硬盘拿起来,掂了掂,金属外壳冰凉。他沉默了片刻,又把它放回桌面,手指从硬盘边缘移开。

“谢谢。”他说,“但我不用这个去告他。”

沈若溪的表情微微一顿:“为什么?这是最直接的证据。你拿着它申请专利无效宣告,或者直接起诉不正当竞争,胜算很大。”

“赢了他又怎样?”周远山给自己又倒了杯茶,茶水已经有些凉了,“把星图拿回来,顶上挂着云城智科的名字?还是花两年时间打官司,等赔偿金下来,创业窗口期早过了。”

“可这是你的东西。”

“是我的东西没错。但它现在是包袱。”他把硬盘重新推到她面前,手指轻轻点了点金属壳上的划痕,“星图被砍掉那天我就在想一个问题,我到底是要证明自己是对的,还是要把事情做成。这两件事有时候是同一件,有时候不是。”

沈若溪没有接硬盘,也没有说话,只是看着他。

“我要做的事比星图更大。”周远山的声音不高,茶馆角落里有人在低声打电话,柜台后面的收音机放着评弹,软糯的唱腔隔着屏风飘过来,“星图解决的是云端大系统的调度问题,绑定的是大客户的预算和采购周期。但中小企业需要的是能装在产线旁边、用普通电脑就能跑、今天买明天用的东西。这个方向陆明远看不上,可市场比他想象的大得多。”

“所以你宁愿从头开始写新代码。”

“对。一行一行自己写。硬盘里的东西你收好,说不定哪天用得上,但不是现在。”他看了一眼窗外,巷子里有只橘猫蹲在墙根晒太阳,“而且,我不想让星云出生的时候身上就带着官司。干干净净地开始,以后每一步都踏实。”

沈若溪把硬盘收进包里,动作不快,像是在思考什么。她的手指碰到桂花糕的碟子边缘时停了下来。

“你变了。”她说。

“是吗。”

“以前你在公司,遇到这种事肯定第一个跳起来要个说法。我记得有一年绩效被陆明远压了,你写了封三千字的申诉邮件抄送全部门。”

周远山笑了一下,嘴角弯起的弧度很浅:“那封邮件没人回,后来我学会一件事,想让人听你说话,要么你声音足够大,要么你站的位置足够高。现在我还不够高,但至少嗓门比以前大。”

沈若溪也笑了,这一次笑得很真,眼角弯起来的样子跟大学时一模一样。“行,那我先不操这个心。但你得答应我一件事——云城智科那边有任何针对你的动作,第一时间告诉我。我在内部还能听到一些消息。”

“你还打算留在那里?”

“暂时。产品线现在全靠星图撑着,我不能让它在我手上烂掉。”她顿了一下,“而且陆明远最近跟投资方走得特别近,好像在谈B轮融资,拿星图做核心资产。等那边的事尘埃落定,我会有自己的选择。”

周远山点了点头,没再多问。他拿起那块桂花糕咬了一口,糖渍的桂花香气在嘴里散开。

“甜。”他说。

“这家茶馆开了二十年,桂花酱是老板娘自己腌的。”沈若溪把茶壶里剩下的茶倒进两个杯子里,“下次来还可以试试绿豆糕。”

“下次。”

他把这两个字说得很平常,但沈若溪听得很认真,认真到端起茶杯时手指微微顿了一下。窗外那只橘猫翻了个身,肚皮朝天晒着太阳,尾巴懒洋洋地扫过青石板。

周远山的手机在口袋里震了一下,是贺明发来的消息:钱取到了,下午两点科技园见。

他把手机翻扣在桌面上,又给沈若溪倒了一杯茶。巷子里评弹换了一曲,琵琶声清脆,像雨点打在瓦片上。

第七章 三十平米的战场

城北科技园的C座三楼,走廊尽头那间办公室的门牌上还留着上一家公司的痕迹,透明胶带撕过的位置发白,像块没洗干净的疤。贺明用钥匙捅了半天锁孔才拧开,门推开时一股装修残留的甲醛味扑面而来,呛得他连打了两个喷嚏。

“这味儿,得买竹炭包。”贺明揉了揉鼻子。

周远山站在门口没动,视线扫过整个空间。三十平米,长方形,靠窗摆着一张前任租客不要的旧会议桌,桌腿用报纸垫着。墙角摞着四个塑料周转箱,窗户是朝北的,采光一般,但能看见楼下那棵光秃秃的银杏树。他走到窗边,用手擦了擦玻璃上的灰,楼下保安正推着三轮车收纸箱,车轱辘碾过减速带,咣当一声。

“可以。”他说。

“可以什么可以。”贺明把背包往桌上一扔,拉链上挂着的网约车平台吊牌甩得叮当响,“这地方比咱们以前公司那间贵宾会议室还小一半。”

“贵宾会议室一年用不了几次,这间屋子以后天天有人。”

贺明看了他一眼,没再说话,从包里掏出两瓶矿泉水,一瓶推过去,一瓶自己拧开灌了半瓶。两人从下午一点开始收拾,先是把那四个周转箱搬到走廊,又是扫地拖地,然后抬进来两台从二手市场淘来的机架式服务器。贺明蹲在地上给服务器清灰的时候,周远山已经把网线沿着墙根捋直,用扎带固定在踢脚线上。他做这些事很有耐心,每一根线都捋得笔直,扎带间距差不多一样,像在画某种精确的电路图。

“你这毛病什么时候能改改。”贺明用抹布擦着服务器外壳,“线捋得再直,代码也不会少跑一个BUG。”

“看着舒服。”

“你以前在家是不是连毛巾都要叠成方块?”

周远山手上动作没停,扎带扣紧的咔嗒声清脆。“以前是。”

贺明意识到自己说多了,拧开另一瓶水假装喝水。两人沉默着干完活,天色暗下来的时候,开发环境搭好了,两台服务器嗡地一声启动,风扇声填满了整间屋子。周远山坐在旧会议桌前,笔记本电脑连着服务器,屏幕的光映在他脸上,代码一行一行往上翻。贺明从楼下便利店回来,怀里抱着一箱桶装泡面,往墙角一放,纸箱落地时闷响一声。

“楼下大姐说买三箱送一箱,我忍住了,先买一箱。”他抽出两桶放在桌上,“咱们得省着点。你那边还剩多少?”

“二十七万。你那十二万到账了?”

“下午到的。加上我跑网约车攒的八千多,凑个整,十二万八。”贺明用塑料叉子撬开泡面盖子,“房租押一付三掏了一万二,服务器加显示器九千六,交换机路由器两千三,桌椅板凳是二手的一千一。剩的,你自己算。”

周远山没算,他盯着屏幕上跳动的字符,脑子里已经在拆解第一个模块的功能。过了一分钟他才开口:“三个月。”

“什么三个月?”

“三个月做出原型。”他把笔记本转了个角度,屏幕上是刚刚搭好的项目框架草图,白底黑框,节点之间连着密密麻麻的箭头,“十二月底到三月底。如果三个月做不出能跑通的原型,钱就烧完了,咱们得在泡面吃完之前看到东西动起来。”

贺明把叉子插进泡面桶里,没倒热水,干嚼了一口面饼,嘎嘣脆。“那你打算做哪一块?工业质检的算法方向多了去了,表面缺陷检测、尺寸测量、装配完整性,每个方向都是深水区。”

“先从五金件表面缺陷入手。”周远山用笔在便签纸上画了个圈,又画了几条线延伸到圈外,“五金件结构单一,反光规律相对固定,算法模型不需要太复杂就能出效果。贺明,你以前在智科做过产线对接,你跟我说,一个质检工位一天过多少件?”

“看产品,小的螺丝垫片一天几万件,大的结构件几百件。”

“几百件那种,人工目检的漏检率多少?”

贺明嚼着面饼想了想:“结构件尺寸大,问题肉眼看得见,漏检率不高,但速度慢。一个熟练质检员盯十五秒一件,一天撑死检两千件顶天了。而且时间一长眼睛就花。”

“如果做到一秒一件,准确率百分之九十五以上呢?”

贺明不嚼了,他把叉子放下,身体微微往前倾。“那你等于把质检效率提了十几倍。但一秒一件要处理图像、跑模型、给结果,普通工控机扛不住。”

“所以要在算法上做减法和乘法。”周远山在便签纸上写下一个公式,又画了个简易的流程图,“边缘计算加轻量化模型,硬件用低功耗的,成本压到两万以内一套。厂里买回去接上现有的产线相机就能跑,不用换设备。”

贺明盯着那张便签看了十几秒,然后把干嚼了一半的泡面桶推开,从兜里摸出手机开始划拉。“我认识一个做五金冲压的老板,以前在智科的时候对接过。明天我打电话问问,看能不能去他产线上拍点样本数据。”

“样本越多越好。”

“知道。”贺明又划了几下手机,“快十一点了,今天先到这?”

周远山看了眼屏幕右下角的时间,十一月二十七号,晚上十点四十七分。他拿起手机,翻到父亲的号码,拇指悬在拨号键上停了两秒。贺明识趣地拎着泡面桶走到走廊去了,顺手带上了门。

电话响到第四声才接。

“爸,睡了吗?”

“还早呢,在看电视。”父亲的声音从听筒里传出来,带着老式电视机背景音的嘈杂,“你今天回来吃饭不?我下午包了饺子,韭菜鸡蛋的,还剩一盘在冰箱里。”

“今天不回了,我接了个新项目,要忙一阵。”

“新项目?”父亲的声音顿了顿,“以前那个公司不干了?”

“换了个方向。”周远山尽量让语气平常,“跟朋友合伙做点事情。”

“忙点好。”父亲那边电视机的声音被调小了,“忙点好,但是别像以前那样不顾家。你妈走之前老念叨,说你一年到头回不了几趟家。男人做事要上心,可家也得顾着。”

周远山握着手机的手指收紧了一下。这句话太熟了,熟到像有人拿钥匙打开了一扇他锁了两年的门。林晓当年坐在客厅沙发上说“你心里只有你的代码”的时候,用的是几乎一样的句式,只是父亲说“家也得顾着”,林晓说的是“这个家对你来说就是个旅馆”。

“远山?”父亲在那边叫他。

“嗯,在听。”他清了清嗓子,“这次不一样,项目进度我能控制。周末尽量回来。”

“行,回来提前说,我给你换着花样做饭。”父亲顿了顿,“你那个项目,是做大事吧?”

周远山看着屏幕上还在滚动的代码,服务器风扇嗡嗡地响着。“是。做出来能让很多工厂用上好东西。”

“那行。”父亲的声音里多了点笑意,“你妈以前说你这孩子从小就不爱说话,但认准了的事,十头牛拉不回来。做吧。”

挂了电话,周远山把手机扣在桌子上,屏幕暗下去之前他看见通话时长停在两分四十七秒。走廊里贺明敲了敲门框。

“泡面热水我烧上了,吃不吃?”

“吃。”

两人把泡面泡上,趁着等面的三分钟,周远山又坐回电脑前,打开开发文档写了第一行代码。泡面的味道从两桶纸盖边缘溢出来,混着旧办公室的灰尘气,贺明蹲在地上翻他的网约车司机群,嘴里念叨着哪位司机昨晚被乘客投诉扣了分。周远山没搭话,手指在键盘上敲出一串字符,回车,光标跳到下一行。

凌晨三点,贺明在墙角的折叠行军床上打起了呼噜,周远山把睡袋铺在会议桌另一边,没躺下去,靠着桌腿坐在冰凉的地砖上,笔记本放在膝盖上。屏幕上第一版数据采集模块的框架已经出来了,虽然还没有接入任何真实图像,但逻辑是通的,跑一遍测试通过。他把运行截图存进文件夹,文件夹名字就叫“星云”。窗外银杏树的枯枝在路灯下投出长长的影子,像某种正在生长的东西。他往后靠了靠,后脑勺抵着桌腿横梁,闭上眼之前看了一眼屏幕上那行代码注释,他自己写的,只有六个字:别回头,往前走。

第八章 第一行代码与最后一根稻草

周远山是在第二周周一下午收到那封邮件的。

邮箱提示音响起的时候他正蹲在办公室地上拆一台二手工控机,螺丝刀叼在嘴里,手上沾满硅脂。贺明从外面跑网约车回来,手里拎着两盒盒饭,看见他那个姿势就笑:“你这像修车的还是像修电脑的。”

周远山没抬头,把最后一颗螺丝拧下来,才吐出螺丝刀说:“帮我看下电脑,有邮件。”

贺明把盒饭搁在桌上,凑到屏幕前。办公室里就一台能联网的笔记本,键盘上的字母都磨白了一半,屏幕亮着,邮件通知弹在右下角。贺明点开,扫了一眼,眉头拧起来。

“云城智科法务部,”他念出声,“关于周远山先生新项目涉嫌使用星图核心算法衍生技术的告知函。要求你即刻停止开发,在五个工作日内配合核查,否则将启动法律程序。落款是今天上午十点。”

周远山从地上站起来,抽了张湿巾擦手,走到屏幕前看完整封邮件。正文三段,用词专业而冰冷,核心意思就一个:星云科技正在开发的工业质检系统,涉嫌抄袭星图算法的技术路线。邮件还附了一份简短的“初步比对报告”,把星图调度算法里的多目标优化框架和星云质检模型的特征提取层放在一起,圈了几处相似的关键词。

贺明骂了一声,声音不大但怒气很足:“这两个根本不是一个东西,他们搞技术的能看不出来?拿关键词比对,糊弄谁呢。”

“王律师看过了吗?”周远山问。

“今早我给他打了电话,他让我先收集所有代码提交记录,说这种指控站不住脚,但不能不回。”贺明挠了挠后脑勺,“但怎么回,你拿主意。”

周远山拉过键盘,把邮件往下翻,又打开自己的开发日志。他沉默了几分钟,然后开始打字。贺明站在旁边看了一会儿,看不懂代码层面的东西,索性把盒饭打开,坐回行军床上吃。

周远山先是调出星云质检系统的第一版架构文档,截图;又从星图算法的存档里找出特征提取层的源码,截图;然后把两份代码并排放在邮件正文里。星图用的是基于时序预测的调度优化,核心在“时间窗口内的任务优先级排序”;而星云质检要处理的是二维图像的空域特征,核心在“缺陷区域的边缘检测与分类”。底层数学工具都是矩阵运算,任何AI系统都是。他用红框标出两者在特征提取阶段的函数入口和参数传递路径,两段代码连变量命名习惯都不同。

他往下写了一段话:“尊敬的云城智科法务部,经比对,本人当前项目与星图算法在基础模型层面存在本质差异。特征提取层分别基于时序数据与图像数据,前者处理时间序列依赖,后者处理空间像素关系。矩阵运算为通用数学工具,不能作为技术侵权的判定依据。附件包含两个项目的完整代码仓库提交记录及编译时间戳,可证明星云代码从零编写,不存在对星图源码的复制或改写。”

写完,他在抄送栏里输入了陆明远的邮箱,想了想,又加上了沈若溪的。邮件是下午五点零七分发出的。

贺明扒完盒饭,含糊不清地说:“你觉得他们会怎么回?”

“不会回。”周远山把笔记本合上,“但他们内部会看。”

晚上七点多,沈若溪的消息从企业通讯软件上弹出来。她的头像是一张风景照,雪山脚下的一片湖。

“陆总在你邮件发出来半小时后,把法务部的人叫到办公室骂了整整三十分钟。”沈若溪发的是文字,措辞克制但能看出情绪,“他原话是‘周远山不识抬举,给他台阶不下’。我坐在隔壁,全听见了。”

周远山靠在椅背上,打了几个字发过去:“替我谢谢他。”

“谢他什么?”

“帮我省了广告费。”

隔了两分钟,沈若溪回了一个字:“值。”后面跟了个握拳的表情。

周远山放下手机,贺明端着泡面桶从走廊进来,看见他那表情就问怎么了。周远山把沈若溪的话复述了一遍,贺明刚把泡面塞进嘴里,一口汤呛在喉咙里,咳得满脸通红,边咳边笑:“你这话……让他知道了得气死。”

“所以要让他知道。”周远山接过他递来的泡面,揭开纸盖,热气扑上来,“沈若溪会传的。”

贺明用袖子抹了把嘴,把叉子插回泡面桶里,忽然正经起来:“不过话说回来,法务部那边不会善罢甘休。这封邮件只是第一步,后面还有竞业协议的事。”

“知道。”周远山吃了口面,嚼了两下,“所以得快点做出东西。只要产品过硬,这些手段都是纸老虎。”

贺明看着他,半晌叹了口气:“你这个人,有时候倔得让人没办法。”

“你当初跟我一起出来,也是倔?”

贺明摆摆手,又打开一桶泡面:“我那是跑网约车跑烦了,想找个正经事干。再说,你以前在智科的时候,加班最狠的那几个晚上,都是我在旁边陪你。看你写代码的样子,至少比那些只会开会的人靠谱。”

周远山没接话,把面吃完,又把电脑打开。邮件虽然没有再收到回复,但他知道这只是暴风雨前的沉默。他把所有开发文档和代码提交记录打包上传到云端,设了三重备份。贺明已经躺下行军床,翻了个身。

“明天早上我去五金厂见那个老板,你一起来吗?”贺明问。

“来。带上笔记本,现场采集图片样本。”

“行。”贺明顿了顿,又补了一句,“远山。”

“嗯?”

“你爸今天给我打电话了。问我你是不是在加班,怎么晚上十点打你电话没人接。”

周远山的手停在键盘上。他拿起手机翻通话记录,果然有两个未接来电,都是父亲的,时间在八点四十左右,他当时在专心写代码,手机静音没听见。

“你怎么说的?”

“我说你在开会,新项目起步阶段忙。”贺明翻了个身,声音闷在枕头里,“他没多问,就说让你注意身体。”

周远山把手机放下,盯着屏幕上的代码。光标闪了闪,他敲下几个键,把数据采集模块的一个参数改小了一点,让它在低配置机器上跑得更稳。窗外银杏的枯枝还在路灯下晃动,风比白天大了些,吹得窗框发出细碎的响声。他想起父亲那句“认准了的事十头牛拉不回来”,又想起沈若溪发来的那个“值”字,最后想起陆明远在办公室里发怒的样子。

这些念头一闪而过,他把它们都按进代码里,继续往下写。第一版图像预处理模块的代码在凌晨一点跑通,输出的测试图清晰地标出了模拟的缺陷区域。他存下运行截图,把文件命名为“星云v0.2”。

贺明的呼噜声又响起来了。周远山把电脑合上,靠着会议桌腿坐在地上,后脑勺搁在桌沿。他没有立刻闭眼,黑暗中盯着天花板上那盏不亮的日光灯管看了很久。手机屏幕亮了一下,是沈若溪发来的第二条消息,只有四个字:小心陆总。

他没有回复,把手机翻扣在肚子上,闭上眼。明天要去五金厂采集样本,后天要回父亲那里吃饭,大后天要跟贺明去谈第二家意向客户。事情在往前走,虽然慢,但每一步都踩在实处。陆明远的威胁像远处的一阵闷雷,听着近,雨还没落下来。他得在那之前把伞撑开。

第九章 父亲走失

周远山的手机在上午十点十七分震动起来。他正蹲在五金厂车间的水泥地上,举着手机拍冲压件的表面缺陷样本,屏幕上的来电显示是“城东张叔”。他接起来,那边声音很急,带着菜市场背景的嘈杂:“远山啊,你爸在菜市场走丢了,我找了两圈没找着,你赶紧过来!”

周远山站起来的时候膝盖撞在冲压机底座上,疼得他闷哼了一声。贺明从隔壁工位探出头,看见他脸色发白,二话没说把笔记本一合:“走,我开车。”

张叔站在菜市场东门的槐树下,手里还拎着半袋子芹菜。他说周父早上说去买条鱼,中午要炖汤,可张叔在鱼摊前碰见他时,他正对着水池发呆,嘴里念叨着“我忘了你妈叫什么了”,张叔以为他开玩笑,转身挑鱼的功夫,人就不见了。菜市场里外三圈都找遍了,没有。

贺明把车开得很慢,沿着菜市场东边的建设路往南走。周远山把车窗摇下来,初冬的风灌进来,割得耳朵疼。他拨父亲的手机,响了六声被挂断,再拨,关机了。

“别急,可能是没电了。”贺明说。

周远山没接话。他知道父亲的手机电量从来都是满的,每天睡前必须插上充电器,这是退休教师三十年养成的习惯。他让贺明拐进建设路小学旁边的巷子,那是父亲以前上班的中学旧址。巷子尽头是废弃的操场,铁门锁着,但旁边的矮墙有一处塌了半边,能翻过去。

周远山没有翻墙。他看见操场边的梧桐树下坐着一个穿灰色羽绒服的老人,背影笔挺,像在等什么人。周远山跑过去,在父亲面前蹲下来。

周父抬起头,眼神从恍惚慢慢聚焦,认出了他。老人的手里攥着一张旧照片,边角已经磨得发毛。他把照片递给周远山,声音很轻:“远山,你妈叫什么来着?我怎么想不起来了。”

周远山接过照片。那是他大学毕业时在校门口拍的,照片上有三个人:他穿着学士服站在中间,左边是沈若溪,右边是林晓。沈若溪笑得眼睛弯成月牙,林晓挽着他的胳膊,阳光很好,每个人的脸都很亮。他把父亲扶起来,没有回答那个问题,只说:“爸,回家吧,中午我给您做鱼。”

周父站起来的时候腿有些僵,周远山蹲下身把他背起来。贺明在后面捡起地上的旧围巾,跟了上来。周远山背着父亲穿过巷子,老人趴在他背上,呼吸很轻,过了一会儿又问:“你刚才说什么鱼?”

“鲫鱼,炖汤。”

“对,你妈爱喝鲫鱼汤。”周父的声音渐渐低下去,“她叫什么来着……我明明记得的。”

周远山眼眶一热,步子迈得更稳了些。他感觉到背上父亲的重量比上次背他时轻了不少,羽绒服里空荡荡的,像背着一个人形轮廓。

回到家,周远山给父亲煮了碗面,看他吃完又哄着他躺下午睡。老人睡着后,周远山坐在客厅的地板上,把那张旧照片摊在膝盖上。照片背面有一行小字,他翻过来看,是沈若溪的笔迹:“2015年夏,星图立项。”那是他们三个人最后一次合影之后的事。沈若溪当时把照片塞进他手里,说“做个纪念”,林晓在旁边笑了笑,没说话。

周远山盯着那行字看了很久。2015年夏天,星图算法刚刚立项,他是提出者,沈若溪是第一个加入的成员,林晓那时候还在行政部做助理,帮他们跑流程、订会议室。谁能想到七年之后,星图被陆明远砍掉转手他人,林晓坐在会议室里宣读他的裁员通知,而沈若溪在隔壁办公室监听陆明远的每一句咒骂。

他把照片插回茶几上的玻璃相框里,相框里原本只有父亲和母亲的合影,现在三张照片叠在一起:父母的老照片在最前面,他和沈若溪、林晓的合影夹在中间,后面还塞着一张他小时候和母亲的合照。父亲的记忆像这些照片,越往深处越模糊,越靠外越清晰,最后只剩下最表层的轮廓。

他站起来,走到窗边。老小区的梧桐树叶子落了大半,枝干光秃秃地伸向灰白的天空。楼下有个老太太推着菜篮子慢慢走,布鞋底在水泥地上蹭出沙沙声。他掏出手机,给沈若溪发了条消息:“照片背面的字,是你写的?”

回复来得很快:“是。那时候相信你会做出来。”

周远山看着这行字,把手机按灭。他走到父亲卧室门口,门虚掩着,里面传来均匀的呼吸声。他轻轻合上门,回到客厅,打开笔记本电脑。屏幕亮起来,代码编辑器里还开着昨晚写到一半的预处理模块。他把光标移到文件末尾,敲下新的几行。打字声在安静的客厅里格外清晰,像一只秒针在追赶。

他对自己说,得快点。

贺明的电话在下午两点打进来,问他父亲怎么样。周远山说睡了,没事。贺明说五金厂那边他下午先过去盯着,让周远山在家守着。挂电话前贺明补了一句:“你爸那个照片,我看了。上面那个女的是沈若溪吧,我在智科见过她。”

“嗯。”

“另一个——”

“以前的事。”周远山打断他,“你先把五金厂那边盯着,我明天过去。”

他挂了电话,把父亲的手机从床头拿过来充上电,又看见茶几上那碗没吃完的面坨在碗底。他端去厨房洗了碗,回来时父亲在卧室里喊了一声他的名字。他推门进去,父亲坐在床边,手里拿着那个玻璃相框,指着中间那张合影问:“这个姑娘,是不是来过咱家吃饭?”

周远山看着照片上沈若溪的脸,点了点头:“来过一次,您做的红烧肉,她吃了三碗饭。”

周父笑了,笑得很孩子气:“那我记性还行。”

周远山在他床边坐下来,握住父亲的手。老人的手心很干,指节上有粉笔磨出的旧茧。窗外传来远处学校下课的铃声,周父侧耳听了听,说:“该去上课了。”

“今天是周六,不上课。”

“哦。”周父点点头,又把相框举起来看了看,“这个姑娘好。另一个呢?”

“另一个走了。”

“走了啊。”周父把相框放下,没有再问。他躺回去,闭上眼睛,很快又睡着了。周远山把他的被子掖好,站在床边看了他一会儿。父亲的眉头在睡梦中微微拧着,像在解一道永远解不开的题。

他回到客厅,打开代码文件,把“星云v0.2”的版本号改成了v0.3。保存的时候,他听见窗外那个老太太的沙沙脚步声远去了,取而代之的是风穿过银杏枯枝的细碎声响。他坐下来,把键盘往面前拉了拉,手指落在按键上,开始敲下一行。

第十章 第一桶金十二万

贺明的电话打过来时,周远山正在改预处理模块里的一处内存泄漏。屏幕上跳出一行行报错日志,他一边看一边接起电话,贺明的声音带着风声,像是站在户外。

“老周,我大学室友的姐夫,在城北开五金厂,姓孙。他们厂现在质检全靠人眼,二十几个工人排成两排,拿放大镜对着零件看,一天下来头晕眼花。我跟他说了你做的东西,他想见一面。”

周远山把报错日志往下翻了两页:“什么时候?”

“现在。他下午三点以后有空,在厂里等。”

“我在家陪我爸。”

“你爸睡了就过来,我先去他厂里等你。地址发你手机上。”贺明顿了一下,又补了一句,“老周,这是你出来之后第一个潜在客户。”

周远山没再犹豫。他给父亲床头放了杯水,把手机调成响铃,留了张纸条在茶几上,写着“去趟城北,晚饭前回来”。纸条用父亲的老花镜压着,镜片上映出窗外灰蒙蒙的天。

城北五金厂比周远山想象的还要小。三排彩钢瓦搭的车间,中间夹着一间不到十平米的办公室,桌上堆着半尺厚的送货单和几张图纸。孙老板四十出头,圆脸,手臂上全是细密的旧烫疤,说话时习惯性地把螺丝帽在指间转来转去。

贺明已经坐在那里了,面前摆着两杯用一次性杯子倒的茶水,茶叶梗竖在杯口。孙老板见周远山进来,也没寒暄,直接从抽屉里拿出一个铁盒,倒出几十个银灰色的小零件在桌面上。

“这是给汽车安全带做的锁扣销,一个月出八万件。客户要求全检,不能有一个毛刺、一个划痕。我现在四个人分两班倒,用放大镜看,一天看四千个到头了,眼睛都看花了。你能做,十二万,一个月上线。做不了,我继续招人。”

周远山拿起一个零件,对着窗口的光转了转,又掏出手机拍了张照片。贺明在旁边递过一把游标卡尺,他量了量外径和倒角尺寸,放下零件问:“相机能装吗?我要在产线旁边架工业相机。”

“你随便架,电和网都有。”

周远山看了看贺明。贺明微微点头。

“一个月。”周远山说,“但我要在你们车间里装一套临时采集设备,先跑两周数据。”

孙老板把螺丝帽往桌上一拍:“行。合同我让会计下午打出来,预付款百分之四十,上线验收完付尾款。”

当天晚上,周远山在三十平米的办公室里画了一套视觉检测方案的草图。贺明从五金厂带回了一整袋废品——孙老板说这些都是人工漏检的,让他带回来当样本。周远山把零件一个个摆在白纸上,用手机微距镜头逐个拍,相机的自动对焦声在空荡的办公室里噼啪响个不停。

“这个划痕在弧面上,反光不均。”周远山把图片拖进标注工具,“传统阈值分割肯定不行,得做局部对比度增强。”

贺明坐在对面,把零件按缺陷类型分成六堆:“人工看的时候主要看反光面,有经验的老质检员会转角度,让光从侧面扫过去。你这机器能转吗?”

周远山停下鼠标。他盯着贺明手边那堆划痕零件看了几秒,突然站起来,走到白板前画了一个环形轨道。“让相机围绕零件转,同时环形打光。六个角度拍六张,合成一个完整表面图。”他在轨道旁边标注了角度和步进参数,又写下一行字,“用星图的调度逻辑来排拍照顺序。”

贺明走过来看白板,看了半天说:“你这个主意,跟以前智科那个星图——”

周远山打断他:“原理相通,但实现路径完全不一样。星图做的是物流路径规划,这里做的是视觉采样规划。核心算法是我从零重写的,每一行都有版本记录。”

贺明没再说什么,拿起手机拍了张白板的照片:“行,我去买步进电机和环形光源。”

接下来二十天,周远山几乎没回过家。他在办公室角落里支了一张折叠床,困了就睡两个小时,醒了继续调参。父亲那边他每天早晚各打一个电话,父亲有时清醒有时糊涂,糊涂的时候会问“你还在加班吗”,周远山就说“在做一个新东西,快忙完了”。父亲嗯一声,说“注意身体”,然后挂掉。

第十八天,系统第一次在五金厂车间跑通全流程。贺明蹲在产线旁边,把五百个零件一个个放上传送带,相机咔嚓咔嚓地拍,屏幕上六个角度的合成图依次闪过。检测结果出来时,孙老板从办公室跑过来,盯着屏幕上一排排绿色“OK”标志。

“全部过一遍。”

贺明把五百个零件重新倒进料斗。这次速度更快了,传送带没停,相机连拍,屏幕上绿色标志刷成一条线。四十七秒,五百个零件检测完毕。孙老板挑出五个他自己知道有问题的零件丢进去,系统准确标出了其中四个,另一个是油污,系统判定为“待人工复检”。

“一个误判,还标了复检。”孙老板把那个零件拿在手里翻来覆去地看,“人工看这个油污有时候也会犹豫。你这东西,比我那四个工人准。”

交付那天是第六周星期五,距离约定的一个月还差三天。孙老板让会计当场转了全款,又打印了一份六万元的年度维护合同,推到周远山面前。

“明年这个时候,你要是还做这个,优先给我做。我认识七八个做冲压和注塑的老板,都是眼睛看不过来的。”

周远山拿起笔,在合同最后的空白处写上一行手写条款:“软件免费升级,硬件保修一年。”然后签了名字。

孙老板拿过合同看了看那行手写字,笑了:“你这个人,不占便宜。”

“占便宜走不远。”

从五金厂出来时,天已经擦黑了。城北的街道上亮起一排昏黄的路灯,远处高架桥上的车流像一串串红白珠子在移动。周远山站在厂门口,掏出手机给贺明转了六万。转账备注写了四个字:“你那份钱。”

贺明的手机响了一声。他掏出来看了一眼,又看周远山。

“什么意思?”

“十二万,一人一半。”

贺明把手机屏幕转过来对着周远山:“我投了十二万进去,你转回来六万,等于我只出了六万。这个账不对。”

“投资是投资,分成是分成。第一单是你跑来的,现场调试是你盯的,没有你,我连五金厂的门都进不去。”

贺明把手机揣进口袋,沉默了一会儿,说:“老周,你这个人,做事情太清楚了。”

“亲兄弟明算账,何况咱们是合伙人。”周远山把外套拉链拉到顶,风灌进领子,他缩了缩脖子,“你那份钱拿着,下个月发工资的时候再谈股权的事。”

贺明没再推辞。他走到路边,拉开自己那辆二手比亚迪的车门,回头问:“回办公室?”

“回家。我爸昨天打电话说冰箱里冻了饺子,让我回去吃。”

贺明发动了车,又探出头来说:“孙老板那七八个朋友,过完年我挨个去跑。你那个环形拍照的方案,我给他们演示的时候都说能看懂。”

周远山嗯了一声,看着贺明的车尾灯汇入城北的车流。他站在路灯下,掏出手机翻了翻。屏幕上有一条沈若溪下午发来的消息:“听说你接到第一单了,恭喜。”下面隔了十分钟又发了一条:“陆明远今天在项目会上说星图进度滞后,被张副总当面顶了回去。”

他没有回复第二条,只回了个“谢谢”给第一条。

公交车来了,他上了车,在后排靠窗的位置坐下。车窗外的城市慢慢从城北工业区过渡到老城区的居民楼,灯光一盏接一盏地亮起来,像有人在天幕上钉钉子。他靠在椅背上,闭上眼睛,脑子里还在过前置处理模块的参数——相机标定精度的误差补偿系数需要再调,环形光源的同步触发延时也要改。这些事明明可以明天做,但手指习惯性地在膝盖上敲代码的节奏,像一种停不下来的惯性。

手机震了一下。他睁开眼,是林晓的短信,只有一行字:“孙老板那个单子,做得漂亮。”

他不知道林晓从哪里知道的。他没有回,把手机翻了个面扣在腿上。车到站了,他站起来,从后门下去。冬天的风扑在脸上,带着老小区特有的煤炉味和炒菜油烟。他快步往家走,远远看见五楼自家的窗户亮着灯,厨房的抽油烟机排出一缕白色的热气,在灰黑的楼体上格外显眼。

父亲一定在煮饺子。他加快了脚步。

第十一章 陆明远的饭局

十二月的最后一周,云城下了一场小雨。雨不大,但冷,渗进骨头里那种冷。周远山从孙老板的五金厂回来之后,连续五天泡在办公室里改前置处理模块的代码。环形光源同步触发延时的问题解决了,相机标定精度的误差补偿系数从原来的百分之三压到了百分之零点八,误判率跟着往下掉了一截。贺明把新的测试数据发给了孙老板,孙老板回了四个字:“年后签单。”

这句话值多少钱,周远山心里有数。七八个做冲压和注塑的老板,如果有一半转化,明年上半年公司的现金流就能稳住。但前提是,星云科技得活着撑到明年春天。

十二月二十九号下午,周远山收到一封邮件。发件人是一家叫“远见咨询”的公司,正文只有两行字:“陆明远先生希望与您面谈,时间地点由您定。以下为联系方式。”下面附了一个手机号。

周远山盯着那封邮件看了很久。办公室的暖气片烧得发烫,窗户上凝了一层水雾。贺明从外面跑客户回来,推门进来,身上带着雨水的潮气。

“看什么呢?”

“陆明远找我吃饭。”

贺明把湿外套挂在门后的钉子上,愣了一下:“他找你?在哪儿?”

“没说,让我定。”

“不去。”贺明走到桌前,拿起周远山的保温杯拧开喝了一口,“这人的饭,吃了要吐骨头。”

周远山把邮件关掉,靠回椅背上。窗外的雨打在空调外机上,滴答滴答响个不停。他沉默了一会儿,说:“他找我,无非是星图出事了。沈若溪上个月说过,项目进度滞后,张副总在会上顶了他。我查了云城智科第三季度的财报,星图项目的研发费用超支了百分之四十,但客户交付一个都没完成。”

“所以他想让你回去擦屁股?”

“不确定。但我想去听听他说什么。”

贺明把保温杯放下,看着周远山:“你要是去了,他录音怎么办?他那种人,什么手段都使得出来。”

“约在人多的餐厅,他录不了。再说,我一个被裁的人,他录我能录出什么名堂?”

贺明没再劝。他跟周远山共事三年,知道这个人一旦做了决定就不会改。他只是从口袋里掏出一支录音笔放在桌上:“带这个。不是让你录他,是万一出了事,你手里有东西。”

周远山把那支录音笔拿起来看了看,放进外套内侧口袋。

地点是陆明远定的,云城东二环的“悦江阁”,云城最贵的餐厅之一。周远山去过一次,还是三年前公司年会,陆明远包了最大的包厢,对着全部门的人说“明年带大家去三亚”。后来三亚没去成,部门倒是裁了一半。

十二月三十号晚上七点,周远山穿着那件穿了四年的深灰羽绒服走进悦江阁。门口的迎宾看到他,眼神在他身上停了一瞬,随即微笑着问:“请问先生几位?”

“陆明远先生订的位。”

迎宾的表情立刻变了,亲自把他带到二楼靠窗的包厢。包厢不大,一张圆桌配四把椅子,桌上铺着米白的桌布,餐具是青瓷的。陆明远已经到了,坐在靠窗的位置,面前摆着一壶茶。他穿了一件藏青色的羊绒衫,头发梳得整齐,看起来比在公司时松弛许多。

“远山,来了。坐。”陆明远抬手示意,拿起茶壶给他倒了一杯,“铁观音,你以前喜欢喝的那种。”

周远山在他对面坐下,没碰那杯茶,只是把外套脱下来搭在旁边的椅子上。包厢里暖气很足,窗外是二环的夜景,车灯连成一片流动的光带。

陆明远给自己也倒了茶,端起来抿了一口,目光落在周远山脸上。两人之间隔着一张圆桌的距离,桌上的青瓷茶壶冒着细细的热气。

“我就直说了。”陆明远放下茶杯,手指在桌沿上轻轻敲了两下,“星云科技,你开个价,并入云城智科。你过来做技术副总,年薪在原来的基础上翻三倍。之前裁员的事,一笔勾销。”

周远山看着他,手指搭在桌布边缘,没有立刻接话。窗外的霓虹灯映在陆明远脸上,光影明灭。

“陆总,”周远山终于开口,声音不高,“你那个星图项目,现在怎么样了?”

陆明远的手指停了一拍。他脸上那层从容的笑没变,但嘴角的弧度僵了一瞬。“这不是你该关心的。”他端起茶壶又给自己添了半杯,“你走之后的事,公司有公司的安排。”

“我查过云城智科的公开财报。”周远山身体微微前倾,语气平缓得像在做技术汇报,“星图项目连续两个季度研发费用超支,第三季度超了百分之四十。客户退款率百分之十七——这个数字在系统集成行业里,意味着技术指标根本达不到合同要求。”

陆明远端茶杯的手停在嘴边。

“陆总,你的技术团队搞不定那个算法。”周远山直视他的眼睛,“星图的核心调度逻辑,当初是我写的。我走的时候,代码里留了三个扩展接口和一套参数自适应机制,但文档只写了一半。接手的人如果看不懂我写的注释风格,参数调优就会一直卡在收敛曲线上。超支的百分之四十,都花在反复测试和返工上了吧。”

包厢里安静了几秒。窗外传来楼下大厅隐约的钢琴声,弹的是一首老歌。陆明远慢慢放下茶杯,杯底磕在青瓷碟上,发出一声脆响。

“周远山。”他脸上的笑终于收了,声音沉下来,带着一种压着的锋利,“你别敬酒不吃。”

周远山站起来,拿起外套搭在手臂上。他低下头,看着陆明远那张微微发红的脸,说:“陆总,这顿饭我请了。”

他从口袋里掏出三张一百的钞票,平整地放在桌布上,压在茶杯旁边。三百块,一杯茶都没喝,但够了。他转身走向包厢门口,手搭在门把上时停了一步,没有回头。

“星图的参数自适应机制有一个缺陷,在工位数量超过十二个的时候会陷入局部最优。这个问题我当初没写在文档里,因为当时还没解决。你要是想解决,让你的技术团队重新看我留在代码库第六百四十二行的注释,那里有个标记。”

他拉开门,走了出去。门外走廊铺着深红的地毯,踩上去没有声音。他沿着楼梯往下走,经过二楼大厅时,迎宾小姐对他微笑点头。他走出悦江阁的大门,冷风灌进衣领,雨已经停了,地面上湿漉漉地反射着路灯的光。

周远山站在路边,掏出手机看了一眼。贺明五分钟前发了一条消息:“情况怎么样?”他正要回复,屏幕上弹出一条新信息,没有备注姓名,号码是陌生的。

“周先生,我是远见咨询的张琳。陆总让我转告你,竞业协议的事他再给你三天时间考虑。另外,星云科技目前正在接触的客户名单,云城智科法务部已经整理完毕。”

周远山盯着那行字看了两秒,把手机揣回口袋。他伸手拦了一辆出租车,拉开车门坐进去。司机问去哪儿,他说城北科技园。

车开出去的时候,他回头看了一眼悦江阁的二楼。窗边的位置已经空了,米白色的桌布上有一小片青瓷杯磕出来的茶渍。三张百元钞票压在杯底,被风吹得翘起一角。

他收回目光,靠在车座上,从外套内侧口袋里摸出那支贺明给他的录音笔。笔身的指示灯亮着,一直亮着。他按了一下停止键,屏幕显示录音时长四十七分钟。

他把录音笔握在手里,拇指摩挲着金属外壳。出租车穿过老城区一片低矮的居民楼,路灯的光一盏一盏掠进车窗,又掠出去。他知道,三天之后如果他不答应陆明远的条件,云城智科的法务部不会只发一条短信。竞业协议、保密条款、股权纠纷,这些东西会像一张网一样罩下来。但他更清楚的是,星图项目的技术困境已经摆在陆明远桌上了,不管他答不答应,陆明远都必须在年前解决那个参数收敛问题。

否则云城智科的下一份季报,会比这一份更难看。

出租车驶上高架桥,城北科技园的灯光在远处渐渐清晰。周远山把录音笔收好,给贺明回了三个字:“谈崩了。”

第十二章 天使轮

周远山回到城北科技园那间三十平米的办公室时,贺明正蹲在地上焊一块电路板,烙铁头冒着细烟,空气里有松香的味道。他抬头看了周远山一眼,把烙铁往支架上一搁。

“谈崩了?”

“崩得挺彻底。”周远山把外套挂在门后的钉子上,走到自己的工位前坐下,打开电脑。屏幕亮起来,代码编辑器里是五金厂质检系统的核心模块,光标停在第三百七十行。他盯着那行代码看了十几秒,手指搭在键盘上没动。

贺明从冰箱里摸出两罐啤酒,走过来放了一罐在他桌上。“崩就崩了。陆明远那种人,能谈成才怪了。”他拉开拉环喝了一口,“不过你得有个心理准备,竞业协议那个事,他要是真起诉,咱们这点家底不够打官司的。”

周远山拿起啤酒喝了一口,冰凉的液体顺着喉咙下去,把胸口那点闷气压了下去。他正想说什么,手机响了。屏幕上是一个陌生号码,本地座机。他犹豫了一下,接起来。

“周远山先生?”对方是个中年男人的声音,嗓门洪亮,带着一股工厂车间里才有的直爽,“我是常宏五金厂的常德胜。你们给我装的那套质检系统,我用了半个月了。”

周远山坐直了身体。“常总,系统有什么问题吗?”

“问题?”常德胜笑了一声,“问题就是太好用了。我那个干了十五年的质检老师傅老刘,现在每天只干半天活,剩下半天在车间里转悠,说要找你拜师。他干了半辈子,眼睛都看花了,你这套东西一秒拍八张照片,把毛刺、划痕、尺寸偏差全标出来了。老刘说比他准。”

周远山嘴角动了一下。“那就好。后续如果有什么参数需要调整——”

“参数先不急。”常德胜打断他,“我有个朋友,做精密冲压的,姓赵,叫赵恒。他听我说了这个系统,想见见你。就明天,你有没有空?”

周远山握着手机的手指收紧了一瞬。他看了一眼贺明,贺明正竖着耳朵听,嘴里那口啤酒含在腮帮子里没咽下去。

“有空。”周远山说。

“行,明天下午两点,城东的悦然茶楼。赵恒这个人不绕弯子,你把你那套东西给他看就行。对了,”常德胜顿了一下,“他做过二十年制造业,从车间主任干到老板,什么技术都见过。你别跟他讲虚的。”

挂了电话,贺明把啤酒咽下去。“赵恒?做精密冲压的?是不是城东工业园区那家恒远精工?”

“你认识?”

“恒远精工。”贺明眼睛亮起来,“那可是给汽车厂做配套的,光冲压机就四十多台。他要是看上了你的系统,别说五金厂,整个汽车零部件行业都能进去。”他站起来在办公室里走了两圈,“不行,我得把演示视频重新剪一遍,把五金厂那个案例的数据叠加上去。”

周远山摇头。“不用剪。常总说了,赵恒不绕弯子。那种人看的是实物,不是视频。”

第二天下午,周远山提前二十分钟到了悦然茶楼。他带了一台笔记本和一块移动硬盘,硬盘里存着五个客户系统的运行日志。常德胜介绍过来的客户,加上最早那家五金厂和两家零配件厂,一共五套系统在跑,上线时间最短的也有两周。这些日志里记录了每一张被检测的工件照片、算法判定的时间、误判率和人工复核结果。

赵恒比他预想的来得准时。四十八岁的男人,穿一件深灰色夹克,袖口磨得发亮,一看就是常年穿工装的人。他个子不高,肩膀很宽,手掌伸出来的时候能看见虎口和指尖的老茧。跟周远山握了手,径直在对面坐下,说:“常德胜说你那套东西快,准,便宜。说说看。”

周远山没有打开PPT。他把笔记本转过去,屏幕上是五金厂系统的实时界面,左边是高速相机拍下的工件图像,右边是算法标出的缺陷位置,红色框、橙色框、绿色框分别对应不同等级的瑕疵。界面下方有一行数字在跳动:当前检测工件数,一万三千四百二十一;平均单件检测耗时,零点零三秒。

“常总那边主要是冲压件。您的工厂做精密冲压,工件更小,公差更严。”周远山指着屏幕上的参数面板,“我把常总那套系统的参数调整逻辑开放了一部分给操作员,你可以根据工件特征自己调敏感度,不用改代码。检测速度主要取决于相机帧率和调度算法。市面上进口的方案我也研究过,同样规格的相机,他们的系统跑一张图要一百二十毫秒。我们这套,在常总的工件上,平均三十毫秒。”

赵恒盯着屏幕看了半分钟。他伸手点了一下界面上的回放按钮,系统调出一条十秒前刚被判定为不合格的工件记录。图像放慢到千分之一速度逐帧播放,第二十三帧上,工件边缘有一个宽度不到零点零二毫米的毛刺被红色框标出。

“这个精度,”赵恒收回手,靠在椅背上,“进口那套系统也能做到。但他们要三倍的钱,还要配一个硕士学历的工程师专门调参,三个月才能上线。你的东西,常德胜那个只有初中学历的操作工,一个星期就上手了。”

“算法做了一部分参数自适应。”周远山翻到系统的后台日志页,“这五家客户的平均误判率在千分之三以下。每套系统上线之后的前两周,我的算法会自动收集人工复核的结果,不断调整判定阈值。两周之后,误判率基本稳定,不需要人工介入。”

赵恒沉默了一会儿。他端起茶杯喝了一口,放下杯子的时候发出一声轻响。“我厂里现在用的是日本基恩士的方案。一台检测设备加三年服务费,一百二十万。我有六条产线,每一条配两台。你算算我花了多少。”

周远山没接话。他知道赵恒不需要他算。

“你的系统,一套多少钱?”

“根据产线配置,三十到五十万之间。”周远山说,“一次性买断,含三年远程维护。后续升级单独报价。”

赵恒的手指在桌面上敲了两下。“常德胜那套多少钱?”

“十二万。他只有两条产线,工件种类单一。”

赵恒笑了一声。那笑声短促,从鼻腔里哼出来,是常年跟数字和机器打交道的人算完账之后才会有的声音。“我六个厂区,十七条产线。你要是能在一个月内给我上线第一条产线,把误判率控制在千分之五以下,剩下十六条产线全给你。”

周远山看着他。“第一条产线,二十天。”

“二十天?”赵恒挑眉。

“常总那条线,我从进场到稳定运行,用了十七天。您的工件比他的复杂,但我在常总那边积累的参数自适应经验可以迁移过来。”周远山顿了一下,“二十天,误判率千分之四以下。”

赵恒盯着他看了几秒。然后他掏出手机,拨了一个号码。“老陈,把我明天上午的会推到下午。”挂了电话,他看向周远山,“明天上午九点,你来我厂里。我让工艺部的人配合你,先把第一条线的方案定了。”

周远山点头。他收拾笔记本的时候,赵恒突然又问了一句:“你那个算法,我听常德胜说是你一个人写的?”

“核心调度算法是我写的。工业视觉的部分是和贺明一起做的。”

赵恒站起来,把手插进夹克口袋。“我做了二十年制造业,见过太多技术出身的老板死在管理上。你把我这十七条线做下来,光这一块的收入就是八百万。但你得想清楚,你是想继续写代码,还是想当老板。”

周远山把笔记本装进包里,拉上拉链。“先把第一条线做出来再说。”

赵恒看了他一眼,没再说什么,转身走了。茶楼里下午的光斜照进来,照在赵恒刚才坐过的那把椅子上。周远山拿起手机,给贺明发了一条消息:“明天进恒远精工,第一条产线二十天交付。”

贺明秒回:“你现在在哪儿?我开车来接你,路上聊。”

周远山回:“不用接,我坐地铁。你先把恒远精工的产线资料找出来,我回去一起看。”

他走出茶楼,站在路边等红绿灯。手机又震了一下,这次是赵恒发来的短信,只有一个银行账号和一行字:“明天签合同,首款百分之四十,一百二十万,二十天后验收合格付尾款六十万。另外,如果你愿意接受天使投资,我出五百万,占股百分之十五。回个话。”

周远山站在初冬的风里,看着那行字。五百万。百分之十五。他想起半个月前和贺明凑钱买二手服务器的时候,贺明把最后一张信用卡刷爆了,两个人坐在办公室里算了半天账,最后决定共用一台电脑。他打字回复:“赵总,明天面谈。”

赵恒回了一个字:“好。”

周远山把手机揣进口袋。绿灯亮了,他跟着人流走过斑马线,城东的街道比城北宽,路边的梧桐树叶子落了大半,枝丫在灰白色的天空下伸着。他走了几步,停下来又掏出手机,给贺明发了一条新消息:“咱们不用睡办公室了。”

贺明的回复隔了半分钟才来:“我已经买了新睡袋,更贵的。”后面跟了一个咧嘴笑的表情。

周远山看着那条消息,笑了一声。他收起手机,继续往前走。风从北面吹过来,带着远处工厂区隐约的机器轰鸣声。他走过两栋写字楼之间的窄巷时,忽然想起很久以前林晓问过他的一句话——“你总觉得自己能做出点什么,可做出来又有什么用呢?”那时候他没回答。现在他想了想,还是没想出该怎么回答。但他知道,明天早上九点,恒远精工的车间里,有一台冲压机在等他。那台机器每一下冲压的间隔是二点八秒。他要做的,就是让那二点八秒里的每一帧图像都被正确判读。

其他的事,往后放一放。

第十三章 沈若溪的选择

沈若溪把辞职信打印出来的时候,打印机的指示灯闪了三次才吐出那张A4纸。她拿起信纸看了一眼,措辞很简短,没有感谢栽培之类的客套话,只写了一句“因个人职业规划调整,申请辞去产品总监一职,望批准”。签名栏落在纸的右下角,黑色墨水,笔画利落。

她穿过走廊时,人事部的玻璃门关着,透过百叶窗缝能看见林晓坐在工位上对着电脑,屏幕上是密密麻麻的表格。沈若溪没停步,直接上了四楼副总裁办公区。

陆明远的秘书伸手拦了一下:“沈总,陆总在开会。”

“我等他。”

沈若溪在走廊的沙发上坐下来,辞职信放在膝盖上,手指压着纸的边缘。等了大约二十分钟,会议室的门开了,几个西装革履的人鱼贯而出,陆明远走在最后,正侧头和财务总监说着什么,脸上带着那种应酬完投资方之后惯有的松弛笑意。他转头看见沈若溪,笑意收了收。

“进来。”

办公室门关上之后,陆明远坐到办公桌后面,随手翻了两下桌上的文件,才抬眼看她。“什么事?”

沈若溪把辞职信放到桌面上,推了过去。

陆明远低头看了一眼,没拿起来。他靠在椅背上,手指交叉搁在腹部,盯着沈若溪看了几秒。“因为周远山?”

“因为我自己。”

“行了。”陆明远摆了摆手,语气里带着一丝不耐烦,“你走了星图谁来管?那帮从大厂挖来的人连他的代码逻辑都看不懂,上周服务器扩容,他们改了一个参数,整个调度模块崩了两个小时。最后还是你打电话问周远山才解决的。”

沈若溪没接话。

“我没签字,你走不了。”陆明远把信纸往旁边一推,动作里带着笃定,“竞业协议里面写得很清楚,核心技术岗位离职需要提前三个月报备,且不得入职同行业竞争公司。你是产品总监,掌握星图项目的全部产品文档,你现在走,法务部那关就过不去。”

沈若溪看着他,忽然觉得这个场景有些可笑。一个月前周远山坐在这里的时候,陆明远大概也是用同样的语气说着同样的话。只是她比周远山多了一个选择,她可以在陆明远说完之前站起来走人。

“陆总,”她的声音很平,没有起伏,“星图的核心代码已经没人能维护了。你从大厂挖来的那三个人,一个只会做上层应用,一个连调度算法的边界条件都没搞明白,还有一个上周把数据库连接池配错了,差点把生产环境搞挂。这事你知道,我也知道。你现在留我,是因为你清楚,我一走,星图项目连最后一个能看懂周远山架构的人都没了。”

陆明远的脸色沉下来,手指在桌面上敲了一下。“你是在威胁我?”

“我只是不想再替你背锅。”沈若溪站起来,把辞职信又往他面前推了两寸,“星图的项目进度已经落后原计划两个月了。客户那边开始抱怨了,上周华东区的示范线出了三次误判,大厂的人查了三天没找到原因,最后发现是特征提取的参数没适配新工件。这事如果继续下去,年底的验收肯定过不了。你不签我的辞职信,可以,那我就请病假。病假条我会让医院开得合理合法。”

陆明远盯着她,下颌的肌肉绷紧了一瞬。他拿起辞职信,翻到最后一页,拿起笔,笔尖悬在签名栏上方。“你想好了?出了这个门,云城智科的年终奖、期权、还有你手头那个还没归属完的股权激励,全都归零。”

“想好了。”

陆明远签了字,把信纸往桌角一甩。“走吧。”

沈若溪拿回信纸,折了两折放进包里。她走到门口,手搭在门把上,停了一下。身后传来陆明远的声音,比刚才低了些:“沈若溪,周远山那个小作坊撑不了多久。天使轮那点钱,半年就能烧完。到时候你别回来找我。”

沈若溪没回头。“陆总,你连星图的代码都保不住,就别操心别人烧不烧得完钱了。”

她拉开门走出去。走廊尽头是电梯间,她按了下行键,等电梯的时候从包里掏出手机。屏幕上还留着上午和周远山的聊天记录,最后一条是她发的“恒远精工那边第一条线进展怎么样”,周远山回了四个字“二十天稳的”。

电梯到了。她走进轿厢,按下一楼,信号在电梯里断了一瞬。等门在一楼大厅打开,她重新解锁屏幕,指尖在输入框里停了两秒,然后打出一行字:

“我辞职了,星云还缺人吗?”

消息发出去之后她穿过大厅,推开玻璃门,初冬的风灌进衣领。她站在台阶上等回复,手机震了一下。

周远山:“缺一个产品总监,工资不高,但有股权。”

沈若溪盯着那行字,嘴角动了一下。她打字回:“明天报到。”

发完之后她看见对话框上方跳了一下,周远山又发来一条:“工资真的不高,比你现在少一半,你要想清楚。”

“陆明远刚才还想拿竞业协议卡我。”沈若溪回,“你觉得我是因为工资才来的?”

这次周远山隔了十几秒才回,“明天上午九点,城北科技园B座302。贺明会给你办入职,他管行政。”

沈若溪把手机放进包里,走下台阶。风把她的头发吹到脸上,她伸手拨开。路边的梧桐树只剩下几片枯叶,在枝头晃着,要掉不掉。她沿着人行道往前走,经过云城智科大楼的玻璃幕墙,幕墙里映出一个快步走远的女人,步伐比平时快了些。

走了大约一百米,她忽然停下,掏出手机又看了一眼周远山刚才那条消息。302。她记得那个地址,三个月前她和周远山还在为星图项目开产品评审会的时候,那边还是一片刚交付的写字楼,租户空了大半,物业在楼下摆摊招租。现在那里有一间三十平米的办公室,里面坐着两个被裁的人,一个写代码,一个开网约车。她想了想,打开备忘录,输入“星云科技产品规划初稿”,然后锁屏,继续往前走。

走到路口的时候,手机又响了。这次是林晓发来的消息,只有一句话:“你走了,星图怎么办?”

沈若溪停在斑马线前,看着这条消息。红灯跳成绿灯,身边的人流涌过路口,她站在原地没动,打字回了一句:“你当初把周远山裁掉的时候,有没有想过星图怎么办?”

消息发出去之后她没等回复,把手机调成静音塞进包里。绿灯闪了几下,很快就要变红。她迈步走过斑马线,走到对面人行道的时候,回头看了一眼云城智科的大楼。四楼那排窗户的灯还亮着。她收回目光,往地铁站的方向走去。今晚她要花点时间写一份产品文档,明天早上九点前要到城北科技园。公交站牌上的电子屏显示外面温度六度,她收紧了外套领口,脚步没停。

第十四章 竞业诉讼

传票是快递送来的,一个牛皮纸信封,封口处盖着云城市云溪区人民法院的章。贺明签收的时候还以为是客户寄来的样品,拆开扫了一眼,脸上的笑就僵住了。

“远山。”他拿着那张纸走进里间,声音发干,“云城智科把我们告了。”

周远山正俯身在调试一台二手工控机,手里的螺丝刀没停,只是偏过头来看了一眼。贺明把传票递过去,他放下工具,抽了张纸巾擦掉指尖的机油,才接过来。纸张上列着诉讼请求:判令被告立即停止使用与原告“星图”智能调度算法相关的技术方案;判令被告赔偿经济损失及合理维权费用共计人民币一千二百万元;判令对被告名下银行账户采取诉前财产保全措施。诉状后面附了厚厚一叠证据清单,第一页就是周远山在云城智科任职期间签署的保密协议和竞业限制条款复印件。

“一千二百万。”贺明靠在门框上,声音里压着一种透骨的凉,“他们知道我们账上总共才多少钱。天使轮那五百万,付了房租、买了设备、发了三个月工资,现在只剩下不到两百万的流动资金。账户一冻,咱们连下个月的服务器托管费都交不出来。”

周远山把传票翻到最后一页,落款日期是十二天前。他算了算,那正是恒远精工第二条产线交付的日子。陆明远挑这个时间点,就是要在他刚站稳脚跟的时候一脚踹翻。

“什么时候开庭?”

“下周四。”贺明把手机屏幕转过来给他看,“法院那边的电子送达平台上能查到,简易程序,独任审判,估计他们想速战速决。”

周远山把传票折好,放进抽屉里,又拿起螺丝刀继续拧那台工控机的侧板。贺明急了,走过来按住他的手:“你倒是说句话,咱们怎么办?请律师要钱,应诉要时间,恒远那边第三条线正在谈,这个节骨眼上出这种事,客户听到风声肯定要观望。”

“律师要找,应诉要准备。”周远山把最后一颗螺丝拧紧,直起身来,活动了一下僵硬的颈椎,“但你先别慌。陆明远告的是‘星图’算法,而我们做的质检系统,底层调度逻辑确实借鉴了星图的思路,这一点不假。”

贺明脸色发白。

“但借鉴的是我在云城智科之前就写在纸上的东西。”周远山走到自己的工位,拉开最下面那层抽屉,从一堆旧笔记本底下翻出一个透明文件袋。里面是一沓泛黄的稿纸,上面密密麻麻画着流程图和公式推导,页脚都标着日期。最早的一页写着八年前的月份。那是他在读研期间写的第一版智能调度模型,比入职云城智科整整早了四年。

“这些手稿,前年我做过公证。”他把文件袋放在桌上,“云城智科告我违反竞业协议,前提是我用了他们的商业秘密。但如果这个‘秘密’本身就是我带来的,那就不成立。”

贺明愣了几秒,随即眼睛亮起来。“你早就防着这一手?”

“不是防。是习惯。”周远山淡淡地说,“写代码的人,每一版草稿都留着,万一哪天需要回溯设计思路呢。”

话虽如此,他心里清楚,光靠手稿还不够。陆明远一定会咬死一点:星云科技现在的质检系统,在特征提取和任务调度模块上,与“星图”项目后期的实现方案高度相似。因为那个后期方案,本质上就是周远山把脑子里早有的构想,用云城智科的资源做了工程化落地。法律上这属于职务成果,哪怕核心创意来自他本人,只要利用了公司的开发环境和数据,权属界定就会变得极为复杂。

他需要第二组证据。一个能证明星云质检系统与星图算法在底层逻辑上根本不同的技术证据。

“贺明,你还记不记得我们第一个五金厂的项目?”周远山问。

“记得,恒远精工嘛,十二万那单。”

“我为什么从五金件质检切入,而不是直接做智能调度?”

贺明想了想:“你当时说,质检是单点问题,调度是系统问题,先从点做起,验证算法可靠性。”

“那只是表面理由。”周远山打开笔记本电脑,调出星云质检系统的代码仓库,屏幕上密密麻麻的提交记录像树的年轮一样铺展开来。他指着第一条提交记录说:“星图的核心是‘预测性调度’,本质是排程优化,数学上是动态规划加约束求解。而质检系统的核心是‘缺陷模式识别’,底层是卷积神经网络加异常检测。两者共享的只是最顶层的工程框架,就像两栋楼用了同一种脚手架,但结构体系完全不同,一个是钢结构,一个是混凝土。”

他把代码仓库的完整记录导出了一份,包括每一次提交的时间戳、修改人、变更内容,以及持续集成的测试报告。这些记录从三个月前第一行代码开始,每一天都有迹可循,证明整个系统的演化路径与星图毫无交集。

“他们可以说你参考了星图的架构思想。”贺明提出质疑。

“架构思想不受著作权法保护。”周远山说,“算法表达才受保护。我的代码仓库里每一行调度逻辑,都与星图项目后期那个版本有本质差异。这一点,让第三方技术鉴定机构出一份比对报告就行。”

贺明点头,但眉头还是锁着:“就算技术上能说清,打官司耗时耗力,而且陆明远肯定还有后手。他既然敢索赔一千二百万,说明手里捏着什么我们不知道的东西。”

周远山沉默了几秒。他知道陆明远手里有什么——那份扩大版竞业协议。去年夏天,陆明远曾以“核心技术人员激励计划”为名,让他签过一份补充协议,里面把竞业限制范围从“同类算法研发”扩展到了“任何与智能调度相关的技术领域”,地域从云城扩大到了全国,期限从一年延长到了三年。当时周远山据理力争,删掉了其中关于“不得从事任何工业软件相关业务”的条款,但陆明远在盖章版本里有没有偷偷加回去,他无法确定。那份协议的原件他手里没有,沈若溪当时想帮他调取,被法务部挡了回来。

“贺明,给沈若溪打个电话。”周远山说,“问问她手里有没有云城智科内部关于我那份补充协议的存档。”

贺明掏出手机走到外间去打电话。周远山独自坐在办公室里,目光落在文件袋里那些泛黄的稿纸上。八年前的墨水已经有些洇散了,但每一个公式符号他都认得。那是在大学图书馆三楼靠窗的位置写下的,窗外有一排银杏树,秋天叶子黄了又落,落了又黄。那时候他二十四岁,觉得只要代码写得足够好,世界就会给他让路。现在他三十二岁,坐在一间三十平米的出租办公室里,被前东家索赔一千二百万。

他拿起手机给赵恒发了条消息,只写了六个字:“被起诉了,别慌。”过了几分钟,赵恒回过来:“慌什么,我投的是你的人。需要我帮你找律师吗?我认识几个做过科技类知识产权案的。”

周远山回:“要的。明天见面聊。”

消息刚发出去,沈若溪的电话就打进来了。贺明在外面喊了一声:“若溪回电话了!”周远山接起座机,沈若溪的声音从听筒里传来,比平时快了半拍:“那份补充协议我手里没有原件,但我有扫描件。去年你签完之后,我让法务部一个相熟的同事帮忙留了一份电子档,存在我的加密硬盘里。本来想找机会给你,后来你走了,这事儿就没提。”

“扫描件上面怎么写的?”

“你当时删掉的那几条,在盖章版里又加回来了。”沈若溪顿了一下,“陆明远在你签完字之后,让法务部重新排版打印了一份,把‘不得从事任何工业软件相关业务’那条塞了回去。你签的那份,和最终存档的那份,内容不一致。”

周远山握着听筒的手指紧了紧。这意味着陆明远不仅试图用竞业协议限制他,还存在伪造协议内容的嫌疑。而那份被篡改的协议,正是云城智科起诉他违反竞业限制的核心依据。

“你能把扫描件发给我吗?”

“已经发了。”沈若溪说,“附件里还有一个文档,是我整理的云城智科内部邮件截图。去年八月,陆明远发过一封邮件给技术部主管,要求清理服务器上‘与星图项目无关的个人开发资料’,特别提到了你的工位号。那封邮件的用意,就是删除你设计星图时留下的开发日志和原始设计文档。”

周远山闭上眼,深深吸了一口气。这就是第三组证据。陆明远删掉了他在云城智科内部的开发记录,以为这样就能把星图的原始创意据为己有。但他不知道,那些被删掉的设计文档,周远山在离职前最后一天,已经用私人硬盘做了备份。而备份的原因很简单——他习惯对自己的每一份工作成果留档。这个习惯曾经让林晓嘲笑他“多此一举”,现在却成了陆明远最致命的漏洞。

“沈若溪。”他开口,声音比平时低了些,“谢谢你。”

电话那头沉默了两秒。“别谢我,我是为了我自己,也为了星图。陆明远当初砍项目,不是因为技术不行,是因为你在他不方便捞钱。现在他起诉你,也是因为你走了之后,他发现星图离了你根本转不动。我帮你,就是想看他输。”

“下周开庭,你能来吗?”

“我会作为证人出庭。”沈若溪说,“你那份补充协议的扫描件,我会当庭提交。另外,财务部那边我联系了一个人,他愿意证明陆明远在星图项目上虚报了三百万的预算,实际研发投入连三分之一都不到。这跟你们的诉讼没直接关系,但能解释他为什么急着要置你于死地——他怕你把星图的真实情况捅出去。”

挂了电话,周远山坐在椅子上没动。窗外是城北科技园空旷的街景,初冬的阳光很淡,照在对面楼栋的玻璃上没有温度。他把手稿、代码仓库记录和沈若溪发来的邮件截图在桌面上排开,三组证据,三个方向,分别指向竞业协议无效、技术方案独立和对方证据造假。

贺明推门进来,脸上还带着打电话时的红。“若溪怎么说?”

“她帮我们准备好了。”周远山把桌面上的文件推到贺明面前,“下周四,我们出庭。”

贺明拿起那份补充协议的扫描件看了一眼,看到被篡改回去的条款时,嘴里啧了一声。“这也行?陆明远胆子也太大了吧。”

“所以他急了。”周远山站起来,走到窗边。科技园里的梧桐树光秃秃的,电线杆上停着几只麻雀,缩着脖子。他想起三年前刚入职云城智科的时候,陆明远请他吃饭,在酒桌上拍着他的肩膀说“好好干,公司不会亏待你的”。那时候他还相信这句话。

“贺明。”他转过身,“这一仗打完,我们就再也没有回头路了。”

贺明把文件放回桌上,咧嘴一笑:“回头路?我开网约车那半个月,早就把回头路跑没了。你就说怎么干。”

周远山重新坐回工位,打开电脑,开始整理证据清单。键盘声在安静的办公室里响起来,清脆而连贯,像某种倒计时。

第十五章 林晓的道歉

诉讼结束后的第三天,云城下了今冬第一场像样的雨。雨丝不密,但冷得透骨,顺着咖啡馆的落地窗蜿蜒而下,把街对面的梧桐树模糊成一片灰褐色的剪影。周远山比约定时间早到了十分钟,选了靠墙角的位置。他习惯性地把手机屏幕朝下扣在桌面上,这是当年做工程师时养成的习惯,开会或者谈事的时候,不希望任何通知打断思路。

林晓推门进来的时候带着一身潮气,米色大衣的肩膀上洇开几块深色水渍。她环顾了一圈,目光落到周远山身上,脚步顿了一下,才走过来坐下。两个人之间隔着一张胡桃木色的小方桌,桌面上摆着一只细颈玻璃瓶,插着一枝干枯的尤加利叶。

“你来得早。”林晓把包放在旁边的椅子上,手指拢了拢被风吹乱的头发。她没怎么变,妆容依旧细致,只是眼角多了两道很浅的纹路,眼下遮瑕膏涂得比平时厚了些。

“习惯了。”周远山说。

服务员过来点单,林晓要了一杯热美式,周远山要了杯温水。等服务员走开,两个人沉默了几秒。窗外的雨声很轻,轻得像什么东西在悄悄融化。

“官司的事,我听说了。”林晓先开口,声音比她平时说话低一些,“沈若溪出庭作证那天,公司内部就传开了。陆明远在走廊里摔了杯子。”

“他没找人事部的麻烦?”

林晓嘴角扯了一下,算不上笑。“找了。上周五开了个紧急管理层会议,说星图项目失败的责任在人事部——裁员之后技术团队补充不力,导致核心模块无人接手。我在会上没说话,会后就递了辞呈。”

周远山端起水杯喝了一口。他想起三个月前那个下午,林晓站在会议室前面,面无表情地念出裁员名单,他的名字排在最前面。那时候她看他的眼神像在看一个陌生人。现在她坐在对面,手指无意识地转动着咖啡杯,指甲边缘被抠得有些毛糙。

“你今后什么打算?”他问。

“可能去外地,换个行业。”林晓说,“云城这边,圈子就这么大。陆明远虽然现在焦头烂额,但他那个人,缓过劲来还会折腾。我待着没意思。”

周远山点点头,没接话。窗外有一对年轻情侣撑着伞跑过去,男生把伞往女生那边倾斜,自己半边肩膀露在雨里。林晓顺着他的目光看了一眼,很快收回来。

“远山。”她叫他的名字,停顿了一会儿。这个停顿里有很多东西,像是要把接下来那句话从很深的地方捞上来。“当年离婚,我说你没出息,是我错了。”

咖啡馆里放着一首很慢的爵士乐,萨克斯风的声音混在雨声里,若有若无。周远山看着她,发现她眼眶有些发红,但忍着没让泪落下来。她今天特意涂了口红,颜色比平时淡,像是刻意不想让自己看起来太用力。

“那时候你每天加班,周六周日也不着家,我一个人去医院做检查,一个人过生日,一个人对着冷锅冷灶。”林晓的声音微微发颤,“我说你没出息,其实是气话。我心里知道你在做的东西有价值,只是我……等不了了。”

周远山沉默了片刻。他想说点什么,但所有能想到的话在脑子里转了一圈,都觉得不对。最后他说:“你没有错,那时候的我确实顾不上家。”

这句话是真的。三年前他刚进云城智科,一门心思扑在星图的架构设计上,连父亲生日都错过了两次。林晓那时候抱怨过,闹过,后来不闹了,直接递了离婚协议。他在协议上签字那天,办公室的灯亮到凌晨三点,他在改一段调度算法的参数,改完之后趴在桌上睡了一会儿,醒来发现手机上有林晓发来的最后一条消息:签完了告诉我。

“我们还能……”林晓说到这里停住了。她抬起头看着周远山,嘴唇动了动,后半句话始终没有说出来。但她眼里的那个问号很清晰。

周远山轻轻摇了摇头。摇得很慢,像是怕伤到她,但又很确定。

“林晓,我们都该往前走了。”

他说这句话的时候语气很平,像是在说一件两个人都已经明白的事情。没有责备,没有嘲讽,也没有居高临下的原谅。就是往前走,各走各的路。

林晓盯着他看了几秒,然后低下头笑了笑。这次是真的笑了,虽然笑容很淡,但眼角的纹路舒展开来,像是放下了什么很重的东西。

“你说得对。”她拿起包站起来,从钱包里抽出一张钞票放在桌上,“这杯我请。”

周远山没有推辞。两个人一前一后走出咖啡馆,站在门口窄窄的雨棚下面。雨已经小了很多,只剩下细密的雨丝在空中飘着,几乎感觉不到重量。

“那就这样。”林晓把大衣领子竖起来,侧过脸看了他一眼,“周远山,保重。”

“你也是。”

林晓转身朝左边走,高跟鞋踩在湿漉漉的地砖上,发出清脆的声响。她没有回头,走了十几步就汇入了人行道上往来的人流,米色大衣很快被灰蒙蒙的街景吞没。

周远山站在原地,双手插在口袋里。雨丝落在他的头发上,凝成极细的水珠。他朝右边走,走到街角的时候等红灯,下意识地回头看了一眼。来来往往的行人撑着各色雨伞,把整条街填得满满当当。林晓那个方向已经看不到米色的大衣了,人群像潮水一样把所有的痕迹都抹平了。

绿灯亮了。周远山过了马路,掏出手机叫了辆车。坐进后座的时候,司机问去哪儿,他说城北科技园。手机屏幕上弹出一条新消息,是贺明发来的:赵恒那边约了明天上午十点,谈天使轮的具体条款。另外,五金厂老板又介绍了一个客户,做汽配的,也想上质检系统。

周远山回了一个字:好。

车在雨里开得很稳当,雨刷有节奏地左右摆动。他靠在座椅上看着窗外,云城的天际线在雨雾里变得模糊而柔软。手机又震了一下,这次是沈若溪发来的:听说林晓离职了。你还好吗?

他想了想,打了一行字:还好。明天来公司,赵恒要过来,一起见。

发完之后他把手机收进口袋,闭上眼睛。出租车驶过城东老城区,他透过车窗瞥见父亲住的那个小区,阳台上晾着几件衣服,在风里轻轻晃。他没有让司机绕路,车继续往前开,驶过护城河上的桥,桥下的水面被雨点打出细密的涟漪,一圈套着一圈,往外扩散,然后消失。

到了科技园门口,雨已经停了。周远山下车,踩着湿漉漉的路面往办公楼走。三十平米的办公室亮着灯,贺明肯定在里面调设备。他推开单元门的时候,口袋里的手机又震了一下。这回是一个陌生号码发来的短信,只有一句话:陆明远今天下午被董事会约谈了,据说是关于星图项目三百万预算去向的事。发信人没有署名。

周远山看了一眼,把手机放回口袋,没有回复。他推开办公室的门,贺明正蹲在地上接一根网线,听见声音抬起头。

“回来了?林晓怎么样?”

“走了。”周远山走到工位前坐下,打开电脑,“把赵恒那个方案再改一版,明天要用。”

贺明哦了一声,没再多问,继续低头接线。键盘声很快在办公室里响起来,一下一下,不急不缓。窗外的天空开始暗下来,雨后的云层裂开一道缝,透出淡金色的光,照在对面楼栋湿漉漉的墙面上,反射出细碎的光斑。

周远山盯着屏幕上的代码,手指在键盘上停了一瞬。他想起林晓最后那个笑容,想起她说“保重”时的语气,想起很多年前他们刚认识的时候,她在图书馆门口等他,手里拿着两杯奶茶,笑着说你迟到了十分钟,罚你请我吃饭。那些画面很清晰,但已经不会再让他感到疼痛了。像是看了一场很久以前看过的电影,记得情节,记得对白,但坐在观众席上的人已经换了一拨。

他把注意力收回到代码上,开始逐行检查贺明写的质检模块接口。屏幕的蓝光映在他脸上,和窗外渐渐暗下去的天色融在一起。办公室的灯管闪了一下,发出轻微的电流声,然后稳定下来,把整个房间照得明亮而安静。

第十六章 星图重生

发布会定在城东会展中心三号厅,周四下午两点。

周远山提前四十分钟到场,沈若溪已经在后台调试演示系统。她穿了一件深灰色的西装外套,头发扎成低马尾,站在控制台前跟灯光师确认追光角度。看见周远山进来,她朝他招了招手。

“你爸那边安排好了?贺明去接的?”

“嗯,一点半到的,安排在第三排靠过道的位置。”周远山走到她身边,看了一眼监视器画面,“PPT翻页笔试过了吗。”

“试了三遍,没问题。”沈若溪把一支翻页笔递给他,“你讲技术架构那部分,别超过十八分钟,后面媒体问答环节我控制时间。”

周远山接过翻页笔,在掌心掂了掂。后台能听见前排观众入场的嘈杂声,椅子挪动的声音,有人咳嗽,有人低声交谈。贺明从侧门探进来半个脑袋,比了个手势,意思是人都到齐了。

两点整,灯光暗下来。

周远山从侧幕走出来,站到舞台中央。追光打在身上,台下黑压压坐满了人。前排是三家投资机构的代表,赵恒坐在正中间,旁边是两家上市制造企业的技术负责人。后排是媒体记者和从各个渠道收到邀请函的中小工厂老板,大概来了两百多人。最后面还站着一些没有座位的观众,靠着墙根。

他开口第一句话很平:“三年前我在云城智科提出星图算法的构想,后来项目被砍了。今天站在这里,我想说的是,星图没有死。”

台下安静了半秒,然后响起一阵掌声。赵恒坐在第一排,没有鼓掌,只是微微点了点头。

周远山点开第一张幻灯片。大屏幕上出现了一个复杂的产线三维模型,零件在传送带上高速流动,每个工位上方都悬浮着一个淡蓝色的检测框。

“工业质检的痛点从来不在算法精度,在于调度。”他走到屏幕侧边,用翻页笔的光点圈住模型里的传送带,“一条产线十二个工位,每个工位检测时间不同,传统方案让整条线按最慢的工位跑,效率被拖垮。星轨系统做的事情,是把星图算法里最核心的动态规划能力抽出来,给每一个检测工位做独立的时序分配。”

他按下遥控器,画面切换成实时的数据流。左边是传统方案的检测节拍曲线,波峰波谷像锯齿一样剧烈起伏;右边是星轨系统的曲线,几乎是一条平直的线。

“同一组零件,传统方案检测完成需要四十七分钟。星轨系统——”他停了一下,让数字跳出来,“七分五十秒。”

台下有人轻轻吸了一口气。后排一个戴眼镜的中年男人掏出手机对着屏幕拍了一张。

周远山又展示了三组对比数据,每一组都是真实客户产线上的实测结果。他没有用夸张的词汇,语速平稳,偶尔停下来等翻译把英文术语写清楚。讲到第六分钟的时候,他切换到系统架构图,指着中间一层模块说:“这一层叫调度内核,代码一共两万三千行。其中有一万四千行,是我在城北那间三十平米办公室里写的。”

他看向沈若溪的方向,沈若溪从侧幕走到台前,接过话筒。

“我补充一下客户数据。”她的声音清亮而笃定,点开下一页幻灯片,“星轨系统从七月正式商用至今,累计接入三家上市制造企业和十七家中小工厂。覆盖汽配、五金、电子元器件三个品类,检测零件总数——”她扫了一眼台下,语速放慢,“两亿零四百万件。”

幻灯片上跳出具体的企业标识。台下几个制造企业的老板坐直了身体,有人开始拿笔记录。

“废品率平均降低百分之六十三,误检率控制在万分之三以下。”沈若溪切换到客户证言视频,一个五金厂的生产主管站在车间里,背后是嗡嗡作响的产线,他操着云城本地口音说:“以前一个班要六个人盯着,现在两个人就够了。关键是零件下线速度比以前快了不止一倍。”

视频播完,沈若溪走回台侧。周远山重新走到舞台中央,停了几秒。没有急着翻页,他低头看了一眼手里的翻页笔,然后抬起头,目光越过前排的灯光区,落在第三排靠过道的位置上。

“最后我想请一个人上台。”

追光转向观众席,落在周父身上。老人今天穿了一件干净的灰蓝色夹克,头发梳得整整齐齐,是贺明上午帮他打理的。他扶着椅背站起来,旁边的观众让出通道。周远山走下台,搀着父亲的胳膊,一步一步引到舞台上。

台下很安静,只有相机快门的声音。

周父站在大屏幕前,眯着眼看上面“星轨”两个字。灯光有点亮,他抬手挡了一下,侧过头问周远山:“这什么字?”

“星轨,爸。我们新系统的名字。”

老人凑近屏幕又看了一眼,嘴里念叨了一遍:“星轨。”然后他转过头,对着话筒的方向,声音不大但很清晰:“这比你以前那个星图好看。”

台下静了一秒,紧接着爆发出笑声和掌声。前排一个记者笑得差点把录音笔掉在地上。赵恒也笑了,一边笑一边用手背蹭了一下眼角。

周远山扶着父亲的肩膀,等掌声平息下来。他弯下腰,凑到父亲耳边说了一句话,因为没关话筒,声音传了出去:“爸,星图没死,它变成星轨了。”

老人听懂了,点了点头,伸手拍了拍周远山搭在他肩上的那只手。然后他忽然想起来什么似的,又对着话筒补了一句:“那你多吃点饭,瘦了。”

台下又是一阵笑。沈若溪站在台侧,一只手掩着嘴,眼睛弯成两道月牙。

周远山把父亲搀下台,交给贺明照顾。重新回到台上的时候,他的声音比之前微微沉了一些,但每一个字都落得很稳。

“星轨不是星图的替代品。星图当年解决的是单条产线的问题,星轨解决的是整个工厂的协同。这中间隔了三年,隔了一个公司从无到有,隔了很多人的坚持。”他没有再展开,把话筒交还给主持人,退到台侧。

媒体问答环节沈若溪顶在前面,周远山站在她身后两步远的位置,偶尔补充一两句技术细节。一个行业媒体的记者问:“星轨的定价策略是什么?会不会走低价抢市场的路线?”

沈若溪回答得很干脆:“我们的定价比同类进口方案低四成,但不会低于成本线。星轨的目标是让中小工厂也用得起工业AI,不是把市场做烂。”

发布会持续了将近两个小时。散场后赵恒走过来,拍了拍周远山的肩膀:“架构讲得清楚,客户数据扎实。下一步该考虑规模化的事了。”

周远山点点头,目光越过赵恒的肩膀,看见父亲坐在第三排的椅子上没走,贺明正蹲在旁边跟他说着什么。老人手里攥着一张发布会的宣传单,上面印着星轨系统的标志,一条淡蓝色的轨道绕着齿轮旋转。

他走过去,在父亲身边坐下来。老人侧过脸打量了他一会儿,忽然说:“你妈要是能看到就好了。”

周远山没有接话。他伸手握住父亲那只布满皱纹的手,老人的掌心温热而干燥,指节因为常年握粉笔有些变形。两个人就那么坐着,看工作人员撤掉前排的隔离带,折叠椅一张张收拢,发出金属碰撞的脆响。

会展中心外面的天已经泛出暮色,深秋的风从敞开的侧门灌进来,带着梧桐叶枯黄的气味。周远山给父亲把夹克拉链拉上,站起身。

“回家吧,爸。今晚想吃什么?”

“饺子。”老人站起来,拍了拍裤腿上并不存在的灰尘,“你上次包的那个白菜馅不错。”

贺明把车开到侧门等着。周远山扶着父亲上了后座,自己坐进副驾驶。车驶出会展中心停车场的时候,他看见沈若溪站在门口台阶上,正跟赵恒说着什么。她似乎感应到了目光,抬起头朝车的方向看了一眼,远远地挥了挥手。

周远山摇下车窗,也朝她挥了一下。然后车窗升上去,把暮色和风声都挡在外面。贺明打开车载广播,新闻里播报着云城本地一家上市公司三季度业绩下滑的消息,没有提名字。周远山听了几句,伸手把音量拧小。

车驶过护城河,桥上的路灯刚刚亮起来,在水面上投下一长串晃动的橘黄色光斑,随着水波一明一灭地往远处流去。

第十七章 拒绝收购

签约室里空调开得太足,周远山把西装外套脱了搭在椅背上。对面坐着云城智科新任CEO特别助理,姓方,四十来岁,一副金丝边眼镜架在窄鼻梁上,翻文件的时候手指微微发抖。桌子正中间摆着一份授权协议草案,厚得像本毕业论文。

“周总,条款您都看过了,法务那边逐条确认过,没问题的话下午就能盖章。”方助理把签字笔推过来,笔帽上的金属夹在桌上磕出清脆一声。

周远山没接笔。他翻到第十七页,指尖点在某条补充条款上:“这儿,‘若乙方三年内未达到约定授权收益下限,甲方有权重新议价’。这个下限是多少,文件里没写。”

方助理的喉结动了一下:“这个……后面附了计算公式,在附录三。”

“附录三我看了。公式里有个参数是浮动基准利率,挂钩的是云城智科的股价。”周远山把文件合上,手腕搭在上面,“云城智科股价从年初到现在跌了四成,用你们的股价做锚,三年后这个授权费可能直接归零。”

方助理摘下眼镜擦了擦:“周总,我们真的是带着诚意来的。”

“两亿的收购诚意我已经领了,不卖。”周远山说,“授权方案我接受,但补充条款要改。授权费不挂钩任何一方股价,按行业标准梯次定价,每年上浮不超过百分之五。另外加一条,云城智科若将星轨技术转授权给第三方,需经星云书面同意。”

方助理沉默了几秒,掏出手机走到窗边发消息。周远山靠在椅背上,目光越过对方肩膀看向窗外。城东科技园的银杏树全黄了,叶子落下来铺在楼下的步道上,两个保洁员正用鼓风机往一处吹,金灿灿的一堆。

贺明坐在他旁边,小声说:“法务那边我盯着,你别担心。”

“不担心。”周远山说,“他们比我急。”

他没说错。云城智科三个月前发布的财报里,智能调度业务板块的营收同比下降了百分之六十七,陆明远主导的那个“星图重构计划”不但没救活项目,还把原有的客户得罪了大半。三季度末股价跌到历史低点,董事会终于坐不住,把陆明远的副总裁职务一撸到底,顺带着连他招进来的那批人也清了个干净。新任CEO是从华南大区调过来的老人,作风务实,上来第一件事就是找星云谈合作。

方助理打完电话回来,脸色比刚才松了一些:“周总,董事会那边同意了。补充条款按您的意思改,但授权年限能不能从五年延长到八年?”

“七年。”周远山说,“第七年结束前双方协商是否续约。”

“行。”方助理重新打开笔记本,“我把条款记一下,下午出修订版。”

周远山站起来,走到窗边活动了一下肩颈。手机在裤兜里震了一下,他掏出来看,是沈若溪发来的消息:谈妥了?他回了一个字:七成。

沈若溪秒回:等你回来,食堂今天红烧肉不错。

周远山嘴角动了一下,把手机揣回去。转身的时候,余光扫过签约室门口的玻璃墙,一个熟悉的身影正从走廊尽头快步经过。陆明远。他没穿西装,一件深灰色夹克,头发比上次见面白了不少,手里拎着个牛皮纸档案袋,身旁跟着个年轻人,看模样像是法务。两个人脚步很快,皮鞋跟敲在大理石地面上嗒嗒作响,一拐弯消失在电梯间方向。

方助理顺着他的目光看了一眼,压低了声音:“今天上午刚办完离职手续。董事会的意思,给足体面,不对外发公告。”

周远山没接话,回到座位上坐下。方助理又斟酌着开了口:“周总,其实收购方案最初是陆总……陆明远提的,后来董事会改了方向,选择授权合作。但两亿的估值是他定的,他说星云最多值这个数。”

贺明嗤笑了一声:“他倒是大方。”

周远山用脚在桌子底下碰了贺明一下。贺明抿住嘴,低头翻文件去了。

修订版授权协议在下午四点签完。没有发布会,没有香槟,两边的法务各自留档,方助理握了握周远山的手说了句“合作愉快”,就急匆匆赶回云城智科总部复命去了。签约室里只剩下周远山和贺明,桌上的茶杯都没来得及收。

贺明把协议正本装进公文包,拉上拉链,抬头看周远山:“你刚才在窗边看什么?陆明远?”

“嗯。”

“他活该。”贺明说得干脆,“星图的数据他拿走了,团队他挖走了,结果搞了半年连基础框架都搭不起来。我听说他们内部有人开玩笑,说星图在陆总手里变成了星糊。”

周远山把西装外套搭在胳膊上,往门口走:“走吧,食堂红烧肉该凉了。”

手机又响了一声,这次是短信。他一边走一边点开,号码陌生,内容只有三个字:你赢了。

没有署名。周远山在电梯口站定,拇指悬在屏幕上方停了两秒。走廊尽头的窗户开着半扇,秋风灌进来,把他衬衫下摆吹得猎猎作响,领带也斜了。

贺明凑过来瞄了一眼:“谁啊?”

“发错了。”周远山按灭屏幕,长按那条短信,点了删除。蓝色的气泡消失在屏幕边缘,像一滴水蒸发在空气里。

回到公司,沈若溪已经在食堂占好了位置,三份饭并排摆在长桌上,红烧肉的酱汁在餐盘格子里汪出油亮的一小滩。她看见周远山进来,招了招手。

周远山坐下,把外套搭在旁边的空椅背上。沈若溪把筷子递给他:“协议签了?”

“签了。”他夹了一块红烧肉放进嘴里,土豆烧得绵软,肉皮弹牙。

“陆明远的事听说了?”

“看见了。”

沈若溪顿了一下,筷子停在半空:“你没什么感觉?”

周远山嚼完嘴里的东西,拿纸巾擦了擦嘴角:“解气吗?有一点。但他赢不赢、输不输,跟星轨能不能帮更多工厂比起来,不重要。”

沈若溪看着他,目光在他脸上停了几秒。然后她低下头,把餐盘里的青菜拨到一边,声音轻得像自言自语:“你这个反应比骂他一顿还狠。”

贺明端了碗汤过来,在周远山旁边坐下,呼噜喝了一口:“对了,下周去临安那家汽配厂做终验,对方催得紧,说产线停一天损失二十万。”

“明天我把测试用例再过一遍。”周远山说,“你帮我把下季度的授权分成报表做出来,方助理那边要备档。”

三个人低头吃饭。食堂的电视开着,正在播云城本地新闻,画面里记者站在一栋写字楼前,背后是云城智科的招牌。标题一行大字:云城智科三季度业绩触底,宣布战略调整。画面切到新任CEO的采访片段,那人面带微笑说“我们会更聚焦核心技术,不排除与优秀的技术伙伴展开深度合作”。

贺明用筷子指了指电视:“说的就是我们。”

周远山没抬头,把碗里最后一块土豆夹起来吃了。沈若溪把电视音量调小,换到了综艺频道。

窗外天色暗下来,科技园的景观灯次第亮起,暖黄色的光打在银杏树上,落叶铺了一地细碎的金黄。周远山把餐盘送到回收处,站在食堂门口的台阶上等沈若溪和贺明。夜风带着桂花香,从护城河方向远远地飘过来。

他摸了摸兜里的手机,那条短信已经删得干干净净。短信不在于回不回,有些人消失在你的生活里,就是最好的回答。

第十八章 城东的旧楼与新的早晨

城东科技园最里头那栋楼,是园区最早建的一批,外墙的瓷砖已经泛了灰黄,楼前的银杏倒是长得极好。深秋一到,整条路都铺成金色,风一过就簌簌往下掉叶子,保洁员扫成堆又散开,索性不管了。

周远山站在一楼大厅里,仰头看工人往墙上装公司招牌。星云科技四个字,银灰色哑光,嵌在米白色的石材底板上,边缘被射灯一打,有层淡淡的金属光泽。贺明从地下一层跑上来,手里拎着半卷没拆封的网线,额头上汗津津的。

“三楼西边那间实验室,配电箱扩容做完了,赵恒那边催着要验收单,你下午有空签个字。”贺明把网线往地上一搁,手掌在裤子上蹭了蹭灰,“你爸呢?不是说今天接过来看看?”

周远山看了眼手机,十点差一刻:“若溪去接了,应该快到了。”

话音刚落,门口停下一辆白色轿车。沈若溪从驾驶座下来,绕到副驾拉开门,弯腰扶周父下车。周父穿了件深灰色的夹克,头发梳得整齐,只是脚底有点虚浮,一只脚落地后停了两秒,才把另一只迈出来。

“慢点。”沈若溪扶着他胳膊,等老人站稳了,顺手把车门关上。

周远山迎出去,从另一边搀住父亲的手肘:“爸,这就是我跟您说的新地方。刚搬过来,还有点乱。”

周父抬头看了看楼,又看看门口那几个银灰色的大字,嘴唇动了动,念出声:“星……云。”

“对。”

“好名字。”周父点点头,迈步往里走,脚步比刚才稳了些,“云往上升,好。”

贺明从里面搬了把椅子出来,想让他坐,周父摆摆手,说要走走。于是一行四人慢慢穿过一楼大厅,绕过还在拆箱的服务器机柜区,坐电梯上了顶楼。

顶楼整层是个开放式空间,南面和东面都是落地玻璃,光线充足。靠西侧隔出几间办公室,其余地方摆着工位和会议桌,已经有二十来个员工在忙,键盘声此起彼伏,夹杂着几句低声讨论。看见周远山带着人上来,靠近电梯口的两个年轻员工站起来叫了声“周总”。

周远山点头,带父亲穿过工位区,推开南面的一扇玻璃门,外面是半露天的阳台。阳台不大,铺了防腐木地板,摆着两组藤编桌椅,角落里有几盆绿植,叶子被晒得发蔫,显然疏于打理。楼下是园区内花园,几棵桂花还没谢净,细碎的黄花簇在枝丫间,香气若有若无地飘上来。

周父走到栏杆边,两只手搭在横杆上,低头往下看。花园里有几个年轻人在散步,还有一个人蹲在花坛边逗流浪猫。秋风把落叶卷起来,在砖铺的小径上打着旋。

“你妈要是能看到就好了。”周父说,声音不高,被风削得有些散。

周远山站在他右手边,伸出手,覆在父亲搭着栏杆的手背上。那只手比记忆中薄了很多,指节凸出,皮肤松弛,手背上几块淡褐色的老年斑连成一片。他轻轻握了握。

“她看得到。”周远山说。

周父没有回头,依然望着楼下。过了十几秒,他眨了几下眼,松开一只手指了指花园东边一棵桂花树:“你妈喜欢桂花。以前咱家院子里那棵,每年秋天她都要摘一罐子做糖桂花,给你蘸年糕吃。”

“记得。”周远山说。

玻璃门在身后被推开,沈若溪端着两杯茶出来。她把其中一杯递到周父手边,纸杯外面套了层防烫的瓦楞套。

“周叔叔,喝茶。温度刚好,不烫。”

周父接过杯子,低头看了看水面上浮着的几片茶叶。然后他抬起头,目光在沈若溪脸上停住。他看了好几秒,那种看法不是老年人走神时的散漫,而是带着辨认意味的、专注的打量。

“小沈。”周父突然开口。

沈若溪端着另一杯茶的手微微一顿:“周叔叔,您认得我?”

“认得。”周父点头,语气笃定,“你比照片上好看。”

沈若溪愣住了,下意识看了周远山一眼。周远山嘴角弯了弯,语气很平常,没什么大惊小怪:“我爸记性时好时坏,但他记得你。之前给他看过一次合照,就今年春天,你、我和贺明去临安出差前那张。”

“那张啊……”沈若溪想起来了。当时她把手机递给周父看行程,屏幕上正好翻到上一张照片——三个人站在客户厂区门口,背后是辆白色商务车。她穿一件浅蓝色衬衫,头发被风吹得有些乱,笑得眯了眼。

“周叔叔好记性。”沈若溪把茶杯放到阳台角落的藤桌上,又朝周父笑了笑。

周父喝了口茶,另一只手还握着杯壁,像是在暖手。他转头继续看楼下,嘴角弯着,神情比刚来时松快了许多。

“这楼好。”周父说,“亮堂。比原来那个地下室强。”

他说的是星云最早的办公室。三十平米,半地下,手机永远没信号,贺明有一回在里面待了十二个小时,出来说头昏眼花想吐。周远山笑了:“地下室也有用处,省空调费。”

“胡扯。”周父难得地反驳,“夏天开抽湿机,电费比空调还贵。”

沈若溪在旁边轻轻笑出声。周远山看了她一眼,她正好也看过来,两人目光一碰,都没说话,但眼里有种默契的、柔软的亮。

周父喝完半杯茶,把杯子递给沈若溪,说想坐一会儿。沈若溪扶他到藤椅上坐下,又把旁边另一把椅子挪近了些,让他腿能搭上去。周远山站在栏杆边,手机震了一下,他掏出来看。

赵恒的消息,发来一份邮件截图和一句话:下轮融资意向书,你先看看,估值比上一轮翻了十二倍,细节下周面谈。

邮件标题很长,前半段是机构名称,后面跟着A轮投资意向四个字。周远山扫了两眼正文摘要,把手机按灭,揣回兜里。他没有立刻说什么,目光越过阳台,落在楼下花园对面那排老楼上。城东的旧楼群大多是上世纪九十年代建的厂房和宿舍,外墙斑驳,窗户还是老式的钢框玻璃,这几年陆续改造成了设计工作室和小型研发公司。夕阳斜照,旧楼的红砖和水泥面被染成暖融融的橘色,和新区那边冷灰色的玻璃幕墙完全两样。

沈若溪走过来,站到他旁边,也看着那片旧楼。

“赵恒发的?”她问。

“嗯。估值翻了十二倍。”

“你好像没那么高兴。”

周远山想了想:“高兴。但更高兴的是,楼下花园那几棵桂花树是原来厂区留下的,不是新栽的。树有二十年了。”

沈若溪偏过头看他,眉头微微挑起,像在解一道题。过了几秒她笑了,那种笑不响,但眼角弯得深。

“你这人,衡量事情的标准和别人不一样。”她说,然后也把目光投向楼下,“星轨的下一代架构,我有个想法。”

周远山转头看她:“说来听听。”

沈若溪把双手撑在栏杆上,身体微微前倾:“现在多工位协同检测用的是全局调度,但每个工位的硬件差异其实很大,老机床和新产线混在一起,全局参数经常互相拖累。我想试试分组自治,把相邻工序先做局部优化,再往上做二级协调,这样老旧设备不会拖累整条线。”

她说着,右手在栏杆上比划了两下,指尖划过空气,像在画一张看不见的架构图。

周远山盯着她手指划过的地方,脑子里同步在跑代码逻辑。几秒后他接过话头:“分组阈值怎么定?按设备响应时间,还是按工序耦合度?”

“耦合度优先,响应时间做次筛选。你记得大二那个分布式课程项目吗?我们当时做的故障隔离就是按模块耦合度分层,那个逻辑可以迁移过来。”

“那个项目最后拿了A,但代码我重写了三遍。”周远山说。

“因为你第一版硬编码了设备数量。”

“第二版也硬编码了。”

“第三版才用配置文件。”沈若溪说完,自己先笑出声,“那天你熬到凌晨四点,我在实验室沙发上睡了一觉,醒来你还在改。”

“你倒是睡得好。”

“我负责测试,你负责写,分工明确。”

两人靠着栏杆你一句我一句,声音不大,语速不快,有时说到关键处会同时停下来,各自在脑子里推演,然后几乎同时开口说出不同的实现路径,再比对哪个更优。周父坐在藤椅上,眯着眼看楼下。阳光斜着铺过来,把三个人的影子拉得又细又长,叠在防腐木地板上。

贺明从玻璃门里探出半个身子:“周总,赵恒那份东西你看了没?需要我准备什么材料?”

周远山没回头:“下周再说,先把临安的终验做完。”

“行。”贺明缩回去,门轻轻合上。

沈若溪继续说她关于分组自治的设想,提到一个边界条件时卡住了,手撑在栏杆上,皱着眉想。周远山也不催,目光落在远处旧楼群上方那道被夕阳镶了边的云线上。多年前大学实验室里的场景在记忆里折叠——实验台堆满电路板和外卖盒,日光灯白得刺眼,他和沈若溪也是这样并肩站着,一个人讲思路,一个人推缺陷,讲到深夜就各自趴在桌上睡,谁也没多想别的。

现在多想了一些,但讨论技术时的感觉没变。

“想到了。”沈若溪忽然说,“边界条件设在耦合度阈值上,但允许动态调节,每固定周期回溯一次历史数据,自动修正。”

周远山点头:“这个我可以写个验证用例,明天跑一下模拟产线数据。”

“好。”

沈若溪把茶杯里剩的半杯凉茶倒进旁边的绿植盆里,直起身,伸手整理了一下被风吹乱的头发。周父在藤椅上换了个姿势,靠着椅背闭了眼,呼吸均匀,像是睡着了。

周远山轻声说:“让他眯一会儿。”

沈若溪点头,轻手轻脚把另一把藤椅上的靠垫抽出来,垫在周父颈后。做完这些,她回到栏杆边,继续刚才没说完的技术细节。楼下花园里,那个逗猫的年轻人已经走了,流浪猫趴在花坛沿上,尾巴有一下没一下地甩着。桂花树的影子被拉向东南,覆盖了小半个草坪。

夕阳往旧楼群后面沉下去,天边铺了一层深橘红,慢慢往紫灰过渡。城东这片老厂区改造的科技园亮起了零星灯火,远处新区方向几栋新写字楼的玻璃幕墙反射出最后一点金光,像碎在水面上的鳞片。

周远山伸手握住沈若溪放在栏杆上的手。她的手指微凉,掌心有常年敲键盘磨出的薄茧。她没有抽回,只是用拇指轻轻回扣住他的指节。

“明天把分组自治的架构草图画出来。”周远山说。

“好。”沈若溪答。

风从护城河方向吹过来,带着深秋傍晚特有的清冽,混着桂花最后一丝甜香。楼下花园里路灯亮了,一圈暖暖的黄光笼住那排老桂花树。周父在藤椅上发出均匀的鼾声,一只手搭在扶手上,一只手搁在膝头,掌心向上,像在接一缕穿过楼群的夕阳。

(全文完)

文章虚拟演绎,请勿当真。