冯勋套上防护服,布料摩擦皮肤发出沙沙的声响。手套的防滑颗粒在握紧工具箱把手时传来粗糙的触感。他走到“螺丝”身边,蹲下身,看向被拆开的机甲腿部关节。
液压管路暴露在空气中,金属表面反射着工作灯暖黄色的光。几导管接口处有明显的磨损痕迹,密封圈已经老化发硬,边缘裂开细小的缝隙。空气里除了金属和机油的味道,还多了一种淡淡的、类似烧焦电路板的气味——那是从旁边取出的旧动力核心散发出来的。
“先看这个。”“螺丝”用沾满油污的手指点了点工作台上的新核心,“‘星轨’公司三年前推出的‘猎户座-β’型,标准级,本来是给‘游骑兵-IV’中型机甲用的。我从……嗯,特殊渠道弄来的。”
冯勋凑近观察。
银白色的外壳在灯光下泛着冷冽的光泽,表面那些淡蓝色的能量回路纹路并非简单的装饰——他能看出那是能量分流和缓冲结构的外在表现。在原本的时代,这种级别的能量核心至少需要一台中型运输车才能装载,而现在,它只有成年人的头颅大小。
“输出功率是原来的1.8倍,但能耗效率提升了百分之四十。”“螺丝”的声音带着技术宅特有的兴奋,“问题在于,它的控制协议是‘星轨’的私有标准,和‘先驱者-III’原装的联邦通用协议不兼容。”
“所以需要改写接口驱动。”冯勋说。
“螺丝”愣了一下,抬头看他:“你知道?”
“猜的。”冯勋平静地说,“任何时代的技术升级,兼容性都是第一道坎。”
“螺丝”咧嘴笑了,油污让他的牙齿显得更白:“有意思。那你知道怎么改写吗?”
“不知道。”冯勋实话实说,“但我可以学。”
接下来的三个小时,冯勋在“螺丝”的指导下,开始拆卸“先驱者-III”的动力舱内部结构。
过程比想象中复杂。
这个时代的机甲虽然外表看起来更加流线型、集成化,但内部结构其实并没有本质上的突破——依然是能量核心提供动力,通过传导矩阵分配到各个关节和武器单元,再由控制系统协调运作。区别在于,所有的连接都更加精密,所有的接口都更加标准化,所有的作……都被AI接管了。
“你看这里。”“螺丝”用一细长的探针指着动力舱深处的一个六边形接口,“这是神经连接主端口。驾驶员坐进驾驶舱,戴上头盔,精神力通过这个端口与机甲的AI核心建立连接。然后AI会接管一切——平衡控制、动力分配、武器瞄准、战术分析……”
“驾驶员做什么?”冯勋问。
“下达指令。”“螺丝”耸耸肩,“比如‘前进’、‘攻击目标’、‘防御’。具体的执行细节——怎么迈步才能保持平衡,用多少功率输出才能达到指定速度,瞄准时考虑风速、重力、目标移动轨迹——这些都是AI的事。”
冯勋沉默了几秒。
他想起自己原本的时代。那时候的机甲模拟系统,驾驶员需要手动控制每一个关节的弯曲角度,需要自己计算动力输出的配比,需要在高速移动中同时处理平衡、瞄准、战术决策三件事。那是一种全身心投入的、近乎本能的作。
而现在……
“就像开车从手动挡变成了全自动驾驶。”他低声说。
“什么?”“螺丝”没听清。
“没什么。”冯勋摇摇头,“继续。”
他们小心翼翼地将旧的核心取出——那东西比新核心重了至少一倍,外壳是暗灰色的合金,表面布满了散热鳍片。取出时,一股更浓烈的焦糊味弥漫开来,冯勋看到核心底部有几处明显的熔毁痕迹,能量导管接口已经和底座部分熔合在一起。
“这玩意儿能撑到现在真是奇迹。”“螺丝”嘀咕着,用液压钳强行剪断了最后几熔合的连接线。
火花四溅。
几颗火星落在工作台边缘的油污上,“嗤”地冒起一小缕青烟。
冯勋本能地向后仰身,但“螺丝”动作更快——他抄起手边的一块防火布,“啪”地盖了上去。青烟被闷在布下,几秒钟后消散了。
“小心点。”“螺丝”喘了口气,“这仓库里堆的东西,有一半都是易燃易爆的。”
冯勋点点头,目光却落在那些被剪断的连接线上。
断口处,他能看到细如发丝的金属导线,以及包裹在外的绝缘层——那是一种半透明的胶质材料,现在已经焦黑碳化。但在某些完好的段落,他能看到胶质层下,导线排列的规律。
那是二进制编码的物理载体。
每一导线代表一个数据位,通电为1,断电为0。通过不同的排列组合,传递不同的指令。这种技术……在他原本的时代,是五十年前就被淘汰的落后方案。
但现在,它依然存在于这台机甲的底层。
“有意思。”冯勋轻声说。
“什么?”“螺丝”又没听清——这家伙似乎有点耳背。
“我说,”冯勋提高音量,“这台机甲的底层通信协议,是不是基于古典的并行总线架构?”
“螺丝”的动作僵住了。
他慢慢转过头,护目镜后的眼睛睁得很大:“你……你怎么知道?”
“猜的。”冯勋再次用这个借口,但这次,“螺丝”显然不信。
“不可能。”“螺丝”摇头,“并行总线架构在八十年前就被串行总线淘汰了。现在的机甲用的都是‘光神经协议’,数据传输速度是并行总线的上千倍……”
“但底层兼容层呢?”冯勋打断他,“为了兼容老式设备,系统会不会保留一个并行的物理接口,然后在协议栈里做一个转换层?”
“螺丝”沉默了。
他盯着冯勋看了足足十秒钟,然后突然转身,在工作台底下翻找起来。金属零件被拨弄发出哗啦的声响,几分钟后,他掏出一块厚重的数据板——比冯勋手里那块更大,屏幕边缘有磕碰的痕迹。
“给你看个东西。”“螺丝”的声音变得严肃。
他点亮数据板,手指在屏幕上快速滑动。一串串代码滚动而过,冯勋能认出那是某种低级语言——不是这个时代流行的AI描述语言,而是更接近机器码的汇编指令。
“这是‘先驱者-III’的固件反编译结果。”“螺丝”说,“我花了三个月才弄到手。你看这里——”
他放大了一段代码。
冯勋凑近屏幕。
暖黄色的灯光照在数据板上,代码的字符有些反光,但他还是看清了那些指令:MOV、ADD、JMP、CALL……这些在他原本时代属于基础汇编的指令,此刻整齐地排列在屏幕上。
“这是……”冯勋皱眉。
“底层驱动。”“螺丝”说,“负责把AI的高级指令——比如‘前进’——翻译成具体的电机控制信号。但你看这个转换过程——”
他滑动到另一段代码。
冯勋看到了一个循环结构:AI发送一个向量参数(方向、速度),底层驱动读取这个参数,然后通过一系列复杂的计算,分解成每个关节电机的转速指令。这个过程……很笨拙。
“效率很低。”冯勋说。
“非常低。”“螺丝”点头,“但这就是标准流程。AI只负责决策,底层驱动负责执行。两者之间通过一个严格定义的接口通信,任何一方都不能越界。”
“但如果……”冯勋盯着那些代码,“如果我们能在这个接口上做点手脚呢?”
“什么意思?”
“不修改AI,也不修改底层驱动。”冯勋的语速变快,“我们在中间加一层。当AI发送指令时,我们先截获它,修改参数,然后再传递给底层驱动。这样从AI的视角看,一切正常;但从机甲的实际动作看……”
“它会做我们想让它做的事。”“螺丝”接上了后半句。
两人对视。
仓库里突然变得很安静,只有远处某个通风管道传来的、细微的嗡鸣声。工作灯的光柱投下清晰的影子,冯勋看到“螺丝”的眼睛在护目镜后闪闪发亮。
“理论上可行。”“螺丝”舔了舔嘴唇——这个动作让他脸上的油污沾到了嘴角,“但风险很大。AI有自检机制,如果发现指令执行结果和预期偏差超过阈值,会触发安全警报。”
“那就让偏差在阈值内。”冯勋说,“我们不一次性改变所有参数,只修改一部分。比如平衡控制——AI会持续监测机甲的姿态,发送微调指令来保持平衡。如果我们截获这些微调指令,稍微修改一下……”
“机甲就会按照我们设定的新平衡点来动作。”“螺丝”的声音开始颤抖,“而AI只会认为‘嗯,今天的重力环境有点异常’,然后继续发送修正指令……我们就能持续控制。”
“对。”
“但这需要实时计算。”“螺丝”皱眉,“截获指令、修改、转发——整个过程必须在毫秒级完成,否则机甲就会因为指令延迟而失控。”
“所以需要写一个程序。”冯勋说,“一个‘寄生’在AI和底层驱动之间的程序。”
“螺丝”沉默了。
他转身,从工作台底下又掏出一块数据板——这块更旧,屏幕边缘已经开裂。他点亮屏幕,手指开始飞快地敲击。代码一行行出现,冯勋能看出那是在搭建一个基础的框架:输入接口、处理模块、输出接口。
“试试看。”“螺丝”头也不抬地说。
接下来的七天,冯勋的生活变成了两点一线:清晨的体能训练,深夜的仓库编程。
体能训练依旧痛苦。
每天五点四十分,他准时出现在那个废弃的训练场。跑步、俯卧撑、引体向上、负重深蹲……每一项都让肌肉尖叫,每一项都让肺部灼烧。但进步是肉眼可见的——从最初的三圈就瘫倒,到现在能坚持跑完十圈;从十五个俯卧撑就手臂发抖,到现在能做三十个标准动作。
凯撒没有再出现。
但冯勋能感觉到,学院里的目光变多了。当他浑身湿透、步履蹒跚地走回宿舍时,总有人在不远处指指点点。那些眼神里有好奇,有鄙夷,也有……一丝不易察觉的警惕。
他不在乎。
白天,他在课堂上学习这个时代的机甲理论——那些关于精神力共鸣等级、AI辅助权重、标准化战术流程的知识。他听得认真,记得仔细,但心里清楚:这些都不是他需要的。
他需要的,在深夜的仓库里。
第七天深夜,凌晨两点。
仓库里堆满了空能量饮料罐——那种廉价的、含有高剂量的合成饮品,喝下去后喉咙会留下一种苦涩的金属味。工作台周围散落着十几块数据板,有的屏幕还亮着,显示着不同的代码片段。
冯勋的眼睛布满血丝。
他已经连续四十八小时没合眼了。不是不能睡,而是不想——每次闭上眼睛,那些代码就会在脑海里自动排列组合,寻找最优解。这种状态在他原本的时代很常见,程序员们称之为“心流”。
但在这个身体里,心流带来的负担更重。
头痛像有针在太阳里搅动,视线偶尔会模糊,手指敲击虚拟键盘时会不受控制地颤抖。但他没有停。
“螺丝”的状态也好不到哪去。
这家伙脆把睡袋搬到了仓库,困了就钻进去睡两小时,醒来继续敲代码。他的头发已经油腻得结成绺,脸上除了油污,还多了黑眼圈。但他眼睛里的光越来越亮——那是技术宅发现新大陆时的狂热。
“又触发了一次。”“螺丝”盯着主数据板,屏幕上一个红色的警告标志闪烁了三下,然后消失了,“安全协议第47条:指令执行时间偏差超过允许范围。我的扰程序把它伪装成‘系统时钟校准异常’。”
“这是第几次了?”冯勋问,声音有些沙哑。
“第十二次。”“螺丝”喝了口能量饮料,“再这样下去,AI的自学习模块可能会把这些‘异常’归类为常态,然后调整阈值……那就麻烦了。”
冯勋点点头。
他知道风险。AI不是死板的程序,它会学习、会适应。如果频繁触发安全警报又被“解释”过去,AI可能会认为这些警报本身有问题,然后降低敏感度——这听起来是好事,但万一哪天真的出了严重故障,AI可能就不会报警了。
“进度如何?”他换了个话题。
“寄生程序框架完成了百分之八十。”“螺丝”调出另一个界面,“输入接口能稳定截获AI发送的百分之九十指令类型,输出接口的伪装成功率在百分之九十五以上。问题在于处理模块——”
他放大一段代码。
“我们需要一个数学模型。”“螺丝”说,“把AI的指令参数,转换成我们想要的实际动作参数。这个转换必须平滑、连续,不能有突变,否则机甲动作会不自然。”
冯勋盯着那些参数。
AI发送的指令,本质上是一组多维向量:前进方向、速度、姿态角、关节扭矩……每个维度都有取值范围和变化率限制。寄生程序的任务,就是在这组向量的约束空间内,找到一个“合法”的点,这个点既要接近AI的原始意图(否则会被发现),又要实现他们的控目标。
“用值。”冯勋突然说。
“什么?”
“不在整个向量空间里找点。”冯勋的语速变快,“我们只修改少数几个维度——比如平衡控制的姿态角。其他维度完全按照AI的原始指令执行。这样转换模型就简化成了:给定原始姿态角α,我们输出一个修改后的姿态角β,β必须在[α-δ, α+δ]范围内,其中δ是安全阈值。”
“螺丝”愣住了。
几秒钟后,他猛地一拍大腿:“对!局部修改!这样计算量会小很多,而且不容易被察觉——因为其他维度都是正常的,AI的整体体验不会有太大偏差!”
他抓起数据板,手指几乎要在虚拟键盘上敲出火花。
冯勋靠在椅背上,闭上眼睛。
头痛更剧烈了,但他能感觉到——思路通了。就像在黑暗中摸索了很久,终于摸到了门的把手。剩下的,只是推开门的力气。
第八天深夜,凌晨三点二十七分。
仓库里安静得能听到自己的心跳声。
冯勋和“螺丝”并排坐在工作台前,面前的主数据板连接着“先驱者-III”的调试接口。机甲已经重新组装完毕——新的动力核心安装到位,老化的关节零件全部更换,外壳上的锈迹被仔细打磨,露出了底下暗银色的底漆。
它看起来……依然老旧,但多了一种蓄势待发的锐利。
“准备好了?”“螺丝”问,声音有些发。
冯勋点头。
他的手指悬在数据板的“执行”按钮上方。屏幕中央,一个简洁的界面显示着寄生程序的状态:框架加载完成,输入接口就绪,输出接口就绪,处理模块——核心算法已载入。
这个程序只有不到两千行代码。
但每一行都经过反复测试、优化、再测试。他们模拟了三百多种常见作场景,确保寄生程序能在每一种场景下稳定工作,且偏差值始终控制在安全阈值的三分之二以内——留出三分之一的余量,应对意外。
“开始吧。”冯勋说。
他按下按钮。
数据板屏幕闪烁了一下,进度条从0%开始缓慢爬升。1%……5%……10%……传输速度比预期慢,因为要绕过AI的主动防御机制,伪装成一次普通的固件校验更新。
冯勋能听到自己的呼吸声。
很轻,但很清晰。仓库里的空气似乎变得粘稠了,每一次吸气都需要用力。他闻到能量饮料的甜腻味,闻到金属的冷冽味,闻到……自己身上汗水的酸味。
进度条爬到50%。
突然,数据板发出“嘀”的一声轻响。
屏幕右下角弹出一个黄色警告框:“检测到未授权内存访问请求。是否拦截?”
“螺丝”的手指瞬间僵住。
冯勋没有犹豫——他快速点击“放行”,同时另一只手在另一块数据板上敲击,输入一串预设的伪装指令。警告框闪烁了两下,消失了。
进度条继续爬升。
60%……70%……80%……
冯勋的掌心开始出汗。防护服的手套内层变得湿,指尖传来不舒服的黏腻感。他盯着屏幕,眼睛一眨不眨。
90%……95%……99%……
100%。
数据板屏幕暗了下去,然后重新亮起。寄生程序的状态界面弹出,所有指示灯都是绿色。
“成功了?”“螺丝”的声音带着不敢置信。
冯勋没有回答。
他直接调出了机甲的系统志——那是AI记录的所有作和事件的详细清单。志正在快速滚动,最新的一条显示:“系统更新完成,版本校验通过。”
没有异常。
没有警报。
寄生程序像一滴水融入了大海,悄无声息地潜伏在了AI和底层驱动之间。
“试试看。”“螺丝”兴奋地说,“发个指令!”
冯勋点头。
他在数据板上调出测试界面,输入一个简单的指令:机甲右腿抬起15度,保持3秒,然后放下。
这是最基础的平衡测试动作。
他按下发送。
指令通过无线链路传入机甲,首先被AI接收。AI的志显示:“收到测试指令,类型:单关节动作,参数:右腿髋关节+15度,持续时间3秒。”
然后,指令进入了寄生程序的截获范围。
冯勋盯着处理模块的监控界面——他看到原始参数被读取,经过那个值算法的转换,输出了一组新参数:右腿髋关节+12.7度,持续时间2.8秒。
偏差在允许范围内。
新参数被转发给底层驱动。
下一秒,仓库里响起了电机启动的低沉嗡鸣。
“先驱者-III”的右腿关节开始动作——液压杆缓缓伸展,金属外壳摩擦发出细微的“嘎吱”声。工作灯的光照在机甲外壳上,投下移动的阴影。冯勋能看到关节处的角度传感器读数:12.5度……12.6度……12.7度。
停住了。
完美。
三秒后(实际上是2.8秒),右腿缓缓放下,回归原位。整个过程平稳、流畅,没有任何突兀的抖动。
“成功了……”“螺丝”喃喃道,然后猛地跳起来,“我们成功了!冯勋!你看到了吗?手动控!虽然只是微调,但这是我们手动控的!”
冯勋也笑了。
很淡的笑容,但确实在笑。那种感觉……就像时隔多年,再次握住了熟悉的方向盘。虽然现在只能轻轻转动一点点,但至少,方向盘在他手里了。
他正准备说话。
突然,主数据板的屏幕闪烁了一下。
不是程序界面,而是底层的系统监控界面——那是“螺丝”为了调试而打开的、直接读取机甲内核志的底层视图。那个界面刚才一直静止,显示着正常的系统状态。
但现在,它刷新了一行新的志。
志出现得极快,几乎是一闪而过。但冯勋的眼睛捕捉到了它——那是系统内核在加载某个驱动模块时,触发的一个低级错误。
错误代码:0x7F3A9C21。
错误描述:协议接口初始化失败,接口标识:PCIe_Internal_Reserved_Channel_0x1F。
冯勋皱眉。
PCIe——那是他原本时代就有的总线标准。Internal_Reserved_Channel——内部保留通道。0x1F——通道编号。
这个接口……他从未在任何手册上见过。
“螺丝”也看到了。
他凑过来,盯着已经滚过去的志,手指快速敲击,调出历史记录。但那行志……消失了。就像从未出现过一样。
“被系统自动清除了。”“螺丝”的声音变得严肃,“只有内核级错误才会被这样处理——为了防止敏感信息泄露。”
“这是什么接口?”冯勋问。
“不知道。”“螺丝”摇头,“‘先驱者-III’的公开技术文档里,没有提到任何内部保留通道。PCIe总线倒是有,但那是给扩展设备用的——比如额外的传感器阵列、武器挂载模块。但这个编号……0x1F,这是系统预留的最高优先级通道之一。”
两人沉默。
仓库里,只有工作灯发出的、稳定的电流嗡鸣声。机甲静静地立在中央,外壳反射着暖黄色的光,看起来安静而温顺。
但冯勋知道,有什么东西……藏在它的深处。
一个从未被提及的接口。
一个被刻意隐藏的通道。
一个可能通往……某个秘密的入口。