array(5) { ["chapterid"]=> string(8) "49252317" ["articleid"]=> string(7) "7279746" ["chaptername"]=> string(7) "第6章" ["content"]=> string(21873) "修车铺的卷帘门只拉起来半截。
林哲弯腰钻进去的时候,门框上的感应器滴了一声。铺子里很暗,空气里有股机油混着橡胶皮的味道。一台升降架占了半个屋子,上面停着辆拆了轮胎的面包车,车底盘锈迹斑斑。墙角堆着废轮胎和纸箱,收音机正放着倒悬山新闻频率。
“找谁。”
声音从车底传出来。林哲看见两条腿,工装裤,鞋底磨歪了,躺在滑板上。
“丁师傅?”
滑板动了一下。人从车底滑出来,五十多岁,花白头发,脸上沾着机油。他撑起上半身,眼睛从林哲脸上扫到背包,又扫回脸上。
“谁介绍的。”
“王恺。”
老丁的手在工装裤上擦了两下。他没站起来,就那么撑着坐在滑板上,盯了林哲大概五秒。“王恺人呢。”
“隔离审查。”
老丁没再问。他从滑板上起来,膝盖发出咔哒一声,走到门口把卷帘门拉到地面。铺子彻底暗了,只有车底那盏工作灯亮着惨白的光。
“楼上。”他指了指角落的铁梯子,“别开窗。临街的摄像头多。”
铁梯子踩上去当当响。二楼是个小隔间,一张折叠床,一张折叠桌,墙角堆着几台拆开的显示器,屏幕朝墙摞着。桌上摆着一台老式台式机,机箱盖没装,主板裸露在外,CPU风扇嗡嗡转。
“没联网?”林哲问。
“网卡拆了。”老丁在楼下应了一声,“系统是去年装的。够你用了。”
林哲把背包放在折叠床上,坐下来。床垫是硬海绵,边缘破了,露出里面的黄。他从裤兜里掏出那张便签纸和临时通行证,展平在桌上。
春城南路17号。赵冬梅。
他打开台式机。屏幕是老旧的液晶屏,右上角有一块漏光,发白。系统启动很慢,硬盘咯吱咯吱响了四十几秒才进桌面。没有图标,壁纸是默认的蓝色。他点开浏览器——打不开,没联网是对的。
需要查的东西在本地。王恺的备份。
他把手机掏出来。灰点在左上角安静地亮着。备份程序还在运行,但出了边界之后,信号一直在一格和零格之间跳。他打字:“你能把本地数据传到这台台式机上吗。”
回复过了七秒才弹出来:“可以。蓝牙。加密传输。”
“传。”
手机屏幕闪了一下。进度条从0%爬到100%,大概用了两分钟。台式机的硬盘灯狂闪了一阵,桌面上多了一个文件夹,名字是一串随机字符。
林哲点开。
里面有几十个文档。大部分是日志文件,标注着日期和时间。还有几个文本文件,命名方式不一样——有的是日期,有的是一两个词。“权限节点追踪”、“锚定协议分析”、“名单”、“赵”。
他点开“赵”。
文档很短。几行字。
“赵冬梅,女,42岁。原数据管理部系统架构师,工号DM-072。三年前离职。离职申请表上填的是‘个人原因’。内网里有她的离职面谈记录,但内容是空的。擦得很干净。”
下面是一个地址。
“临市老城区春城南路17号。确认日期:三个月前。确认方式:社保代缴记录。她用的假名,但医保账户绑定的手机号没换。最后一次定位信号出现在这个地址方圆五十米内,时间是三个月前周四下午四点。”
林哲往下翻。
“退订机制:智慧治理试点项目的退订条款写在用户协议第37条。公开版本是‘满一年且行为偏差率低于30%可申请退出’。但内部版本有一个隐藏条款——如果被护航人能证明护航服务本身基于非法数据采集,可即时申请强制退订。”
“需要三个条件。一,数据采集的源文件或日志。二,系统内部工单或批示记录。三,至少一个活人的证言。”
林哲盯着屏幕。
数据采集的源文件。王恺追踪到的那个叫“权限”的节点,他说是从市政系统的后门抽调数据。如果赵冬梅是系统架构师,她可能知道那个节点是怎么运作的。内部工单。需要数据管理部的人经手过的批示记录。
活人的证言。赵冬梅本人。
文档最后一行字是王恺写的备注。
“她怕被找到。见面不要提我的名字。提她以前经手过的一个项目,代码名‘灰域’。那是她离职前做的最后一项评估。评估报告被她亲手删了。如果她还留着备份,那就是证据。”
林哲关了文档。
他把台式机往旁边挪了挪,掏出那半瓶踩扁的水。拧开盖子喝了最后一口。水温吞吞的,带着塑料和铁锈的混合味道。
楼下传来电钻声,刺耳。老丁在修车。
林哲在键盘上敲了几下,把老城区的地图调出来。春城南路在临市的老城区,整片区域属于旧城改造范围,拆了一半。卫星照片上能看到成排的空房子,有的已经扒了屋顶。
他把便签纸拿起来。正面那句话已经被汗泡得快看不清了。背面王恺写的密钥片段——已经用掉了。出闸口用了一次,通行证背面写着“密钥只能用一次”。
他把便签纸翻过来又翻回去,拇指搓着纸的边缘。
纸条背面最后一行还有个东西。不是密钥。是王恺写的那行更潦草的字——“别让我白做。”写得很用力,纸背能摸到凹痕。
他把纸条折好,连同通行证一起塞进裤兜。
楼下电钻停了。老丁的声音传上来:“要帮忙吗。”
林哲走到铁梯子口往下看。老丁正拿抹布擦手,抬头看他。
“你知道春城南路怎么走吗。”
“老城区。坐23路公交,到底站下。”老丁把抹布扔在工具箱上,“那片拆得差不多了。住的人少。”
林哲点了下头。回到桌前,把手机拿起来。备份程序还在跑,灰点一闪一闪的。他打字:“我下午去春城南路。赵冬梅如果在的话,怎么让她开口。”
回复弹出来:“不知道。王恺的备注里写了,她警惕性很高。三年前离职之后就把自己从所有内部系统里摘干净了。连社交账号都注销了。”
“她怕什么。”
“档案里没说。但王恺查到过一件事。赵冬梅离职前一个月,经手过‘灰域’项目的一次内部审计。审计报告上交之后,她的直属上级在一周内调离。接任的那个人,三天后签了赵冬梅的离职申请。签完当天,这个人也申请调岗了。”
“灰域是什么。”
“王恺没查到。系统里只有代码名。所有的技术文档都被清理了。”
林哲靠回椅背。折叠椅的塑料靠背压得吱嘎响。灰域。这个名字听起来像一块擦掉的东西——擦过之后纸张上留下的痕迹,不是字,但能证明字存在过。
他想起自己手机上那个叫“权限”的应用。也是这么个东西。出现过,消失了,留下一个灰点。灰点,灰域。
同一个人起的名字。
赵冬梅。
他把手机揣进裤兜,下楼梯。老丁在升降架旁边拧扳手,看见他下来,停了一下。
“出去的话,后门走。”老丁指了指铺子最里面,那扇铁门被纸箱挡住一半,“后面是巷子。巷子通菜市场。从菜市场穿过去就是23路站台。”
“谢谢。”
老丁没应。继续拧扳手。
林哲推开纸箱,拉开门。外面确实是个窄巷子,两边的墙贴着白瓷砖,被油烟熏黄了。头顶挂着晾衣绳,晾着几件洗褪色的工装。他侧身穿过去,脚底下踩到积水,溅在裤腿上。
菜市场在巷子尽头。下午的摊位收了大半,地上剩着烂菜叶和塑料袋,几个摊主在拆遮阳棚。林哲穿过空荡荡的市场,闻到了鱼腥和泔水的混合味道。一个卖豆腐的女人抬头看了他一眼,低头继续收拾木板。
23路站台在市场出口外面。站牌锈了,塑料板上的线路图被太阳晒褪了色。等了大概十分钟,车来了。是辆旧式公交,柴油发动机声音很响,车门打开的时候吱嘎一声。
林哲上去。车里只有四个人。他坐到最后一排靠窗的位置。座位上的海绵坐塌了,能感觉到底下的铁板。
车开动了。窗外的临市街景慢慢往后退。
临市和倒悬山不太一样。广告牌更多,店铺招牌五颜六色,路边的垃圾桶满出来了没人收。但路灯柱上也装着摄像头。方的,银灰色,和倒悬山第七区的一样。外壳上印着制造商的logo,下面贴了一行小字——“倒悬山数据管理部监制”。
边界以西五百米,数据管辖权终止。但摄像头还在。
林哲把视线从窗外收回来。
公交车晃了四十分钟。到老城区的时候,乘客只剩他一个。司机从后视镜里看了他一眼,把车停在终点站。站牌旁边是一排已经拆掉一半的沿街楼,露出了墙内面的红砖和电线。碎玻璃堆在人行道边上,没有人扫。
林哲下了车。春城南路的路牌立在街角,蓝色底子漆皮剥落了一大半,剩个“南”字还看得清。
17号在路的中段。
是一栋四层的旧式楼房,底层是店面,卷帘门紧闭,上面喷着“五金店”三个字,字被锈迹侵蚀了。店招是灯箱式的,但灯管早就碎了,只剩铁架框。二楼以上的窗户蒙着一层灰,看不到里面。整栋楼看起来是空的。
但一楼卷帘门右下角有个小门。铁皮门,漆成和卷帘门一样的灰色,不仔细看会漏掉。门缝底下塞着一张广告单,被雨水泡烂了,黏在地上。
林哲蹲下去,把广告单抠起来。底下露出地板砖,还有一行用粉笔写在门口台阶侧面的小字,很小,要弯腰才能看到。
“访客请绕到后面。前门不响。”
字迹很淡,不像最近写的。
他直起腰,绕过楼房的侧面。楼后面是一条更窄的巷子,堆满建材废料。有个铁楼梯搭在楼房背面,通到二楼。楼梯生锈了,扶手一碰就晃。
他走上去。到二楼,门上没有门铃,只有一块贴在墙上的胶布,上面用圆珠笔写着“有事敲门”。
林哲敲了三下。
里面没动静。他等了十秒,又敲了三下。
门开了条缝。
缝里面是铁链扣。一张女人的脸从缝里看他,四十多岁,脸消瘦,头发随便夹在脑后,眼角的纹路很深。她没说话。
林哲开口:“我找赵冬梅。”
女人的表情没变。“找错人了。”
“灰域。”
门缝后面的眼睛动了一下。不是瞳孔——是眼睑,眯了一点。女人沉默了几秒,把门关上了。林哲站在门外,铁楼梯在风里微微晃,脚下的铁板咯吱咯吱的。
铁链扣的声音响了一声。门开了。
赵冬梅站在门口。穿着深灰色的旧运动服,袖口磨得起毛。她没让林哲进门,就站在门口,一只手撑着门框。
“谁让你来的。”
声音是哑的,但语调很稳。
“一个朋友。”林哲没说王恺的名字。
“朋友。”赵冬梅把这两个字嚼了一下,“什么朋友会知道灰域。”
“做数据恢复的。”
赵冬梅的眼睛在他脸上停了几秒,然后移开了。她往门框上靠了靠,左肩顶在门框上。袖口露出来的手腕上有一道旧伤疤,颜色很淡,大概是几年前缝过针。
“灰域项目已经被删干净了。没什么能恢复的。”
“我不是来拿数据的。我是来退订智慧治理试点的。”
赵冬梅的手从门框上滑下来。她看着林哲,嘴唇动了一下,像在说什么没出声的话。然后她侧开身。
“进来说。”
林哲跨进门槛。门口堆着几双旧拖鞋,鞋底磨平了。客厅不大,窗户用报纸糊着,透进来的光是黄的。桌上摆着一台旧笔记本,屏幕合着,电源灯没亮。墙角有个书架,塞满了文件夹和纸箱。空气里有股樟脑丸和旧书混在一起的味道,有点闷。
赵冬梅把门关上,铁链重新扣上。她从桌上拿起一包皱巴巴的烟,抽出一根,点上。烟雾在天花板的角落里散开。
“退订。”她吐了口烟,“你知道退订需要什么东西吧。”
“三样。源文件,工单,证言。”
赵冬梅点了下头。“源文件我有。工单也有。但证言——”她弹了下烟灰,“我自己就是证言。问题是,三个条件齐全了也不一定退得掉。他们改过条款。”
“什么意思。”
“退订申请必须回倒悬山交。第十区行政审批中心。”赵冬梅把烟叼在嘴角,从书架上抽出一个牛皮纸信封,“你人不在倒悬山,没法交。你在倒悬山,他们就能锁定你。这是个死扣。”
林哲看着那个信封。纸皮发黄,四角磨圆了。“你试过交。”
赵冬梅把信封放回书架。“不是我。是另一个。去年的事。他已经凑齐了三个条件,进了第十区行政审批中心的大厅,排到第八号窗口。”她停了一下,“那天下午,系统里关于他的所有记录被清理了。社保、医保、通讯日志、消费记录。什么都没了。不是删除——是变成初始值。像从来不存在。”
林哲想起王恺备份里那几个失联的人。十六个被标记的目标终端持有者,三个失联。系统里找不到。一切归零。
“他在哪。”
赵冬梅没回答。她把烟掐灭在桌上的烟灰缸里,瓷缸子底上有个豁口。“你来这里之前,过边界的时候用了密钥对吧。”
“是。”
“那串密钥是王恺留下的。王恺三个月前联系过我。他说他在追踪‘权限’节点的底层协议,发现了一件事——数据牢笼协议不是监控程序。是替代程序。”
林哲的手指在膝盖上蜷了一下。“替代什么。”
“替代现实。”赵冬梅坐进桌边的椅子,翘起二郎腿,运动裤的膝盖位置磨得发白,“智慧治理试点的底层逻辑不是监视市民。是用数据构建一个行为模型,然后当模型精确到一定程度的时候,系统可以直接替代真人做决策。”
她敲了一下桌面。
“你去超市买牙膏,系统预测你会选薄荷味。你选的时候犹豫了两秒,最后选了薄荷味。系统判定预测准确。下次你再买牙膏,系统自动下单薄荷味,跳过你的犹豫。你看到购物篮里已经有牙膏了,懒得换,用了。这叫护航服务。”
林哲的喉咙发紧。“如果预测错了呢。”
“预测错了一次,系统记录为偏差。偏差率高了,系统加大监控力度,收集更多数据,提高预测精度。”赵冬梅从烟盒里又抽出一根,没点,“直到偏差率降到某个阈值以下。那个时候,你在系统里的行为模型已经比你真实的行为更精确了。”
“什么叫比我更精确。”
赵冬梅看着他。眼睛里的光不是同情,是某种很冷的确认。
“比如你接到王恺的电话。真实的你,会怀疑他是不是被控制了。系统预测的你,会相信他说的一切。因为在你过去六个月的通话记录里,你从来没怀疑过他的真伪。”
林哲攥紧的手指,指节发白。
“系统不关心真假。系统只关心一致性。”赵冬梅把烟放在鼻子下闻了闻,叼上,“王恺说你是个体户,没植芯片。你知道为什么被选中吗——因为你不可预测。你的行为偏差率天生就不低。系统标记你,不是因为你有威胁。是因为你是它漏掉的盲点。”
客厅里的某个角落传来冰箱压缩机的启动声。嗡嗡的。
林哲松开手。掌心有指甲掐出的印子。“灰域项目和你离职有关。”
赵冬梅把没点的烟从嘴里拿下来。她盯着林哲,沉默爬满了脸上的纹路。
“灰域是我写的。”她把烟放在桌上,“不是评估报告。是灰域本身。我是主程。”
林哲没动。
“灰域是一个协议。能让系统在一个有限范围内,允许真实行为存在,不进行预测替代。它像系统内部的一小块灰色地带,数据流过,但不被记录,不被建模。”赵冬梅的声音慢下来了,“我写它是想留个后门。一个保护性的后门。”
“后来呢。”
“后来他们发现了。不是发现代码——是发现逻辑。有人在内网查灰域节点的流量异常。我把代码删了,提交了离职。但他们知道有人用过灰域协议。”赵冬梅把烟盒捏扁了,塑料咔咔响,“用过的终端都会被标记。规则破坏者。”
林哲眼前闪过手机屏幕上的弹窗。规则破坏者已标记。那个粗糙的像素字体。王恺的脚本装在了二十个终端上。他是第十七个。前面的十六个里,有三个失联。
不是失联。是被替代了。系统用行为模型替代了真人。他们还在走,在买东西,在打电话。只是做决定的已经不是他们了。
“替代之后,真人去哪了。”
赵冬梅没说话。
她把那个牛皮纸信封从书架上重新拿下来,打开。里面是一叠打印纸,边缘卷了,密密麻麻的字和图表。她抽出最底下的一张,递给林哲。
是倒悬山数据管理部的内部工单复印件。日期三年前。标题写着“灰域项目清理方案”。方案正文最后一段,有一行字被人用荧光笔画了出来。
“涉及终端,全部执行协议终止。”
协议终止。
不是系统层面的删除。是协议终止。数据牢笼协议,护航服务终止,人不存在于系统里。系统里不存在的人,在倒悬山是什么。没有身份证。没有医保。没有消费记录。没有出行轨迹。什么都没有。
“这是你交不了退订申请的原因。”林哲把工单复印件放在桌上,“你一进倒悬山,系统就检测到你。”
“对。我提交申请的那一刻,就会被协议终止。”
窗外有风吹过,报纸糊的窗户鼓了一下。冰箱的压缩机停了,房间忽然安静下来。
林哲看着桌上那叠打印纸。“王恺说,三个条件齐全就能退订。”
“能退订。问题是退订之后,你需要拿着退订批文,在系统里执行逆向协议——把数据牢笼的锚定解除。逆协议必须在倒悬山内部网络执行。物理接入。没法远程。”
“需要什么东西。”
赵冬梅从信封里抽出另外几张纸。技术文档,页脚标着“灰域协议v2.1”,字体是等宽的。她翻到最后一页,指着一行代码注释。
“需要一台终端,接入数据管理部的内网。用我的灰域协议登录权限节点。把退订批文上传。然后——”
她停了一下。
“然后呢。”
“然后系统会检测到有人在动它的底层规则。你能操作的时间不超过九十秒。九十秒后,系统会锁定入侵点。如果那时候你还没退出内网,你手上的终端会被执行协议终止。”
林哲看着那行注释。代码他认得一部分,是做端口伪装的。注释写得很短,只有三个词。
“速度要快。别犹豫。”
他抬起头。“你写的。”
赵冬梅拿起桌上那根没点的烟,叼在嘴里。没点。“王恺说你是做数据恢复的。如果让你在九十秒内上传数据并清除日志,你能做到吗。”
林哲在心里算了一下。九十秒。登录、验证、上传、清理痕迹。普通操作要三到五分钟。但如果提前准备好脚本,自动执行,三十秒就够了。
“能。”
赵冬梅把烟从嘴里拿下来。她站起来,走到窗户边,从报纸边缘往外看了一眼。楼下巷子里没有人,只有风把废纸吹得在地面上滚。
“我可以给你灰域协议和退订需要的数据。但有一个条件。”
“什么。”
“逆协议做完之后,把我从系统里删干净。不是删记录——是把赵冬梅这个人的初始数据全部擦掉。”
林哲皱眉。“擦掉之后呢。”
“她会变成不存在过的人。”赵冬梅转过身,靠窗站着,窗外的光从报纸缝隙里漏进来,照在她的运动服上,“没有档案。没有记录。没有跟踪。这就是条件。”
林哲盯着她。她脸上的表情很平,没有激动,没有恐惧,像是这三年来每天都在想同一个问题,现在终于把答案说出来了。
“你自己不行吗。”
“我没有内网权限。离职的时候权限被注销了。灰域协议只能在外部隐藏数据流,但做不了内部操作。需要一个有终端接入能力的人。”
“我的手机被锚定了。”
“会用到的。锚定设备是唯一的凭证。”赵冬梅从窗边走过来,把那个牛皮纸信封推到他面前,“拿着。看完烧掉。明天早上我告诉你进倒悬山的路线。”
林哲低头看那个信封。纸皮发黄,里面装着三年前的秘密,足够把一个人从系统里彻底抹掉的秘密。不是只有赵冬梅被抹掉。是他自己。如果九十秒不够。如果系统锁定比他快。
但王恺已经被隔离审查了。被系统用声纹合成打着电话,把备份塞进二十个陌生人的手机,最后一句话写在代码注释里。
别让我白做。
林哲把手按在信封上。
“不用等明天。”他站起来,“我今晚看。看完就走。”
赵冬梅看着他。眼睛里的光变了一下,像是想说什么。但她没开口。只是把桌上那根没点的烟重新叼回嘴里,拿起打火机。
打火机咔哒一声。
火光照亮她半张脸的轮廓,三秒后灭了。" ["create_time"]=> string(10) "1785516839" }