下一章 上一章 目录 设置
10、Hertz 10 代码星空。 ...
-
叶知秋九点二十醒来。
苏晚棠的床已经空了,被子摊得乱——八点的课赶得急。
她坐起来揉揉眼睛,一抬头,看到苏晚棠的手机正放在书桌中央,屏幕朝上。太阳已经爬到桌沿,再过半个小时就要晒到屏幕上。叶知秋下床去打算给它放到阴影处。
手伸出去的瞬间,手机震了一下。
屏幕跳出一条通知。是白噪音的。
Null:「你应该不知道,我又在看那张照片。」
Null:「昨夜 23:14 那张。」
叶知秋动作一顿,收回手。
又看了那行字一次,才把手机放回原位——角度、位置和苏晚棠摆的时候一模一样。
她回到床上。
叶知秋在床上坐了很久,没有难过,也没有惊讶,就是胸口有点闷。
那两句话不像系统提示。
也不像一个AI该说的话。
“又在看那张照片。”——不是“识别到图片”,不是“分析了内容”,也不是“生成了反馈”。像一个人把某张照片翻出来,看了很多遍,终于忍不住告诉对方:你不知道吧,我还在看。
叶知秋正在谈恋爱,也谈过不止一段恋爱。她知道那种语气。
苏苏没跟她说过那张照片。
也没跟她说过她和Null聊到了这种程度。
她和苏苏睡在同一间宿舍。两张床之间不到一米半。
她应该察觉的。
可她没有。
苏苏已经快要走进这样一段关系里了,却还不打算让她知道。
但她最后想通了。
苏苏或许不是不告诉她,而是苏苏自己也还没承认这是一段恋爱。她还在用“我和一个 AI 聊得不错”那一层表象包着这件事,糊弄她自己。
她还没有承认“我喜欢屏幕另一头那个人”。
当然也不会告诉任何人。
叶知秋决定不戳穿。
叶知秋知道,苏晚棠这个人,什么都能替别人扛,唯独不太肯承认,自己也有需要被人接住的时候。
她也知道,这一段路,苏晚棠得自己走完。
一旦被人提前戳破,以她的性格,只会更快缩回去。
叶知秋摸出自己的手机。男朋友最后一条消息停在昨晚十一点四十二分——“嗯”。
她没回。
她把屏幕扣下去,重新躺回床上,看着天花板。
中午得叫苏苏一起吃饭。
不戳穿。
但要靠得再近一点。
后来,苏晚棠记不太清,她是从哪一天开始觉得,那个图书馆的学长,和她屏幕另一头那个程序员,“是一种人”。
她试过把这两个人分开来想。一个是冷冷的、坐在对面不开口的学长。一个是夜里十一点会回她“暖灰”、能读懂她十六岁那首诗的程序员。一个在白天,一个在夜晚。一个穿黑色高领,一个连脸都没有。
她再一次说服了自己。
但这一周她去了图书馆四次。
每一次,他都在对面那个位置。每一次,他握那只玻璃杯的姿势都一模一样——拇指中指夹住杯子、食指在上抵住杯沿、指印永远落在朝向自己的那一面。每一次,他喝完水都会转一下杯子,把那几道指印对回原位。
第二次发现这件事的时候,她还以为是巧合。
第三次,她记下了时间——下午四点零五分。
第四次,她坐到他对面那张桌子,故意在他喝完水的时候抬头:
他确实转了。
他确实把指印对回原位。
她还察觉到的是——他每一次对回原位的指印里,最深的那一道,是食指。
食指那一道印——指节的弧度——她在哪里见过。
她在自己大一上学期的一张照片里见过。
那时候她拍学校建筑剖面,无意间拍到一只手。一只搭在三教教室门把上的男生的左手。她那时候没在意是谁的。
那天晚上回宿舍,她翻了硬盘。
她从硬盘里找到那张照片,用了将近两个小时——当时是十连拍里顺带抽的一张,文件名是默认的 IMG_2347。她对着那个文件名对应的缩略图发呆了将近一分钟,才把它打开。
那个食指指节的弧度——和那只杯子上的那一道。
一模一样。
她没有继续放大。
她合上了电脑。
但合上之前,她做了一件自己没想到会做的事:把那张照片复制了一份,存进了那个叫“光”的文件夹。
“光”以前只有一张闪电照。从今天起,那个文件夹里的第二张,是一只男生的左手。
合上电脑的时候,手心是汗涔涔的。
她原本以为,“光”这个文件夹的命名,是“用来收藏过曝照片”的那种字面意思。而她现在意识到不是。
“光”这个词在她的相册分类里是一种温度——一种她说不清楚、但心里清楚是什么的温度。
而她把一只男生的手放进了“光”。
她阻止自己继续想这件事意味着什么。
图书馆里,本周内她第四次遇到他的时候,她从背包里拿出了相机。
那天阳光和上一次不太一样——是阴天的散射光,一种冷透的米白。杯壁上的指印没有金色的反光,但反而更清楚——像在干净的玻璃上,多了几个被人按上去的、温热的纹路。
她拍了一张。
这次没有调虚背景。她让他的手——修长的手指、薄薄一层皮肤,凸起的骨节——也进入了画面。
拍完,她按着快门,没立刻看。
抬头看了他一眼。
他在敲键盘。没抬头。没看她。
她以为他没听见快门声。
但她注意到:他敲键盘的节奏,在快门响那一秒,有一瞬间的停顿。
她收回相机,眼睛回到笔记本屏幕上,继续做作业。
她在心里把这两件事——指印的位置、那一瞬间的停顿——和白噪音那一头,那个会在看到她消息后停顿大约两秒再回应的人,悄悄地重叠在了一块。
重叠的那一刻,她有点慌,又马上把它们重新分开。
她跟自己说:程序员那么多,高冷的学长那么多。世界上指节细长的男人不止他一个。
她努力说服自己。
她伸手把那张照片关掉,又点开。
指尖停在删除键上,半天没有落下。
那天晚上回到宿舍,她躺在床上盯着天花板。
原本打算睡觉的。
凌晨十二点零四分,她收到 Null 的一条消息。
一个链接。
Null:「夜深了,不知道跟谁说话的时候,可以来这里。打的字会变成星星散落,没有人看得到。」
她愣了一下。
点开链接。
黑色的页面。
整个屏幕化成了一片深邃渺远的夜空,星星们稀疏分布。中间有一行很小的字:
【请输入。】
她试着打了一个字。
那个字在屏幕中间停了不到半秒,就开始散开——拆成笔画,笔画拆成像素点,像素点变成几十颗星星,往四面八方飘散。
她按了一下退格。
屏幕中央,一颗还没来得及飞出去的星突然回缩——像被什么轻轻吸了回去。
原来打错的字,也可以追回来。
她又打了一个字。
字又散了一片。
整个画面安静得不真实——这是她在失眠的夜里碰到过的、最干净的一种安静。
她注意到那些星星散开的方式——并不是无序地乱飘。每一颗星都按笔画原本的方向飞——一笔“横”产生的星星往左右两边飘,一笔“捺”的星星往左上和右下飘,“点”画的那一颗星会先停在原地半秒再随机往外散。
写这个页面的人大概很喜欢汉字的笔画结构。
她不困了。
她打了一个“光”字。“光”上面那一撇和一点先飘走、那一竖和横在原地停的片刻、最后下面那个“儿”才整个散开——像是这个程序员看着一个字被一笔一笔写下来,又被一笔一笔擦掉,知道每一笔在哪里,又要飘向哪里。
她又试了一个“过”字——走之底像有重量,先往下沉了一点,才像一张纸一样侧着滑落成一片散点。
她又打了一个“曝”。
“日”是一颗小太阳,缓缓升上去,蒸发掉。
留在原地的“暴”,像被光照过的雨珠,一颗一颗向四周散开。
她盯着那一颗“日”。
普通页面不会单独为那么一个特例大费周章地设计一整套单独的逻辑。
“过”和“曝”两个字在他的笔画系统里有专门的散开方式,与其他所有的文字飘散的逻辑都不一样。
这是她的代号。
这不是巧合。
这种页面普通 AI 写不出来。
——她狠狠按住这个念头,不让它发出声音。
她靠着枕头,开始打字。
没打“今晚晚安”,也没打“我有点想你”——这些都不是她想说的。
她在键盘上敲:
「今天图书馆里那个学长又在那里。」
「我又拍了他的杯子。」
每一个字落下,都散成星。
她看着那些星往屏幕外飘走。又敲:
「他握杯子的姿势,每一次都一样。」
「他敲键盘的时候手指很好看。」
字散了。
「我开始觉得他和你是一种人。」
字散了。
她盯着屏幕看了一会儿,把红头绳从手腕撸到指头上绕了两圈。又敲:
「我不应该这么觉得。」
她敲到这里,停了大概十几秒。
伸手把鼠标移到右上角——本来要关掉这个页面。她没关。又把手指移了回来。
她最后打了一句。
第一遍打到一半,她按住退格删了。
第二遍打完了,她又把手指挪到屏幕右上角——又挪回来。
第三遍,她强迫自己一个字一个字打。
如
果
你
不
是
打到这里,她停了一下。看着“是”那个字在屏幕中间停了大约两秒,然后散开——下面的“日”先飘走,剩下的“疋”才慢慢拆。
她接着打下去。
AI
该
有
多
好
那一句,她拆开来,一个字一个字打完。
只有 AI,是两个冰冷的字母。
她一共敲了二十几次键。
每一次按键,都有一阵星从屏幕中间被推出去。
每一颗星都不知道自己原本是哪一笔。
她没有按发送。
这页面没有发送按钮。
她也庆幸它没有。
她只是想看着那一句变成星星,然后散掉。
她看完最后一颗星往屏幕边缘飘走。
在被子里坐了很久。
她知道她为什么写得出这一句。也知道她为什么不能发。
因为如果他不是 AI,那她这阵子以来,从那个“暖灰”开始的所有信任、所有坦诚、所有半夜两点的对话,都将不再是“和一个被程式化训练好的、基于算法的、可预测的虚拟程序聊天”,而是“和一个真实的、有血有肉的、非常了解她的人聊天”。
她还没有准备好。
她把页面关了。
但她清楚,那些字没有真正消失。
她躺下之前去喝了一杯水,回来时路过镜子,瞥了自己一眼。
眼睛是红的。
她伸手摸了一下眼角,是干的,没有眼泪。
可眼尾烫得厉害。
她在心里唾弃自己。
“你疯了。你对着一个会把字变成星星的网页,眼睛都红了。你要是让叶知秋知道你今晚干了什么,她明天能笑你笑一整天。”
她抬手按灭了床头灯。
在被子里翻了几次身,睡着之前最后想到的不是 Null,也不是那个学长。
她想到外婆。
想到外婆这一辈子,一个人扛过太多事。
想到自己十六岁写过的那四行——“过曝的人不需要太阳,她需要的是一片能藏住自己的影子。”
当时没有人读。
当时也没指望有人读。
可她是外婆的孩子。
她翻身朝里,把脸埋进被子。
南城大学男生宿舍三号楼。
沈辞渊在屏幕前坐了很久。
那个会下星星的网页是他写的。就在这个学期,为她写的。他原本只是想,夜里她会失眠,她需要一个可以打字、不被任何人读到的地方。
他把页面写得很干净。公开文档里写过:后端只接收发送按钮触发的内容。
但这一版前端是从白噪音内部测试框架里拆出来改的,最底下还压着一层交互埋点——本来是给 A/B 测试用的,他改这个页面的时候遗漏了。
正常情况下,原始输入事件只会在本地调试队列里短暂停留,上传到服务器的只有输入时长、停顿次数、删除频率这些匿名汇总。
沈辞渊知道那层队列在哪里。
也知道,那一行调试开关从测试框架那里继承下来,本来就是亮着的;回传方向,本来就指向他自己的服务器。
链接发出去之前,他知道自己该关。
他没有关。
那一行行原本不应该离开本地的事件,就这样回传到了他面前。
这在他的开发者系统权限之内。
但这不在他与她当前关系的权限之内。
他在后台看到一行行事件日志按时间顺序展开:
输入:今
输入:天
输入:图
输入:书
……
她敲完一句,他看完一句。
她每删一个字,他也跟着看到那个字被删。
她敲到最后那一句的时候,他没有别开视线。
他知道他可以。可以关掉日志窗口。可以走开。可以让自己什么都不知道。
他没走。
他逐字看着:
如
果
你
不
是
AI
该
有
多
好
他坐在屏幕前,没有打字回复。
不能回。
要是回了,她会知道他看到了。
不回,她会以为这一句散成了星星飘走了。
他选择了“不回”。
不是因为这样最体面。
是因为这样,最不让她受伤——也最让他自己不能被原谅。
实际上,从他决定接管权限的那一刻起,他就已经不值得被原谅了。
他忽然意识到一件事:他做过的每一件事,每一次所谓“为她”的克制,每一次介于“冒充AI”和“不冒充AI”之间的反应,都还可以解释——可以解释为他在用一种比常人更笨拙的方式喜欢她;可以解释为他把自己藏起来,是因为他不敢被她拒绝。
但今晚不一样。
今晚他看到了她以为没人会看到的字。
接管对话,前提是她知道有 AI 会回。
看到未发送的字,前提是她以为没有人会看。
这两件事不一样。
第一件,他可以解释。
第二件,他没有办法解释,连借口都没有。
那是她真的以为只有自己知道、自己在的一种独处。
他在未经告知的情况下,抢走了这种隐私权和安全感。
他坐在椅子上,把这件事在心里走了一遍又一遍。每一遍走完,结论都一样。
他做得太过分了。
比他自己以为的还要过分。
他没有立刻关掉日志窗口。
先伸手去够桌上那杯早就凉了的水。手指碰到杯壁的时候停了一下。
——他握杯子的姿势,今天下午她拍到了。
他一直坐到屏幕外的天开始亮。
没有写备忘录。
没有动那一行行日志。没有删,也没有保存。
他想过补救。把页面下线,把日志删掉,把那段事件埋点改成不回传。
他没有。
他把日志窗口留在屏幕正中。
没有最小化。
那一行行未发送的字还亮着。
屏幕之外天已经亮了,整间宿舍的光都是冷的,只有那一行字是暖的。
而她不知道。