周知行说"鱼肉味"的时候梁燕迟以为他在开玩笑。
直到他站在超市的宠物食品货架前,面对一整排花花绿绿的罐头包装,才意识到自己连猫的口味偏好都没搞清楚。他掏出手机拍了张货架照片,发给周知行,配文:"哪一个?"
对方五秒后回了三个字:"左边,粉色盖。"
梁燕迟拿起粉色盖的罐头翻到背面,配料表第一行:金枪鱼、三文鱼。他抱着罐头去结账,心想这猫吃得比他都好。
回实验室的时候周知行已经到了,正蹲在纸箱旁边给高斯梳毛。那把梳子很小,齿距细密,周知行一手托着高斯的肚子一手从尾根往头顶梳,高斯眯着眼睛呼噜声大得像发动机。
"罐头买回来了。"梁燕迟把袋子放在桌上,没忍住多看了一会儿周知行梳毛的动作。他的手很大,骨节分明,握着那把小小的宠物梳有一种奇异的反差感。但动作很轻,轻到高斯连动都没动一下,四肢软趴趴地摊在毛巾上,翻着肚皮完全放弃了戒备。
"你来喂它。"周知行把梳子放下,站起来的时候膝盖响了一声,"我调一下模型参数。"
梁燕迟蹲下去开罐头。高斯闻到味道立刻翻过身来,三条腿蹬着纸箱边沿往他手边凑,脑袋几乎扎进罐头盖里。梁燕迟把罐头倒进它的专用小碗里,看它埋头狂吃,尾巴翘得笔直。
"它第一天吃我给的鸡肉罐头,吃了三口就不吃了。"梁燕迟蹲在那里看猫吃饭,"你喂它鱼肉就吃完一整罐。你给它喂了多久了?"
周知行正在敲键盘,眼睛没离开屏幕:"半个月。"
"半个月它就认你了。"
"嗯。"
梁燕迟没再问。他站起来走到实验台另一边,打开自己的笔记本电脑,把昨晚写好的参数矩阵调出来。两个人隔着半张台面各自敲键盘,高斯在脚边舔碗,偶尔发出满足的吧唧声。
实验室安静了大约二十分钟。
然后梁燕迟说:"学长,模型跑出来的数据不太对。西区那四个喂食点之间没有边连接,但按照喂食时间排序,它们应该在同一个时序链里。"
周知行从自己的屏幕前抬起头,椅子往旁边滑了半米,正好滑到梁燕迟手边。他倾身凑过来看梁燕迟的屏幕,距离比昨天更近——梁燕迟甚至能感觉到他衬衫袖口拂过自己小臂的那一点布料触感。
"你用的距离阈值是多少?"
"三米。"
"调成五米试试。猫群之间的社交互动范围比觅食范围大。"
梁燕迟把阈值改了,重新跑了一遍模型。新的网络图在一阵加载之后刷新出来,西区那四个点之间出现了三条短边,把一个孤立的子结构重新连进了主网络。
梁燕迟盯着屏幕看了三秒:"你怎么知道的?"
"我观察过。"周知行往后退了半寸,"西区的猫在喂食点之间会互相递信号,尾巴和耳朵的朝向。它们的社交边界比物理边界大。"
梁燕迟转头看他。两个人之间的距离又缩回了不到三十厘米。灯光从头顶倾泻下来,在周知行的锁骨凹陷处积了一小片阴影。他今天领口第二颗扣子系了,但可能因为蹲着给猫梳毛蹭松了,衬衫领口微微敞着,露出一截清瘦的锁骨线条。
"你观察了多久?"梁燕迟问。
"从发现这只猫开始。"周知行指了指地上的高斯,"它是西区的猫,你选它做研究对象,就必须把整个西区的种群行为研究透。"
"所以你把整个西区的猫群都摸了一遍。"
周知行没否认:"建模不能只靠数据,要靠行为逻辑。"
梁燕迟看着他转回去继续敲键盘的侧脸,忽然想起那本《动物行为学》里折角的一页——犬科动物的求偶仪式。他那时候在食堂看见周知行在看那本书,心里还紧张了一下,以为是自己的行为被识破了。现在想想,周知行大概早就在系统性地研究某种行为模式——只是研究对象是猫还是人,他分不太清了。
"学长,"梁燕迟把椅子也往旁边滑了半米,和他并排,"西区的猫群你都已经摸透了,那课题对你来说还有挑战吗?"
周知行的手指在键盘上停了一瞬:"课题的挑战不在猫身上。"
"那在谁身上?"
周知行没有回答。他低头继续敲了一行代码,然后在换行的间隙偏过头看了梁燕迟一眼。那一眼很短,短到梁燕迟来不及判断里面的情绪。但他在那一眼里捕捉到了一个东西——笑意。淡淡的、克制的、被压得很低的、几乎不像笑的笑。
和平时周知行对着所有人微笑的表情不一样。那个笑是朝着他的,只给他一个人看的。
梁燕迟的手指在键盘上打了个颤,打出了一个乱码。
九点,高斯在纸箱里睡着了,发出细小的呼噜声。模型第一版跑完了所有参数,输出了一组初步的网络图。梁燕迟把图导出来打印了两份,一份递给周知行,一份自己收好。
周知行接过图,折了两折放进帆布包的内袋里。然后他站起来,弯腰看了一眼纸箱里的高斯——小家伙仰面朝天,四条腿张开,一副"此地是我家"的坦荡姿态。
"明天要给它换药,"周知行直起腰,"你早上有课吗?"
"没有。"梁燕迟答得很快。
"那明天我来你宿舍换药,你帮我把一下它的后腿。"
"好。"
这个"好"字的尾音还没落地,梁燕迟已经在心里倒计时了——距离明天早上还有十一个小时四十分钟。他第一次觉得实验楼到宿舍的那段路太长。
两人一起锁了实验室的门。周知行走在前面下楼梯,梁燕迟跟在后面,目光又落在那个发旋上。走廊的声控灯照旧一截一截地亮,一截一截地灭,像有人踩着一排看不见的音符。
"梁燕迟。"
"嗯?"
周知行在楼梯拐角停下,没有回头。他的侧影被走廊尽头的一盏灯勾出一个薄薄的轮廓,声音里带着一点罕见的犹豫:"你明天几点起?"
"六点半。"
"那七点吧,不着急。"
"好。"
周知行继续往下走了。但梁燕迟站在原地多停了两秒。他听出来了——周知行那句话"不着急"里面,其实藏着一句"我想多待一会儿"。也可能只是他自己想多了。但他决定不想多。
他追上去,两个人并排走出了实验楼。
晚风很凉,把梧桐叶吹得哗啦哗啦响。校园里已经没有太多人了,路灯下只有几个晚归的身影被拉得细长。高斯在宿舍纸箱里等他,周知行要回另一栋楼,他们在丁字路口分开。
梁燕迟走出去十步又回头。周知行也回了头。
两个人隔着十米的距离对视了一秒。谁也没说话。路灯把影子拉得很长,它们在中途交叠了一下。
然后各自转身走了。
第二天梁燕迟五点就醒了。
他躺在床上盯着天花板,听着陈野的呼噜声和高斯偶尔翻身扒拉纸箱的动静,脑子里反复回放昨晚楼梯拐角那一幕。周知行的犹豫,他说"不着急"的时候尾音稍微低了一度,他回头的那一眼。
六点整,梁燕迟终于躺不下去了。他起来洗澡换衣服,在衣柜前站了五分钟,最后选了那件周知行见过两次的蓝色T恤。他对着镜子把领口的扣子解开了一颗——然后犹豫了三秒,又系上。再解开。再系上。
最后还是解开了。
七点差五分,门被敲了两下。
梁燕迟正在给高斯换水,手里的碗差点滑出去。他深吸一口气去开门,周知行站在门口,手里拎着一个纸袋,里面是还在冒热气的豆浆和包子。
"你还没吃早饭吧。"周知行把纸袋递给他,径直走进宿舍蹲到纸箱边,"趁热吃,我给高斯换药。"
梁燕迟拿着纸袋站在门口愣住了三秒。纸袋里面的热度透过塑料袋传到掌心,豆浆是温的,包子还隔着纸袋冒着白气。他记得自己从来没告诉过周知行他爱喝豆浆。
"豆浆……"
"上周三你在食堂喝的。"周知行头也没回,已经开始拆高斯腿上的旧纱布了,"不加糖,我记了。"
梁燕迟咬住嘴唇才没让自己笑出来。他走到书桌前坐下,把纸袋打开,豆浆杯外面贴着一张小纸条,上面用铅笔写着三个字:"别放凉。"
他拿起豆浆喝了一口,温的,刚好入口。然后他偏头看周知行——他蹲在纸箱旁边,一只手轻轻握着高斯的后腿,一只手把旧纱布拆下来。高斯很乖地趴着,偶尔抬头舔一下他的手腕。
"它今天精神好多了。"周知行把新药涂上去,重新缠好纱布,"伤口愈合得比预期快,下周大概可以不用包扎了。"
"那你下周还来吗?"
周知行的手顿了一下。他把纱布的胶带贴好,摸了一下高斯的脑袋,然后站起来转过身。他的表情很平静,但梁燕迟看出来了——那个弧度又出现了。他嘴角那个极淡极淡的、只有梁燕迟能捕捉到的弧度。
"来。"他说,然后走到门口换了鞋,"猫还没长好。"
梁燕迟咬着包子送他到门口。周知行出去之前回头看了他一眼,目光在他领口停了一瞬——那一眼很短,但梁燕迟看清了。他看见周知行的瞳孔微微缩了一下。
门关上了。
梁燕迟低头看了看自己敞开的领口。第二颗扣子,确实没系。
他把那个豆浆杯留下来洗了,晾在窗台上。陈野起来上厕所的时候看见他对着一个空杯子傻笑,边撒尿边说:"你是不是又捡了什么奇怪的东西回来。"
"嗯。"梁燕迟把杯子举起来对着光,杯壁上还有淡淡的豆浆残留,"捡了个杯子。"
下午高数课上梁燕迟破天荒地走神了两次。第二次走神的时候他在草稿纸上画了一只猫,猫旁边画了一个火柴人蹲着喂罐头,火柴人旁边又画了一个火柴人站着看。他在后面那个火柴人脸上加了一对很小的眼睛,眼睛里画了两粒针尖大的光点。
下课的时候陈野过来瞄了一眼他的草稿纸:"这是什么?一家三口?"
梁燕迟把纸折起来塞进口袋:"拓扑图。"
"你他妈管这叫拓扑图?"
梁燕迟没理他,掏出手机给周知行发了条消息:"模型第二版的数据我整理好了,晚上带过去。高斯的罐头还有两罐,够吃三天。"
周知行回了四个字:"晚上见。"
晚上梁燕迟到实验室的时候周知行已经在里面了。他站在窗边打电话,背对着门口,声音压得很低。梁燕迟推门的动作顿了一下,听见了电话里的只言片语——"我不回去""跟他说过了""别打过来了"。
周知行挂了电话,转身的时候表情已经恢复正常。他看见梁燕迟站在门口,笑了笑:"来了?数据带了吗?"
梁燕迟把U盘放在桌上:"带了。"他没有问电话的事。但他注意到周知行把手机翻了个面扣在桌上——屏幕朝下,像在掩藏什么。
"学长,"他拉开椅子坐下,把U盘插进电脑,"模型第二版我加了行为权重的参数,把猫群之间的友好互动和敌对互动分开算了。"
周知行走过来站在他身后看屏幕。两个人之间的距离很近,近到梁燕迟能闻到他身上那股洗衣液的味道——今天和前两天不一样,更柔和一些,像某种开白花的植物。
"敌对互动的数据你怎么采集的?"周知行问。
"我观察了西区九个喂食点,记录了猫群之间的哈气、炸毛、拍爪子这些行为频次。时间跨度一周,有效样本一百七十三次。"
周知行沉默了两秒:"你一周之内观察了一百七十三次猫群冲突?"
"嗯。"梁燕迟面不改色地点开数据表格,"每天五次巡视,每次四十分钟,早中晚夜各一次。三天前开始系统记录的。"
周知行看着屏幕上那满屏精确到分钟的时间戳,忽然退后半步。梁燕迟敏感地捕捉到了那个动作——他退后了。不是厌恶或者躲避,更像是……某种被击中的反应。
"梁燕迟。"周知行的声音比刚才低了一点,"你做事一直这么……彻底?"
梁燕迟转头看他。周知行站在他身后半步的距离,灯光从斜上方落下来,在他脸上投出明暗分明的切面。他嘴角那个弧度还在,但眼睛里有什么东西被轻轻搅动了——那种梁燕迟从未见过的、薄薄的一层动容,像冰面底下开始流动的春水。
"要看对谁。"梁燕迟说。
周知行没有接话。他垂下眼睛,拿起桌上的马克杯喝了一口水——梁燕迟注意到那是他第一次在实验室里喝水的时候转过了身。他背对着梁燕迟站了大约三秒。
那三秒梁燕迟没有看到他的表情。但他听到了一个很小很小的声音——周知行放下杯子的时候,杯底碰在桌面上,发出了比平时更重一点的"嗒"一声。手指在用力。
"模型跑完给我看一下结果。"周知行转回来的时候表情已经如常了,但梁燕迟看见他的耳朵尖有一点粉。
"好。"
高斯从纸箱里爬出来,一瘸一拐地走到周知行脚边蹭他的裤腿。周知行弯腰把它捞起来放在腿上,重新坐到电脑前。高斯在他腿上打了个滚,把肚皮摊开来。
梁燕迟收回目光盯着屏幕,但手指在键盘上停了一会儿没动。
他在想:周知行刚才转过去的那三秒里,耳朵尖红了。
他低头在草稿纸上写了一行字:"第十五天。第一次看见他耳朵红。"
然后他若无其事地把纸翻了个面。
模型第二版跑完的时候已经快十点了。输出的网络图比第一版精细很多,节点之间的边被染成了不同颜色——暖色代表友好,冷色代表敌对,灰色的代表中性。整张图看起来像一幅色彩斑斓的神经地图。
"你看这个。"梁燕迟用光标圈出西区中心的一个节点,"高斯的喂食点是整个网络的枢纽节点。它虽然只有三条腿,但所有猫的友好互动都通过了这个节点。"
周知行低头看着屏幕,高斯还趴在他腿上,尾巴一甩一甩的:"它是我选定的研究对象。"
"但你在选它之前就喂了它半个月。"
周知行的手指在高斯脊背上轻轻滑了一下,没有说话。
梁燕迟看着他的侧脸,心里忽然有了一个不太确定的推测。那个推测让他心跳快了两拍。但他没有说出口——他只是把屏幕上的图保存下来,在文件名后面加了一个日期。
"学长,后天周末。我要去西门做一整天的行为观察,你来吗?"
周知行抬头看了他一眼。灯光的倒影在他瞳孔里缩成两个小小的光点,明灭了一下。
"几点?"
"早上六点。"
"来。"
那天晚上梁燕迟回到宿舍之后,没有马上洗漱睡觉。他坐在书桌前,把笔记本翻到最新一页,写下了一行字,然后划掉了。重新写。又划掉。最后他写了一句话,笔压得很重,纸背面都凸起了:
"他在我面前耳朵红了。他告诉我豆浆不加糖。他记得我穿蓝色。他答应周末一整天陪我。"
"他如果也是——"
他在那个破折号后面停了很久。最后他把笔帽盖上,合上笔记本,没有写完那句话。
但窗外月光很好,高斯在纸箱里睡得四仰八叉。梁燕迟关了灯躺下来,闭着眼想了一会儿周知行耳朵尖那一抹粉色。
他想,如果那三秒里的安静是一场考试,他大概刚刚拿到了一份满分试卷。
而周知行在走廊里背靠着墙壁站了三十秒才往回走。
三十秒里他闭着眼,耳边反复响着梁燕迟那句"要看对谁"。他把手机翻过来,打开备忘录,在最新一行写了几个字,然后删掉。重新写,又删掉。
最后他只存了一个日期。
后天。
周六,西门。一整天。
他把手机放回口袋,转身走进夜色里。路灯把他的影子拉得很长,像一条不肯断开的线。