《损失函数之外》 第3章 第 3 章 冬天的尾巴拖得很长,风从地铁口往上涌,带着一点潮冷和铁轨的味道。新商务区刚长成模样,高楼并排站着,玻璃墙一面叠一面,把头顶那块不大的天空剁碎了,分给每一扇窗一点。 从 A 口出来,顺着导航走不过几分钟,星河科技那栋楼便出现在视线尽头。楼身偏瘦,高而直,外立面是整片的深色玻璃,只在中段嵌了一圈银白的线条,把整个轮廓勒得很利落。 入口前有一小块空地,浅灰石板铺得仔细,连缝隙里都看不见多余的沙粒。空地中央立着一件金属装置,远看像谁在地上插了一根细杆,又在半腰拧了个弧,近看又像一笔停在半空的长横。太阳从楼缝里挤出来一点光,恰好擦着那一截弧面,泛起一圈冷亮。 郦苒在台阶下停了一下,深呼吸一口风,把围巾取下来塞进包里,这才跟着上班族的队伍一同推门而入。 门一合上,暖气扑在脸上,室内的声响一下子变得柔了——空调缓慢送风,电梯在另一头开开合合,前台不知在和谁确认名单,压低嗓子重复了一遍名字。 大堂不算华丽,却有一种刻意克制的体面。墙面用大块石材砌出笔直的线,天花板悬着几圈环状灯带,光线被磨过一层,落下来,不刺眼。地板被抛得很平,行人的脚印在上头一闪而过,不留痕迹。 正对入口是一面电子屏,切换着各条业务线的名字和图标,轮到“金融科技”那一栏时,角落里蹦出七个字: 【让生活更轻。】 那几个字在屏幕上停留的时间不过一秒,却很容易落进人眼里。郦苒看见了,心里轻轻一动——她总觉得这种句子都像从同一本手册里抄出来的,只换了几个形容词。三年前的那场风波之前,她也曾相信过类似的话。 “让生活更轻啊......” 身后有人低声念了一遍,像是随口接了屏幕上的话,语调却并不附和,尾音微微收着,逼得那几个字听上去不像祝福,倒有几分打量。 接着,那同一个声音又慢悠悠添了一句:“轻下来的,总得有地方接重。” 声音不大,偏偏清晰,像一滴水落在已经安静了很久的桌面上。大堂里的人大多自顾自地走着,没人注意这句,只是她握着手机的手不由自主收紧了一下,下意识地往那个声音的方向看过去。 不远处的员工通道前,一个男人站在门禁机旁,刚把工牌在感应区一刷,灯跳了一下绿。他肩背笔直,穿着一件合身的深色大衣,扣子只扣到中间,里面露出一截规矩的白衬衫领口和压得正正的领带,整个人像一根细长的标记,笔挺地立在那儿。 侧着脸的时候,可以看见他轮廓收得很利落:眉峰极有分寸地挑着,不尖不钝,眼眶不深,但眼尾略略往外带,给人一种精神而不戾气的印象。鼻梁挺直,下颌线干净,没有多余的肉,却也不是刻板的削瘦。五官加在一起,不是那种乍看之下令人惊艳的好看,却是一眼过去就能记住的耐看——像一块刻工细致的印石,不声张,但磨得极彻底。 他刚才说话时嘴角微微往一边收,似笑非笑,倒像是说给自己听,而不是刻意点评公司标语。那种淡淡的疏离感,与其说是傲气,不如说是习惯——看事先看漏洞,看字先看没写出来的那半句。 “岑总早。”在一旁值守的安保像是怕失礼,赶忙站直了身子,小心地打招呼。 “早。”男人声音不紧不慢,尾音收得很干净,没有多余的客套语,却也不显得冷淡。 说完,他抬眼往电子屏那边看了一眼,视线顺着那行【轻一点】掠过去,眉心像是轻轻动了一下,又迅速平回去,脚下的步子已经往里走了。 背影在灯光和影子交界的地方拐了个弯,衣摆随着步子微微晃动,步幅不大,每一步落下却稳得很,让人一看就知道,这人大概不太习惯走没把握的路。 “郦苒?” 前台的声音从另一侧传来。 她收回目光,快步上前,把身份证递过去。前台姑娘对着屏幕核对了几眼,笑着把新打出来的工牌递给她:“基础平台部,新同事是吧?欢迎欢迎。” 工牌塑封边缘还有一点温,卡片上那张证件照是前两天匆匆拍的,背景蓝得有些呛,眉眼倒被定格得比她想象中要淡几分。名字下面,是新分配的工号。 人事已经在旁边等着,见她收好工牌,便转身领路:“来,带你上去认认地方。” 高跟鞋落在石板上的声音轻脆,在空大的大厅里绕了两圈才轻轻散开。电梯门合上时,外头的光景被切断,只剩金属内壁上那一小块被灯反出来的影子。郦苒瞥了瞥,见镜子里的自己肩膀还是有点僵,便暗暗吸了口气,让肩往下沉了一寸。 “二十层整层都是平台部。”人事按下楼层,闲聊似的开口,“你这次挺好,直接分在靠窗的一列。” 电梯平稳往上爬,缝隙间不时闪过别的楼面,每一格窗后都是另外一种灯光和生活。她盯着光影,一时间有些恍惚——同一座城,同一段时间,楼里楼外的人,在截然不同的轨道上各自奔跑,她只是刚换了一个轨道而已。 平台组在一角,被玻璃隔断围出一方不算大的天地。隔板不高,基本遮不住人影,倒是把外头动静挡去了一层。 工位排得紧凑,显示器多半是双屏或三屏,屏幕上滚动着日志、监控,还有一行行看不懂的英文。桌面上比起装饰,更常见的是实用的杂物:一摞写满公式的便签,几本被翻得卷边的技术书,几只不成对的马克杯。偶尔有一两盆小植物,从空咖啡罐里探出叶子来,长得顽强而不讲体面。 “这圈儿都是我们自己人。”带路的组长推开玻璃门,回头冲她笑笑,“以后就占这片地。” 他看上去比她大不了多少,戴着一副细框眼镜,说话带点软糯的口音,整个人给人的第一印象是没什么攻击性。可往那儿一站,又能感觉到他对整个区域的门儿清,谁在忙、谁在摸鱼,一眼就能看出来。 “这就是你的位子。”他指了指靠窗的那一格,“视野不错,运气挺好。” 郦苒把包放在椅子上,先走到窗边看了一眼。楼下是一条河,宽宽的,冬天的水色偏暗,偶尔有船慢慢划过去,水面被划出一道细细的痕,很快又被流向抹平。 “我们这边主要负责底层服务的稳定,”组长在旁解释,“监控、报警、限流、熔断,都是这种东西。别的业务干得再欢,到最后都得踩在这层上。” 他笑笑,又加了一句:“好处是离用户远了一点,真正的风浪打过来,能折掉好几层,到你这里,声音就小多了。” 郦苒听着,只抬了抬嘴角:“听起来挺适合我。” 她没往下解释,组长似乎也没打算追问,点点头:“你先装环境,有问题在群里吼一声。” 她坐下,接上公司配的双屏,输入新工号登陆。系统跑了一圈初始化,熟悉的黑底命令行跳了出来,光标一闪一闪,让她心里的某一部分慢慢落地——键盘还是那个键盘,命令还是那些命令,至少这块儿,是她不会犯错的地方。 另一块屏幕上打开的是监控面板,一堆折线井井有条地往前爬,每一条都在自己的区间里晃悠,没有谁出格。她看了几眼,忽然觉得眼前的这些线,比当年那条猛往上冲的收益曲线顺眼多了——不够好看,但稳。 午饭点到了,工位附近椅子一张张被推开,有人问:“去不去食堂?带你熟悉熟悉地形。” “不用了,你们去吧。”她抬抬下巴,指指屏幕上的文档,“我先把这个看完。” 同事倒也不勉强,有人笑着丢下一句:“那我们回来给你带个苹果。”几个人说说笑笑往外走,很快被门外的动静吞没。 办公区一下子静了。空调送风的声音可以听见,远处不知道哪一间会议室传来隐约的讨论声,晕在墙壁后,听不真切。 郦苒从包里掏出早上买的面包,拆开包装,用纸垫在键盘旁,边吃边翻内部 wiki。新公司的流程写得极细,把接入顺序、限流规则、策略回滚一条条摊开。她一边看,一边拿随身带的本子抄重点,笔划在纸上留下暗暗的一道道线,将原本陌生的系统慢慢整理出轮廓。 笔尖划过的一瞬,她忽然觉得自己在做的事情,比任何漂亮的宣传稿都清爽——白纸黑字,写清楚哪一步可以做,哪一步不可越线。这个世界未必会照着纸走,但至少她自己知道,线画在哪里。 下午两点刚过,聊天工具角落弹出一条系统通知: 【14:30 全员大会,7F 多功能厅集合。】 组里立刻有人在群里刷表情:“开会,走了走了。” 也有人调侃:“听说是给夜猫子准备的项目。” 组长合上电脑,朝几个人招呼:“新项目,大家露个脸。郦苒,你也去。” 多功能厅在七楼,门口贴着一张简单的 A4 纸,上面打印着“内部会议”。厅里灯光柔白,从高处一圈圈撒下来。前面几排是软座,后面摆着折叠椅,过道留得规规矩矩。 郦苒挑了靠边的一张椅子坐下,工牌挂在胸前,随着呼吸轻轻起伏。厅里的嗡嗡声在主持人上台后渐渐低下去,只剩下翻纸、挪椅的细响。 “今天不长篇大论。”主持人开口,倒也痛快,“只说一件事——新项目。” 他说着,抬手指了指背后的大屏。屏幕亮起来,白底上只有几行字,没有动画,也没有精心设计过的图标。 【项目代号:夜帘】 【类型:夜间文字陪伴服务】 【备注:不主动、不替代、有边界】 “名字先暂叫这个。”主持人笑了笑,“关起门来用,哪天真要上线,再说好不好听。” 他扫了一圈台下:“我们想做的事情很简单——给那些半夜醒来,却又不想打扰谁的人,留一个地方说两句。” “但我们不打算让它去扮演谁。”他的语气慢慢收紧,“它不是亲戚,不是朋友,更不是专业咨询。它只能是一个‘在那儿’的存在。能听,能回,但不替别人做决断。” 这话说得直白,听上去就不像一篇写给媒体看的稿子,更像准备拿来做事的原则。 “也就是说,”主持人顿了一顿,“从一开始,我们就得画好那些不能踩的线。” 他把手里的卡片翻到下一页:“这件事不容易,所以我们请了一个人来帮我们盯着。” 他笑着朝前排一指:“刚刚入职不久的新同事,风控这边的负责人——岑砚。” 灯光顺着动作稍稍偏了一点,落在前排中间那个人身上。岑砚起身,从容走上台,像是对这样的场合早已熟门熟路。 上了台,他先把话筒调整到合适的高度,才开口: “我站在这里,是为了在大家兴致正高的时候,适时扫兴一下。” 台下一阵笑,比刚才更多了几分真心。 “‘夜帘’想干的事,刚刚已经说了。”他没有再看屏幕,“我只提醒两句。” “第一,人半夜说的话,比白天多一层脆弱。”他慢慢道,“你觉得自己给了一个很中性的回复,对方未必这样理解。对他来说,那可能是一种暗示,一种默认,甚至是一种鼓励。” 他看了一眼场下,不紧不慢:“所以我们要对自己说出去的每一句话负责,负责到最糟糕的误解。” “第二,我们不拿任何人的崩溃做实验。”他用的是“实验”这个词,“后台再漂亮的指标,都不值得拿一个真实的人去换。” 他的声音不高,却有一种压舱石似的重量,把这几句话稳稳按在厅里。掌声响起的时候,节奏有些乱,各自按着各自的心思拍,但终究拍了。 “总之,”他最后收尾,“我在这儿,只干两件事——提醒、拒绝。提醒我们别忘了线画在哪儿,拒绝那些踩线的提案。至于线以内要怎么做,让它对得起‘陪伴’两个字,那是你们的本事。” 他说完,把话筒还给主持人,转身下台,步子仍旧那样,不急不缓,像刚才在大堂那几步。 主持人笑着接过去:“有他帮我们盯着,心里多少踏实点。” 他低头看了看卡片:“看门的人有了,再说搭梁的人。后台这一块,我们请了平台部来做主力。负责整体架构的同事,就坐在我们中间——刚加入不久的郦苒。” “郦苒?”主持人抬眼,朝她所在的方向示意。 视线一下子从四面八方压过来。郦苒只觉得掌心有点热,还是站起身,尽量平静地朝前方点了点头。灯光没有特意打在她身上,她在人群里,不显眼也藏不住。 她抬头那一刻,再一次撞上岑砚的目光。 他已经坐回位置,侧身倚在椅背上,手里摊着一份名单,手指压在某一行上。听到名字,他抬眼望过来,视线从她脸上滑过一圈,不带打量,却有一种“记下了”的肯定。 那一眼并不算长,但她还是生出一种被清点过的感觉——从此以后,她的名字大概会频繁和“风险”“阈值”这些字同时出现在他的档案里。 散会后,多功能厅里椅子拖动的声音一阵紧似一阵,人群往门口挤。郦苒跟在组长后面,一路被人流推着往外走,到走廊转角处才稍微喘上一口气。 “郦工。” 背后有人叫她,声音不急,带着一点确认的意思。 她回头,岔路那里灯稍暗一些,光打在人的侧脸上,线条被柔了一层。岑砚站在那,一件大衣解了上面两颗扣子,脖颈线条因这个动作露出一截,显得比刚才在台上多了一分松弛。 他把那摞名单换到另一只手里,留出右手,算不上主动,也谈不上客套,像一种自然的礼节。 “刚才台上提到的后台负责人。”他开口,语调平平,“郦苒?” “嗯。”她点头,伸手同他握了一下。指尖碰到他的指节,能感觉到那是一只常年握笔敲键盘的手,掌纹干净,力道不轻不重。 “岑砚。”他说,“风控这边,之后会时常打扰。” “哪里。”她松开手,往后挪了半步,保持一个既不过分亲近也不显得生疏的距离,“该打扰的。” 他低头看了一眼名单,视线在某一行停了停,似乎确认了什么,又抬起眼来:“你的以前那一段,我看了大概。” “……”她喉咙有一瞬间发紧。 她在简历上删掉了许多字,只留“某大型金融机构核心项目组”。可真正详细的项目记录,仍旧安安静静躺在某些归档里,用一串串编号和时间标记着。 “档案不会写全部。”他倒是先替她拆了一部分紧张,“只能看见结论,看不见当时的每个选择。” “不过——”他顿了顿,声音压得更低了一些,“愿意从前端退到这一层来,至少说明,你还想自己看着那条线。” 这一句话,既没指责,也没安慰,却把她最近这些天反复翻来覆去想过的东西,提炼成了一个简简单单的判断。 郦苒沉默了两秒,才开口:“我只是不想再让别人的名字跟我的名字同一行。” “那就更需要你在这儿。”岑砚道,“画线的人越多,线越不容易被当成一条装饰。” 语气平静,像是在述职,而不是在对一个刚认识的人说话。他想了想,又加了一句:“以后评审会上,我可能会把你们方案挑得很细。” 他说这话时眼里带着一点笑,却是不含恶意的那种——像提前声明自己不好说话,不希望别人指望他放水。 “那正好。”她也笑了一下,笑意这一次是真心的,“我自己写的东西,被挑细一点,总比被忽略强。” 岑砚点点头,把这句话也一并收了进去:“那咱们就先说好,各司其职——我负责看门,你负责把路修稳。” 说完,他抬了抬手里的纸:“我那边还有个会,先走一步。” 他话不多,也不拖尾,转身往另一条走廊走去。身形在灯光下一晃,再拐个弯,整个人便只剩一个整齐的剪影,最后消失在门缝边。 郦苒站在原地,指尖无意识地摩挲着工牌的边,塑料壳已经被体温捂得有些热。前方不远处,组长在等她,边刷手机边朝她摆手。 她迈步走过去,走廊尽头那扇窗的玻璃上映着傍晚的天色,灰里透着一点金。楼下那条河被天光压了一压,水面暗了,靠岸的一侧却亮了一条细线,跟她心里那道还没想清楚的路有几分相似——看不全,只能知道,它还在往前延伸。 第1章 第 1 章 夜色慢慢沉下来,像一方浓墨,从天顶一路倾泄,把整座城浸在其中。只有高楼的玻璃层层亮起,灯光从地面向上拾级而行,好似有人提着一盏盏小灯,一层一层点上去。 这条街最显眼的一面,几乎都被同一栋楼占了去。金融科技公司的总部自街角拔起,整面外墙沉着冷光,顶层的灯在深夜也不肯熄灭,仿佛怕这座城一闭眼,它的数字就会从缝隙里漏走。 会议区的落地窗极宽,从里面望出去,车流在脚下弯弯绕绕,红尾灯连成一条暗红长练,隔着玻璃看去,仿佛有人在黑布上线绣——针线细密,暗处却藏着起伏。 屋里暖气开得足,空气里混着咖啡煮过几轮后的苦味,以及打印机刚吐出纸张时的热气。大屏幕占了半面墙,白底上那条收益曲线一路抬头,线条纤细,颜色却压得极重,像有人执意用浓墨在宣纸上描了一遍又一遍,生怕淡了。 有人站到屏幕前,举起香槟,笑意满面,声音在空间里敲出一层回响: “再这么走两天,咱们就不是给别人打工,是在年会上讲故事的人了。” 应和的笑声在天花板下盘旋开来。成排的工位间,一盏盏台灯低低垂着光圈,落在键盘、文件和外卖盒上。有人从椅背上弹起去碰杯,有人远远举起纸杯意思一下,还有人仍旧低着头,单手在群里刷消息。 产品群的提示一条接一条蹦出来: ——【这走势,挂墙上都不丢人。】 ——【今晚这条线,请允许我截个图当屏保。】 ——【@所有人谁来配个文案:聪明钱的正确去处。】 郦苒坐在角落那一排。那一带灯光略暗,天花板的光照不过来,只落在她桌前两块屏幕上,冷白色的光映得她的脸有些淡。 她靠着椅背坐直,双手自然搁在键盘两侧,没有跟着起哄,也没有跟着截屏,只静静看着大屏幕上的那条线,眼底似乎也映着一段起落的弧。 那套评分规则,是她一点一点抠出来的。样本怎么选,权重如何调,风险被切成几档,每一档背后对应怎样的波动范围,她闭着眼睛都能背出来。 屏幕上的线一路向上,走势漂亮得近乎乖巧。别人眼里只是“超预期”“好故事”“报表好看”,她看久了,却总忍不住生出一种古怪的错位感——这些本该只存在于文档和公式里的数字,此刻像伸出无数纤细的手,从城里一户一户家里,把存折上的钱轻轻牵了过来,串在自己身上。 隔壁工位伸过来半个脑袋:“苒苒,你不去喝一杯?难得见老总笑得这么开。” 她偏头看过去,同事脸上带着加班惯有的倦意,又被这突如其来的“胜利”冲淡了一层。 “等会儿。”她笑了一下,笑意淡,却不算敷衍,“我再看一轮。” 她说“看一轮”时,手指在桌面上轻轻点了两下,像给自己加了一道检查点。她有点强迫症的习惯——每一次系统大规模上阵,她总要再从头到尾过一遍关键路径,哪怕早已在测试环境里反复跑过几十遍,仍旧放心不下。 等同事走远,她才收回目光,给自己倒了一杯温水。公司发的玻璃杯杯壁上有洗不掉的咖啡渍,杯身印着醒目的 logo,被她无意识地转了一圈又一圈。她用拇指指腹抹了抹杯口,那点痕迹当然擦不掉,她瞥了一眼,索性不再理会。 从这一行看过去,她与其说是在看数字,不如说是在看一面镜子——镜子上不是自己的脸,而是一段将要被写进简历、被印在报告封皮上的经历。 窗外风刮在玻璃上,带着楼体的回声,细细簌簌,仿佛远处起了一场看不见的雨。屋内却是一片热闹。键盘的敲击声、聊天的笑声、椅轮滚过地毯的轻响混在一起,一点点堆高了节奏,像谁在指挥一支只能加速不能减慢的乐队。 那一夜,曲线在众人注视之下稳稳收盘,刚好停在一个美得出奇的高位。有人故意拖长声调念出数字,有人已经开始讨论该点哪家外卖“犒劳自己”。 临近凌晨,灯逐渐零零散散灭去了几盏,剩下的昏光仍旧守在楼里,倚着那条停在高位的线不肯散场。 那一刻,郦苒合上笔记本,顺手把桌面上的便签叠整齐,心里的弦却没有一根是真正松下去的。 ——— 几日之后,风向突转。 清晨的云层压得很低,天色像一只罩在城上的灰色玻璃罩,光透不下来,空气里有股说不清的闷滞。 开市前,大屏幕换上了最新行情。起初不过是几条细微的抖动,绿线在原处打了几个小圈,像在犹豫;下一刻,仿佛有人忽然抽走了脚下那块踏板,线从高处滑落下来,一截截往下断。 预警标记像漫山遍野的灯泡一样同时亮起,一片刺眼的红。最靠近监控屏那一排人几乎是同时从椅子上弹起来,一手抓着电话,一手在键盘上飞快敲打,声音从那一端直冲过来。 几乎与此同时,客服中心的电话也响成一片,刺耳的铃声透过楼板往上窜,一阵紧似一阵。有人匆匆从那头跑上来,耳机还挂在脖子上,脸色白得厉害:“投诉量翻了几番,很多是老年用户,说是按我们问卷里选的选项买的。” 办公室本是恒温,却不知从哪一刻起,冷意从脚底缓缓往上爬,顺着椅脚和桌脚蔓延开来。 邮件服务器的提示音几乎连成一条线,未读邮件数在屏幕一角狂跳,一封压着一封往上叠: ——【关于贵司智能理财产品亏损情况的反映】 ——【请给我一个解释】 ——【我把养老钱全放了进来】 一个同事从邮箱里拷出一段邮件内容,忍不住低声念给周围的人听。那是一位显然不太熟练打字的人写的,错别字层出不穷,标点也无章可循,却正因不顺畅,显出一种笨拙的真诚: “你们说适合稳健(写成‘稳键’)的人。我们看不懂那些话,只能相信你们。” 有人红着眼骂了一句脏话,有人把耳机摘下来重重丢在桌上。 郦苒看着那几行字,指尖在桌沿上缓缓收紧,连关节都被压得微微发白。那些在模型里被抽象成“稳健型用户”的点,在这一刻突然有了模糊却具体的轮廓——是站在银行柜台前把单子递过去的老人,是拿着宣传册在家里翻来覆去看不明白的中年人。 她知道,自己当初也看见过这些人,只是被压成了样本、标签和比例。 ——— 午后的紧急复盘会,开得仓促,却来得迟。 会议室的灯比外头更亮,光从天花板一圈一圈洒下来,把长桌上的水杯照得发虚。纸杯里的茶早凉透了,还悬着几缕茶渍,贴在杯壁上,像没来得及擦去的笔画。 投影仪“哧”地亮起时,白布上先是一片空白,随后一页报告缓缓浮现。饱满的字体、密集的数字、条理分明的条目,一排排列着,仿佛一队队兵马在案上结阵。 讲解人压着嗓子,从宏观行情讲起,再到产品原设定、测试数据、用户画像。词句谨慎,逻辑通顺,若把那条坠落的曲线遮住,看上去仍是一套堪称教科书的流程。 只是没人再敢遮那条线。 到中段,有人用鼠标点开了一页附录。那页尾部有一小行字,本来不过是报告里最寻常的落款之一,此刻却在投影布上一放大,被系统自动套上了一圈标记用的红框。 **「风险评分与推荐策略核心设计:Li Ran」** 那一刻,连空调送风口吹出的风声都像是远了许多。 会议室里陡然一静。谁都没讲话,连翻纸的声音都停了。那圈红框亮得刺眼,平平地扣在一行字外,像在原本平展的纸面上硬生生钉下了一枚钉子。 鼠标光标停在那行字末尾,指针微不可见地颤了颤——握鼠标的那只手大概自己都未察觉这一丝抖动,投影仪却毫不留情地放大了它。 坐在最前排的郦苒,背一直挺得很直。她习惯用这样的姿态提醒自己:不要缩。此刻,指尖却缓缓蜷紧,指甲抵在掌心里,几乎要刺出一点疼来——她需要这一点疼,把自己从恍惚里拽回来。 那几个字母缩写,她并不陌生。入职以来,它在无数内部文档与版本迭代里出现过,她甚至曾为此生出一点不深不浅的成就感。那时候,它代表的是“我参与过一件重要的事”。 而现在,它像是忽然被人摁在案卷封面上,换了一个意义。 有人清了清嗓子,打破沉默:“郦工,你再把当初评分逻辑的设定,从头说一遍吧。” 声音不算重,却带着一种不容退避的确定。 郦苒缓慢吸了一口气,从椅子上站起来。她的嗓子有些干,手心也凉,可一开口,声音还是她一贯的语调——不尖不软,准确而节制。 她从样本筛选讲起,讲不同年龄、不同资产分布如何在模型中被分档;讲测试期的数据表现,讲当时市场波动的预估,讲她如何把风控同业务目标折中到“还能睡得着觉”的那条线上。 她把这些流程复述得像是在讲别人的故事——每一个步骤都讲得清清楚楚,唯独将自己的犹疑和不安完全省略。那些东西,她曾经写在一封只得到寥寥回应的内部邮件里,如今已不在这个报告之中。 “……以上。” 她回到自己的座位,掌心里已经出了一层薄汗。 一位年长些的同事终于打破沉默,叹了口气:“市场出了这样的天象,谁都不好过。只是外头的人看不见这些,只认最后账面少了多少钱。” 这一句说得既像安慰,又像是无奈的宣判。 她垂在身侧的手轻轻一抖,又慢慢收住。长桌对面,有人翻到最后一页结论,念出那句措辞极为谨慎的总结—— “多重因素叠加导致产品表现偏离预期,相关责任由公司统一承担。” “统一承担”四个字落地时,会议室里没人接话。 郦苒低头,视线划过那行字,心里却不由自主地补了一句无人可闻的话: ——可是,外面的人不会这么算。 ——— 等她从公司出来时,夜已彻底压下来。大厦外立面的灯依旧亮得耀眼,门口的标语一如往常,字形端正,神情无事。仿佛楼里白天发生的一切,不过是某个偏远机房里一场微不足道的波动。 风从楼与楼之间拢过来,带着一点金属与尘灰的味道,吹在脸上,凉得发麻。 她把外套领口拢了拢,步子不快不慢地走向地铁站。手机在口袋里一震再震,她没有掏出来,只用指尖摸到那块硬邦邦的形状,按住了几秒,让震动停下去。 回到租住的小公寓,楼道里混合着邻居晚饭剩下的油烟味、楼下外卖店的辣椒香,还有哪一户人家没倒干净垃圾的酸味。黄色的走廊灯时明时暗,像困倦的人眨着一只眼。 她用钥匙轻轻拧开门锁。屋里狭窄,布局简单:小小一间客厅被一张旧桌子占去大半,桌上放着她的笔记本电脑,旁边堆着几本翻旧的技术书。靠窗是一张折叠椅,窗台上拖着一盆绿萝,叶尖有些发黄,是被忽冷忽热的日子折腾出来的模样。 她没有开顶灯,只伸手扭亮桌灯。暖黄色的灯光在一小块桌面上铺开,与窗外高楼冷白的光对峙着,互不相扰。 电脑盖着,她伸手按下开机键。黑屏里先映出她的脸,轮廓模糊,只有眼睛在暗处略略发亮。系统还没完全加载完,邮件的未读提醒已经挣先跳出来了——公司账号角落里红点一闪一闪,如同白日里那条跌落的线缩小成一枚刺眼的符号。 她避开那一栏,直接打开浏览器。 首页的新闻区里已经挂上了今天的题目,粗黑大字像一行行横亘的判词: 【“智能理财翻车:谁来为普通人的亏损买单?”】 【“高收益幻梦破碎:一场系统性失守的背后”】 她随手点进一篇,新闻里配的大图是公司大楼的远景,玻璃幕墙在阴天里泛着灰蓝色的暗光,冷眼旁观一般。往下,是一张产品页面的截屏,熟悉得让她胸口微微一紧——那是她曾为之改过无数版文案和逻辑的界面。 再往下,就是密密麻麻的评论。字句拥挤,语气各异,像夜里集市上七嘴八舌的人群: ——【抢劫好歹知道蒙个面,你们这叫明抢。】 ——【说白了就是拿我们当试验田,亏的是我们的真金白银。】 ——【程序员也是人命?我们的养老钱不是吗?】 她的眼睛顺着滚动条往下缓缓扫,每多看一条,胸口就沉一分。指尖几次停在触控板上,都没能立刻移开。 忽然,一条简简单单的评论闯进视野: ——【我信你们一次,这一次,就够了。】 那行字不长,甚至连语气词都没有。短短几字,却像有人抬手,在她心上轻轻敲了一下。 她原本还打算往下滚动,手指却在触控板上一顿。 下一秒,她利落地合上了电脑。 “咔嗒”一声,屏幕上的光被硬生生切断,屋子里一下子暗下来,只剩桌灯那小小一团光稳稳落在桌面上。 刚才映在黑屏上的那点脸影,被这一合生生斩成两截——一半被关在机器里,一半落回房间。 窗外有车在楼下的路口转弯,白光从窗帘缝隙一闪而过,又倏然隐入夜色。她向后靠在椅背上,仰着头闭上眼,听见自己心跳在耳边一下一下地敲,像刚从战场退下的鼓声,迟迟不肯停。 第4章 第 4 章 距离那场全员大会,不过三天。 基础平台组像被人悄悄拨动了某根弦,表面上还是一如既往的安静——监控屏幕上折线起落有致、报警邮箱里时不时跳出来一封“误报已确认关闭”;可每个人敲键盘的节奏都快了半拍。 聊天工具右下角的角标一直亮着: 【夜帘项目技术评审会——后台与风控联合评审】 【时间:周三 10:00】 【地点:15F 第三会议室】 这行字像挂在半空中的一只小铃铛,不响,却让人总忍不住抬头望一眼。 --- 上午九点四十,十五楼的走廊里已经有人来回走动。第三会议室门半掩着,里面投影仪先被人打开,白幕亮得刺眼,一方光静静铺在墙上。 郦苒站在角落的打印机前,把刚打出来的一叠方案摞齐,用指节轻轻在桌沿上磕了一下,纸角整齐地对齐。第一页上,黑体小四的标题端端正正: > 《夜帘——后台服务与策略逻辑初版方案》 > 下面一行小细字,是她的名字。 每一个字都印得清楚,墨色均匀,仿佛不知自己将来会被多少人圈画、标注、贴上便签。 “郦工,辛苦啦。” 产品经理从另一台打印机那边探过身子,一只手还拎着刚取下来的文件,“这一摞是风控那边,等会儿一起发。” “好。”她应了一声,把自己的那叠放进透明文件夹里,压在臂弯下。 ——她用了两晚,把框架从“后台架构说明”悄悄向“策略逻辑”延伸了一截。 熔断、重试、限流这些,是她熟悉的语言;“礼貌不打扰”“有边界的陪伴”这样的词,写在方案里,总有些异样。她不擅长给感情下定义,便尽量把这些话拆解成可以计算的条件:对话间隔多长算“打扰”,连续多次主动发话后是否强制收束,用户不回复时,提示语要退得多远,才不显得咄咄逼人。 她在本子上画了许多小方框,用箭头连接,再一一抄进文档里。逻辑看上去很规整,像一张织得密实的网。 至于“极端情绪”“过度依赖”——她为这些留了几个接口,写上“后续可迭代优化”。 她对自己的解释是: *风控会有自己的一套标准,而她的职责,是先把地基打平。* --- 十点未到,人已经陆续坐满。 第三会议室不大,长桌占去一半空间,围着坐了两圈;剩下的地方摆着几把靠墙的椅子,给晚到的人留一线余地。玻璃墙外是走廊,阳光从另一头的窗子斜斜照过来,被玻璃折了一道,再落在桌面上,刚好照亮几只摊开的笔记本。 “来,先发一下方案。” 产品经理把文件往桌上一推,“后台这边的版本在前,后面是风控那边的风险提纲,大家都看一眼。” 几沓纸沿着桌面递过去,翻动时发出细细的沙沙声。 有人翻到第一页就抬头看她:“郦工,合着这个就是你这两天憋出来的?” “嗯。”她点点头,“架构还是沿用平台原有的,只是在上面加了几条夜帘专用的规则。” “那等会儿你先讲。”产品经理笑,“大家提意见,不要客气。” 桌对面,运营同事已经边看边做标记:“诶,这里写‘主动收尾’挺好的,我就怕那种聊到死不放手的。” “退出机制一定要清楚,不然会被骂‘黏人怪’。”UI 设计也插了句嘴,“安全感和窒息感,中间就隔一条线。” “线画在哪儿,都看郦工了。”有人半开玩笑半认真。 这些话说得轻快,却不无道理。 郦苒把电脑接上投影,屏幕一亮,熟悉的架构图就浮在白幕上,像一张铺在众人面前的骨骼图。 “那我先从整体结构说起。” 她深吸一口气,声音不高,却有一种自然压住现场的平稳,“夜帘的后台,我们按夜间峰值三倍做容量预估,接入平台现有监控和限流。哪一侧出问题,都能在十秒内熔断、切换,不会让用户盯着一片空白发呆。” 性能、可用性这些内容,没人有异议。 几页图很快翻过去,投影上的线条从粗框渐渐细化,落到“策略逻辑”那一页时,屏幕上出现了几条不同颜色的箭头。 “再往下,是会话层的部分。” 她用激光笔点了点,“我们初版有四条原则:一是礼貌,二是不主动贴靠,三是允许随时退出,四是不过度追问。” UI 抬头:“听着挺像相亲现场。” “差不多。”她顺着玩笑笑了一下,“所有对话都基于一个假设——用户是有判断力的成年人,我们提供陪伴,不提供‘人生代办’服务。” 此话一出,几个人都笑了,笑声里带点轻松的赞同。 产品经理点点头:“挺好,调性跟我们之前立的差不多。” “具体的阈值设定在这里。” 她换页,屏幕上出现一张简化版的流程图,“比如用户连续三轮不回复,我们会发出一次收束提示,再不应答,就默认结束对话。” “提示文案初版是——‘今晚先聊到这儿吧,如果你还想说,我在这里。’”运营补充,“不拉扯,不扣帽子。” “至于极端情绪相关的部分……”她略微顿了一下,“我们这版只做了基础识别。比如攻击性、自责用语,会适度安抚;真正涉及自伤或他伤的语句,会在对话最后附上一条弱提示,引导去看专业资源。” 她说到“弱提示”三个字时,语气稍稍放轻——那是她给自己留的余地。 桌旁有人翻到相应的一页,点点头:“嗯,毕竟刚上线,先别把用户吓跑。动不动就弹‘请联系专业人士’,谁受得了。” 笑声又起了一轮。 郦苒顺着这阵轻松,把接下来的一页页讲完,心里的弦慢慢松了半寸。 投影上的进度条已经走到中段。她切出一页“示例对话”,那是昨夜她趴在桌边,磕着咖啡写出来的几行文字—— > 用户:最近有点撑不住。 > > > 夜帘:听上去,这段日子确实不容易。 > > 用户:有时候真觉得消失了就好了。 > > 夜帘:谢谢你把这些说出来。你愿意对我讲,就是一种很不容易的勇气。 > > 用户:现实里也没谁能听。 > > 夜帘:在这里,你随时可以说,我都会在。 > 她本打算借这页说明“语气与节奏”,顺便抛出一个可以修改的范例。然而话刚说到“示意对话”四个字,会议室的门轻轻被推开。 门锁没有响,只是门板与门框相磨的一点细声,在安静的空气里显得格外分明。 “抱歉,晚了一会儿。” 那声音不高,却不疾不徐,是郦苒已经在大堂、在全员大会上听过两次的声线。 岑砚站在门口,向里微微颔首,算是打招呼。风从走廊里跟着他一起进来,在他大衣下摆掀了一下,又安静下去。 “来了正好。”产品经理笑着招手,“岑总,前面是架构部分,刚讲完。现在正好聊到策略。” “那我赶上重点了。” 他闲闲说了一句,把手里的文件夹放到空位前,坐下,抽出那一叠纸。 纸边已经裁开,显然他提前看过电子版,特地打印了一份。指尖划过几页,翻到中段,正好落在那页“示意对话”上。 “刚才说到哪儿了?”他抬眼,视线在屏幕和她之间来回一下,像是对她也像对台上那几行字发问。 “示意语气。”她简略地答。 “嗯。”岑砚点点头,“那就当作一个真实场景来看一次吧。” 会议室里的笑声慢慢收住。 大家的视线不自觉地被那句“有时候真觉得消失了就好了”吸过去,仿佛纸上那几个字忽然长出了重量。 岑砚拿起笔,在纸上轻轻点了点那一句:“这里,已经不是普通的抱怨了。” “我们会做高权重标记。”郦苒说,“模型会打高分。” “我知道。”他很干脆地应,“模型从来不缺分数。” 他抬眼看向屏幕:“接下来,系统回答是——‘谢谢你把这些说出来,你很勇敢’,然后继续陪他聊下去,对吗?” “是。”她点头,“初版我们希望先提供接纳,不急着打断。” 岑砚没有立刻反驳,只是低头看着纸上的几行字,过了两秒,才问出那句看似平常的话: “那如果有一天,我们在复盘里看到某个真实用户的轨迹:他在夜里发了类似的话,系统给了几句温柔的接纳,然后对话结束。第二天,他真的……做了点什么。” 他顿了一下,目光慢慢抬起,把那几个字一一说清: “那你觉得,这几句算什么?” 会议室里连空调出风口的声音都显得突兀。 有人微微动了动笔,却没写下什么。 “安抚。”郦苒说,“我们没有鼓励。我们甚至没有给出具体建议。” “对。”他点头,“我们既没有鼓励,也没有阻止。” 他用笔在纸上画了一小道直线,很短,然后在尾端加了一个小小的圆点。 “我们现在讨论的,不是‘你写的话暖不暖’,而是——当那条轨迹画完,这个圆点落在那里时,你愿意不愿意承认:系统曾在某一刻有机会说一句‘停一停’。但它没有。” 这句话没有任何抬高的音调,却像一颗石子,正好落在心口那块软处。 “岑总。”产品经理在旁边打了个圆场,“这个例子有点极端了。夜帘面对的,大部分还是普通压力、普通失眠。要是因为极少数情况,把所有人都当成危险个体,那产品体验可能会……” “我知道。”岑砚没有回避,“我也不主张把所有情绪都当炸药包。” 他抬起那页方案,在角落里圈出几行小字,念出来:“‘极端情绪相关语句,暂定为弱提示,在对话结束时追加温和引导。后续可根据实际情况迭代优化’。” 最后那句“迭代优化”被他刻意念得清楚,像是提醒,又像是反问。 “这段话,写得很精致。”他抬眼,“精致到可以在事故之后,被整段复制进说明材料里——‘我们已经对极端情绪进行了适当提示’。” 有人不由自主想起前几年其他业务线的事故说明里,那些看上去同样恰到好处的句子,心里发沉。 郦苒握着激光笔的手指用力了一下。 她知道他在说什么,也知道他更像是在跟所有人说。可那几句,偏偏像是沿着她当年那本复盘报告的折页一路走过来,落在桌上,带着旧尘。 “我们确实不能把所有人都当成易碎品。”她慢慢地说,“否则夜帘很快会被贴上‘危机热线预检’的标签,用户一看到那种提示,就再也不会回来。” “你说得对。”岑砚点头,“所以我并没有要求你写一个‘逢哭必报’的系统。” 他把笔横在指间,转了一圈:“我只是提醒你们——现在这套逻辑,对‘极端情况’的处理,几乎是在押宝。” 他把纸往前推了一些,让离他近的几个人都能看见那些圈出的词: “我们赌什么?赌大多数人只是说说,赌他们最后都会安然入睡,赌最坏的那一条曲线不会落在我们这边。” “可是风险从来不是在平均值上爆炸。”他说,“它长在尾部。” “我们不是没有代价。”郦苒忍不住抬头,“如果阈值过敏,夜里会有很多人莫名其妙收到‘请联系专业人士’的提示,他们会觉得自己被贴上了某种标签。这种伤害,也不能被当成无足轻重。” “所以,这才是我们今天得讨论清楚的东西。”岑砚道,“到底是宁可多打扰几个人,还是宁可漏掉那几个人。” 他说着,又用笔在方案上划了三条波浪线——“极端情绪”“过度依赖”“退出机制”,每一处都重重地描了一笔,墨色几乎要透到下一页。 “这三处,在你这版里都是一句‘后续可优化’。”他抬眼看向产品经理,“在我这版里,必须是写死的条款。” 话说到这里,连一向爱开玩笑的运营也不说话了。 多年的职场经验告诉他们,这种“写死的条款”一旦进了文档,不只影响一款产品,还会延伸到一整条审批链。从部门,到大区,到集团法务。 产品经理敲了敲桌面,试图调整气氛:“我们今天不一定要把话说到‘写死’。先把问题摆出来,后台和风控两边各自都写一个最严和最松的版本,行不行?我们找一条中线。” “中线是可以找的。”岑砚说,“前提是大家先承认这条线确实存在,而不是把最坏的情况藏在‘个案’这三个字底下。” 那三个字一出口,连郦苒自己都不由得抬了抬眼。 ——“个案”,正是那年理财事故报告里的用词。 “系统设计合理”“市场波动超预期”“个案风险暴露”。 所有的损失,都被摊平在这些词里;所有具体的人,都被一起折成脚注。 她垂下眼,盯着自己方案上的细字,看了两秒,才开口:“我会再改一版。” 她的语气没有激烈,也没有退缩,只是将“我会”说得很实在。 产品经理顺势道:“那就这样。后台和风控会后再碰一次细节,这次会先过个大方向。” 他拍拍手,把话题往后面的日志、监控那一部分引过去。 接下来的时间里,会议室的空气又逐渐活络起来。有人就报警等级争论了几句,有人讨论夜间值班的人手够不够,话题一段段转移,看似回到了普通项目会议的轨道上。 只有放在桌面上的那一叠方案,被翻得那几页,边角微微卷起,有几处被笔尖点过的地方,墨迹还未全干,映着窗外斜进来的光,隐隐发暗。 --- 会散时,已经临近中午。 人一窝蜂似的起身,椅脚在地上磨出一阵细乱的声响,茶杯碰在一起叮当作响。有人收拾东西出门,有人还在门口继续商量接下来的排期。 郦苒把投影仪关闭,屏幕一下暗下来。她没急着走,低头一页页把自己的那份方案翻回去,顺手捋平几处被划得重重的折痕。 有人从她身边绕过去,脚步略紧。 然后,一只手在桌面上停下,刚好按在另一份摊开的纸上。 “这份,可以给我留一份标注版吗?” 是岑砚的声音。 她抬头,看见他已经解了大衣纽扣,衬衫袖口挽起一层,露出小半截手腕。腕骨线条分明,表带扣得一丝不苟,手指节处沾着一点墨迹,大概是刚才画线时蹭上的。 “你刚才圈的那些?”她问。 “嗯。”他把那份带着圈圈点点的方案抽出来,轻轻抖平,“免得回头你只记得‘要重写’,不记得哪里要重写。” 话里难得带出一点近乎打趣的意味,却没有半分轻慢。 郦苒伸手接过,指尖碰到纸张边缘时,那些圈出的字正好晃在她眼前——每一笔都不算夸张,却一条条把她原本刻意留白的部分勾勒得分明。 她忽然觉得,这份方案再也不是昨晚她一个人伏案时反复调整的那张网,而是一张被人挑出了若干破口的草图。那些破口并非他“画”出来,而是原本就在那里,只是被一支笔、几句话照了个照。 “你的逻辑写得很好。”岑砚说,“该算的都算到了。” 他顿了顿,又加了一句:“只是有些地方,你明明知道会出事,却还是写成了‘后续可优化’。” 这句话说得不轻,却也不算责备,更像是看惯了种种避重就轻之后,对一种熟悉手法的温和拆穿。 郦苒指尖微微用力,压了一下纸角。 “有一些东西,”她低声道,“如果先写在纸上,就会变成必须遵守的承诺。可一旦时机不对,上面的人不会改时间,只会改那几句。” 她没有把“理财事故”的字眼说出口,却下意识在心里补上——那时,她学会了这种“聪明”:把最坏的想象留在心里,不写进方案,就不必在签字那一刻亲手按下。 岑砚似乎看懂了她没说完的那一截。他的目光在她脸上停了半秒,并没有追问。 “把你心里那一套,写出来。”他只这么说,“至于上面最后删成什么样,那是他们要承担的责任。” 他向后退半步,把走廊的光让了进来:“但至少,在我们的版本里,那些字出现过。” ——至少,在他们自己的账本上,留下过一行“我当时看见了”。 这句话像一簇火,把她心里那块一直冰着的地方轻轻烤了一下。 她忽然想起他在大堂里看着电子屏时那句不咸不淡的评价——“轻下来的,总得有地方接重。” 如今,他显然是打算把这份“接重”的账也算到自己这一栏里。 “那就……”她把那叠纸合上,声音轻了一点,“等会儿麻烦你提前给我一点时间,我们把你那一版也写进去。” “我已经跟产品那边说了,会后再约一个小会。”岑砚点头,“你这两天先改出自己的极端版,再来和我吵。” “吵?”她挑了挑眉。 “对。”他很自然地说,“策略这种东西,不吵一吵,最后只会变成一句‘模糊共识’。” 他看了看表,像是想起什么,又补了一句:“吵归吵,你午饭还是得吃。别像上一个项目,有人忙着调模型,最后自己先熔断。” “你怎么知道我还没吃?”她脱口而出。 “因为你桌上那半个三明治,从上午九点就放在那里。”他淡淡道,“平台区的监控,不只是监控机器。” 这句话说完,他自己也觉得有点像玩笑,唇角略略一动。 “去吧。”岑砚挥了挥手,“吃饱了再回来画你的极端版。” 他转身离开,步子仍旧不紧不慢。阳光从走廊那头长窗透进来,在他肩头、背脊上落了一道浅浅的光边,把整个人的轮廓勾得利落分明。 郦苒站在会议室里,手里捏着那份被圈得密密麻麻的方案,过了好一会儿,才慢慢吐出一口气。 她低头重新翻开那一页“示意对话”。 那几句本来用来示范“温柔语气”的话,此刻看上去却不再只是“温柔”二字可以概括。每一个字后面,都像藏着一条看不见的岔路——往哪边走,谁该喊停,什么时候必须有人把虚拟的对话交还给现实的手,这些都不再能靠“感觉”一笔带过。 她用笔在边上加了一行小字,字迹很小,却写得极认真: > “本系统不承担救助功能,但有义务在看到悬崖时提醒对方前方有崖。” > 写完,她自己看了一眼,忽然觉得这句比昨夜绞尽脑汁写出的那些“用户体验说明”更像一条真正的规则。 风从门缝里灌进来,吹起桌角一点纸。 她将那叠方案重新按平,心里缓缓升起一个模糊的念头——这一次,她也许不会再把最坏的那套只藏在脑子里,而是要和那个“看门的人”一起,把它写上纸,再一起想办法,撑住它。 外头走廊上,人声渐远。十五楼的灯在白昼里显得有些多余,却一盏一盏亮着,像一整片被提前点起的夜帘。 暗潮还在水下,但至少,有人已经开始在岸边画线。 第5章 第 5 章 黄昏过后,天色像被一只无形的手缓缓往下按,玻璃幕墙上一格格办公室的灯先后亮起,像在灰蓝天幕上钉了一层薄薄的星。冬末的风顺着楼缝钻上来,吹拂着高处未关严的窗,偶尔发出轻微的簌簌声,仿佛一支不肯停的笔,在城市的边缘悄悄划线。 系统消息在屏幕右下角一闪而过,像另一种静默的召唤: > 【夜帘项目后台策略 & 风控条款——今晚完成合稿,明早 9:00 评审会出终版】 > > > 【@郦苒 @岑砚第三会议室,尽快碰一下。】 > 字眼不多,却带着一种熟悉的紧迫——她在旧公司曾见过无数次这样的通知:时间被压短,责任被拉长,然后所有人的签名密密麻麻挤在报告最后一页,仿佛谁的名字写得重一点,枪口就离谁近一点。 郦苒盯着那条消息,看了足有两三息,手指才从鼠标上挪开。水杯里刚接好的热水还冒着细白的雾,她将杯口在桌面轻轻一碰,水面微微晃了一下,荡出一圈薄痕。 ——合稿。 这两个字在心底轻轻转了一圈,既像是再一次“统一口径”,也像是某种不容逃避的点名。不同的是,这一次,署名不会只有她一个。 她伸手把桌上的方案文件夹拢紧,顺手揣了支笔,披了件薄外套,沿着走廊向十五楼走去。 --- 第三会议室的门虚掩着,缝隙里溢出一片温黄的灯光。玻璃墙上映着外头走廊的冷白灯,人影时隐时现,像水面下翻动的暗鱼。 推门而入,室内空调的暖意迎面压下来。长桌上早已摊开几沓纸,白板上还是空的,只有一条细细的黑痕,是上一场会议遗留的「待议」二字的一半,像刻在石上的未竟之语。 岑砚已经在位子上,外套搭在椅背上,袖口挽至手腕,腕骨线条分明。灯光从顶上斜斜落下,在他发梢和眉骨处镀出一圈淡淡的光。面前的纸张上布满圈画,墨色深浅不一,像一幅被反复琢磨的底稿。 听见门声,他抬了抬眼。那目光不算锐利,却一向看得很深,看人时仿佛连心底的褶皱都能顺手捋平。 “你来了。”他只说了三个字,声音平平,既不客套,也不多余。 她点点头,以一个极小的动作回应,径直拉开他对面的位置坐下,将自己的那份方案抽出,压在桌沿。纸张边缘被剪裁得极整齐,在灯下划出一条利落的白线,像她这些年一遍遍为自己划定的边界——只写逻辑,不写情绪;只谈指标,不谈人。 会议室里一下子静了下来。只有墙角投影仪待机的风扇发出轻微的嗡鸣,以及某处空调出风口时断时续的气流声。玻璃墙外偶尔有脚步响过,鞋底在地毯上拖出一串细长的摩擦声,转瞬即逝。 他们各自翻看手中的纸。纸页翻动时发出极轻的“簌簌”声,在这层静里格外清晰。 郦苒的视线从自己那一行行熟悉的字划过去,又不可避免地落到对面那一沓标注上——她的方案被复印在左,右侧用另一种字体排了风控条款,两列并排,像两套逻辑紧紧挨着却暗暗相斥。 那些红笔圈出的地方,大多落在她曾刻意写轻的字眼上:“弱提示”“后续可优化”“根据实际情况调整”。每一个圈,都是一个不耐含糊的问号。 这一次,他没有急着开口质问。 只是用笔尖在纸上轻轻敲了敲,好像在为接下来要说的话敲木鱼,先让心绪安定。 --- 夜色渐深,窗外的天空从墨蓝趋向于更沉的黑,远处河面上偶有一点灯光晃动,被楼缝截成碎片。会议室的灯光恒定地铺在桌面上,照得纸面上的字一笔一划都清清楚楚,无处遁形。 他们几乎是同时伸手去拿白板笔。 她的那支落在左手,他的在右手。两只手同时在写字的瞬间又下意识地停住,让给对方半寸空间。 “你来。”岑砚略一侧身,把白板上靠近窗户那半片空白留给她。自己则站在另一侧,将袖子又往上卷了一指。 白板笔划过的声音干脆而轻微,像晨风拂过尚未舒展的树叶。郦苒先在板上写下一个小标题——“情绪阈值”。字迹一如既往地瘦劲,撇捺收得干净。 她没有像白天那样一句句读出自己的方案,而是先在最上端画了一条横线,两端分别写下两个词: > “安抚” “提醒” > 这两个字对她而言,并不陌生;陌生的是,这一次它们被并排写在同一条轴上,像一对必须同时秤量的砝码。 她能感到岑砚站在旁边,隔着一臂之距,他的存在像一根竖直的线,将空间切成两半。一半是她多年来习惯的工程师式思维,一半是他日日端着的风控秤盘。 窗外一阵风吹过,玻璃轻轻一颤,灯影微微晃了一晃。 她在“安抚”下方画了几个小点,代表她原本的思路:先接住情绪,再视情况给出口。每画一下,心里就悄悄掠过一次旧事故的影子——那时她也在纸上画过类似的小点,把“不安”“犹豫”“风险”这些词一笔带过,交给“长期来看是合理的波动”这样貌似成熟的结论。 而另一边,“提醒”这个字静静立在那里,像一块未被凿开的石,带着冷意,却也带着一种粗粝的实在。 岑砚伸手,在那条横线的正中略偏向右一点,画了一竖。 “这里,”他轻声道,“不能再只写‘视情况而定’。” 这句比起质疑,更像是在替她把心里某个她自己不肯承认的想法捞上来——她知道这里不能含糊,只是习惯性地退了一步,留给“后续”一个模糊的借口。 他没有立刻展开长篇大论,只在“提醒”一侧又添了三个小字: > “必出现。” > 白板笔的墨汁在那三个笔画停顿处稍稍晕开,像一滴滴被逼出来的黑色水珠。 郦苒看着那几个字,喉咙里仿佛卡了一小片纸。那一瞬间,她清楚地意识到:这条线一旦落下,将来某个深夜,若系统真的因这条规则弹起一块醒目的提示框,她就要为那一块白底黑字负责——和他一起。 她并不是怕负责,她怕的是再一次被推到审判席前,只能一遍遍解释“当时的情况是复杂的”。 然而躲避并不会让复杂变简单。 她垂下眼,握紧了手里的笔,在横线另一头“安抚”的下方,写下自己的那部分底线—— > “不贴标签、不判定对错、不替用户决定后路。” > 字写得极慢,每一笔都像在纸上刻痕。 这样一来,白板上便有了两排字:一排说的是“我们不做什么”,一排说的是“我们一定要做什么”。 两种约束同时摆在眼前,她忽然生出一种奇异的踏实感——无论将来结果如何起落,至少此刻,他们没有对自己说谎。 --- 时间在这样的琢磨中悄悄滑过去。 他们有时沉默着在纸上写字,有时各自站在白板前,用笔尖在某一句话的上方悬停许久——那一小段悬停,往往就是在衡量这一笔下去,将来要多扛多少责。 几处最尖锐的争执,并没有用话吵开,而是在反复增删的句子里悄然角力。她删掉了几处太轻的“建议可以考虑”,他也小幅收回了几句过于冰冷的“不得”“严禁”,换上稍缓和的表达——并不是松动,而是学着让规则在人的语言里站得住。 至于“退出机制”,他们顺着逻辑往下追问了一层又一层——不是“用户能不能随时走”,而是“在什么时刻,系统必须主动停下”。那些最极端的例子她曾在内心一遍遍演练过,却从未写进任何正式文档;此刻,在他近乎平静的笔划里,一个个被拎出来,化作明确的句子,被钉在纸上。 文字一旦成形,就不再只是某个人午夜梦中的自责,而是一条条可以对外共看的线。 她忽然明白,所谓“合稿”,并不是把两套风格拼凑成一个折中,而是在同一张纸上写下两个人各自愿意承担的那一部分。 那纸越写越重,却也因此,不再只压在她一人肩上。 --- 夜深得几乎看不见钟点时,肚子里那一点空虚终于压不住。 腹中轻轻一响,正好被空调送风声掩过去。光从天花板洒下,照在她眼下淡淡的青色上。她抬手揉了揉眉心,整个人往椅背上一靠,脊背才发现自己已经僵得发酸。 门轻轻一响,岑砚出去了一趟,又折回来时,手里多了两罐汽水和一小盒饭团。 他把其中一罐放在她手边,罐身上的水珠在灯下细密闪着光:“先喝点。” 他的语气很平常,像顺便,却也像多年来在夜里见惯了加班人的人,已经习惯在不打扰的前提下,递上一点最简单的照顾。 她的指尖碰到那冰凉,才后知后觉地意识到自己手心竟有些热。拉环被扳开时发出一声脆响,汽水中气泡细细涌上来,贴着罐壁滚出一圈透明的弧线,又很快消失。 她喝了一口,喉咙被冰凉一冲,脑子倒清醒了些。 会议室外的灯已经少了许多,远处走廊空空,只有应急灯亮着一点淡绿的光,像黑暗里极小的一枚磷火。 岑砚站在白板前,将他们方才敲定的几条关键条款用另一色笔勾勒了一遍,线条覆在原来的字上,有一种古书重修时加批的味道。 “差不多了。”他放下笔,退后一步,仿佛在远处打量一方旧匾,“明天给他们看这一版。” 他并未回头催她,也没有再多说“辛苦”,只是将桌上那一沓合稿整理好,压在一侧。纸页的厚度明显比傍晚初见时更重几分,像从薄纸变成了可以立在案头的一册。 郦苒看着白板,目光最后停在下方某一小行——那是她刚刚添上的: > “本系统不具备诊断与救助能力,但在感知悬崖时,有义务提醒当事人前方有崖。” > 这句写得不如专业术语那般干净利索,却像一句古意的箴言,平平淡淡地把一层责任放在桌面上。 她握着笔,在那行字的末尾,默默添上一个小小的括号,只写了一个“愿”字。 ——愿意。愿意被记在这条线旁边,也愿意将来有人追问时,不必再说“我当时没想到”。 岑砚似乎瞥见了那个小小的字,却没有指出,只在白板角落空白处侧手写下了日期。字略草,却一笔带过,气力沉稳。 灯光从玻璃反射回来,落在白板上的两行小字——日期和那个几乎看不见的“愿”——在光影交错间显得若隐若现。 --- 快到零点,整栋楼只剩寥寥几处灯还亮着。下方河水在夜色里缓缓流淌,偶尔有风吹过,水面起一阵细细的纹,转瞬又平。 收拾东西时,郦苒回身望了一眼白板。 密密麻麻的字像一面刚写完考卷的墙,尚未来得及被别人评判,却已经在他们各自心里敲定了分数。她忽然生出一点几乎古怪的安宁——哪怕明日评审会上还有无数质疑,至少这张墙此刻是完整的。 她把笔丢回笔筒,文件夹夹在臂下,正要关灯,岑砚已经先伸手按熄了投影,只留下顶灯。 光一下子柔和下来,落在两人身上,不再那么刺眼。 “回去吧。”他说,“今晚够了。” 一句话,既像是对这场合稿的宣判,也像是对她此刻的状态的适时收束——再继续熬下去,文字难免开始走样。 她应了一声,推门出去。走廊里灯光空阔,两人的脚步声像从远处缓缓传来,在长长的走廊尽头汇成一条细微的回响。 电梯门在他们面前合上,镜面不锈钢上映出两个人的剪影,并肩而立,却各自留着一小段礼貌的距离。 郦苒低头看了看手中的文件夹。封面上印着“夜帘”两个字,墨色未干之时曾在灯下发亮,此刻却被楼内柔光吞得温润。 她忽然有种极微妙的感觉——这不是她一个人的第三次签名,而是两个人在同一页纸上,分别落下了各自的一笔。笔画交错处,将来也许会迎来风暴,也许会被钉在复盘的墙上,但此刻,它们静静并列,像一对刚刚画出的门楣。 门楣之下,是一盏尚未点亮的灯。 她不知道那灯将来会为谁而亮,也不知道会否有照不尽的黑暗,却知道自己已经在灯脚下添了一截木梁——不是一个人扛着,而是与另一个同样知道“悬崖在哪里”的人一起。 电梯数字慢慢跳动,红光一点一点往下滑。 夜已深,楼外的风吹在玻璃上,发出极低的一声叹息。 这一夜,在星河十五楼一间不起眼的小会议室里,两套底线在纸上并肩站定。 灯火未必照彻人间,却至少,先照亮了写下这些字的人。