第二天晚上,林星晚继续翻APP代码。
这一次她翻得更深不是核心模块,是"辅助功能"目录。这个目录在代码层级的最底层,平时没人会注意到。文件名很普通"utils"、"helpers"、"extensions"一看就是开发过程中的边角料。
她随手点开一个文件。
"safety_override()"。
她的手停了。
函数名用的是下划线命名法跟核心模块的风格一致。但这个名字"safety_override"她有印象。非常深刻的印象。
她点进去。代码展开了比她预想的长得多。不是一个函数,是一整套逻辑。用户情绪过载检测、强制断连机制、共振强度限制、异常频率告警四百多行。
她往下翻,看到了注释。
"// 此模块用于检测用户的异常共振状态,在用户情绪过载时自动断开连接。"
然后
"// 如果有一天这个工具被用于不好的地方,我希望这个协议能保护使用者。"
林星晚的手指停在鼠标上。
她认得这两行注释。每一个字都是她写的。那种写法"不好的地方",不是"恶意使用"、不是"滥用风险"用了一个很口语化的、很随意的说法。大三的她写注释就是这个风格。正式的写一半,懒了,就开始说人话。
"傅晏。"她叫了一声。声音有点不对。
傅晏从厨房走过来,手里还拿着没洗完的碗。
"怎么了?"
"你过来看。"
傅晏走到她身后,弯下腰看屏幕。林星晚指着那两行注释。
他看了三秒。"你写的。"
"我写的。"林星晚的声音开始发飘,"大三就在写主功能模块的那段时间。我记得我记得我跑完那个愤怒传播模拟之后,后背发凉。我想如果这东西真的被用来操控人怎么办?我不能让它只做一个传播工具就完了。我得"
"得加保护。"
"对。"她往下翻代码,"你看这里。工作原理是这样的。"
她指着安全协议的核心逻辑。
"如果系统检测到某个用户的情绪波动超过安全阈值这个阈值我设的是基线频率正负2.5个标准差系统会主动切断该用户的共振连接。不是延迟切断是立即。0.5秒以内。同时"
她翻到下一段。
"同时向跟该用户有连接的其他用户发送一个'感知到异常'的信号。不是告诉他们'这个人出问题了'是让他们'感受到'。通过共振通道传一个微弱的警示频率。收到的人会感觉到一种不安。不是具体的'知道出了什么事'是本能的'觉得不对劲'。"
"你大三就设计了这套机制?"
"不完整。只是框架。"林星晚的手指在发抖,"你看这几行异常检测的阈值我写的是2.5σ,但触发后的处理逻辑只写了一半。后半段是空的注释写着'TODO: 完善断连后的用户引导流程'。我当时没时间做了。课业截止了。就交了。"
"但林素琴补全了。"
"对。她补了。"林星晚翻到代码的后半段处理逻辑明显跟前面不一样。注释风格变了变得工整、规范。是林素琴写的。
但原始的框架检测、断连、告警全是林星晚的。
她盯着屏幕上那行注释"如果有一天这个工具被用于不好的地方,我希望这个协议能保护使用者。"
"我当时就知道。"她说。声音发颤不是因为冷。"我知道它可能会被滥用。一个大三学生写的一个情绪传播工具如果被人拿去做产品如果有人用它来操控用户情绪"
"所以你留了保护机制。"傅晏说。
"我留了。但我不确定"她咽了一下,"我不确定它有没有被激活过。"
"什么意思?"
"你看"她翻到安全协议的运行日志。日志记录了协议的激活次数和触发事件。她往下拉
零。
激活次数:零。
"从来没激活过。"林星晚说。
"Sync系统运行期间那些用户出现情绪依赖、焦虑、睡眠障碍的时候安全协议没触发?"
"没有。"林星晚翻着日志,"一次都没有。"
傅晏的表情变了。很微小的变化眉心收紧了一点。
"为什么?"他问。
"我不"林星晚翻到协议的触发条件,仔细看了一遍。然后她看到了。
"他妈的。"
"怎么了?"
"阈值。"她指着屏幕,"我设的触发阈值是2.5个标准差。但Sync系统运行期间陈启明在外面套的那层外壳对用户的情绪数据做了一层'平滑处理'。用户实际的情绪波动可能已经超过阈值了但平滑处理之后,传到安全协议的数据是'正常的'。协议看到的数据是假的。所以"
"所以它从来没触发过。"
"从来没。"林星晚的手握成了拳头,"我写的安全协议它一直在那儿。它一直在运行。但它收到的数据是被陈启明过滤过的。它想保护用户但它看不到用户真实的状况。"
她靠在椅背上,闭了一下眼睛。
"你写的不是工具。"傅晏说。
她睁开眼看他。
"你写的是一个'承诺'。"他的声音很平,但每个字都很稳,"你大三的时候就已经预见了可能的风险。你没有忽略它。你写了一套保护机制。虽然不完整但你留了。然后林素琴看到了,补全了。它一直在系统里。一直在等等被正确地使用。"
"但它从没被正确地使用过。"
"现在是。"傅晏说,"整改之后陈启明那层平滑处理已经拆了。安全协议现在收到的是原始数据。如果有人情绪过载它会触发。"
林星晚看着他。看了好几秒。
"如果"她说,"如果从一开始就没有那层平滑处理呢?如果陈启明没有动过手脚呢?那些出现情绪依赖、焦虑的用户是不是就不会受影响了?"
"有可能。"
"我写的协议本可以保护他们。"
"本可以。"傅晏没有否认。
林星晚低下头。看着屏幕上那行字"如果有一天这个工具被用于不好的地方,我希望这个协议能保护使用者。"
七年前的自己写的。像是一封寄到未来的信。信到了。但收信人迟到了。
"这个协议"她开口,"现在激活了吗?"
傅晏拿过鼠标,翻到协议的状态栏。
"运行中。监控对象:全网活跃节点。触发阈值:2.5σ。状态:正常。"
"正常。"林星晚重复了一下。
"嗯。它在工作。"
林星晚盯着那个"运行中"的状态,脑子里冒出一个念头
如果这个协议一直没有被激活过现在呢?整改之后,平滑处理拆了,原始数据恢复了。那一千万个节点里会不会有人已经接近了阈值?
她正要问
手机震了。
APP推送:
"安全协议状态:运行中。近7日触发次数:3。处理结果:全部正常断连,无异常。"
3次。
协议触发过。3次。她之前没注意到因为它处理得很安静。没有告警,没有弹窗。就是断连、告警、恢复。0.5秒。
"它在工作。"林星晚说。
傅晏点了下头。
她关掉代码窗口。靠在椅背上。天花板上的灯管有点旧了,光线微微发黄。
"傅晏。"
"嗯。"
"我七年前写了一个承诺。七年后它终于兑现了。"
