林峰把刚发出去的邮件又看了一遍,手指在桌面上敲了三下,像是确认什么似的。屏幕右下角的时间显示凌晨一点十七分,技术中心的灯光还亮着,几间实验室的门缝里透出蓝白相间的光。
他站起身,外套搭在椅背上,衬衫领口松了一颗扣子。走廊尽头传来脚步声,两个穿工装的人抱着设备箱快步走过,没打招呼,也没停下。
会议室的门开了,张锐站在门口,手里捏着平板,眉头拧成一团。“林总,人都到了。”
“走。”林峰抓起桌上的终端,顺手关掉还在滚动的全球热力图。
会议桌一圈坐满了人,大多是研发骨干,脸上的倦意藏不住。投影上挂着一份文档,标题是《t-series产品技术升级三年规划(V2.0)》,版本号比上一版多了七处修订标记。
林峰坐下,没寒暄,直接点开文档第一项:“远程诊断响应时间压缩到五分钟内——这个目标不变。但今天要加一条:所有海外订单配套的运维支持,必须能在本地触发预判式备件调度。”
底下有人抬头看了眼陈昊。技术总监坐在角落,双手交叉放在桌上,脸色平静,但指节微微泛白。
“林总,”张锐开口,“我们现在主控系统架构是三年前定的,现在要塞进第三方协作接口,等于在心脏旁边动刀。测试环境已经报错十七次,底层协议对不上。”
“我知道。”林峰点头,“所以今天不是来听‘做不到’的,是来定‘怎么做到’的。”
他调出上一封内部邮件的副本,投到大屏上。“这不是临时起意。客户签的是整套方案,我们卖的也不是硬件,是省心。如果机器坏了,等一周才把零件从国内运过去,那这套模式就崩了。”
没人说话。
“故障预测模型呢?”林峰转向算法组的负责人。
“新模型准确率确实提上去了,但在中东高温环境下加载后,系统延迟最高飙到八百毫秒,实时控制模块会卡顿。”
“能降吗?”
“可以降,但得砍功能。要么去掉动态负载调整,要么关掉自修复响应。”
林峰摇头:“不能拆。割一块出去,后期整合成本更高。我们要的不是半成品,是一体化解决方案。”
会议室安静了几秒。
陈昊终于开口:“我们试过边缘计算优化,但现有算力撑不住双线并发。除非换芯片,或者改通信协议。”
“换芯片周期太长。”林峰盯着数据流,“有没有可能借用外部方案做参考?”
张锐苦笑:“国际上的头部企业都捂得很严,这种级别的优化资料,根本拿不到。”
林峰没回应,而是打开了权限界面,输入一串代码。系统提示音响起,一份加密文档被解锁,标题是《边缘计算资源动态分配协议(v3.7)》。
“这是……”陈昊猛地坐直。
“合法授权的参考材料。”林峰说,“来源没问题,可以用作技术推导依据。你们重点看第三章的缓存调度逻辑,跟我们的场景有七成匹配度。”
张锐快速翻了几页,眼神变了。“这思路能用。如果我们把预测模型拆成两级,前端只跑基础判断,复杂分析交给边缘节点,延迟应该能压下来。”
“那就这么干。”林峰拍板,“明天中午前出新架构草案,后天进模拟环境测试。”
散会后,林峰没走。他留在会议室,把文档逐条拆解,标出优先级。张锐回来取落下的终端时,看见他还坐在那儿,屏幕上密密麻麻全是注释。
“林总,您不回去休息?”
“等测试结果。”林峰头都没抬,“你们先去调,有问题随时叫我。”
半夜三点,实验室警报响了一次。软件组发现新架构下,备件预置逻辑和硬件冗余策略撞车了。
“我们这边写的是动态触发。”软件组长指着代码,“根据故障概率自动推送零件,节省库存压力。”
“但我们没法保证物流随时到位。”硬件组的人反驳,“万一关键部件坏了,算法说‘下周送’,客户产线就得停。物理冗余最稳妥。”
两人争得面红耳赤,最后都看向陈昊。
“等林总决定。”他说。
林峰过来的时候,两组人还僵在原地。他听完情况,问了一句:“有没有可能两条路都走?”
“什么意思?”
“双轨验证。”他拿起笔,在白板上画了个框,“你们各自做原型,同一套测试环境,同一组故障模拟,跑七十二小时。谁的数据稳,谁的方案上。”
“可时间……”
“我给你们三天。”林峰看表,“现在是三点二十一分。周三下午五点前出结果。别谈难处,我要的是答案。”
人散了,走廊重新安静下来。
林峰回到监控台,盯着测试环境的实时数据流。左侧是软件组的动态调度模型,右侧是硬件组的全冗余方案。温度、负载、响应延迟、容错率……十几项指标在屏幕上跳动。
他喝了口凉透的咖啡,酸涩味在舌根蔓延。
第二天中午,初步数据出来了。动态模型在轻载状态下效率高,但遇到突发高负载,备件响应延迟拉到四小时以上;全冗余方案稳定,但资源占用多出四成,长期运行成本压不住。
“都不是最优解。”张锐递来报告,“但能不能……融合一下?”
林峰盯着曲线看了很久。“保留算法主导,但在关键部件上预设本地备份。比如主控板、电源模块这些高故障率零件,提前放两块在区域仓。其他低风险的,按预测调度。”
“那得改整个仓储逻辑。”陈昊皱眉。
“改。”林峰说,“现在就开始。先把中东和东欧的五个核心中转仓列出来,按新规则重配库存策略。”
下午四点,第一版融合方案上线测试。系统加载新协议后,延迟从最初的八百毫秒降到三百,再慢慢滑向一百五十。故障模拟触发三次,备件预置响应平均耗时三十七分钟,其中两次成功调用本地库存。
林峰站在大屏前,手指无意识地敲着桌面。
“还不够。”他说,“目标是十分钟内完成预判推送,二十分钟内锁定可用零件。”
“那得再压算法延迟。”张锐说,“现在的瓶颈在数据打包环节。”
林峰回头看他:“参考材料里那个分段压缩机制,能移植吗?”
“技术路径可行,但需要重构通信模块。”
“那就重构。”林峰打开任务面板,把“通信协议底层优化”拖到最高优先级,“今晚必须启动。”
晚上九点,实验室灯火通明。程序员在改代码,工程师在调参数,有人蹲在地上接线,有人趴在桌上写文档。林峰来回走动,时不时停下来问几句,然后在终端上记下要点。
十一点,第二次压力测试开始。新通信模块接入,数据打包效率提升明显,系统延迟一度降到九十毫秒,但在连续触发五次故障预警后,又反弹到两百。
“内存溢出。”技术人员喊了一声,“缓冲区撑不住了。”
林峰立刻调出资源占用图,发现某个子进程占用了异常高的带宽。
“查一下这个服务。”他指着其中一个进程编号。
张锐凑近看,脸色一变:“这是旧版日志上传模块,早就该停用了,怎么还在跑?”
“删。”林峰说,“现在就关。另外,所有非核心后台服务,全部做一次清理。明天早上我要看到资源占用下降三十个百分点。”
凌晨两点,第三次测试启动。
这一次,系统稳定在一百二十毫秒左右,故障响应全流程耗时压缩到二十三分钟。虽然还没到理想值,但方向明确了。
林峰站在监控台前,盯着不断刷新的数据流。大屏上,两条曲线逐渐靠拢,趋于平稳。
张锐走过来,声音沙哑:“接下来是硬件适配阶段,得跟生产端对接。”
“安排明天上午开会。”林峰说,“把供应链的人也叫上。”
他揉了揉太阳穴,视线落在屏幕右下角的一行小字上:【测试环境_模拟中东高温+沙尘场景_V4.3】。
“把下一阶段测试场景换成波兰冬季。”他说,“低温、湿雪、电力波动,全加上。别只盯着热的地方。”
张锐记下,转身要走。
“等等。”林峰突然叫住他,“刚才那个分段压缩机制,文档里提到有个备用通道切换逻辑,你看懂了吗?”
“有点模糊,可能是加密部分被截断了。”
林峰盯着屏幕,手指再次敲了三下。
“把它单独拎出来,成立一个小组专攻。明天中午前,我要知道能不能绕过现有协议,实现无缝切换。”