第10章 咖啡馆的审视(1/2)
屏幕的光蓝莹莹的,映着陈默的脸。
他敲下最后一个字符,保存文档。凌晨三点,屋里静得能听见电流声。眼皮沉得像坠了铅,他往后靠,椅背发出轻微的呻吟。
文档里列满了条目。
重构计划分四个阶段,每阶段拆成具体任务。时间精确到小时,旁边标注着难点和备用方案。密密麻麻的字,看久了像蚂蚁在爬。
他关掉文档,揉了揉太阳穴。
指尖冰凉,按在皮肤上有点刺痛。系统面板悄无声息地滑出来,悬在屏幕上方。精神力状态条是浅黄色,旁边有个小小的叹号。
“建议:四小时深度睡眠。”
陈默关了面板。他站起来,腿麻了,扶着桌子站了会儿。走到窗边,外面漆黑一片,只有远处高架桥上的车灯连成一条流动的光带。
他看了几分钟,拉上窗帘。
躺到床上,没脱衣服。被子有股陈旧的气味,像晒不干的棉絮。他侧过身,脸埋进枕头里。
呼吸慢慢变沉。
梦里全是代码。函数在跳,变量在闪,错误提示像红色的虫子往外涌。他伸手去抓,抓了个空。
闹钟在六点半响起。
声音尖利,像刀片划玻璃。陈默猛地睁开眼,盯着天花板上的裂纹看了三秒。伸手按掉闹钟,屋里恢复安静。
他坐起来,头重脚轻。
洗漱时冷水泼在脸上,才清醒些。镜子里的人眼圈发黑,下巴上的胡茬冒出一层青灰。他拿起剃须刀,嗡嗡声在狭小的卫生间里回荡。
泡沫是薄荷味的,很冲。
刮完胡子,皮肤有点刺痒。他用毛巾擦干,走到厨房。冰箱里只剩下两个鸡蛋和半盒牛奶。
他煎了蛋,就着牛奶喝下去。
味道很淡,像在嚼纸。吃完收拾干净,碗筷沥在架子上。水滴答滴答,节奏很慢。
上午八点,他坐到电脑前。
打开昨天列的文档,从头看一遍。手指在触摸板上滑动,光标一行行下移。看到第三阶段时,他停住了。
有个依赖项没考虑到。
他皱眉,快速新建一个便签。写下问题,贴在屏幕边缘。黄色的便签纸,很醒目。
然后他开始写代码。
键盘声密集起来,嗒嗒嗒嗒。阳光从窗帘缝隙溜进来,在地板上切出一道窄窄的光带。光里有灰尘在跳舞,上下翻飞。
写到十一点,他停下来。
手有点抖,是咖啡因的作用。早上那杯速溶咖啡太浓了。他起身倒水,玻璃杯碰着水龙头,叮一声。
水很凉,灌下去喉咙发紧。
他走回电脑前,系统面板又跳出来。这次没有警告,只有一行小字:“推演模式就绪,是否预演对话场景?”
陈默盯着那行字。
手指在桌面上敲了敲。一下,两下。他点了“是”。
视野边缘泛起淡蓝色的光晕。
像隔着一层毛玻璃,现实世界的轮廓变得模糊。耳边响起咖啡馆的背景音:隐约的音乐,杯碟碰撞声,远处的人语。
沈清澜坐在对面。
她的脸有点模糊,但眼神很清晰。灰色针织衫,头发松松挽着。手指捏着咖啡勺,轻轻搅动。
“开始吧。”她说。
声音透过推演传来,带着细微的失真。陈默吸了口气,开始讲解架构思路。语速平稳,重点突出。
讲到第三个模块时,沈清澜打断了他。
“这里,”她手指虚点,“和‘灵瞳’的处理逻辑很像。”问题尖锐,直指核心。
陈默顿了顿。
“借鉴了思路,”他说,“但实现完全不同。”他调出对比图,数据一行行展开。“他们的卷积核是固定的,我这里用了自适应参数。”
沈清澜身体前倾。
“证明给我看。”她说。推演里的她眼神更专注,像要穿透屏幕。
陈默调出测试结果。
图表跳出来,曲线分明。沈清澜看了很久,手指在桌上轻轻敲击。笃,笃,笃。节奏很慢。
“继续。”她说。
陈默往下讲。讲到性能优化部分时,他卡壳了。有个数据记不清,临时翻文档又显得不专业。
推演自动暂停。
蓝色的提示框浮出来:“关键数据缺失,建议标记。”陈默呼出口气,退出推演。
现实重新清晰起来。
电脑屏幕亮着,代码停在刚才的位置。他新建一个备忘录,把那个数据点标成红色。然后继续写。
下午一点,他煮了碗面。
清汤挂面,撒了点盐。热气扑到脸上,眼睛有点湿。他低头吃,面条滑进喉咙,没什么味道。
吃完洗了碗,手被热水烫得发红。
他用冷水冲了冲,擦干。回到电脑前,下午的工作是重构错误处理模块。这部分最枯燥,也最容易出错。
他戴上耳机,放了点白噪音。
雨声,淅淅沥沥的。键盘声混在里面,变得柔和了些。写到一半,手机震了一下。
是天气预报。
明天下午晴,气温十八度。他扫了一眼,关掉。手指没停,继续敲。
窗外天色渐渐暗下来。
傍晚五点,他保存所有进度。站起来活动肩膀,骨头嘎巴响了两声。走到窗边,推开窗户。
冷空气涌进来,带着街边的油烟味。
楼下小吃摊亮起灯,橙黄的光晕开在暮色里。吆喝声断断续续,听着有点远。
他看了会儿,关窗。
晚上简单热了剩饭,就着咸菜吃完。洗完澡出来,头发湿漉漉地滴着水。他用毛巾胡乱擦了擦,坐到书桌前。
明天要穿的衣服已经拿出来。
那件稍正式的外套,熨过,挂在椅背上。他摸了摸布料,质感粗糙,但版型还行。
背包也收拾好了。
电脑,充电器,演示用的草图,还有一支笔。拉链拉上,放在门口鞋柜上。
他躺到床上,关灯。
黑暗里,脑子反而清醒。推演的画面一帧帧回放:沈清澜的表情,可能的问题,自己的应答。
又过了一遍。
确认没有遗漏,他才放松下来。闭上眼睛,数自己的呼吸。一,二,三。数到五十几,睡着了。
这次没有梦。
醒来看手机,早上七点。天阴着,云层很厚。他起床,换好衣服。动作很慢,每个扣子都扣整齐。
吃早饭时喝了杯牛奶。
牛奶有点腥,他皱了皱眉,还是喝完了。洗好杯子,擦干手。走到门口,背上背包。
拉链声清脆。
他打开门,楼道里的声控灯应声亮起。昏黄的光,一级级台阶照下去。脚步声在空旷的楼梯间回荡。
走出单元门,冷风扑面。
他拉高外套拉链,手插进口袋。巷子里的积水结了层薄冰,踩上去咯吱响。早点摊的油锅冒着白汽,香味飘过来。
他没停,径直往前走。
公交站人不多,几个上班族缩着脖子等车。他站在最边上,看站牌上的线路图。
车来了,他投币上车。
后排靠窗位置空着,他坐下。背包抱在怀里,有点沉。车开动,窗外的街景开始后退。
商店陆续开门,卷帘门哗啦啦响。
他靠在玻璃上,额头贴着冰凉。眼睛闭着,但没睡。脑子里最后过一遍演示顺序。
车摇摇晃晃,像船。
到站时刚好两点二十。他下车,站牌对面就是蓝山咖啡馆。绿色招牌,字体很秀气。
他穿过马路,推门进去。
铃铛响,声音清脆。暖意混着咖啡香涌过来,他深吸了一口。店里人不多,靠窗位置都空着。
他挑了最里面的角落。
放下背包,脱掉外套搭在椅背上。服务员走过来,是个年轻女孩,围裙洗得发白。
“先生喝点什么?”
“美式,热的。”陈默说。女孩点头,转身离开。他环顾四周。
木制桌椅,暖色灯光,墙上挂着抽象画。音乐是轻爵士,萨克斯风悠悠地吹。背景音里有磨豆机的嗡嗡声,很轻。
他拿出电脑,开机。
屏幕亮起,他点开演示文件。检查最后一遍,参数都正常。合上电脑,放在桌上。
两点四十。
他端起水杯,喝了一口。水是柠檬味的,微酸。手指在桌面上无意识地画圈,一圈,又一圈。
门又被推开。
铃铛响。陈默抬头,沈清澜走进来。她今天穿了件浅灰色的毛衣,黑色长裤,头发松散地披着。
肩上挎着个帆布包,看起来沉甸甸的。
她扫视店内,目光落到陈默这边。没有挥手,只是微微点头。陈默也点头回应。
她走过来,脚步很稳。
拉开椅子坐下,帆布包放在脚边。动作自然,像来过很多次。服务员过来,她抬眼。
“拿铁,少奶泡。”
声音平淡,没有起伏。服务员记下,离开。沈清澜这才看向陈默。
“没迟到。”她说。
“我也刚到。”陈默说。他注意到她眼下有淡淡的青色,像没睡好。
沈清澜从帆布包里拿出笔记本电脑。深灰色金属外壳,边角有点磨损。她打开,按下开机键。
屏幕亮起,是纯黑的背景。
没有壁纸,只有几个文件夹图标。她点开一个,里面全是技术文档。光标快速移动,打开一个PDF。
“你的架构图我看了。”她开门见山。
陈默坐直身体。“嗯。”
“第三章第二节,”她手指虚点在屏幕上,“关于动态阈值的设定,解释一下。”
问题来得突然。
陈默吸了口气。他从背包里拿出打印的草图,铺在桌上。手指点着图表上的曲线。
“这里,”他说,“光照变化超过百分之三十,阈值自动调整。”他翻到下一页,“基于历史数据的滑动窗口计算,权重是……”
他讲了三分多钟。
语速平稳,数据准确。沈清澜听着,眼睛盯着草图。偶尔点一下头,幅度很小。
讲完,她沉默了几秒。
手指在触摸板上滑动,翻到下一页文档。“这个算法的复杂度,”她说,“在实际硬件上跑过吗?”
“模拟环境跑过。”陈默说,“树莓派4B,帧率能到十五。”
“实时性不够。”
“硬件限制。”陈默坦白,“如果用更好的GPU,可以提到三十以上。”
沈清澜抬眼看他。
“你知道市面上的安防摄像头用什么芯片吗?”她问,语气里听不出情绪。
陈默顿了顿。“知道。”
“那你还用这么重的模型?”
“模型可以裁剪。”陈默说,他调出另一个文件,“轻量版参数量只有百分之四十,精度损失控制在三个点以内。”
本章未完,点击下一页继续阅读。