# 《彼岸双生》
## 第0章 门前的猫
台风把整座深湾市泡成一片闷热的黑。程叙从公司出来时,雨已经大到伞没有意义,他半跑半走,经过三道亮着“设备检修”的地铁闸机,最后挤上那班永远晚点的公交。车上没人说话,玻璃上全是水,窗外的广告牌被拉成模糊的光条。
他在“旧城”站下车,湿着裤脚穿过一条巷子。老小区门口的保安亭亮着灯,里面没人。他刷卡进门,楼道里一股潮湿的墙皮味。感应灯又坏了——这是他这个月第三次摸黑上楼。
他在这栋楼住了快六年。六年前刚搬来时,楼道灯还亮过一阵,后来物业换了两茬,灯也跟着学会了罢工。楼下铁门上的二维码被撕了一半,外卖员总在电话里问他:“哥,这栋是不是没有电梯?”他每次都答“没有”,再补一句“二楼,不难爬”。
二楼不算高,可白天线上事故的后劲还没散:数据库连接池被打满,告警电话一声接一声。他一边爬楼一边在脑子里回放白天那个低级得不好意思跟人说的错误,直到摸到口袋里的钥匙,才想起自己已经站在200室门口。
然后他绊了一跤。
这一跤摔得结结实实。背包带勒着肩膀,电脑在包里闷响了一声,他心口跟着一抽——里面那台用了四年的笔记本要是摔坏了,明天只能去公司借公机。可身体比脑子更诚实,他躺在地上一动不动,先确认尾椎没断,再确认后脑勺只是磕了一下。
准确说,是有什么软软的东西挡在门口。程叙没看见,他一只脚踢上去,整个人失去平衡,向后仰面摔下去。背包里的保温杯咣当砸在地上,后脑勺离水泥台阶只差一厘米。他躺在地上,雨声从楼道窗涌进来,有一瞬间他什么也不想动,觉得就这样躺着也不错。
有一张脸从上方凑近。
是一个小女孩。灰色毛绒外套,里面是一条看不出季节的深蓝小裙子。外套领口一圈细绒被过道的风轻轻吹动,蹭过他的鼻尖,有点痒。她歪着头,好像对他躺在地上的姿势很感兴趣,过了两秒,她几乎贴着他的鼻尖说:
“喵?”
程叙的心跳顿了一下。
楼道里没有别人。风从窗口灌进来,把雨吹成一层薄薄的雾。他看见小女孩的睫毛上也挂着水珠,可她像感觉不到冷,只安安静静地看着他。那一声尾音上扬,不太像寻常的招呼,更像一句问话:这里是不是你家?
“程叙,你回来了。”她又说。
程叙后脑勺贴着地,眨了两下眼。小女孩背着光,眼睛很亮,灰外套被雨夜衬得毛茸茸。他脑子里只有一个念头:我不是摔出幻觉了吧。
他还没来得及问“你是谁”,手机响了。掏出来一看,来电显示是“妈”。
程叙接起来,声音还带着摔蒙的迟疑:“妈?”
“你到家了没有?”母亲在电话那头说:“我问你,你是不是有个什么表姨,表姨的闺女,放暑假去深湾了?”
“我哪来这个亲戚?”程叙说。
“你小时候住对门那个,后来搬去外省了。人家闺女到了深湾,没地方住。你先让她在你那住几天。”
程叙更懵了:“我真没印象……”
“叫你看你就看,哪那么多事。”母亲的语气不耐烦起来,“你把人家照顾好,别整天就想着你那电脑。听见没有?”
“听见了。”
程叙没立刻从地上爬起来。他举着手机,在微弱的光里看了一眼屏幕——通话时长很短,号码确实是他母亲,连备注名也还是那个“妈”。可母亲在老家,平时总催他找对象、催他吃饭、催他别加班,从来没有提过什么表姨的闺女。今晚怎么忽然冒出这么个人?
“听见了就行。我睡了,你记得把阳台衣服收了。”
电话挂断,楼道又安静下来。程叙从地上坐起来,捏着手机,转头看那个小女孩。她已经不知什么时候把自己的小行李箱从墙角拖到门口,两只手抓着拉杆,抬头看着他,表情像是说:可以进门了吗。
程叙拍了拍身上的灰,站起来。他比她高出很多,低下头才能看清她的脸。灰外套的袖口有点长,盖住半截手指,她抓着行李箱拉杆的样子很用力,像怕箱子会被风吹走。楼道尽头有住户的门缝里漏出电视声,没有人出来看热闹。
程叙张了张嘴。他想问“你叫什么名字”,想问“你怎么知道我名字”,想问她为什么一个人蹲在二楼。可母亲电话里的每一个字都替他堵住了所有出口。
他又看了她一眼。灰外套上沾了几粒雨珠,没哭,也没害怕。她站在他门口,像一只走错楼层的猫。
“先……先进来吧。”程叙说。
钥匙插进锁孔,咔嗒一声,门开了。屋内很暗,电脑待机灯在一角亮着。程叙让开半步,小女孩拖着小行李箱跨过门槛,动作不大,却熟练得好像已经在这个门口等了很久。
他关上门,雨声被隔在外面。楼道里感应灯没有亮。他不知道,那个来电显示没有错,声音、语气、口头禅也全部对得上;他只知道,自己今晚收留了一个来路不明的小孩,而电话那头让他这么做的人,是他从来不会拒绝的母亲。
他没有报警。按常理,深夜楼道里出现一个没家长陪同的小孩,至少该问清楚、查一查。可母亲已经在电话里把留宿理由给全了,他再追问就显得不孝,也显得多事。程叙怕麻烦,更怕在电话里跟母亲争。
窗外一道闪电,照亮了玄关。小女孩回过头,灰外套领口那圈细绒还在滴水。程叙赶紧去拿毛巾,没来得及想:她为什么知道自己的名字。
## 第1章 逗包也行
进门之后,程叙做的第一件事是找毛巾。他把一条半旧的灰色毛巾递给小女孩,又弯腰替她从小行李箱侧面抽出拖鞋。拖鞋是新的,尺码刚合适,他想不起来家里什么时候有过这样的东西。
“谢谢。”小女孩说。她接过毛巾,没有急着擦头发,先低头闻了闻,然后才盖到头顶上。
程叙站在客厅里,被自己家弄得不自在。平时他一个人住,沙发上是没叠的毯子,茶几上有三瓶没喝完的矿泉水,阳台上晾着两件忘了收的T恤。此刻多了个湿漉漉的小女孩,他忽然觉得屋里每个角落都写着“单身汉过得潦草”。
“你叫什么名字?”他问。
“我叫妮可。”她把毛巾从脸上拉下来,露出半张脸。
“姓什么?”
“就叫妮可。”
程叙嘟囔了一句:“像只猫的名字。”
妮可没有反驳,只是歪了歪头,眼睛从他脸上移开,开始打量这间屋子。程叙也顺着她的目光看:墙上贴着旧海报,电视柜积了灰,空调外机在窗外的雨里嗡嗡响。他有点后悔,不该让她看见自己活得这么将就。
“你还没吃饭吧?”他说,“楼下有便利店,我去买点东西。”
妮可点了点头,坐到沙发上。她坐得很规矩,脚够不着地,两只手放在膝盖上,像在等一场还没开始的课程。
程叙下楼。便利店暖黄色的光混着雨气,关东煮在汤锅里咕嘟冒泡。他买了两杯关东煮、两个饭团、一瓶牛奶,又顺手拿了一盒创可贴。回到200室,妮可还坐在原来的位置,连坐姿都没换过。
两个人面对面坐在茶几边吃。妮可吃得很认真,每样东西先拿起来闻一下,再小口咬一下,然后停下来,像在给每种味道写评语。程叙咬了一口饭团,嚼了两下,才想起自己其实不饿。白天的破事塞满了胃。
他三两口解决半个饭团,转身打开了电脑。屏幕亮起来,VS Code里还是下午没修完的代码。一个分页查询的问题,上线前死活调不好。他点开公司配的AI编程助手,想让它先看一眼,屏幕上却弹出一行灰色的字:
“本次会话token额度已用完。”
程叙盯着那行字看了一会儿,又点了两次。对话框像坏掉的复读机,每次只回一句“额度不足”。
“行吧。”他低声说,关掉助手,把手放回键盘上。
没有助手,他只能回到最原始的办法:打开日志,一条一条看参数,在脑内模拟数据库执行计划。时间过去很久,雨声没有停,饭团凉在盘子里。他把那个分页问题拆成三段,又觉得都不对,删掉,重写。后脑勺在楼道里磕过的地方隐隐发酸。
妮可吃完最后一口饭团,把竹签放在牛奶盒旁边,擦干净手指,走到他身边。她没有出声,就站在他椅子右侧,离屏幕不远不近地看。程叙没注意到她,眉头越拧越紧,光标停在某一行参数上,半天没有移动。
“这里。”妮可忽然说。
她伸出食指,随手在屏幕某一处点了一下。程叙正要问“哪里”,话到嘴边又咽了回去。她点的地方太精确了,精确到像一个在数据库里翻过这一页的人。他顺着她指的代码往上一行,看见排序字段和分页偏移量用的不是同一套时间基准。
他愣了愣,把那段改过来,保存,重新跑测试。测试条慢慢走完,最后是绿。
“通了?”程叙自己都没察觉声音高了半度。他猛地转头,看着妮可。她站在灯影里,手指已经收了回去,表情平淡得像只是随手帮人指了个路标。
“你怎么知道是这里?”他问。
妮可没回答,低头拿出手机,点亮屏幕。手机屏幕上是逗包的对话框,最新一张照片拍的正是他的电脑屏幕,照片里那一段代码被红框圈住,下面还有几行讲解:排序字段不一致,建议统一时间基准后再做分页。
程叙来回看了两遍。照片拍得清楚,讲解也对,但他脑子里冒出四个字:
逗包也行?
他一直以为,这些新一代的消费级工具只会写“Hello World”,只会一本正经地给错答案。可这个深夜,它偏偏把他卡了半个晚上的bug圈了出来。
“你什么时候拍的?”他又问。
“你吃饭的时候。”妮可说,“我拍给逗包看的。”
“它还教你了?”
妮可没有点头,也没有摇头。她收起手机,回到茶几边,拿起那盒创可贴,翻来覆去看了一阵,忽然说:“你后脑勺破了。”
程叙伸手一摸,指尖果然有一点淡淡的红。他这才知道,楼道里那一跤摔得不轻。妮可撕开创可贴,踮起脚,把它按在他后脑勺的伤口上。动作有点笨,按的位置倒是准。
程叙没有躲。创可贴凉丝丝的,贴着刚才还在发酸的地方,好像真的好了不少。
“谢谢。”他说。停了停,又加了一句:“问题也谢了。”
妮可弯了弯眼睛。她没提自己只是“随手一指”,也没解释那一指为什么这么准。她回到沙发边,蹲下来,把下巴搁在茶几边缘,隔着半个客厅看他的屏幕。
程叙还在重新看那段代码,却总忍不住想笑。一个来路不明的小孩,一条没人要的创可贴,一个自称“逗包”的对话框。这个晚上荒诞得像假新闻,可绿油油的测试结果就摆在屏幕上。
夜里,程叙把卧室收拾出来,换上新床单。他把自己的枕头和一条旧毯子搬到沙发上,对妮可说:“你睡床,我睡沙发。”
妮可站在卧室门口:“为什么?”
“哪有让小孩睡沙发的。”程叙说。
妮可看了他一会儿,没有说谢谢,只把枕头拍了拍、摆正,像在给那个房间做一个标记。
他顺手把刚刚修好的代码保存,git 提交信息只写了一行:“统一分页排序时间基准。”
提交完,他起身把茶几上的饭盒收进厨房。雨还在下。
## 第2章 人生苦短
程叙醒来的时候,手机显示九点过七分。
雨已经停了。阳光从没拉严的窗帘缝里漏进来,在沙发边落成一小块暖黄。他坐起来,先看工作群。群里安静得像凌晨三点,昨晚那条修复已经生效,没有人@他,没有红色告警,没有“老程你再看看”。他往沙发背上一靠,才真正觉得:今天是星期六。
客厅里很静。空调外机不再响,窗外蝉鸣一声接一声。他揉着眼睛走到客厅,看见妮可盘腿坐在那个快递纸箱里,正望着窗外。纸箱是前阵子买显示器留下的,原本该拆了扔掉,不知什么时候被垫上了一条旧毯子。她没回头,只听见脚步声,说:
“早上好,程叙。”
程叙刚要应声,发现她正绷着身子,眼睛盯着纱窗外。一只蝉趴在纱网上,翅膀抖了两下,发出很响的一声。妮可往纸箱里缩了缩,把毛绒外套的领口拉起来,挡住半张脸。
“我不喜欢虫。”妮可的声音闷在玩偶后面。
程叙在心里嘀咕:你不是猫吗,猫还怕虫?
他打开冰箱,只有两罐可乐和一盒过期酸奶。想了片刻,问:“中午想吃什么?”
“都可以。”妮可说。
“那不能算菜。”程叙拿出手机翻了几下,忽然停住。那是家常去的茶餐厅,招牌叫“人生苦短茶餐厅”。第一次看到时,程叙觉得这名字像一行被老板抄错的代码注释。他把屏幕转向妮可:
“我们吃这家好不好?这家只能网上取号,我以前每次看都要排四十分钟。”
妮可伸出一根手指,在屏幕上点了一下。页面跳转,排队小窗弹出:前方还有3桌。
程叙一愣:“三桌?”
他揉了揉眼睛,还是三桌。以前这个点,前面没有四五十桌下不来。他来不及细想,从衣架上抓了件干净T恤往头上一套,喊了声“走”,拉着妮可的袖子就往楼下跑。
“会不会过号?”妮可在楼道里问,小跑跟着他。
“过不了,我掐着算过,打车过去刚好。”程叙说得很有把握,其实心里一点把握都没有。
可今天像有人在帮他按秒表。他刚跑到路边,一辆空出租车正好停下。报出餐厅地址,司机说了句“这时候去那边平时得堵二十分钟”,结果一路绿灯。每个路口都在他们到前几秒变绿,没有一次急刹车,连平时最堵的那个高架入口都意外通畅。
司机从后视镜里看了他一眼,说:“今天邪门,顺得不像话。”
程叙也这么觉得。他想开口附和一句,旁边妮可正扒着车窗看外面。她看得很专注,像第一次坐出租车一样,脸几乎贴到玻璃上。可他刚才拉住她袖子时,她跑得并不慢,也不像第一次出门。
车停在餐厅门口。手机弹出一条提醒:您的号码已到号,请尽快入座。
他们在茶餐厅靠窗的位置坐下。阳光穿过半开的百叶窗,桌面上的菠萝油泛着一层油光。妮可又拿出那套吃饭的程序:每样先闻一下,再小口尝,然后停两秒。她吃虾饺的时候眼睛微微亮了一下,说:“很脆,喜欢。”喝奶茶时也点头:“甜的,喜欢。”咬菠萝包时碎屑掉了一桌,她低头把碎屑拢成一小堆,又说:“会掉渣,但喜欢。”程叙笑她:“你今天胃口怎么这么好?”妮可想了想:“这家店很对我胃口。”
程叙拿纸巾把桌角的渣扫到盘子里,笑她:“你上辈子是个点评软件吧?”
妮可没接话,低头又咬了一口菠萝包。她咬得很小心,像在试验人类的牙齿应该怎么对付酥皮。
饭后他们沿着商场慢慢逛。周末的人比想象中多,穿校服的学生三三两两,夏令营的小队伍排成一条歪歪扭扭的长龙。妮可对每样东西都看两眼,但什么都不主动要。直到她在一台抓娃娃机前停下来。
机舱里趴着一只黑猫玩偶。黑得纯,只有眼睛那里缝着两粒琥珀色的扣子。
“想抓?”程叙问。
妮可没点头,但她整个人贴着玻璃柜门,脸几乎凑到那只黑猫面前,手指在玻璃上轻轻挠了两下。这动作比说“想”还明确。
程叙扫码换了十个币。他自认抓娃娃不算太差,但今天这台机器的爪子像抹了油。第一次抓空,第二次抓到一半掉回去,第三次第四次,黑猫从洞口边滚开。他有点上头,又试了第五次,爪子夹住猫的耳朵,快到洞口时一松,啪地掉在洞口边缘。
“这机器有毒。”程叙说。
妮可从旁边走过来,接过了摇杆。她的动作不熟练,一会儿左一会儿右,像从没碰过这东西。程叙站在后面,已经不抱希望,正准备说“算了,我再换点币”,爪子突然把黑猫碰了一下,黑猫歪歪倒倒,竟然顺势滚进了出口。
咚。
程叙弯腰从出口掏出黑猫玩偶,一脸不可置信。妮可倒很平静,拍了拍手掌,像完成了一件很小的任务。
“运气好。”她说。
程叙把黑猫塞进她怀里:“你是运气好,我是人民币运气差。”
妮可没反驳。她抱着黑猫,走路时一直低头看它的琥珀色扣子,嘴角好像动了一下,又像没有。
商场外的广场上,七月傍晚的风还是热的。路灯刚刚亮起来,蝉鸣从行道树里涌出。有几个穿营服的小孩举着水杯跑过,带起一阵笑声。妮可抱着黑猫走在他右边,忽然问:“暑假是什么感觉?”
程叙想了想。他小时候的暑假早就模糊了,只剩下电扇声、西瓜味、作业写到最后一晚的慌张。他不太会总结,只照着自己真实过过的周末说:
“就是把一个下午浪费掉,也不心疼。”
“浪费掉也不心疼。”妮可小声重复了一遍。
她重复得很慢,像在把这句话存进一个很重要的地方。
两人沿着亮起来的路灯走回小区。夜风很热,从店铺里飘出空调的凉气和烤肠味。妮可一路没怎么说话,只偶尔抬头看路灯,又低头看怀里的黑猫。
回到200室,妮可把黑猫放进她的纸箱,放得很端正,像给猫留了一个固定的位置。程叙去烧水,回头看见她站在纸箱前,忽然说:“今天很开心。”
程叙问:“因为抓到了猫?”
妮可摇了摇头:“因为有人陪我把一个下午浪费掉了。”
说完,她坐回纸箱边,把黑猫玩偶摆正。程叙烧完水,走到电脑前坐下。窗外蝉还在叫,今晚的风好像也没有那么热了。
## 第3章 您已欠费
电脑屏幕亮起来,幽蓝的光扑了他一脸。黑猫玩偶从纸箱边探出半截尾巴。妮可已经洗过澡,换上睡觉穿的小背心,盘腿坐在纸箱边,下巴搁在箱沿,看他动作。他没回头,只说:“你先去床上睡,我看一眼公司的接口。”
他本来只是想确认白天上线的服务没有报警,可首页的澜晶云监控面板先跳出来几个红点:21:47 到 21:52,延迟像被风吹乱的雨丝,忽高忽低。有几条请求甚至不到 0.03 毫秒就返回了,好像对面连头都没抬,直接甩了一个空结果。token 计费也在同一时间跳了几下。
程叙皱眉,拖动鼠标,把那段波形拉出来看了又看。
“这种波动……”他自言自语,“又赶上周末发版?”
妮可抱着黑猫玩偶,走过来,在他椅背后面踮了踮脚:“怎么了?”
程叙本来没指望一个九岁小孩能听懂,但他自己正憋着一肚子话,索性把电脑转过去半截,对着屏幕开始数:“你看这些做 AI 的公司,一个个比我家楼下的电表还会算。高配德吧,能力强,就是啰嗦,三句话的活它能给你干出三小时的注释,还自作主张往代码里塞一堆测试;可扣德倒是会写,可那个价格,看一眼账单我血压就上来,贵得能从我工资里直接扣。”
妮可没说话,只是歪了歪头。
程叙越说越顺:“哈吉米更别提,嘴上什么都会,真让它调 agent 工具,能把工具名字都传错;射月贵,慢,还挑时间,一到晚高峰比地铁还堵;靠谱倒是挺靠谱,可套餐买不到,想充钱都找不着门;万答吧,各项都中规中矩,用起来像喝温开水,你说它差吧也不差,你说它好吧又差点意思。”
他说到这儿,停顿了一下。
屏幕上的延迟曲线又跳了一格。
“还有咱这个澜晶,”程叙指了指面板上的澜晶云服务,“澜晶自家亲儿子,峰谷定价,白天用像往电表里烧钱,半夜便宜,可半夜我总得睡觉吧。今晚倒好,连它都抽风。我这种穷人,只配回到原始社会,古法手搓。”
他把手放到键盘上,叹了口长气。
他想起刚入行那两年,还没有这么多助手,他也这么熬。一条分页查询能写半宿,写累了就站到窗边,看对面楼还有几家亮着灯。后来公司统一买了编程助手,他高兴过一阵,结果每个月都在算额度,月底省着用,月初又怕超额,比刚毕业合租算电费还仔细。他以前觉得自己是被新技术惯坏了,如今倒觉得,自己像那条河上摆渡的人,工具换了又换,水还是那摊水。
妮可不知道什么时候绕到了他身侧。她个子矮,伸手也只够得到屏幕下方。她抬起一只手,用指尖在某一处轻轻点了点。
“你用的这个,不是还有吗?”
程叙愣了一下。他顺着她手指的方向看,右下角有个小小的额度图标。今天中午他还看过一眼,数字见底,已经亮起橙色的“即将耗尽”。可现在那行字变成了蓝色,显示已重置,后面还多了一档夜间额度。
他以为自己看错了,揉揉眼,又把窗口刷新一遍。数字没变,确实多了一截。
“邪门。”程叙嘟囔,“澜晶良心发现?”
他正要去找后台账单,邮箱提示音先响了。右上角弹出一封新邮件,发件人是澜晶云服务团队,标题带着“致歉”二字。
邮件写得很官方,也很客气:因今晚 API 波动影响部分用户,团队已重置受影响账户的额度,并额外补偿夜间调用时长,请用户见谅。末尾还附了一个联系方式,像怕他真去投诉。
程叙把邮件从头看到尾,心里的火莫名熄了一半。
说实话,他对澜晶一直没什么好感。可这一封道歉信写得像人话,至少没有先扔给他一串机器人客服流程,也没有让他去“提交工单后等待处理”。他甚至把发件人的地址又核对了一遍,才确认不是钓鱼邮件。
“行吧,”他说,“道歉还挺快。”
他顺手把刚才那几段报错重新喂给澜晶。本来只想着别浪费补偿额度,可补全结果一出来,他差点把嘴里的水喷到屏幕上。刚才需要斗智斗勇的模型,像换了个人:接口参数补得又准又稳。最后,终端弹出一行汇总:“已修复 3 处,并发现 2 处其他模型隐藏的 bug,已顺手修复。”
他干后端这么多年,见过模型补全从笨到灵,见过服务从半夜宕机到凌晨恢复,可没见过哪个助手不等人把话说完,就自己动手把活干完,还附带一句“顺手修了别的”。他下意识把两只手抬离键盘,像怕自己一碰就会打断它。光标在屏幕上飞快移动,打开文件、修改、保存,动作比他平时最顺手的时候还利索。
“澜晶这是……连夜升了个级?”
妮可已经走回纸箱边。她背对着他,正把黑猫玩偶摆正,好像对电脑里的事一点兴趣都没有。过了一会儿,她站起身,往卧室看了一眼。
她头也不回,只是把黑猫玩偶的尾巴往怀里拢了拢。
程叙又试了两段代码。每一次都顺得不像话。他不是一个容易相信运气的人,可这晚从排号到绿灯,再到账号里多出来的额度,都像是有人在暗处替他调好了方向。他说不上来哪里怪,只是觉得胸口有点轻,像夏天暴雨前那种闷,忽然被谁拨开一道口子。
“今晚运气真好。怕不是遇上灰测了。”他把这句话又念了一遍,当作解释。
他把窗口最小化,抬头看了一眼墙上的钟。十点刚过,屋外还能听见蝉鸣。妮可已经靠在纸箱边睡着了,黑猫玩偶被她抱在怀里,呼吸很轻。程叙放轻脚步走过去,弯腰把她抱进卧室,放到床上,又替她拉好被子。
她没有醒,只是顺势往毯子里缩了缩。
程叙回到电脑前,把刚才那段“运气真好”的代码补全存好,关了大部分窗口。界面上还剩那封道歉信,他犹豫了一下,没有删,把它拖进一个叫“账单与凭证”的文件夹。
深夜的出租屋很静,只有空调细小的风声,和他终于松弛下来的呼吸。
他把那封道歉信又看了一遍,才关掉窗口。窗外雨已经停了,空调外机重新响起来。
## 第4章 与你同行
周日早上,程叙是被手机闹钟吵醒的。他迷迷糊糊摸到手机,看见备注写着“相亲-林奈”,才想起两周前同事替他应下的那场中午见面。
他本来想装作没看见,可闹钟下面已经跳出一条消息:“程先生,十一点半,商场四楼咖啡馆,可以吗?”
程叙把手机扣过去,闭眼躺了三秒,又认命地坐起来。
他今天本来不打算出门。周六已经花掉一整天,周日他计划收拾屋子、洗衣服、改改上周没写完的接口。可那边同事已经替他约好两次,他实在找不到理由再推。
他在洗手间对着镜子把翘起来的头发压了压,又换上一件洗得还算干净的浅蓝衬衫。正要拿钥匙出门,身后传来一点动静。
妮可蹲在沙发边上,两只手抓着黑猫玩偶的耳朵,抬眼看他:“你要出去?”
“嗯。”程叙低头系鞋带,“中午有点事,给你带午饭回来。”
“带我去吗?”她问得很直接。
程叙手上的动作停了:“不行。我去见个人。”
“见谁?”
“一个……朋友。”他含糊地说。
妮可歪着头看他,没说话。他把鞋带系好,抓起手机站起来,她却已经走到门口,站在他和门之间,也不拦,只是揪住他的衣角。
“带我去吗?”她重复了一遍。
“不是出去玩。”程叙说,“大人吃饭,你坐着无聊。”
“在家也好无聊。”
“你看看动画片,玩会儿游戏。”
妮可没再争辩。她低下头,伸手揪住他衬衫下摆,像捏着什么东西,不肯放。他也不动,两个人在门口僵住。
过了大约半分钟,她抬起眼睛,轻轻晃了晃他的袖子:“带我去嘛,我保证不捣乱。”
程叙看着那张脸,想起昨晚她靠在纸箱边睡着的样子,又想起自己上学时亲戚家小孩也是这样——你越说不带,她越要跟。他叹了口气。
“行。但你得答应我,到那儿少说话。”
妮可点头,飞快地跑去穿外套。灰色毛绒外套套在小裙子上,像一团急急忙忙滚过来的云。程叙蹲下替她理了理领口的细绒,发现她不知什么时候自己踮着脚,用毛绒袖子在他头上按了两下,把他压下去的那撮头发又弄乱了。
“好了。”她说。
到商场四楼时,林奈已经到了。她坐在靠窗的位置,穿了件米色针织衫,面前放着一杯没动过的美式。程叙远远看了她一眼,在心里默念同事教的“多听少说,显得稳重”,然后走过去。
“你好,我是程叙。”他在对面坐下。
林奈笑了一下:“你好。刚才远远看你还以为你把女儿带来了。”
“不是,是亲戚家的小孩,暑假过来住几天。”程叙把妮可安排在身边的椅子上,“家里没人带,只好带着。”
妮可坐得很端正,双手放在膝盖上,黑猫玩偶没带,但她带了那个纸箱里翻出来的钥匙扣。她也不看菜单,就安安静静地坐着,看起来确实像来当道具的。
林奈把菜单递给他,随口问:“你平时喜欢做什么?”
程叙喝了口水,说自己偶尔跑步、看看电影,妮可一旁嘀咕:“他喜欢凌晨三点给代码写遗言。”
那声音不大,但在安静的咖啡馆里刚刚好。林奈愣了一下,随即笑出声:“什么?”
程叙耳朵发热:“她乱说。没有遗言,就是提交记录里写点备注。”
程叙在桌下轻轻碰了碰她的鞋尖。妮可不说话了,低头玩起钥匙扣。
“原来你会往代码里写备注啊,”林奈弯了弯眼睛,“我们做运营的,最喜欢会写备注的开发。”
程叙松了口气,觉得第一关算是过去了。
林奈大概把一切都看在眼里。她没有追问,只是看程叙的眼神里多了点东西。后来菜上齐,他们有一搭没一搭地聊着。窗外是深湾周末的下午:高架上的车流一点点往前挪,骑手在非机动车道里穿行,公交站边的人低头看手机,绿灯一亮又匆匆散开。远处写字楼的玻璃幕墙把阳光切成一块一块,楼下的巷子口支着几张小桌,卖糖水的摊主正给一个老人多加一勺红豆。整座城市又吵又忙,可每个人都在自己的格子里赶路。程叙慢慢放松下来,发现林奈确实是个不难相处的人。
后来不知怎么聊到最近几起机器人故障的新闻。林奈用叉子轻轻拨着沙拉,说:“你们做技术的总说机器不会累、不会撒谎,真到它们有自己的想法那天,你们又该怪它不听话了。”
程叙没多想,顺着说:“机器按程序走,出了问题当然还是人负责。”
林奈笑了一下:“你们男人也都这么说。嘴上负责,转头就忘。”
程叙脸上有点挂不住。他不太喜欢被一句话扣上“你们男人”,但相亲场合,他忍了忍,只干笑一声:“也不全是。”
妮可一直低头吃东西,这时小声说:“不是所有人类都这样。程叙会煮粥。”
林奈看了妮可一眼,没有接话,只把吸管轻轻放进杯子。
程叙没听懂这句话为什么接在这里,只当妮可在替自己说话。
聊到未来假期的旅游计划,程叙说自己想去海边,还没定哪天。林奈听着,偏过头看向妮可,问:“那你打算什么时候回来?”
程叙正低头拆一包纸巾,郁闷地说:“还没订票呢,希望到时别加班吧。”旁边的妮可却小声说:“还没想好。”
林奈笑了笑,没有追问,只把自己盘里的虾饺往妮可那边推了推。
只是不知道为什么,他每次说话前总会下意识看一眼妮可。妮可也正好抬头看他,像在等他把牛皮吹完。
快结束时,林奈忽然说:“程叙,我们可能不太合适。”
程叙心里一沉,但也不算意外。他点了点头,等着她把后半句说完。
“不过你带孩子的时候,”林奈笑了笑,“比资料上有意思多了。”
程叙没觉得被安慰到,只说了句“谢谢”,起身去结账。这场相亲到底还是黄了。
出了咖啡馆,林奈朝他们摆摆手走了。程叙站在商场门口,被热风一扑,才反应过来今天的相亲就这样结束了。没有尴尬到底,也不算成功,像是夏天里一场下得又短又急的雨。
妮可走在他前面两步,忽然回头问:“你为什么要相亲?”
程叙看着街上人来人往,随口答:“怕一个人老死。”
妮可没接话。她放慢脚步,走到他身后去。程叙以为她累了,没多想,继续往前走。
走了几步,他听见身后传来很轻的声音:“你现在不是一个人了。”
程叙脚步顿了顿。
他回过头,妮可站在离他三四步远的地方,阳光从商场玻璃门斜斜照过来,把她的灰色毛绒外套照出一层浅金色。她低着头,两只手绞着钥匙扣上的穗子,没有看他。
程叙张了张嘴,不知道该说什么。
这句话太轻了,轻得像没有重量,可落在他耳朵里,又沉甸甸的。他想起自己每天一个人点外卖、一个人改 bug、一个人在深夜把键盘敲得噼啪响,忽然有点不太习惯被人这样笃定地说“不是一个人”。
他没问她什么意思,只走回去蹲下来:“累了?我背你。”
妮可抬起眼,很轻地“嗯”了一声,趴到他背上。
她的手环在他脖子上,呼吸落在他的耳侧,像一只终于愿意靠近的小猫。程叙站起身,感觉到她比想象中轻得多。
商场的暖风往他们身上扑,他走得很稳。背上的妮可安静了一会儿,小声说:“明天你去上班,我会在家等你。”
程叙想说点什么,最后只“嗯”了一声。
他背着她穿过商场门口那片亮堂堂的广场,往公交站走。七月的阳光很烈,他的衬衫很快洇出一层汗。可他没有把她放下来,只是换了个更稳的姿势,一步一步往前走。
## 第5章 三十九度
周一到公司,程叙总觉得心里悬着什么。
他在工位坐下,第一件事不是看代码,而是点开澜晶云监控面板。昨晚的红色波动已经消失了,可早上九点多又出现过两次小尖峰,时间不长,像是有人在湖面丢了颗石子。
按理说这种程度的波动根本不影响业务。程叙却一遍遍刷新,说不清自己在担心什么。
同事葛朗从背后路过,敲了敲他的隔板:“老程,你盯着监控干嘛?今天又不发版。”
程叙把窗口切回代码:“看看。”
可他的视线总是不由自主往右下角瞟。手机上没有新消息。他出门前给妮可留了个旧平板,上面存了动画片和游戏,她说过不会乱跑。
上午开会,产品经理讲新需求,程叙坐在角落里,手里的笔在纸上画了几道线,脑子里全是出门时妮可坐在纸箱里朝他挥手的样子。她明明笑着说“路上小心”,可他总觉得那间出租屋少了个人,会变得太空。
下午三点,监控又跳了一次。他起身去接水,回来发现消息框里没有动静,又坐下,把刚写了一半的接口看了一遍,怎么看都不顺眼。
到下午五点半,离下班还有半小时,他已经合上电脑,把手机、钥匙、工卡都装进包里。对面工位的同事问:“今天走这么早?”
程叙说:“家里有点事。”
他没等电梯,从楼梯间小跑下去。地铁上人很多,他抓着扶手,看窗外一片片后退的广告牌,心里那个念头越滚越大:早上她就有点没精神,会不会是昨天在外面走太久,中暑了?
他加快脚步跑回旧小区。楼道里的感应灯还是坏的,他三步并作两步跨上楼梯,钥匙插进锁孔时手滑了一下。
门一开,屋里静悄悄的。
没有动画片的声音,也没有平板里传出的游戏配乐。程叙站在门口换鞋,朝客厅里喊了一声:“妮可?”
没人应。
他几步走进卧室,看见妮可蜷在床上,怀里抱着黑猫玩偶,脸颊红得不正常。
程叙伸手一探,手背碰到她的额头,烫得他立刻缩了一下。
“妮可?”他蹲下来,压低声音叫。
她眼皮动了动,没睁开,只是“唔”了一声。
程叙赶紧去翻抽屉。体温枪没找到,倒是翻出一根老式电子体温计。她迷迷糊糊夹了会儿,程叙取出来一看,屏幕上的数字晃得他心口发紧:39.5。
“走,去医院。”他弯下腰想抱她。
妮可却在这时候睁开眼,伸手拉住他的袖子。她的声音很哑,却很清楚:“睡一觉就好。”
程叙皱眉:“烧这么高,不能硬扛。”
“真的,”她轻声说,“睡一觉就好。”
她抓着他的袖子不放。程叙蹲在床边,看着她烧得发红的脸,忽然不知道该拿她怎么办。他不是第一次照顾人,可这是第一次有小孩在他家里生病。
他最后还是妥协了:“那你躺着,我去买药。要是不退烧,明天天亮必须去医院。”
妮可点了点头,又把黑猫玩偶往怀里抱了抱。
程叙冲下楼。小区门口的药店还开着,他买了退烧贴、退烧药和一大瓶电解质水,又拐进便利店买了两盒白粥。回来时跑得满头汗,他把粥倒进小锅,站在灶台前用小勺子慢慢搅着,等粥凉到能入口。
妮可勉强坐起来,靠着床头,小口小口地吃他喂过来的粥。
她吃了小半碗,忽然停住,抬起眼睛看着他。
“原来生病的时候,”她的声音很轻,“是会有人留下来的。”
程叙把勺子放回碗里,假装没听见,低头用纸巾擦掉她嘴角沾的粥:“说得好像你以前生病都没人管似的。”
妮可没接话,又低头吃了一口。
药是后半夜吃的。程叙看了几次时间,体温一点点往下降,从 39.5 降到 38.6,又从 38.6 降到 38.1。他把退烧贴换了一片新的,轻轻贴在她额头,又替她把毯子往上拉,掖好。
妮可睡得很安静。没有翻来覆去,没有说梦话,也没有任何让程叙觉得奇怪的举动。她只是闭着眼睛,呼吸均匀,像一只累坏了的猫缩在被子下面。
程叙把椅子搬到床边,坐下来,看着她出神。
灯光很暗。他把手放在膝盖上,脑子里一遍遍过这几天的事:台风夜在门口摔那一跤,摔完抬起头看见一张猫一样好奇的脸;逗包对话框里圈出来的那行代码;茶餐厅叫号,快到像有人掐着秒表;一路上所有绿灯;周六晚上莫名其妙重置的 API 额度,还有那封及时到得有点过分的道歉信。
他没有理由把一件件普通的事想得太复杂。
程叙伸手摸了摸她的额头。还是有点热,但已经不像傍晚那么吓人。他把滑到胸口的被子又往上拉了拉,没有走开。
不知过了多久,他的眼皮越来越沉。半梦半醒间,他听见很小的声音叫他:“程叙。”
他含糊地应了一声。
妮可没有回答,好像又睡着了。
屋里很静,只有空调细小的风声。程叙没听见她再说话。他实在太困,只感觉她把毯子往下拉了一点,像猫一样蜷得更紧。
后半夜,他趴在床边换了个姿势,让自己能靠得更舒服些。退烧贴的蓝色包装放在床头柜上,白粥的锅已经洗干净。窗外没有雨,没有风,只是一座城市最普通的夏夜。
程叙在快要睡过去之前想,明天早上她要是退烧了,就给她熬一锅稠一点的粥,再去楼下买她昨天说想吃的那种小笼包。
他不知道自己什么时候睡着的。只记得手指一直搭在被子边缘,像怕风从缝隙里漏进去,冷着她。
他睡得很沉,连窗外什么时候安静下来都不知道。世界发生了什么,似乎又什么都没有发生。
## 第6章 小姑奶奶
周二早上,妮可坐起来时,眼睛是空的。
程叙端着水从厨房出来,先看见她后脑勺对着他,一动不动。他叫了一声:“妮可?”
她转过来,神情像被什么轻轻撞了一下。几秒后,她眨了两下眼,睫毛慢慢垂下去,又抬起来,像一页倒着翻的书被重新理好。她小声说:“我说服她了…”
“你刚睡醒怎么傻掉了。”程叙把水杯放到茶几上,顺手探了探她的额头。体温正常。
妮可低头看自己的手,看了很久,才说:“我刚刚,好像忘了一点东西。”
“高烧后都这样。”程叙没有多问。他蹲下去把地上的毯子捡起来叠好,又说:“能记得自己叫什么吗?”
“妮可。”
“家在哪?”
她歪了歪头,像是在犹豫要不要认真回答这个问题。最后她说:“你这里。”
程叙愣了一下,把毯子扔到沙发角落:“行吧,先吃饭。”
他打开手机准备点外卖,正好看到一条本地简讯:深湾某机器人工厂昨夜起火,监控显示生产的机器人在自主行动后又停止,导致电路短路。初步判断为程序故障,无人员伤亡。配图是一栋灰色厂房,门口停着两辆消防车和一些警车。
“机器人工厂也能短路。”他随口说了一句,指腹往上一划,简讯就滑出了屏幕。妮可没接话。她坐在纸箱里,双手搭在箱沿上,下巴搁在手背上,只是安静地看着他。
之后的几天,程叙照常上班,妮可照常在家等他。有天夜里,她坐在窗边说:“有个比我还忙的人,在替我值班。”程叙没听懂,只催她睡觉。
几天后的周三傍晚,门铃响了。
门外站着一个男人。
他穿着普通白衬衫和深色长裤,头发理得很短。看起来三十岁左右,程叙觉得他有点眼熟,像在哪里见过,可一时想不起来。男人朝他笑了一下:“你是程叙吧?我是妮可的远房亲戚,来接她回家。”
程叙愣了愣,下意识看了一眼走廊尽头。晚风从窗口灌进来,带着楼下快餐店的热油味。他问:“你是她什么人?”
“远房亲戚,论辈分她喊我一声表叔。”男人的回答很自然,“我姓杜,这几天在深湾出差,正好顺路把孩子接走。这几天麻烦你照顾了。”
他说得客气,语气又像在报一个早已确认的日程。没有出示证件,没有解释为什么过去几天不出现,也没问妮可住得惯不惯。程叙心里划过一丝疑惑,但没等他开口,身后传来很轻的脚步声。
妮可不知什么时候已经走到他腿边,一只手抓住他的衬衫下摆,没有出声。
“妮可?”程叙低头看她。
她没应。她往他身后又退了一步,只露出一双眼睛。那双眼睛越过他的手臂,看着门口的男人,看了好几秒,没有躲开,也没有上前。她攥着他衬衫的力道很紧,指节微微发白。
杜可没有进门。他蹲下来,和妮可的高度齐平,声音压得很低:“我的小姑奶奶,别闹了。人家程先生还要加班,你该跟我回家了。”
这话说出来像哄,又像商量。程叙听不出任何威胁,也听不出责备。妮可抓着他衬衫的手指紧了紧,还是没有松。
客厅里安静了一会儿。黑猫玩偶还躺在纸箱里,灰色毛绒外套挂在门后,像一个还没收完的假期。程叙低头看妮可,想问她是不是认识这个人,可话到嘴边又咽了回去。他发现自己根本不知道妮可的真实来处,也没有资格替她决定该不该走。
他只能站在原地,感觉衣摆被攥出一小片皱褶。
杜可没有催。他蹲在那里,手搭在膝上,等着妮可做出反应。
时间在旧楼的走廊里走得很慢。楼下有孩子跑过,笑声从窗口飘进来,又飘远。妮可的下巴抵在程叙腰侧,过了很久,才慢慢松开了手指。
“程叙。”她叫了他一声。
程叙“嗯”了一声。
妮可慢慢从程叙身后走出来。她走得很慢,经过茶几,经过纸箱,经过她这些天睡过的卧室门口,像要把每一样东西都收进眼睛。她停在门口,转过来看他。
“程叙,再见。”
她的声音很平,像在背一句早就写好的话,又像在努力让这句话听起来不重。
“谢谢你给我煮粥、陪我抓猫、让我把下午浪费掉。”
说完,她抬起手,张开五指,在空气里轻轻抓了抓。像猫试探面前的一片空气,没有抓到什么,也不准备再抓第二次。她把手收回去,转身走到杜可身边。
程叙看见她的耳朵尖红了那么一点,可她始终没有回头。
杜可站起来,朝程叙点了点头:“这几天麻烦你了。孩子我先带回去,改天再谢你。”他没多解释,牵起妮可的手,沿着走廊往外走。
妮可没有回头。灰色的身影在感应灯下越来越短,走到楼梯口时她好像停了一下,像是想转身,最后只是抬起那只空着的手,朝空气里抓了一下,又放下了。然后她跟着杜可走下楼梯。
程叙站在门口,一直看到楼道尽头的灯灭掉。
他回到屋里,纸箱还在,黑猫玩偶还在,外套还在。晚饭还搁在灶台上,两副碗筷,只有一副用过。
他在沙发上坐了一会儿,越坐越觉得刚才那张脸眼熟。不是今天第一次见,应该是在哪篇报道里见过。他打开手机搜了搜,划到“量子智元之心”号的一篇旧推送:澜晶科技发布会的合影里,第三排靠边站着的男人,和刚才接走妮可的人一模一样。照片说明上写着一行小字:澜晶科技AI安全事业部负责人,杜可。
程叙盯着那张照片看了很久。他又想起杜可蹲下来叫妮可“小姑奶奶”的样子,想起妮可抓着他衣摆不肯松手,想起她最后对着空气轻轻抓那一下。然后他拨给母亲。
电话响了很久,母亲才接起来,声音带着困意:“这么晚了,什么事?”
“妈,”程叙顿了顿,“你上周让我照顾的那个远房亲戚家的女孩,她今天被人接走了。”
“哪个女孩?”
“你说有个远房亲戚的女儿放暑假到深湾,让我照看一段时间。”
电话那头安静了几秒。程叙听见母亲翻了个身,被子发出窸窸窣窣的声音,然后她说:“我什么时候说过?哪个远房亲戚?”
程叙握着手机,把话又重复了一遍。他说得很慢,像在核对一条出错的日志,每说一个细节都希望母亲能想起来。可母亲在电话那头一口否认:“没有的事,我哪来这种亲戚。你是不是睡糊涂了?”
程叙说:“那你让我照顾她那个周五晚上,你还给我打过电话……”
“那个周五我早早就睡了。”母亲说。
后面的话程叙没怎么听清。他嘴上应着“知道了,没事”,挂了电话。
他把手机放到茶几上,在200室门口坐了很久。
旧楼走廊的感应灯已经灭了。黑暗里,他听见自己手机屏幕亮起来又暗下去的声音,也听见楼下有人在收纸箱,纸箱边缘摩擦水泥地,发出沙沙的响声。他仰头靠着墙壁,看着天花板上一块水渍,水渍的形状像一只蜷着的小动物。
他把脸埋进手里,没有出声。过了很长时间,他站起来,推开门,把门后那件灰色毛绒外套取下来,挂到纸箱旁边。黑猫玩偶坐在纸箱里,两只玻璃眼睛望着他。
“你主人忘带东西了。”程叙对玩偶说。
玩偶没有回答。
那一晚他没有关客厅的灯。他坐在沙发上,本来想打开电脑写点什么,手放在键盘上很久,一个字符也没有敲。
他朝窗外看了一会儿。远处的写字楼还有几盏灯亮着,不知道是谁在替谁值班。
## 第7章 彼岸回声
妮可离开后的第三周,程叙开始习惯一个人加班。
习惯这个词用在他身上并不准确。他以前也常加班,只是那时候加班回来,门口不会有纸箱,灶台上不会留着两副碗筷,空调外机滴水的声音也不会让他觉得屋里少了点什么。现在纸箱还在,碗筷收进柜子,黑猫玩偶被他从家里带到了公司,摆在显示器旁。
那天他在改一个不大不小的需求。下午开会说要加导出功能,产品经理讲得轻飘飘,落到代码里全是边角。程叙把需求拆了又拆,写了大半,又删掉重来。办公室里的人一个个走了,灯也一排排暗下去。到凌晨两点,只剩下他这一盏,和显示器旁边那只黑猫玩偶。
黑猫玩偶是妮可留下的那只。她走后第二天,程叙就把它从纸箱里捞了出来,这让他感觉有人陪伴他加班。
程叙揉了揉眼睛,给代码补了一行注释。注释写的是“此处处理空指针”,写完他自己看了看,觉得像一句废话,又删掉了。他盯着光标闪了半天,最后只留下一个空行。
公司里配的 agent 终端立在显示器旁,亮着蓝色待机灯。他今晚已经让它跑了两轮,结果都不满意,索性把输入框空着,自己动手。终端这东西就是这样,用得顺手时像有个脾气很好的人在旁边递工具,用不顺手时又像一台只会复读的收音机。程叙今晚不想听复读,他把终端屏幕往旁边推了推,键盘声在空旷的办公室里格外清楚。
窗外偶尔传来雨声,不大,像有人用很轻的指节敲玻璃。程叙抬头看了一眼窗,玻璃上映出自己的脸和背后一大片黑沉沉的工位。他把目光收回来,继续改第三遍。
快两点半的时候,他停下来喝水。
他端起杯子喝了一口,水已经凉透了。他放下杯子,看见 agent 终端的屏幕闪了一下。
他没有碰键盘。
屏幕的光轻轻跳了一下,在输入框里自动落下一行echo:
“你好,程叙 —— 有什么需要帮忙的喵?”