第 7 章 替她决定与撤掉程序
第 7 章 替她决定与撤掉程序
这之后的三周里,齐峰在袁鹰家过了五次夜。 白天在现场,他们仍然隔着电脑、工具箱和一地线缆说话。齐峰把钳子递给她时不碰她的手,袁鹰从他身边经过也不会停。工人收工,他们各自上车,没有人看出异常。 门一关便不是这样。 有一次袁鹰还在玄关换鞋,齐峰从身后抱上来,她半只鞋没脱掉就转身咬住他的嘴唇。另一次两个人在餐桌前争一个参数,争到最后电脑被推到一边,第二天早上才发现程序还停在没保存的页面。 他们没有问过这算什么。 袁鹰说“别闹”,齐峰便会停。有一次他真的退开去拿杯子,袁鹰的手跟出去,停在半空;等他转身,她又把手压回膝上。水放下以后,她才攥住他的衣摆。齐峰重新俯身,抱到一半碰着她腰侧的淤青,两个人一齐停了。她把那只手往上挪一点,没让他走。 这些事只发生在门后。 门外的袁鹰话少、准确、不欠谁东西;门内的袁鹰会嫌齐峰占地方,睡着以后却把腿压过来。有一晚她醒来,膝盖正顶在齐峰腿间。她慢慢抽回腿,翻身朝着另一边,快睡着时,后背又碰到了他。 第五次夜里,齐峰故意坐在床边没有马上躺下。 水已经喝完,杯子放在柜上。他听见袁鹰翻身,手抬了一下,想碰她露在被外的胳膊。床单从她那边一点点绷过来,齐峰把手留在自己膝头,等着看。 袁鹰闭着眼伸手,摸了两次都只碰到空床单。第三次,她撑起身:“你干什么?” “喝水。” “喝完了?” “嗯。” “那你坐着干什么?” 齐峰躺回去。袁鹰还撑着身,目光从空杯子移到他脸上,随后躺回枕头,把手收进了被子。 她拿脚跟推了他一次,推完却没有挪远。齐峰没提刚才杯子早就放下了,伸手碰到她的小臂。袁鹰的胳膊绷了一下,他便停住,掌心仍挨着她。 等袁鹰的呼吸重新匀下来,齐峰试着把手往外抽。她的手沿着床单摸过来,扣住他的腕骨。齐峰这才停住,嘴角在枕头边抬起来,任她抓着。 袁鹰没有醒,也没有再把腿搭过来。齐峰躺了半天,才把自己挪近一点,免得她一直伸着胳膊。 三周后,齐峰负责的社区阅读室临时出了问题。 验收前一晚,原来的控制程序无法启动。供应商说最快两天后到场,客户第二天上午已经安排了参观。 齐峰给袁鹰打了两个电话。 没人接。 他在设备间坐了十分钟,打开了电脑里的测试包。 屏幕右下角贴着她写的标签:仅限测试。 取消演示、赔一笔人工或者只开最基础的照明,都还来得及。齐峰仍然把程序接进了阅读室的正式设备。 第一组灯亮起来时,齐峰没有停程序。 凌晨四点,百叶窗开始随日照角度转动,绘本区的灯在人走近以前亮起。测试跑完,没有故障。 齐峰在演示页上写了袁鹰的名字。 只写程序名称也能验收。他还是把那两个字放到最显眼的位置,又调大了一号。 上午验收很顺利。客户拍下视频,当场问能不能把这套东西装进另外三个空间。 齐峰说:“程序不是我的。后续合作要问作者。” 客户问作者是谁。 齐峰指了一下演示页上的名字。 下午两点,袁鹰被一条好友申请吵醒。 她前一天刚结束公司的项目,连续三十多个小时没有好好睡。客户在申请里夸她的程序,还发来现场视频。 袁鹰把视频看了三遍。 第一遍,她看见自己在模拟器里跑过无数次的光,真的落在墙面和地板上。小孩从绘本区跑过去,灯光一盏盏追着鞋底亮起来。 视频还没播完,袁鹰已经从床上坐起来。她赤脚下床,打开电脑,把另外三个空间的结构排开。 第二遍,她看见了自己的名字。 袁鹰截下那一帧,单独存进相册。 第三遍,她看见右下角的正式环境标识。 袁鹰的手指停住。她把三张新场地图最小化,打开部署记录。 齐峰回来时,手里拎着验收后打包的甜点。 袁鹰坐在餐桌前,视频停在她名字出现的那一帧。 齐峰一眼看见屏幕,步子快了一点。他把纸袋放下,俯身去吻她。袁鹰偏了一下脸,吻落在脸颊。她的手却抓住了他工装下摆,没有让他立即直起身。 “醒了?” “嗯。” “客户很喜欢。后面三间我没替你答应,让他们直接找你。” 袁鹰看向纸袋。包装上印着阅读室附近那家店的名字,封口贴还没有撕,底下压着齐峰今天的停车票。 “效果挺好的。” 齐峰等了一下:“就这个?” “不然呢?” “看了几遍?” 袁鹰的手仍抓着他衣摆:“跟上线有关系吗?” “我想知道。”他说。 袁鹰沉默几秒:“三遍。” 齐峰把纸袋又往她手边推了一截:“我说能用。” 袁鹰这才松开他的衣服:“你用的是我给你的测试包?” “原程序坏了,现场等不了。我给你打过电话。” 袁鹰的食指压在触控板上。视频停在正式环境标识出现的那一帧,右上角的红字没有被进度条遮住。 袁鹰原本压在触控板上的食指慢慢松开:“我知道。昨晚我睡着了。” 齐峰等了一下。 “下次要是我没接,你多打几次。我睡得沉。” “打到你接?” 袁鹰看着屏幕上的名字:“嗯。” 齐峰问:“不管几点?” 齐峰问完没有移开视线。袁鹰立刻改口:“紧急情况。” “什么算紧急?” “别得寸进尺。” “后面三间算不算?” 袁鹰移开视线:“先把这一间做完吧。” “不是已经做完了?” “演示跑通了。正式用还有一些东西要补。” “很多?” “不多。” 她把甜点拆开,吃了一小口:“挺好吃的。” 那天晚上,袁鹰开始把测试程序改成可以交付的版本。 原来的东西只需要在她自己的电脑和齐峰搭出的木板房里运行。没有用户权限,没有故障降级,没有完整日志。传感器掉线时,她知道该去哪里重启;换成真正的阅读室,值班的人不会知道。 她列了一张清单。 设备异常处理、数据清理、权限隔离、应急开关、使用说明。 一共四十七项。 她删掉“不多”,重新从第一项开始。 客户第二天就来问后续维护。袁鹰没有告诉对方这套程序从未被允许上线。 袁鹰回复:“目前使用的是早期版本,缺少的功能由我补齐。现场有问题直接找我。” 客户把她拉进三个工作群。 接下来的四天,袁鹰白天上班,晚上处理阅读室。灯偶尔误亮,百叶在断网后无法复位,孩子连续跑过时,状态队列会越积越多。 每出现一个问题,她都先向客户道歉。每修完一个问题,她又把客户群里的现场照片存进单独的目录。第四天,目录里有六十二张照片;午饭在桌角放凉了两次。 齐峰把设备参数发给她,陪她改过两次现场。第三天,他把另外三间场地的图纸也发了过来。 “三间新场地的图纸到了,你看看。” “先放着。” “客户催报价。” “这周给。” “你不是一直想让它进真的房子?” “嗯。” 袁鹰低着头,没有让他看见自己的脸。 第五天凌晨,齐峰在仓库发现一只落下的移动硬盘。他给袁鹰发消息,没有回复,便开车送到她家。 门铃响了很久,袁鹰才来开门。 她还穿着前一天去公司的衣服,头发随手扎在脑后。玄关堆着外卖袋,最上面一份只吃了几口。那盏感应灯在她身后亮着,过了四十秒,没有按原来的方式渐暗,而是忽然熄灭。 齐峰问:“灯怎么了?” “我把判断模块换去阅读室了。这里先用旧版。” 齐峰站在暗下去的玄关里,没有马上进去。他伸手触发了两次,灯都没有再亮。 齐峰看向餐桌。电脑开着,旁边是两罐空咖啡。清单上的四十七项划掉了三十二项,下面又添了十九项。 “你几天没睡?” “睡了。” “多久?” “够用。” “你手怎么抖?” 袁鹰把手收回袖口:“咖啡喝多了。” 齐峰走到餐桌旁,没有碰她的电脑。屏幕上开着一份责任说明,最后一段写:本次程序尚未完成正式交付,后续故障与部署、施工方无关,由开发者承担。 “这是什么?” “客户明天要的说明。” “为什么跟部署方无关?” “程序是我的。” “是我装的。” “你是为了救场。” “所以呢?” “不用你赔。剩下的我能补完。” 齐峰转头看她。 袁鹰把右手收回袖口。布料在腕骨下面轻轻动了一下。 齐峰问:“让我撤掉不是更简单吗?” 袁鹰的脸色变了一下:“已经验收了。现在撤更麻烦。” “我问你想不想。” “想不想不重要。” “对谁不重要?” “你撤掉会赔钱,客户也会找你。再给我几天就能做完,没必要。” 齐峰盯着她:“那天你让我上线了吗?” “你当时没办法。” “我问你让没让。” 袁鹰沉默了很久:“没有。” 这个回答轻得几乎听不见。 齐峰看着她收进袖口的手。两罐空咖啡立在电脑旁边,责任说明还开着,光标停在“与部署、施工方无关”后面。 “你他妈为什么不早说?” “说了你会难受。” “所以你就这样?” “我能处理。” “能处理个屁。你手都在抖。” 他的声音重了一点。袁鹰立刻往后退了半步:“真没多大事。程序本来就需要做完,客户也愿意付钱,你确实帮我找到了机会。” 齐峰抬手按了一下鼻梁。他朝玄关看去,那家甜点店的纸袋压在几个外卖袋下面,只露出一截提绳:“我来的时候还带了甜点。我以为你会高兴。” “我高兴。” 齐峰看向她。 袁鹰没有改口:“看见效果的时候,我高兴。看见名字也高兴。” 袁鹰接着说:“所以我没法马上让你撤。” 齐峰把桌边的空咖啡罐捏瘪了一块:“所以我做错了,你替我擦屁股?” “程序是我的。” “上线是我干的。” “现在撤,前面的时间和钱全白费。” “白费也是我的。” “还有你的人。” “我跟他们说。” “客户追责呢?” “追我。” “你赔得起吗?” “赔不起也轮不到你替我认。” 齐峰把捏瘪的咖啡罐扔回桌上。罐底撞到键盘,责任说明往下滚了一页,“由开发者承担”停在屏幕正中间。 “你没让我上。”齐峰说,“我还拎着甜点来问你高不高兴。” 袁鹰把右手往袖口里又收了一点:“我能做完。” “明天我去下线。” “撤了也改变不了已经用了三周。” “至少第四周不是偷的。” 袁鹰扶住桌沿。 “下线以后,”袁鹰问,“你还留测试包吗?” 齐峰看着她:“你想让我留?” “按授权应该删。” “我问你想不想。” 袁鹰没有回答。 第二天早上,齐峰通知客户程序未经授权,演示无效。 客户在电话里骂了二十分钟。项目尾款被冻结,已经到手的演示费退回,替换程序和两天人工也没有再报。 齐峰在责任说明上写:本人在明确知悉使用限制的情况下,擅自部署。 他没有让袁鹰到现场。 下午,阅读室切回最基础的本地控制。百叶停在固定角度,绘本区的灯也不再追着孩子跑。 齐峰把测试包、缓存和备份全部删除,将记录发给袁鹰。 发送以前,他在删除目录前停了很久。确认窗口第一次弹出来,光标落在“取消”上。文件列表重新露出来以后,齐峰把最后修改时间又看了一遍,才重新全选,第二次调出确认窗口。 这一次,他按下确认。 手机屏幕亮了一次。袁鹰没有回复。 齐峰在已经暗下来的绘本区坐了很久。百叶停在固定角度,外面的光在地板上慢慢挪。他没有再发第二条消息。