下一章 目录 设置
1、雨夜里的陌生U盘 许砚知在雨 ...
-
新生报到后的第三场雨砸下来时,许砚知刚把行李箱推进信息楼一层。
门厅里全是潮气。伞骨互相卡住,鞋底在浅灰地砖上拖出一道道水痕,扩音器隔半分钟重复一次:“AI导引体验课十五分钟后开始,请完成签到的新生前往A201。”
许砚知站在自助机前,把学号输错了一位。
屏幕弹出红框,他盯了两秒,重新输入。身后的队伍在动,有人把伞尖碰到他的裤脚,他也没回头。直到绿色的“签到成功”跳出来,他才弯腰去捡落在脚边的入学手册。
手指先碰到一只黑色U盘。
外壳磨得发白,边角裂了一道,短挂绳上缠着湿泥。标签被水泡得起皱,只剩半个单词:cold……
它不像哪个新生刚买的设备,更像从封存多年的抽屉里滚出来,偏偏停在他脚边。
许砚知把U盘捏起来,正准备交给门厅老师,身后有人穿过雨声喊:“同学,那个别交。”
声音很近,懒散里压着一点急。
许砚知回头。
男生从门外跑进来,外套没扣,右肩被雨浸透,额发贴在眉骨上。他高,步子快,停到许砚知面前时还带着一阵凉气。第一眼先看U盘,第二眼才看人。
“可能是我的。”他说。
“可能?”许砚知把U盘收进掌心,“你连是不是自己的都不确定?”
男生喘匀了气,摊开手:“我确定它今天早上还在我包里。不确定它为什么会跑到你手上。沈砺川,计算机类新生,西六宿舍,门禁昨天把我识别成访客三次。这个自我证明够不够?”
“证明了你的名字,没证明U盘归你。”
沈砺川的手停在半空,指节上有一道浅口子,像刚被铁皮刮过。他盯着许砚知看了两秒,忽然笑了:“你捡到的不是U盘,是犯罪现场?”
“来历不明的存储设备本来就有风险。”许砚知把标签翻给他看,“你知道cold后面是什么。”
笑意从沈砺川脸上退了一截。
那变化很短,却比任何回答都明显。
扩音器再次催人入场。A201门口排起长队,二维码屏幕一块接一块亮起来。老师站在门边提醒大家别拥挤,门厅里的雨伞被集中装进塑料袋,一切都按新生报到流程往前走。
许砚知没有动:“项目叫什么?”
沈砺川看着那半张标签:“寒灯。”
“做什么的?”
“学习导引。”
“谁做的?”
“以前一群学生。”
“你在里面?”
沈砺川把湿透的袖口往上推了一点:“算参与过。”
“参与过多少?”
“你审我呢?”
“你可以不回答。”许砚知说,“我现在就交给老师。”
沈砺川往门边看了一眼。负责失物登记的老师正低头整理表格,他明明只要提高一点声音,事情就会立刻进入更正式的流程。
“我负责过仓库权限。”沈砺川终于说,“后来项目出过事故,旧版停了。这个盘按理不该出现在学校。”
“为什么不能交?”
“因为谁拿到它,谁就会先定义它是什么。”
许砚知皱眉:“事实不会因为谁先说而改变。”
“记录会。”
那两个字说得太快,像沈砺川没有来得及把它们拦住。
许砚知第一次认真看他。湿外套、没系好的鞋带、说话时总想用玩笑绕过去,看起来确实不像值得托付证据的人;可他提到“记录”时,手指无意识地攥住了书包肩带,指节上的划痕被拉得发白。
“先上课。”许砚知把U盘放进口袋,“下课去找课程负责人。你不能单独拿走。”
沈砺川松开肩带:“你居然会折中。”
“不是折中。”许砚知往A201走,“是避免你在我视线外处理证据。”
沈砺川跟上来:“你平时说话都这么像判决书?”
“看对象。”
“我现在是什么对象?”
“风险源。”
沈砺川笑了一声:“风险源申请坐你旁边。”
A201只剩后排连座。许砚知没理由拒绝,却又不想显得这场临时同盟已经成立,只说:“别碰我电脑。”
“收到。”
AI导引体验课比宣传册上更像一场展演。
大屏幕先播放学院近五年的项目成果:识别暴雨积水的视觉模型、辅助医生阅片的系统、多智能体调度平台。主持老师说,澄枢智能学院希望学生“能做AI、能解释AI、能审视AI”。台下有人拍照,有人已经在搜索哪个实验室最强。
体验环节里,每名新生需要输入基础、兴趣和目标,系统会生成四年学习路线。
前排学生先试。有人输入“想进大厂”,屏幕给出算法与工程双路线;有人输入“想保研”,系统提醒核心课、英语和科研训练;还有人问“如何不挂科”,全场笑起来,系统认真推荐了学习中心值班表。
轮到许砚知时,他把信息填得很具体:数学基础良好,编程基础中等,暂未确定方向,偏好可靠系统与人工智能。
沈砺川靠在椅背上,看他一项项选择:“你连兴趣都要先划边界?”
“选项是系统给的。”
“你可以填‘不知道’。”
“知道的部分没必要假装不知道。”
路线图很快生成。数学分析、高等代数、程序设计、数据结构、机器学习、科研训练,排列干净,颜色柔和,每一项旁边都有解释。许砚知看着那张图,觉得它至少比门厅里那只U盘可靠。
沈砺川却说:“太顺了。”
“顺有什么问题?”
“像它提前知道你会喜欢什么。”
“系统根据输入生成结果。”
“如果输入不只来自刚才呢?”
许砚知侧头看他。
路线图底端的加载动画消失,一行灰色小字露出来:推荐补充资源:coldlight_archive/route_to_xz。
xz。
许砚知的手停在触控板上。
他没有输入姓名缩写。系统账号是完整学号,个人资料也没有“xz”字段。
沈砺川坐直了。他伸手按住电脑边缘,没有碰许砚知,却截住了他准备点击路径的动作。
“别点。”
“依据。”
“寒灯旧版有自动推荐模块,但它停用很多年了。”
“这可能只是迁移残留。”
“残留不会知道你。”
许砚知按下截图快捷键,把页面、时间和浏览器地址栏一并截进去。随后他打开系统控制台,想看网络请求。
沈砺川低声说:“你刚才还不让上机。”
“我没接U盘。只查看当前系统公开响应。”
“你分得真细。”
“细节决定这是不是证据。”
控制台刚展开,页面自动刷新。那行路径消失了,路线图恢复成普通推荐,仿佛什么也没出现。
许砚知查看请求记录,只找到一次状态码正常的推荐接口。返回内容里没有coldlight_archive,也没有route_to_xz。
“页面内容和响应不一致。”他说。
沈砺川不再开玩笑:“可能有前端缓存,也可能有额外脚本。”
“还有一种可能。”
“有人只想让我们看到。”
讲台上的老师正好说:“AI系统不是答案机器。建议看起来越合理,越要问它使用了什么数据,省略了什么条件。”
台下响起键盘声,很多人把这句话记进笔记。
许砚知没有记。他看着已经恢复正常的页面,觉得那句话不再像课程金句,而像有人隔着屏幕递给他的警告。
下课后,人群往外涌。他和沈砺川留在最后,等教室空下来才去找课程助教。
贺承远在A307门口核对设备登记,黑色卫衣袖子卷到手肘,听完两人的陈述,没有问“你们是不是看错了”,只问:“谁先碰到U盘?有没有插过设备?路径截图有没有原始文件?”
许砚知逐项回答,把手机里的截图展示给他。
沈砺川补充:“标签完整时应该写coldlight_old。旧版寒灯的离线快照会这么标。”
贺承远抬头:“你见过?”
“见过。”
“什么时候?”
“高中。”
“什么身份?”
沈砺川停了一秒:“维护成员。”
贺承远没有继续追问。他从柜子里取出透明防静电袋,让许砚知把U盘放进去,封口、签时间,再让两个人分别在接触记录上签名。
“明天中午做只读镜像。”贺承远说,“你们都来。镜像前谁也不接触原盘。”
“可以查导引系统的前端记录吗?”许砚知问。
“我先报信息中心。你们现在不查。”
沈砺川低低吸了口气,明显不满意。
贺承远看向他:“尤其是你。”
“我现在很守规矩。”
“你说这句话的时候,手已经摸到口袋里的转接头了。”
沈砺川把手拿出来,掌心果然躺着一个小型读卡器。他把东西放到桌上:“习惯。”
“改。”贺承远把防静电袋锁进柜子,“还有,A401不要去。”
沈砺川脸上那点漫不经心又消失了:“谁提A401了?”
贺承远看着他:“我提的。”
走出A307时,雨已经小了。楼道窗缝漏风,墙上贴着新生实验室安全须知。许砚知走到楼梯口才问:“A401是什么?”
“以前寒灯迁移用过的房间。”沈砺川说。
“你刚才为什么装作不知道?”
“因为贺承远不该在没查盘之前知道A401。”
“也可能他知道旧项目。”
“他本科不在澄陵,寒灯停的时候他还没来。”
许砚知停下脚步:“你查过他?”
“我只是认识。”
“‘认识’和‘查过’不是一回事。”
沈砺川靠在楼梯扶手边,眼睛越过许砚知,看向上方紧闭的防火门:“你是不是打算把每个词都拆开?”
“直到你说清楚。”
“那你可能要花很久。”
“我时间表可以调整。”
沈砺川看了他一会儿,笑意慢慢回来,却没刚才那么轻:“流程同学,你对陌生人的耐心是不是太多了?”
“我对未闭合的问题有耐心。”
“我算问题?”
“目前算。”
他们沿台阶往下走。许砚知的手机先震动,一条陌生号码发来的短信占满屏幕:
别信沈砺川。
沈砺川的手机几乎同时亮起。他看完后没有立刻转过来。
“给我看。”许砚知说。
“你先。”
两个人把手机放到同一阶扶手上。
沈砺川收到的是:别让许砚知进寒灯。
雨水顺着窗玻璃往下淌,楼下有新生拖着行李箱跑过,轮子撞在门槛上,发出一声闷响。
“同一个号码?”沈砺川问。
许砚知核对后摇头:“不同。发送时间相差四秒。”
“目的倒挺统一。”
“让我们分开。”
“有效吗?”
许砚知把两条短信分别截图,保留号码、时间和信号栏,再上传到一个新建的只读文件夹。他把共享链接发给沈砺川:“从现在开始,任何和寒灯有关的信息都同步。原文件保留,不单独行动,不私自接触设备。”
沈砺川没有立刻答应:“你这是把我列成共同调查人,还是共同嫌疑人?”
“二者不冲突。”
“那权限呢?”
“我们都有查看权。修改需要双人确认。”
沈砺川低头打开链接,看到文件夹名是“寒灯_待核验”。他没有改名,也没有继续讨价还价,只说:“行。”
“还有一条。”
“你规矩真多。”
“如果你想单独查,先告诉我你准备做什么。不是征求同意,是留下记录。”
沈砺川把手机收进口袋:“那你也一样。”
“可以。”
这是两个人第一次达成明确约定。没有握手,也没人说信任。许砚知只把共享文件夹权限从“任何人可访问”改成指定账号,沈砺川站在旁边,第一次没有伸手替他操作。
回到宿舍,陈以宁已经把课程表贴到墙上,正给每门课建资料夹。许砚知把湿伞放到阳台,换下外套,坐到桌前整理当天记录。
“刚开学就做项目?”陈以宁问。
“不是项目。”
“那你文件名为什么叫寒灯?”
许砚知看了一眼屏幕:“事故预防。”
陈以宁没追问,只把一包纸巾推到他手边:“你头发还在滴水。事故预防先从别感冒开始。”
许砚知擦了两下,按时间顺序重命名截图。做到导引页面那张时,他停下来,把图放大到百分之二百。
陈以宁本来在整理高数教材,余光扫见屏幕:“这路径不是系统正常推荐格式。”
许砚知转头:“你见过?”
“下午我也做了导引。资源路径都是课程中心链接,不会直接露内部目录。”陈以宁把椅子滑过来,没有碰鼠标,“而且你的截图里,路径字体比旁边说明小半号,像后加进去的前端元素。”
“页面刷新后消失,接口返回里没有。”
“那就两种可能:浏览器本地脚本,或者页面另外取了一次数据。”
许砚知打开开发者工具缓存目录。导引课用的是学院统一浏览器环境,按理下课后缓存会清空,可本地存储里留着一个没有说明的键:`cl_route_seen=true`。创建时间是下午三点十七分,正好是灰色路径出现前十几秒。
陈以宁皱了下眉:“你电脑是新装系统?”
“上午领的学院镜像。”
“那这个键不是你以前留下的。”
许砚知把缓存目录完整导出,生成校验值,再上传共享文件夹。他没有立刻告诉沈砺川结论,只发了一句:我的电脑本地有cl_route_seen记录,你那边查同一位置,只看,不改。
沈砺川回得很快:收到。
隔了半分钟,他又发:没有这个键。
许砚知盯着两条消息。
“所以它确实只给你看。”陈以宁说。
“或者只在我的设备上留下痕迹。”
“区别很大?”
“前者说明系统识别了人,后者说明有人提前处理过设备。”
陈以宁抬手指了指他的课表:“你明天下午有数学分析摸底,晚上有班会。你打算几点查事故?”
许砚知把课程表拉到桌面,给A307镜像预留了九十分钟:“中午。”
“九十分钟够吗?”
“不够也只能先做镜像。原盘不能动。”
“我不是问设备。”陈以宁把椅子推回去,“我是问你打算花多少时间在那个沈砺川身上。”
许砚知手指停在日程格边缘:“他是信息来源。”
“你给每个信息来源都建双人修改权限?”
“因为他也是风险。”
“听起来更费时间了。”
许砚知没接这句话。他打开班级群,群里正在讨论下午的导引路线。有同学晒出系统推荐,有人抱怨自己被建议重修高中数学。几百条消息里,没有第二个人提到寒灯路径。
他用关键词搜索coldlight、route、archive,结果全空。
就在他准备退出时,一条刚发出的消息闪了一下:
【有人在A201看到旧寒灯的路径了吗?】
发送者头像是默认灰色,昵称显示“新生23”。消息出现不到三秒便被撤回。
许砚知截到了图。
他点进发送者资料,群名片为空,入群时间却是去年九月——早于这一届新生群建立。
陈以宁也看见了:“管理员账号?”
“或者迁移时留下的旧成员。”
班级群很快恢复热闹,没有人追问那条撤回消息。许砚知把截图发给沈砺川。对方这次隔了两分钟才回:这个昵称以前在寒灯测试群里用过,不固定属于某个人。
许砚知问:谁有登录权限?
沈砺川:以前至少五个。现在不知道。
许砚知:名单。
沈砺川:我手上没有完整的。
许砚知:你有多少就发多少。
聊天框上方一直显示“对方正在输入”。几次消失,又重新出现。最后沈砺川只发来三个名字:周闻、陆星迟、沈砺川。
许砚知把名字复制进台账,分别标注“身份未核验”。
陈以宁在旁边看完,问:“他把自己也列进来了?”
“至少没有删掉。”
“你这算夸他?”
“只是记录。”
沈砺川又发来一条:第四个人我不确定,别先写。
许砚知回:已写“未知成员”,不是写名字。
这次沈砺川发了一个句号,像是不知道该对这份严谨表示无奈,还是庆幸。
许砚知刚要关掉聊天框,沈砺川又发来消息:我已上传短信原图,没有动别的。
紧接着是一张照片。
照片里是A401的门牌。走廊没有开灯,门牌被手机闪光照得发白,金属边缘有一道新鲜划痕。图片信息显示,拍摄时间是十分钟前。
许砚知立刻拨过去。
电话响了两声才接通。
“不是我拍的。”沈砺川的声音从那头传来,背景里有宿舍楼洗衣机转动的震响,“照片刚刚自动出现在我相册里。”
“原图上传。”
“已经在传。”
“你现在在哪?”
“西六,四楼洗衣房。室友都在。”
许砚知打开共享文件夹,照片原图出现。定位信息为空,设备型号却写着沈砺川的手机。
他放大门牌。A401下方的透明插槽里夹着一张打印纸,只露出半行字。
许砚知调高对比度,辨认出那几个字:
明日十二点,镜像前。
他看向书桌右上角的日程表。明天十二点,正是贺承远约他们做只读镜像的时间。
电话那头,沈砺川问:“流程同学,这算不算有人替我们安排了下一步?”
许砚知把照片、原始元数据和通话时间一起归档,没有回答那句调侃。
“明天提前半小时到。”他说,“先见贺承远,不去A401。”
“如果门自己开呢?”
“也不进。”
“你确定?”
“确定。”
沈砺川安静了片刻:“好。”
这一声没有玩笑,也没有讨价还价。
许砚知挂断电话,把日程表上的“寒灯,待核验”改成了两行:
十一点半,A307。
共同留证,不单独行动。
写完以后,他没有立刻合上本子。
窗外的雨停了,宿舍楼下有人拖着空纸箱去垃圾站,轮子在水泥路上发出断续的响声。陈以宁已经戴上耳机背单词,桌角那盏夹灯把课程表照得很亮。数学分析、英语、班会、体测,每一格都能找到负责老师、教室和截止时间,唯独“寒灯”没有负责人,也没有结束条件。
许砚知把那一格的边框加粗,在备注里补上三项:原盘封存状态、异常路径来源、A401照片设备信息。
最后一项写完,手机又震了一下。
沈砺川没有发新线索,只发来一张洗衣房监控截图。画面里他从头到尾都在折衣服,拍照时间前后没有离开过镜头。
截图下面是四个字:先证清白。
许砚知看了几秒,回复:监控来源?
沈砺川:宿管阿姨让我拍屏幕,原录像明早能申请。你别把截图当原件。
许砚知把刚建好的“沈砺川不在A401”文件名删掉,改成“洗衣房截图_待原录像核验”。
这一次,他在台账备注后面加了一个很短的评价:知道证据等级。
写完又删了。
评价不属于事实。
他正准备关机,共享文件夹的访问日志跳出一条新记录:A401-control读取了那张洗衣房截图。
读取时间是三十秒前。
许砚知把电脑网络断开,再次拨通贺承远。对方只说了一句:“别删日志。我现在去A401。”
电话没有挂断。