晨光刺眼,陈默醒了。
他蜷在被子里,脑子昏沉。昨晚睡得很浅,梦境支离破碎。他坐起来,颈椎酸疼,像被绳子勒了一夜。
凉水泼在脸上,才清醒些。
锅里煮着挂面,水咕嘟咕嘟冒泡。他盯着气泡,眼神有点空。面煮好了,他加了一勺猪油,撒点盐。
端着碗坐到电脑前。
屏幕还黑着,映出他半张脸。头发有点乱,下巴冒出青茬。他扒了口面,右手碰了碰鼠标。
屏幕亮起,星空壁纸深邃。
他先打开“瞬瞳-alpha”文件夹。里面是空的,像一片待开垦的荒地。他新建了一个文档,命名为“环境配置清单”。
手指悬在键盘上,停了片刻。
视野边缘的图标,静静悬浮。他没急着调用系统,而是凭记忆敲下第一行:python 39,tensorflow 28,cuda 112。
敲字声很脆,咔嗒咔嗒。
窗外传来收废品的吆喝声,由远及近。陈默没抬头,继续敲。依赖库列表越来越长,滚轮往下滑了两页。
面吃完了,汤也喝光。
他洗碗,水流冲走碗壁的油星。擦干手,坐回来。这次,他调出系统界面,光标移到【推演】上。
输入问题:基于清单,最优安装顺序及避坑指南。
光球旋转起来。
蓝白色数据流快速掠过,像雨丝。几秒后,结果展开。系统不仅给出了顺序,还标注了几个版本冲突的雷区。
其中一条用红字标出:某视觉库最新版与cuda 112存在隐式兼容问题,建议降级至47版。
陈默记下了。
他打开命令行,黑色的窗口弹出。光标闪烁,他敲入第一行指令。下载进度条开始爬,绿色的光点缓慢右移。
网速有点慢,他等着。
风扇声嗡嗡作响,笔记本散热口喷出热风。他摸了摸键盘左侧,金属外壳已经发烫。他插上散热架,四个小风扇一齐转动。
噪音大了些,但温度很快降下去。
第一个包安装成功,提示符跳出来。陈默松了口气,接着敲第二条。时间一点点过去,窗外天色由亮转灰。
下午两点,他站起来活动。
腿坐麻了,一瘸一拐走到窗边。楼下巷子里,几个孩子在追打,笑声尖利。他看了一会儿,拉上窗帘。
房间暗下来,屏幕光更刺眼。
他揉了揉太阳穴,那里隐隐作痛。系统界面角落有个小小的状态条,显示“精神力储备:78”。比昨天少了点。
他关掉界面,继续干活。
环境搭到一半,出错了。命令行刷出一片红字,某个依赖项死活装不上。陈默皱眉,把错误信息复制下来。
丢进搜索引擎。
前几条结果都是广告。他往下翻,找到一个技术论坛的帖子。楼主遇到同样问题,底下有十几层讨论。
他快速浏览,手指滚动鼠标。
第七楼有个解决方案,但需要手动修改配置文件。他按着步骤做,敲代码,保存。重新运行安装命令。
进度条走到头,提示成功。
他靠回椅背,长长吐了口气。脖子后面全是汗,t恤黏在皮肤上。他起身脱掉外套,只穿一件短袖。
凉意贴上手臂,起了一层鸡皮疙瘩。
晚饭是饼干配白开水。他嚼得很慢,眼睛没离开屏幕。环境终于全部配好,他跑了一个简单的测试脚本。
输出结果正常,没有报错。
窗外天彻底黑了。远处楼顶的霓虹灯招牌亮起来,红光一闪一闪。陈默没开大灯,台灯的光圈拢住键盘这一小块。
他新建了第二个文档,“核心架构草图”。
这次他直接调用系统。光球旋转的时间更长,数据流密集得几乎连成一片。他盯着看,眼睛发酸。
结果是一张复杂的结构图。
分层清晰,模块间用箭头连接。旁边还有注释,写着每个模块的关键算法和预期性能指标。陈默放大,仔细看。
有个模块被标黄,注释是:“实时性瓶颈,传统方法延迟约120s,需优化至50s内。”
陈默记下了这个数字。
他开始画自己的草图,借鉴系统的设计,但加入自己的理解。数位板连上电脑,他用电子笔一点点勾勒。
笔尖划过板子,发出沙沙的轻响。
画到一半,他停住了。某个数据流的走向,他总觉得别扭。系统给出的方案效率最高,但耦合度太高,后期难修改。
他擦掉那部分,重新画。
新方案更清晰,但预估延迟会增加15毫秒。他犹豫了,笔尖悬在板子上方。台灯的光照着手背,血管微微凸起。
最终他选了新方案。
修改完,已经晚上十点。他保存文档,备份到云盘。做完这些,他关掉所有窗口,只留下一个音乐播放器。
钢琴曲流出来,和昨晚一样。
他靠在椅背上,闭上眼睛。音乐像水,漫过紧绷的神经。他听着,手指无意识地在膝盖上敲。
敲着敲着,节奏乱了。
脑子里还在转那个架构图。黄标模块,120毫秒到50毫秒。这落差像一道深沟,他得想办法跨过去。
他睁开眼,关掉音乐。
调出系统,输入新问题:实时视觉特征提取,延迟优化至50毫秒以下,现有技术路径推演。
光球再次旋转。
这次他感到明显的疲惫。太阳穴的痛感加深,像有根针在轻轻扎。他忍着,盯着屏幕。
推演结果出来,有三条路径。
第一条激进,用未经充分验证的新论文方法,风险高但潜力大。第二条保守,优化现有算法,稳扎稳打。第三条折中,混合方案。
陈默选了第三条。
他点开系统提供的参考文献链接,几十篇论文标题跳出来。他快速扫过,标记了其中五篇。
下载需要学术权限。
他以前的公司账号已经失效。他想了想,打开某个论坛,用积攒的技术积分换了一个临时访问权限。
论文下载下来,全是英文。
他泡了杯浓茶,茶叶放得很多,水变成褐红色。他喝了一口,苦得皱眉。但精神似乎振作了一点。
开始读论文。
密密麻麻的公式,曲折的算法流程图。他读得很慢,有时要退回前一段重看。台灯的光照在纸白的屏幕上,反射进眼睛。
读到第三篇时,他有了点灵感。
抓过数位板,在空白处快速演算。笔尖划过,留下蓝色的电子墨迹。他写下一行行推导,时而停住思考。
某个变换步骤卡住了。
他试了三种方法,都不对。烦躁涌上来,他扔下电子笔。笔滚到桌边,差点掉下去。他伸手捞住,握在手里。
掌心有汗,笔杆有点滑。
他深呼吸,再次调用系统。这次只问那个具体的变换问题。系统给出了一个巧妙的数学技巧,他看过,但没想到能这样用。
豁然开朗。
他抓起笔继续算,越写越快。推导完成,结果简洁优美。他盯着那几行公式,嘴角不自觉弯了一下。
很快又抿直。
他看看时间,凌晨一点半。茶早就凉了,表面凝了一层薄薄的膜。他端起来喝掉,凉茶更苦。
起来活动,走到窗边。
掀开窗帘一角,外面静悄悄的。巷子里的路灯坏了一盏,那段路黑乎乎的。偶尔有野猫窜过,影子一闪。
他站了几分钟,回到桌前。
开始编码。键盘声密集起来,像夏天的急雨。他先搭建基础框架,定义类,写接口。代码一行行累积,滚动条慢慢变短。
遇到难点,他就停一停。
有时查资料,有时用系统推演局部方案。态条缓慢下降,从78到65,再到54。
他的头痛也越来越明显。
像有根绳子勒在额头,越收越紧。他揉按太阳穴,力度很大,皮肤都按红了。效果微弱,痛感还在。
但他没停。
核心算法模块初具雏形。他写了一个简单的测试单元,跑了一遍。输出日志刷出来,没有报错,但有几个警告。
警告说,某处内存分配可能低效。
他仔细看那部分代码,确实有个循环可以优化。他重构了,再跑。警告消失,性能提升了一点点。
凌晨三点,他撑不住了。
眼睛干涩,看屏幕有重影。他保存所有工作,关机。屏幕暗下去,房间陷入黑暗。只有路由器指示灯,一点红光。
他摸着黑走到床边,栽倒下去。
衣服没脱,鞋子也没脱。脸埋进枕头,呼吸沉重。脑子里还在自动回放代码,像停不下来的走马灯。
他强迫自己数羊。
一只,两只,数到二十几只,意识才模糊。睡梦中,他梦见自己在爬一座很高的塔。塔是代码垒成的,台阶是键盘。
他爬得很累,但不敢停。
醒来时天还没亮。他摸过手机看时间,清晨五点。睡了不到两小时,但脑子清醒得可怕。
他坐起来,打开台灯。
摸过床头的笔记本和笔,把梦里想到的一个优化点记下来。字迹潦草,但自己能看懂。写完,他躺回去。
这次睡着了,无梦。
再醒来是上午九点。阳光从窗帘缝隙刺进来,一道光柱里灰尘翻滚。他坐起来,浑身骨头都在响。
煮面,吃面。
然后坐回电脑前,开机。继续写代码。今天的目标是把核心模块的接口都实现,并写好单元测试。
工作节奏和昨天类似。
敲代码,测试,调试,再敲。时间被分割成一块块的,每一块都填满了逻辑和符号。他很少起身,水杯就放在手边。
下午,门外传来敲门声。
他愣了下,才反应过来不是幻觉。起身去开门,是房东老太太。她拎着一袋桔子,笑眯眯的。
“小陈啊,没打扰你吧?”
“没。”陈默让开身子。
老太太没进来,就站在门口。“我来看看水管,楼下说有点渗水。”她探头往里看了看,目光掠过堆着的纸箱和电脑。
“你这是在……上班?”她问。
“做点自己的项目。”陈默说。
“哦哦,搞电脑的。”老太太似懂非懂,把桔子递过来。“自家亲戚送的,吃不完,给你拿点。”
陈默接过,桔子沉甸甸的。
“谢谢。”
“没事儿,你忙。”老太太摆摆手,往楼梯口走。脚步声渐渐下去。陈默关上门,回到桌前。
他剥了个桔子吃。
很甜,汁水充足。他一口气吃了三个,才停手。手指黏糊糊的,他去洗手。水声哗哗,他看着镜子里的自己。
眼圈发黑,脸色苍白。
他泼了点冷水在脸上,用力搓了搓。回到座位,继续工作。桔子的甜味还在舌尖,让枯燥的代码多了点滋味。
傍晚时分,核心模块完成了。
他跑了一遍完整的测试套件。一百多个测试用例,全部通过。绿色的对勾刷满屏幕,像一排整齐的小旗。
他靠在椅背上,看了很久。
然后他调出系统推演出的时间规划图。第一个节点,“核心算法原型”,旁边打了个勾。日期比原计划提前了一天半。
消耗比预想的快。他关掉界面,决定今天到此为止。保存,备份,关机。他站起来,腿还是麻的。
慢慢走到窗边,拉开窗帘。
夕阳西下,天空烧成橘红色。云朵镶着金边,慢慢飘移。他看了很久,直到天色暗下去,橘红变成深蓝。
下楼去小卖部买了鸡蛋和挂面。
回来时,巷子里的路灯亮了。那盏坏的还没修好,黑那段得摸黑走。他小心看着脚下,避开积水。
晚饭是鸡蛋面。
他煎了个荷包蛋,边缘焦脆,蛋黄还是溏心的。铺在面上,撒了点葱花。热乎乎吃下去,胃里舒服多了。
洗完碗,他没立刻开电脑。
而是拿起那本写满笔记的旧本子,随意翻看。有些笔记是大学时的,字迹青涩。有些是工作后的项目心得。
翻到某一页,他停住了。
那页记着“灵瞳”项目早期的一些设计思路。当时他觉得有处逻辑冗余,但赵志刚说没问题,就这么定了。
现在看,那可能就是漏洞之一。
他盯着那几行字,眼神发冷。看了很久,他合上本子,放回书架。有些事,现在想还太早。
他打开电脑,但没写代码。
而是开始整理开发日志。详细记录今天的进展,遇到的问题,以及解决方案。这是他的习惯,像写日记。
写到一半,头痛又来了。
这次更剧烈,像有锤子在敲打后脑。他捂住头,弯下腰。视野边缘闪过几丝模糊的光影,很快消失。
他保持姿势,等痛感过去。
大概过了两三分钟,锤击感减轻,变成持续的闷痛。他慢慢直起身,额头上全是冷汗。手在抖,握不住鼠标。
他意识到,不能再硬撑了。
系统推演曾建议“适时补充营养及深度休息”。他之前没太当回事,现在懂了。这种消耗是实打实的。
他关掉电脑,早早躺下。
闭着眼,但睡不着。头痛像背景音,嗡嗡响着。他尝试放松,从脚趾开始,一点点往上。到肩膀时,肌肉硬得像石头。
他翻了个身,脸朝外。
窗外那点红光还在,幽幽的。他盯着看,直到眼睛发酸。意识渐渐模糊,滑向睡眠的边缘。
最后一个念头是:明天得去买点牛奶。还有,那个旧手机里的聊天记录,也许该找时间再看一遍。