三月的菲利克斯托港还裹在冬末的湿冷里。北海的风从码头方向灌进来,带着盐、铁锈和柴油的味道。集装箱堆场像一座由钢铁色块构成的抽象画——赭红色的马士基箱、深蓝色的地中海航运箱、银灰色的达飞箱,在灰白色天空下层层叠叠地码成高墙。AGV在堆场和泊位之间无声穿梭,激光雷达的扫描光束在薄雾里划出肉眼看不见的弧线。
佐伊和Vital带了三个软件工程师,一个数据员,两个设备工程师,一个硬件端的小兵,在码头边的一间临时办公室里驻扎下来。说是办公室,其实是一排由集装箱改造的铁皮屋子,夹在堆场边缘和防波堤之间。窗式空调在室外温度低于八度时就不肯好好工作,每隔十几分钟自动停机除霜,嗡鸣声断断续续,像一台年久失修的呼吸机。Vital进来的时候站在门口愣了几秒,说:“这比阿姆斯特丹那间还破。”
佐伊已经走进去把工作站接上电源,头也没抬,“你的无线网呢?接上。”
“哦。”vital找了找房间里的插座,把车子后备箱里的设备箱搬下来,开始指挥硬件团队在空荡荡的铁皮屋里搭测试环境。电源,UPS,网络通讯。
佐伊的工作站接了三个外接显示器,左边跑仿真,右边跑实时的AGV路径规划,中间是和伦敦总部技术中心联通的协同界面。
菲利克斯托是距离伦敦最近的深水集装箱港,地理条件在英国首屈一指——航道水深,潮差适中,泊位能靠泊全球最大的集装箱船。自动化程度也高,AGV车队规模在英国三港中排第一。这次系统优化是去年冬季滤波参数稳定之后的第一次大版本迭代,核心任务是将AGV在雨雾天气下的路径规划响应时间再压缩百分之十五。
白天他们和港务局的本地工程师团队一起跑现场。AGV的激光雷达在冬春之交的湿雾里仍然会有轻微的点云散射——比去年冬天好多了,但还没有达到佐伊为软件三期定下的目标值。她在码头边蹲了整整一个下午,看着AGV一辆一辆穿过雾幕,把实时点云和数据日志一条一条地标记录。海风从防波堤方向灌过来,带着北海的寒意,穿透橘色反光马甲,穿透冲锋衣、穿透羊绒围巾、一直渗进骨头里。Vital蹲在她旁边,把新的光学模块测试数据一块一块地过。他的手指被海风吹得发红,指尖的皮肤干裂出几道细细的白纹,但他自己似乎完全没注意到。设备工程师看完AGV底盘回来,看到两个人蹲在码头边,像两只被海风吹得炸了毛的、固执的猫和狗,偷偷拍了一张照。
晚上他们回到集装箱办公室继续改参数。
Vital从伦敦扛了一整套手冲设备过来——磨豆机、滤杯、手冲壶、温度计、克秤,全套装备在折叠桌上摆开,占了小半张桌面。佐伊的桌子上则堆着代餐奶昔的空盒,码得整整齐齐,像一排等待回收的弹药箱。她每天雷打不动灌下去三盒,安东尼囤在她行李箱夹层里的那些可可味奶昔,已经消耗了将近一半。Vital有时候从屏幕后面抬起头,看见她一边盯数据一边把吸管送到嘴边,腮帮子微微用力,奶昔盒被吸扁时发出极轻的塑料声响。他什么都没说,低下头继续测硬件。
康妮这次没有跟来。菲利克斯托距离伦敦只有一个半小时车程,而且小团队一起去的,查尔斯判断不需要生活助理随行。但他显然高估了这群工程师对“生活”的理解。Vital在集装箱里支了一张行军床,佐伊睡在办公室隔壁一间由储藏室改造的简易休息间里——一张窄床,一个床头柜,墙上挂着一件救生衣,不知道是哪一任租客留下的。其他人发现附近的确连个R&B都没有,跟着一起在集装箱里安顿了下来。好在港务局一楼有浴室和洗漱单元,从集装箱临时房走过去只要五分钟。
佐伊把PICC放在枕头边上,橘色的虎斑猫玩偶安静地趴在那里,每天傍晚她洗漱完毕,回到房间的时候,推开门就能看见它琥珀色的眼睛在昏暗的光线里微微发亮。
头几天一切正常。菲利克斯托的冬雾被新的滤波参数一层一层地压下去,AGV的响应时间曲线在监控面板上慢慢收敛,像一条被驯服的蛇终于盘起了身体。Vital在群聊里发了一张曲线截图,配文:“它开始听话了。”佐伊回了一个猫咪点头的表情包。安东尼回了一个咖啡杯。
雷暴是在第四天夜里袭来的。
菲利克斯托的冬春之交,北海的冷暖气团在英吉利海峡上空反复拉锯。傍晚时天边已经堆起了铁青色的云砧,海风从东北方向切过来,带着一种潮湿的、不安定的腥味。费利克斯托港的气象站每天给港务局推送四次天气预报。傍晚六点那次还在说“局部雷阵雨,预计持续两小时”。
到夜里十一点,风速从十五节飙到三十五节,气压在四十分钟内骤降了将近十个百帕。集装箱铁屋的窗式空调在一声闷雷之后彻底熄了火。
Vital站起来拍了两下,没反应。“被雷劈了。”他把外套从椅背上拿起来披上,“我去港务局借个暖风机。”佐伊没抬头。新算法的瓶颈卡在交叉路口决策树的某个分支上,她把过去三个小时的AGV决策日志全部拉出来,逐帧对比仿真数据和实测数据的偏差。窗外炸了一声雷,她一抖。手从键盘上弹起来,碰到了旁边的水杯,差点打翻。她扶住杯子,手背上有几道笔误划过留下的墨渍,指节有点发白。雷声滚远了,她低下头继续敲键盘。但那声雷之后键盘的声响节奏变了。
Vital回来的时候推开门,暖风机拎在手里,另一只手抱着一摞从港务局休息室顺来的毯子。他看见佐伊还坐在原来的位置上,但身体往前倾,手指蜷在桌子边缘,像是努力撑着自己。然后他听见了一种声音——高频的、细弱的、像气流通过一根很窄很窄的管子时发出的哨笛音。
他丢下暖风机和毯子,几步跨过去。佐伊抬起头,看了他一眼,嘴唇动了一下,像是想说“没事”——但气流从她嘴唇里漏出来的时候,那个哨笛音更响了。vital一把抓起挂在墙上的急救箱,翻出便携血氧仪。夹上手指——92%。
“你哮喘?”
佐伊吸了一口气。那口气很短,像是只进到了喉咙就折返回去了。
她看着Vital,“小时候…”她没说完,停下来缓了缓,手压在自己胸骨上,锁骨中间的凹陷处随着每一次吸气深深陷下去,“……以为不会再犯了。”
“我叫车。”Vital打电话的时候手是抖的。
“就近……”佐伊喘了口气,“港务局有。”
港务局的确有个医院,可他们接待的多半是码头上被砸伤的工人,船上发阑尾炎被抬过来的船员,喝酒喝得神志不清的二副……能处理的就处理,治不了的就简单处理后直接转院。
可是,哮喘?他们只有氧气和口服激素,雾化机都坏了好几年了。会发哮喘的船员根本拿不到海员证。
港务局值夜班的医生是一个五十多岁的男人,头发剃得很短,白大褂里面穿着一件高领毛衣。他把佐伊安置在观察室的病床上,接上指氧,心电监护,这里是没有的,vital看了看佐伊的手环,心率112。医生用听诊器听了听她的肺——呼吸音粗,散在的哮鸣音,主要集中在两下肺。
“哮喘病史?”
“七岁以前。很久没发了。”
医生点了点头。“我只有口服激素和氧气,观察两小时。如果缓解了就不用转院。”他顿了顿,“但如果血氧稳不住,我这里只能维持,你得回伦敦。”
佐伊点了点头。Vital坐在床边的椅子上,帆布袋放在脚边,手机握在手里。他每隔几分钟就看一眼手环上的心率数字,像在盯一个随时可能跳出异常值的监控面板。
佐伊吸着氧,鼻导管挂在耳朵上,透明的塑料管从脸颊两侧垂下来,在锁骨的位置汇成一股。她的脸色在医务室的日光灯下显得很白,但嘴唇还有颜色。
凌晨一点半,激素起效了一些,呼吸音好了一点,哮鸣音从散在变成了局限在右下肺。吸着氧,血氧在94到95之间稳住了,心率从112慢慢降到102。医生看了看数据,说再观察一个小时,如果稳定就可以回去。Vital的长长地呼了一口气。
这口气还没喘到底,突然间,气压骤降。
不是比喻。
是雷暴的外围气流正式压进了菲利克斯托港。医务室的窗玻璃猛地震了一下,百叶窗哗啦啦地响。几百米外的集装箱临时房的固定钢缆在狂风中晃出了令人牙酸的金属摩擦声,被风一路带到了港务局的这栋小楼里。
佐伊的血氧在三分钟内从95掉到了92,心率从102跳到122。她自己也感觉到了——胸口的压迫感像一只看不见的手,从外向里,从下往上,把她的气道攥紧了。她用手肘撑起身体,让自己坐得更直一点。这个动作消耗了她大量的力气,心率在屏幕上又往上跳了一格,129。
医生快步走回来,看了一眼血氧仪,又看了一眼佐伊。她的嘴唇颜色在变淡。
“加一顿药。带着氧气,转院。”
Vital不敢决策,他站起来,走出医务室。走廊里很安静,只有自动售货机的嗡嗡声。他拨了安东尼的电话。
伦敦,凌晨两点零五分。
安东尼被手机震动叫醒的时候,正梦见自己在ICU里查房。他摸到手机,屏幕上显示Vital的名字。他接起来。
“安东尼。”Vital的声音从听筒里传出来,被海风和距离压缩得又紧又细。“佐伊哮喘发作,在菲利克斯托港务局医务室。这里只有口服激素和氧气,叫什么我不知道,泼什么松,血氧稳不住。”
安东尼已经从床上坐起来了。“把电话给医生。”
Vital推门进去,把手机递给值班医生。医生接过来,报了自己的姓名和资质,然后报数据:血氧最低91,手环心率128,血压刚刚量的128/76,呼吸频率26,两肺哮鸣音,右下肺呼吸音减弱。泼尼松25毫克,氧气流量4L。
“有没有雾化药?”安东尼的声音变了——Vital在电话这头都能听出来。
“没有,我准备让她转院。”
“口服泼尼松起效要两三个小时,吞下去多久了?给她吸氧,不要躺下,不要拍背,我马上过来。”