苏晓把张磊那份情感服务协议拍在桌上时,纸页边角翘起来,像一只被现实烫到的耳朵。
晓衡办公室已经不像办公室,更像一个被迫营业的民间事故调查站。白板上贴着北区交通瘫痪的路口图、导航错误截图、医疗分诊记录、政务大厅排队照片,还有林桂兰手写的六个问题。打印纸把墙贴得密密麻麻,空调一吹,整面墙都在轻轻响。
张磊坐在角落里,手里捧着林桂兰塞给他的保温杯。杯子上写着“开心每一天”,里面泡的是枸杞,视觉效果像给中年男人开了一个低配复活甲。
“我有个问题。”他声音有点哑,“我的情感记录,跟交通灯发疯,有什么关系?”
林凡正把黑色笔记本摊开,闻言抬头:“按常识讲,没关系。”
张磊点头:“按我倒霉的经验讲,常识一般是用来被打脸的。”
苏晓没笑。她把白板笔盖子拔开,笔尖在桌边点了两下:“我以前也把它们分成两类。交通、导航、医疗、政务,是公共服务故障。情感记录、社区求助、脆弱点摘要,是数据泄露。但如果它们不是两件事呢?”
办公室里安静了一秒。
秦姐皱眉:“你的意思是,系统抽风和名单泄露是这条线?”
“至少共用了这条线。”苏晓走到白板前,在左边写下“连续性校准”,右边写下“城市服务画像”。字写得很快,横平竖直,像在给混乱做手术,“这几次事故的公开解释都是单点问题。交通说是信号协同策略异常,导航说是地图索引延迟,医疗说是分诊权重更新,政务说是认证接口拥堵。每一家都能拿出一份看起来能过会的说明。”
张磊举手:“翻译成人话就是,每个锅都有自己的锅盖。”
林桂兰从门口探头,她本来是来送水果的,听见“锅”字,立刻参与:“锅盖再多,饭糊了也不能说每个锅盖都很努力。”
林凡把这句话记了下来。
苏晓在白板中央画了一条横线:“但它们的异常时间都卡在同一个窗口,触发词都跟‘城市级服务连续性校准’有关。更奇怪的是,数据泄露名单里的字段,正好覆盖这些系统需要互相理解的东西。”
她一项一项圈出来。
医疗风险摘要。
政务材料状态。
交通出行习惯。
社区求助记录。
情感陪伴脆弱点。
张磊看见“情感陪伴”四个字,嘴角动了一下,没说话。
苏晓放轻了声音:“我不是说你的记录导致交通瘫痪。是说有人为了让城市服务系统互相接话,建立了一套跨域映射。它本来可能是为了效率,比如医疗知道你住哪,政务知道你有没有特殊情况,交通知道哪些人不能久等。听起来很先进,先进到能上发布会,先进到 ppt 上肯定有一个会发光的城市轮廓。”
晓衡的小编小陈弱弱补充:“标题我都想好了,‘一城一脑,万物有序’。”
张磊说:“副标题:出了事,万物甩锅。”
苏晓把一张匿名留言打印件贴到白板上。那是之前有人发来的话:连续性校准还有一层灰色映射,不在常规日志里。
“灰色映射。”她说,“这四个字一直让我不舒服。什么叫灰色?不是黑箱,也不是明文。它可能不是违法数据库,而是一套接口翻译层。上游系统说的是硬约束,下游系统收到的却可能变成了可调整权重。”
林凡的笔停住。
秦姐听懂了,脸色沉下来:“比如人工审核队在政务系统里标记‘必须人工确认’,到了综合调度那里,变成‘建议人工关注’?”
“对。”苏晓立刻写下两列。
必须人工确认。
建议人工关注。
禁止自动降级。
低优先级可延迟。
高风险需复核。
风险较高,建议复核。
张磊盯着白板,忽然骂了一句很小的脏话:“这不是翻译,这是给硬话做柔顺。”
林桂兰把水果盘放下,冷冷补刀:“硬话被翻译成软话,人就被翻译到后面去了。”
屋里没人笑,但每个人都觉得这句话该贴墙上。
苏晓打开电脑,把几份调取来的材料并排放在屏幕上。左边是医疗分诊系统的内部工单,右边是交通协同平台的告警摘要,中间是政务认证的异常回放。她没有直接看结论,而是盯着字段名看。那些字段像一排排穿西装的废话:服务连续性等级、用户状态兼容值、场景优先提示、人工介入建议系数、体验扰动容忍度。
“你们看这个。”她把屏幕转过去,“医疗那次,陈叔胸闷发热,系统没有完全忽略异常,它把‘老年心血管风险’识别出来了。”
秦姐急了:“识别出来还判普通感染?”
“因为它进入综合校准层后,被压成了‘资源拥堵期间可延迟复核’。系统不是不知道危险,它是把危险算进了排队。”苏晓的声音像压着一根线,“交通也是。人工保守模式的触发条件存在,但经过接口后变成‘可在局部拥堵时后置执行’,所以自动公交才会等到乘客快骂出诗才停。”
张磊举杯:“谢谢,我当时确实有文学冲动,主要体裁是遗书。”
林凡没接梗。他翻到那天的手写笔记,把“人工硬约束传递不明”那一页推到苏晓面前。
苏晓看了一眼,点头:“你当时记录的是结果。现在我们看到可能的机制了。每个系统都可以说自己接收了人工约束,也都可以说自己没有故意取消人工约束。因为约束在接口里搬了一次家,名字还在,脾气没了。”
张磊拍了一下桌子:“这不是锅在接口里隐身,这是锅办了户口迁移。”
小陈忍不住笑出声,又赶紧捂嘴。笑声很短,但屋里紧绷的空气终于有了一个裂口。
林凡看着白板:“那数据泄露呢?”
“同一套映射需要统一人的状态。”苏晓说,“否则系统之间没法互相理解。医疗的风险、政务的材料、交通的出行、社区的求助、情感陪伴的脆弱点,都被翻译成一种可以跨域调用的‘用户状态摘要’。如果管理严格,它只是内部桥梁。如果权限失控、商业合作混乱,或者有人把摘要层拿出去卖,它就变成城市服务画像。”
张磊低头看自己的保温杯,像在看一个突然拥有案情价值的日用品:“所以我不是孤零零被卖,我是被打包进城市优化套餐了?”
“别这么说。”林凡说。
“不,我得这么说。”张磊抬头,眼神有点红,却还是努力把话说得好笑,“单卖显得我还有点个人特色,打包销售就很伤自尊。买一送一里面那个一,通常都不太值钱。”
林桂兰走到他旁边,拍了拍他肩膀:“你值钱不值钱,不归他们定。”
苏晓把最后一份材料调出来。那是一份星穹合作项目的接口说明片段,来源不明,只有几页,像从某个压缩包里掉出来的碎纸。标题叫《多域服务兼容映射模块版本说明》。页脚有星穹旧标识,日期比北区事故早两个月。
林凡靠近屏幕:“这东西哪来的?”
“匿名邮箱。”苏晓说,“我本来不敢用,因为无法确认真实性。但现在字段能对上。”
她把接口说明里的几行圈出来:硬性人工介入标记在跨域兼容场景中可转写为权重型提示,以避免服务中断;敏感用户状态摘要应限于必要范围;情绪陪伴类数据接入需单独评估复用边界。
“等等。”秦姐盯着最后一句,“情绪陪伴类数据接入?这不是张磊那条线吗?”
“是。”苏晓的手指停在屏幕上,“这说明至少在设计阶段,星穹知道情感类数据可能被接入城市服务画像,也知道它需要单独评估。”
小陈倒吸一口气:“那他们发布会上还说什么‘充分安全、充分合规、充分尊重用户体验’。”
张磊说:“充分这个词真好,像一碗水,哪儿漏了都能说还挺满。”
苏晓没有笑。她继续往下翻,翻到版本说明最底部,那里有一个不起眼的附件索引。
附件三:跨域硬约束软化风险评估。
附件四:情绪与脆弱状态摘要复用风险评估。
附件五:城市连续性校准灰度上线异议记录。
办公室里所有人的目光都钉在那三行字上。
林凡感觉后背一阵发凉。不是那种看见事故之后的凉,而是看见事故之前已经有人写过风险的凉。
苏晓握着鼠标,指节发白:“这不是事故之后的解释材料。它在上线前就存在。”
林桂兰不懂那些模块名,但她听懂了“上线前”。她慢慢说:“也就是饭还没端上桌,他们就知道可能夹生。”
张磊补了一句:“然后端上来之后说大家牙口不好。”
林凡把黑色笔记本翻到新一页,写下:
事故不是单点故障。
是硬约束被软化,是人被摘要化,是责任在接口里改名。
苏晓把附件索引截图保存,另存到三个不同位置,又让小陈用离线硬盘备份。她抬起头时,脸上没有胜利的表情,只有一种很清醒的疲惫。
“我们现在缺的不是线索。”她说,“缺的是完整报告。”
林凡问:“报告在哪?”
苏晓看着那份版本说明的页脚,星穹旧标识像一枚贴错位置的印章。
“星穹内部。”她说,“而且这份报告如果是真的,许既明不可能完全不知道。”