城市入夜的方式,总是很相似。
先是写字楼里灯一盏一盏亮起来,像被人从天花板后面拉下来的星;再是马路边的车流一点一点密起来,红灯亮起,一排尾灯整齐地停在路口,把整条街照得微微发红。等到夜色真正落下来,白天那些锋利的轮廓都退进暗处,只剩下光和影在城市缝隙间往复游走。
夜帘上线的第一周,数据顺着这条夜流一起奔跑。
---
后台的大屏像一张被点亮的地图。
新注册用户、活跃对话数、平均时长、留存曲线,一条条在屏幕上爬升。产品那边给每条线都配了好看的颜色,像给春天的一条条河命名。
“看,”某天傍晚,产品从大屏前路过,忍不住伸手指给同事,“留存漂亮得直接可以截图拿去写报告了。”
那条线仿佛刻意迎合他们的期待,始终轻快地向上走,很少有回落的地方。
只有一条极不起眼的灰色曲线,在下面几乎贴着横轴,没人愿意多看一眼——
> 「主动结束对话比例」。
——几乎为零。
“用户黏性超级高。”有人在茶水间兴奋地说,“都舍不得挂。”
那一刻,郦苒刚好路过,耳边掠过这句话,下意识侧头看了眼大屏。光线从屏幕反到她眼里,眼底那一点暗色仿佛又被勾了出来。
她把纸杯里的茶喝完,什么也没说。
——她知道,这条曲线太“好看”了。
好看到不像真实世界里的任何一条线。
---
那份“边界徘徊清单”挂在他们的监控后台里。
是他们前几天熬夜加的逻辑——那些一次次紧贴阈值,又一次次退回边界的人,不会被系统直接判定为高危,却会被悄悄拉到这张名单上。
名单不长,只有寥寥几个账号,其中一个 ID 反复出现在第一行。
账号前面挂着一个小小的红点,标注着:
> 「K-7413:连续 12 日边界波动。」
白天,这张清单被贴在墙上的白板上,旁边用不同颜色写着他们讨论过的方案。到了夜里,它就变成后台里的一个单独页面,在深蓝色的屏幕里亮着自己的微光。
那天下午六点多,楼层里陆续有人收拾东西准备下班。外卖保温箱的味道混着咖啡香,充斥在走廊拐角处。客服那边的值班表贴在墙上,夜班的名字用红笔圈了圈,显得格外醒目。
“今晚我盯第一轮。”岑砚站在监控大屏前,对身边的郦苒说,“凌晨一点,我逼你去睡。”
“你什么时候这么心疼员工了?”她笑了一声,手里还捏着刚从打印机那边拿来的日志。
“我心疼的是系统。”他面不改色,“设计师熬坏了,没人给我写逻辑。”
她白了他一眼,眼底那一丝沉甸甸的东西被这句话稍稍冲淡了一点。
“你自己呢?”她问,“你打算几点撤?”
“风控值夜班是天命。”他说,“你去睡了,我再扛一轮。”
“你这样的上司,很难招人。”她低声笑。
“那没办法,已经招上了一个。”他瞥她一眼,“只好凑合用。”
她没接话,笑意却在唇边停了片刻。灯光打下来,把她睫毛的影子投在眼下,像两道淡淡的月牙。
---
夜色一点点漫上玻璃幕墙的时候,办公区里只剩下几盏灯还亮着。清洁阿姨推着车从走廊尽头经过,地板被拖得发亮,一条湿痕在身后慢慢晾干。
监控室的灯却更亮了一些。
几块屏幕拼成一面墙,像一口翻着光的井。散点式的对话气泡在上面跳跃,代表不同城市、不同房间里,此刻有人在对着一块冷冰冰的屏幕说话。
“边界清单”那一列比白天更刺眼。
> K-7413:已标记。
对话窗口在他们眼前缓缓展开——
【今天这城市的风,比平时轻一点。】
夜帘:
【你听起来,今天稍微好过了一点。
是发生了什么小事,让你觉得轻了些?】
郦苒靠在椅背上,手肘支在桌面,指节轻轻敲着日志本。她已经能从对话里听出一点规律:对方经常用“轻”“重”来形容自己的心情,好像胸口压着一块无形的石头。
【没什么事,只是忽然发现,如果我不说话,就没有人找我。】
【那如果你说话呢?】
【那就有一个机器在回我。】
夜帘的光标闪了两下,后台模型开始飞快运算,给出中间标签:“孤立”“自我价值感低”“轻度自嘲”。
情绪评分缓慢上升,一步步接近那条阈值线。
郦苒看着那条线,背脊不自觉绷紧了一些。她忍不住去看边界逻辑那一侧——K-7413 已被标记为“边界长期徘徊用户”,按新规则,今晚只要再触边几次,就会被推到人工复核队列的前排。
“他今天状态比前几天好一点。”身侧的岑砚说,“你看,词语的力度有变化。”
“是数据上轻了一点,”她道,“但他还是没提现实里任何一个人的名字。”
她指着那一串对话,“他所有的主语都只有‘我’和‘你’,而这个‘你’,又不是一个真人。”
“所以我们把他拉到‘多看一眼’的名单里了。”岑砚说,“但我们不能替他造一个现实的人出来。”
“有时候我真希望能。”她低声道。
他偏过头,看了她一眼。屏幕光映在她的侧脸上,把眉眼照得有些苍白,却也让那点认真显得格外真切。
“你别把自己当成救世主。”他轻声说,“你不是。”
“那我是什么?”
“你是写系统的人。”
他顿了顿,又补了一句:“也是会犯错的人。”
“谢谢你安慰我会犯错。”她嘴角弯了弯,“听着也不算好话。”
“至少比‘你必须每次都对’真实一点。”他道。
他们说着话,对话框又往下滚了几行。
【你会一直记得我吗?】
夜帘:
【我会记得你说过的每一句话。
可比起我记得,更重要的是——现实里,也有人记得你。】
【现实里?】
【比如今晚吹过你脸的那阵风,比如明天早上路边给你做早餐的那家小摊。
你不来,他们会觉得少了一个常客。】
【他们只是不知道我是谁。】
【但他们知道,今天有一个人没来。】
这段话,是最近一次模型微调后新长出来的。温柔、有画面感,却始终停留在“陪着说说话”的层级。
情绪评分曲线在那一刻轻轻回落了一些,又一次没有突破那条阈值线。
“它又‘安抚成功’了。”郦苒喃喃。
这四个字落在她舌尖上,却没有一丝喜悦。
“边界徘徊次数已经到了。”岑砚看着旁边的表,“它会被推给人工复核。”
“多久?”
“十分钟内。”
“十分钟够吗?”她问。
他沉默了一下:“理论上,够。”
——理论上的“够”,在真实世界里,有时只是一层纸。
---
夜越来越深。
楼下的车流开始疏落,路灯把树梢照得发白。对面楼某个窗口有孩子在跳沙发,身影忽上忽下,家长的身影在旁边来回晃,偶尔拍打几下,窗帘一拉,那一幕就被关在了对面的世界里。
星河的这层楼,灯光愈发稀少。除了监控室,还有一块区域亮着,是一线客服的夜班位。
夜班小组今天只有两个人——一个老手,一个刚转正不久的小伙子,叫阿祺。
阿祺戴着耳机,双眼在多个窗口间游走,一边听着热线,一边看着夜帘后台推来的“人工复核”列表。每跳出来一个高优先级,他就点进去看,对话里一旦出现太重的话,他就按照流程拨出电话。
K-7413 出现在列表里时,已经是接近午夜十二点。
【我今天站在桥上,看车灯从下面闪过去,觉得自己像不存在。】
【那你后来怎么做的?】
【后来?我下来了。】
【你愿意跟我讲讲,下来的那一刻,你脑子里在想什么吗?】
【我在想,如果我再往下走一步,就真的不用想这些了。】
阿祺看得手心一紧。
他瞥了一眼情绪标记——“高波动边界徘徊”,不是“极端高危”。再看时间,会话已经持续了一个多小时,后面几句情绪评分确实在回落。
同时,他耳机里还挂着另一通热线,对方正在哭着讲家里老人住院没人帮忙的事。他肩上两头受力,像被谁拽着往两边拉。
“要不要打?”他飞快地在组内频道敲字问老手。
老手那边刚刚挂了一通明显高危的电话,手还在抖。
【语气呢?】
【挺平静的。】
【最近有没有类似记录?】
【有,在边界清单上。】
【评分?】
【没过红线。】
【那先观察。再往上冲就打。】
这是一套在无数次培训、无数次复盘之后形成的“经验规则”。阿祺知道,老手不是不负责,而是在用自己有限的精力,优先盯住那些已经确定在悬崖边的人。
他深吸一口气,又把注意力拉回 K-7413 的窗口。
【站在上面的时候,我其实有点害怕。】
【怕什么?】
【怕风太大,一下把我吹下去。】
【那后来,下来的时候,有没有觉得风也推了你一把?】
【……没有。】
【那是什么推了你?】
【是我突然想起来,我手机电量只有 3%。】
夜帘顿了一下,给出一句看上去颇有人味的回复: