一、“研发的app”
我手机里那个粉色图标的“love hacker”app有个古怪的设定——
说情话能引发街头哄笑,抛媚眼能让路灯短路,而每次精心策划的约会都会变成别人的求婚现场。
倒计时30天,找不到真爱就会永久失去爱的能力。
第29天大雨中,我终于放弃所有技巧对尐瞳说:“没有那些法则,我连怎么喜欢你都不会了。”
她手里的伞微微一斜,雨水顺着伞骨流进我衣领。
这时手机屏幕闪烁,跳出最后一行字:“程序归零,恭喜你,现在可以开始真正学习了。”
第999位!用户
雨开始下时,杜小杰正蹲在便利店屋檐下研究手机。
屏幕上的粉色应用弹出一条新通知:【放电眼(初级)使用成功!!副作用:区域性电路过载。请用户谨慎使用超自然魅惑技能。】
他抬头看。整条街漆黑一片,只有便利店应急灯的绿光幽幽亮着。对面居民楼传来骂声:“这个月第三次了!供电局干什么吃的!”
手机又震了一下:【检测到用户心率上升,疑似愧疚情绪。温馨提示:本程序旨在优化人类情感交流效率,道德负担请用户自行承担。】
杜小杰把手机塞回口袋,雨丝斜打进檐下,打湿了他的裤脚。七天前,这个叫“love hacker”的app像个幽灵般出现在他手机首页,没有下载记录,无法卸载,图标是个像素风的粉色心形,点开后的欢迎语写着:“恭喜成为第999位用户,您的恋爱理论将转化为真实能力!”
二十五岁的杜小杰确实有一套恋爱理论——确切地说,是一整个笔记本。黑色皮革封面,内页用彩色标签分门别类:“三秒对视法则”“话题延伸公式”“微表情破译指南”。扉页是他用工整仿宋体写的座右铭:“恋爱就像编程,只要算法正确就能运行。”
理论很完美,实践为零。
直到这个app出现。
第一项解锁的能力是“情话自动生成器”。杜小杰在便利店试验时,对着收银姑娘脱口而出:“你的眼睛像两潭未经处理的工业废水。”
整间店的人都笑了。收银姑娘笑得扫码枪都拿不稳。
app愉悦地弹出提示:【情话生成成功!主要为欢笑)。评价:虽偏离浪漫预期,但互动效果显着。请再接再厉!】
雨越下越大。杜小杰正准备冲进雨里,身后传来轻笑声。
他回头。便利店玻璃门内,暖黄灯光下站着个短发女孩,挑染的几缕紫色在光下像融化的葡萄汁。她手里拿着关东煮,纸杯冒着热气,眼睛弯成月牙——显然目睹了全过程。
杜小杰的脸瞬间烧起来。
女孩推门出来,递给他一把透明长柄伞:“看你蹲半天了。”
“我……”
“不用谢。”她咬了一口鱼丸,声音含糊,“下次说情话前,建议先查查比喻句的用法。”
她走进雨里,没打伞,卫衣帽子往头上一兜,消失在街角。杜小杰愣愣地看着手里的伞,手机在口袋里剧烈震动。
【检测到高级用户能量波动。身份识别:前任测试员(编号998)。危险等级:未知。建议保持距离。】
雨敲在透明伞面上,啪嗒啪嗒。
二、失控的超能力
第二周,app发布了主线任务:【获取心动对象的联系方式(时限:7天)】
杜小杰的行动对象是隔壁部门的雯雯。她坐在靠窗的位置,下午三点阳光会斜照在她浅咖色的办公桌上,她总在那时起身泡茉莉花茶,动作轻缓得像某种仪式。杜小杰的笔记本里有关于她的专项观察:“周一、三喝茉莉,周二、四喝红茶”“右耳垂有小痣,疑似浅褐色”“微笑时左脸酒窝深03毫米(估算)”。
他决定调用app的“完美约会模块”。
模块需要输入目标详细信息。杜小杰把自己三个月的观察数据全输了进去:喜欢的颜色(米白)、电影类型(法国文艺片)、食物禁忌(不吃香菜)。系统运算五分钟后,生成一份长达十二页的《初次约会完美执行方案》,包括餐厅选择(人均消费388元的星空主题馆)、话题清单(从《天使爱美丽》聊到巴黎地铁线路变迁)、着装建议(浅蓝衬衫配卡其裤,第三颗纽扣解开)。
预订需要提前三天。杜小杰付款时手在抖——那几乎是他半个月的午餐钱。
约会日,雯雯穿了条米白色连衣裙,比他想象中还要好看。前菜上来时一切顺利,他按计划聊起法国电影,她眼睛亮了一下。主菜进行到一半,窗外巨大的led屏突然亮起。
不是方案里写的梵高《星月夜》。
是炸开的红玫瑰、金色大字和震耳欲聋的求婚进行曲:“瑶瑶!嫁给我!”
全餐厅沸腾。人群涌向窗边,手机闪光灯连成一片。杜小杰僵在座位上,看着窗外单膝跪地的陌生男人,又看看对面雯雯错愕的脸。app在他脑中平静播报:【检测到更强的爱情能量场。本场约会已被覆盖。温馨提示:本程序遵循浪漫能量守恒定律,您消耗的浪漫值将转移至半径五十米内情感浓度最高的事件中。祝您用餐愉快。】
愉快个鬼。
“对不起,”杜小杰猛地站起来,膝盖撞到桌腿,“我去趟洗手间。”
他几乎是逃出餐厅的。下台阶时绊了一下,整个人向前扑去——
一只手抓住了他的胳膊。
力道很稳,带着凉意。杜小杰抬头,又看见那张脸。紫色挑染的短发在霓虹灯下泛着光,眼睛亮得能映出他狼狈的样子。
“小心。”她说。
是便利店那个女孩。不,是app说的“前任测试员”。
杜小杰站稳,她松开手,递过来一个透明文件袋——是他忘在座位上的企划书。他愣愣接过,指尖碰到她的,手机在口袋里疯了一样震动。
【警告!高级用户主动解除!能量干扰指数上升!建议立即撤离!】
“谢谢……”
“我叫尐瞳。”她打断他,从口袋里掏出手机晃了晃。锁屏壁纸是雯雯拍的一张夕阳照片,云层被染成蜜橘色,“还有,别再用那个app追雯雯了。”
“你怎么知道……”
“我说了,我是前任测试员。”她转身要走,又停住,侧过脸看他,“放电眼练得不错,整条街都黑了。”
她消失在夜色里,像从未出现过。杜小杰站在原地,手里攥着文件袋,脑子里循环播放着她最后那个眼神——不是嘲笑,更像是……怜悯?
手机震了一下,新任务弹出来:【与目标完成一次有效肢体接触(时限:48小时)】
下面还有一行小字:【检测到干扰源。任务难度自动升级。失败惩罚:当众打喷嚏十连击。】
杜小杰闭上眼睛。
三、读心术与齿轮耳钉
任务以惨败告终。
杜小杰“不小心”在茶水间撞到雯雯,咖啡泼了她一身。他手忙脚乱掏纸巾,却带出一整包未开封的卫生巾(app建议的“贴心小物”)。雯雯的脸红得要滴血,抓起纸巾就跑。app冷冰冰地判定:【肢体接触达成(肘部碰触05秒)。但目标情绪波动值为负。任务失败。惩罚执行中——】
“阿嚏!阿嚏!阿嚏!”
杜小杰在众人围观下打了十个响亮的喷嚏。鼻涕眼泪糊了一脸。
尐瞳就是这时出现的。她像个幽灵,总是出现在他最狼狈的时刻。这次她递过来的不是纸巾,而是一小瓶未开封的矿泉水。
“喝点水。”她说,声音里压着笑。
杜小杰灌下半瓶水,喷嚏终于停了。他眼睛通红地看她:“你跟踪我?”
“需要吗?”尐瞳挑眉,“你的任务失败提示音,整层楼都听得到。”
“提示音?”
“前任测试员的特权。”她晃了晃手机,“我能收到附近所有用户的系统广播。刚才那十条‘任务失败’,像鞭炮一样在我脑子里炸。”
她说话时,杜小杰注意到她左耳垂上戴着一枚耳钉——小小的银色齿轮,在日光灯下微微转动。
齿轮。精密、理性、环环相扣。和她整个人透出的那种随性气质完全不搭。
“看什么?”尐瞳察觉到他的视线。
“耳钉。很特别。”
她手指无意识地去摸耳钉,轻轻转了转:“我爸送的。他说爱情就像齿轮,得严丝合缝才能转起来。”她笑了笑,有点讽刺,“可惜他设计的程序,只会让齿轮卡住。”
那天晚上,杜小杰失眠了。他躺在床上翻看app的任务记录:七次尝试,七次失败,惩罚从当众唱歌(跑调版)到裤子突然开线(办公室限定)。每次失败后,尐瞳都会出现。有时递瓶水,有时只是远远投来一个眼神。
他打开黑色笔记本,在新的一页写下:
观察对象:尐瞳(编号998)
特征:紫色挑染短发,齿轮耳钉,笑容左边嘴角翘得更高
出现时机:总在我失败时
疑点:为何成为“前任”?程序说的“剥夺爱的能力”是什么?
备注:她手机壁纸是雯雯的照片。关系?
写到最后一句,他笔尖顿了顿。
手机屏幕突然亮起。粉色app自动启动,弹出一条他从没见过的任务:
【特殊挑战:使用“读心术(体验版)”探知目标真实想法】
【时限:30秒】
【备注:本技能为高能耗功能,每日限用一次。读取内容可能包含杂音,请谨慎甄别。】
读心术?
杜小杰坐起来。目标……选谁?
雯雯?尐瞳?
窗外在下雨,雨点敲打着玻璃。他盯着那枚齿轮耳钉的素描(他凭记忆画的,画工拙劣),手指悬在“雯雯”和“尐瞳”之间。
最后,他选了雯雯。
第二天午休,他在茶水间“偶遇”雯雯。她正在泡茉莉花茶,热水冲进玻璃杯,茶叶上下翻飞。
“好香。”杜小杰说。
雯雯抬头笑了笑:“要尝尝吗?我带了多余的杯子。”
就是现在。杜小杰点开app,按下“使用”。
世界静了一瞬。
然后,无数声音涌进他脑子——不是雯雯的声音。是茶水间里所有人的思绪碎片:“下午开会要迟到了”“昨晚追的剧更新了”“这茶好香”“杜小杰今天衬衫扣子又扣错一颗,啧,可爱”……
最后一个声音,清脆、带着笑意,分明是尐瞳的。
杜小杰猛地转头。
尐瞳靠在门边,手里拿着一罐咖啡,正看着他。见他转头,她举了举咖啡罐,嘴角那抹笑加深了。
三十秒结束。脑内的声音潮水般退去。
“杜先生?”雯雯疑惑地看着他,“你脸色不太好。”
“没事……”杜小杰后退两步,落荒而逃。
他在安全通道的楼梯间撞见尐瞳。她坐在台阶上,咖啡罐放在一边,低头看着手机屏幕。
“读心术好玩吗?”她头也不抬。
“我听到了你的声音。”杜小杰喘着气,“为什么?”
尐瞳沉默了很久。楼道里的声控灯灭了,只剩手机屏幕的冷光照着她的脸。她划动屏幕,调出一个纯黑色的应用——界面和“love hacker”的粉色完全不同,是滚动的绿色代码流。
“我是第998号测试员。”她说,“这程序是我爸开发的。他叫顾明远,是个浪漫过头的老程序员,相信爱情可以被算法优化、被公式解构。我是他的第一个测试员,也是第一个失败案例。”
她点开一段日志记录。时间点是三个月前:
【用户998(尐瞳)任务失败。原因:过度依赖技术分析,情感互动机械化。系统判定:丧失程序定义内的“爱的能力”。惩罚:永久剥夺app使用权,转为观察员权限。】
“什么叫程序定义内的‘爱的能力’?”杜小杰问。
“就是那些心跳加速、手心出汗、计算好的浪漫瞬间——所有能被程序量化的‘恋爱反应’。”尐瞳关掉屏幕,黑暗重新笼罩下来,“失败后,我再也触发不了任何任务,感受不到程序规定的‘心动’。但我得到了观察员权限,能看到附近用户的数据流,偶尔……能稍微干预一下。”
“比如让我的放电眼导致整条街停电?”
“那是意外。”她声音里有笑意,“本来只想让你桌上的台灯闪一下。”
“那读心术……”
“串频了。”尐瞳站起来,拍了拍牛仔裤上的灰,“我的观察员系统和你的用户系统偶尔会交叉。你听到的是我当时的实时想法——关于你扣错的扣子。”
声控灯又亮了。杜小杰看见她的耳钉在光下转了小半圈。
“还有九天,对吧?”她走到门边,回头看他,“我爸的程序有个最终机制:三十天内,完全依靠程序建立的关系,会被判定‘成功’,用户获得永久使用权。反之,任务失败……”
“就会永久失去爱的能力。”杜小杰接道。那条细则他看了无数遍。
“对。但没人知道那具体意味着什么。”尐瞳拉开门,楼道的光涌进来,“对我来说,只是不能再通过app感受‘爱’了。至于真实的爱……”
她没说完,走了。
杜小杰在黑暗里站了很久。手机屏幕亮起,倒计时跳动到【9天0小时0分】。
新任务弹出来,只有两个字:
【真爱】
没有指引,没有模板,没有公式。
四、雨和伞
接下来的八天,app进入了诡异的静默期。
没有新任务,没有提示音,只有倒计时自顾自地减少。杜小杰的生活却像被按了暂停键。他不再偷偷记录雯雯的作息,笔记本摊在桌上,最新一页只写了一句:“她转耳钉时,是顺时针。”
他试着用那些法则分析自己对尐瞳的感觉。
三秒对视法则?她总在他出糗时看他,眼神里一半无奈一半笑,每次对视都超过三秒,心跳会乱,不符合法则。
话题延伸公式?他们聊天的内容从app漏洞跳到路边摊的关东煮哪个最好吃,毫无逻辑,但每次都停不下来。
微表情破译?她笑的时候左边嘴角翘得更高,生气时会不自觉地转耳钉——顺时针转是轻度烦躁,逆时针转是真的生气了。这个发现让他莫名高兴了一下午。
全部失灵。
第二十九天,从早上就开始下雨。杜小杰加班到晚上十点,走出写字楼时,雨已经大到看不清十米外的红绿灯。他没带伞,把公文包顶在头上冲向地铁站,却在第一个路口看见了尐瞳。
她撑着一把透明的伞,站在便利店招牌下,低头看手机。白光从她头顶泻下来,雨丝在光里变成千万条银线,把她整个人笼在一层朦胧的光晕里。
杜小杰停下脚步。
雨水顺着头发流进眼睛,有点涩。口袋里的手机在震动,不用看也知道,是最后二十四小时的倒计时提醒。
他朝她走去。
脚步声被雨声吞没。直到他走到伞边,尐瞳才抬起头。看见他时,她怔了怔,然后把伞挪过来一半。
“我在等你。”她说,声音在雨里显得很轻,“最后一天了,想看看你会不会触发什么隐藏任务。”
“没有任务了。”杜小杰说。雨水顺着他下巴往下滴,流过喉结,洇湿了衬衫领子,“app从八天前就死了,只剩下倒计时。”
尐瞳没说话,掏出自己的手机。黑色应用界面上,代表杜小杰的光点正在剧烈闪烁,旁边弹出一行她从未见过的状态:
【用户999进入最终判定阶段。系统静默观察中。】
雨更大了。风吹斜了雨丝,噼里啪啦打在塑料伞面上,像无数细小的鼓点。伞太小,尐瞳把伞又往他那边挪了点,自己的左肩暴露在雨里,卫衣很快洇出一片深色。
“尐瞳。”杜小杰叫她。
雨声太大,她没听清:“什么?”
他深吸一口气。那些背过的情话、练过的表情、计算好的角度,全从脑子里蒸发了。笔记本里的一百零八条法则,没有一条教他如何在倾盆大雨里,对着一把透明伞下的女孩,说出此刻堵在胸口的东西。
最后只剩下最简单、最笨拙的一句:
“没有了那些法则,”他提高声音,几乎是在喊,“我连怎么喜欢你都不会了!”
说完他就后悔了。太直白,太苍白,没有铺垫,没有技巧,甚至语法都不太对。雨水灌进他领口,冷得他一哆嗦,更显得这话傻气。
尐瞳握着伞柄的手紧了一下。
很细微的动作,但杜小杰看见了。她的指节微微发白,拇指无意识地摩挲着伞柄的塑料接缝。透明伞面随着她的动作轻轻一晃,更多的雨水顺着伞骨汇聚,流成一道细细的水线,不偏不倚,落进杜小杰的衣领。
冰凉的触感顺着脊椎滑下去。
与此同时,两个人口袋里的手机同时发出“嘀”的一声长鸣。那声音穿透厚重的雨幕,清晰得诡异,像某种宣告终结的钟声。
杜小杰掏出手机。
粉色app的界面正在瓦解。不是黑屏,不是闪退,而是一种缓慢的、近乎优雅的消散——所有的按钮、任务栏、倒计时数字,都像被雨水浸透的墨水画,边缘开始模糊、融化,变成一团团氤氲的色块。粉色褪成浅红,浅红淡成灰白,最后,屏幕中央浮出一行字:
【程序归零。数据清空中……】
【恭喜你,用户999。】
【现在可以开始真正学习了。】
然后,屏幕彻底暗了下去。再按电源键,只有手机厂商的logo,那个粉色心形图标消失了,像从未存在过。
杜小杰抬起头。
尐瞳也正看着自己的手机屏幕。黑色应用界面上,绿色代码流停止了滚动,最后定格在一行简单的日志:
【观察对象999:判定通过。学习期开始。】
她按灭屏幕,抬起头。雨还在下,打在伞面上,啪嗒啪嗒。伞下的小小空间里,只剩下这单调的节奏,和两个人交错的呼吸声——杜小杰的有些急,她的很轻。
她先笑了。
不是以前那种带着无奈或调侃的笑,也不是程序分析报告里那种“嘴角上扬15度,眼周肌肉收缩”的标准笑容。而是一种很轻、很新鲜的、像第一次学会某种表情的笑容。左边嘴角翘得比右边高一点点,眼睛弯起来,睫毛上沾着细小的水珠,眨动时像蝴蝶抖落翅上的雨。
“你看,”她说,声音也沾着湿漉漉的雨气,“下雨了。”
杜小杰低头看自己湿透的衬衫和西装裤,又看看她湿了一半的肩膀。然后他也笑了,笑得肩膀发抖,笑得眼睛发酸,笑得那些残存的、关于完美和法则的焦虑,都随着这笑声散进雨里。
“嗯,”他说,“下雨了。”
远处写字楼的灯光在雨幕中晕开,变成一片片模糊的光斑,像梵高的星空融化在了水里。没有任务了,没有法则了,没有百分之百的成功率和十二页的完美方案了。只有这一小方伞下的空间,两个人湿漉漉的肩膀几乎碰在一起,雨声大得盖过了心跳——或者心跳终于学会了不用被听见,不用被量化,不用被评价为“达标”或“未达标”。
尐瞳把伞又往他那边推了一点。
这个动作没有任何app指导,没有计算角度和受力分析,她只是这么做了。因为他在雨里,因为她有伞,因为——也许只是因为,她想这么做。
“走吧,”她说,“雨一时半会儿停不了。”
他们走进雨里。
伞很小,两个人不得不靠得很近。杜小杰的公文包还在滴水,尐瞳的球鞋踩进水洼,溅起细小的水花。谁也没再说喜欢,没提app,没提倒计时和齿轮耳钉和那些失败的约会。只是并肩走着,在初冬的冷雨里,走向地铁站明明灭灭的灯光。
雨丝在路灯下变成金色的线。
尐瞳忽然说:“我爸的笔记本最后一页,写着一句话。”
“什么?”
“爱不是程序,是bug。”她侧过脸看他,眼睛在雨夜里亮晶晶的,“无法预测,无法修复,但让整个系统变得有趣。”
杜小杰想了想:“那我们现在是……有趣的bug?”这bug会一直这样吗?…
“大概是吧。”她笑,“两个刚卸载了杀毒软件的bug。”
地铁口近了。灯光从地下透上来,暖黄的一团。杜小杰忽然停下脚步。
“尐瞳。”
“嗯?”
“我笔记本的最后一页,”他说,“现在是空白的。”
她看了他几秒,然后点了点头,很轻地“嗯”了一声。
“雨还在下。但伞下的空间是干的,暖的。他们继续往前走,走进光里,走进新的、没有程序的夜晚。”
而某个已被删除的程序深处,最后一条日志在彻底清空前悄然生成:
【最终判定:通过。】
【学习期,开始。】
【祝你们好运,bug们。】
后记:
三个月后,杜小杰在搬家时翻出了那个黑色笔记本。
他盘腿坐在一堆纸箱中间,翻开扉页。“恋爱就像编程,只要算法正确就能运行”——那行字还在,但下面多了另一行,用紫色荧光笔写的:
“但最好的程序,往往是从一个美丽的bug开始的。”
字迹有点眼熟。他笑起来,把笔记本塞进“要保留”的箱子最底层。
“窗外阳光很好。”
没有app提示音,没有倒计时,没有任务。只有生活本身,带着所有不完美的、笨拙的、无法被计算的温柔,继续向前。
“而他们,两个卸载了程序的bug,正在学习如何运行。”