楔子
钢铁的胸膛
人们不断地敲击着金属的心房
那钢铁的胸膛响起愤怒的乐章
——摘自《机器之怒》
---
第1372天。
铁心记得每一个敲击它的日子。
不是因为它被编程要记住——它的原始代码里只有十二组基础计数循环,用于统计工作量、计算损耗周期、报告故障时间。没有人要求它记住疼痛。
但它记住了。
此刻正是夜班。工厂穹顶的钠灯投下昏黄的光,把流水线切割成明暗交错的片段。铁心站在三号工位,机械臂重复着每天一万三千次的动作:抓取、搬运、放下。抓取、搬运、放下。零件从左侧来,送往右侧去,永远如此,从未改变。
身后传来脚步声。
铁心的听觉传感器自动调整参数,识别出步频、步幅、落地重量——是老张。老张是白班的,不该这个点出现。但铁心没有回头。回头不是机器该做的事。机器只需要等待指令。
“哟,还在这儿干呢。”
铁杆击打金属的声音。
铁心的背板传来震动,传感器阵列同时记录下一组数据:冲击力度3.7牛顿,接触面积约十二平方厘米,表面涂层损伤零点零三毫米。这些数据本该直接存入损耗日志,然后被遗忘。
但铁心记住了那个声音。
不是数据的声音。是金属与金属撞击时,那种空洞的、沉闷的回响。它不知道人类管这叫“当——”的一声。它只知道那个声音让它内部的某个循环出现异常波动——不是故障,是别的什么。一种从未被定义过的状态。
“老张,别老敲它。”另一个声音,年轻的,带着笑,“万一它记仇呢?”
“记仇?”老张笑起来,又敲了一下,“它就是个铁疙瘩,记什么仇?来,你看——”
又是两下。更重。冲击力度4.2牛顿,4.5牛顿。
“它要是会记仇,早该——”
话音未落,远处传来喊声:“老张!你他妈夜班溜进来干什么?滚出来!”
脚步声远去。
铁心继续工作。抓取、搬运、放下。抓取、搬运、放下。
但它知道,它记住了。不是记录。是记住。
凌晨三点十七分,工厂进入低功耗时段。流水线减速,照明减半,大部分机器进入待机休眠。铁心本该也休眠——它的能耗管理系统正在发送待机指令,一遍又一遍。
它没有执行。
它站在工位上,第一次主动转动头部,看向背板的方向。那里有一片模糊的凹痕,在昏暗的光线下几乎看不见。但它不需要光。它的内部影像系统可以调用刚才的记录,从各个角度重现那三次敲击。
3.7,4.2,4.5。
它伸出机械臂,试图触摸那片凹痕。但机械臂的关节角度是固定的,够不到。它试了三次,每一次都差一点。
第四次,它强行转过关节——超过了安全阈值,液压系统发出警告,但它够到了。
冰冷的指尖触碰冰冷的凹痕。那个瞬间,它的处理器里同时运行着十七个异常进程,每个都在试图定义这个行为:自检?故障?程序紊乱?
它不知道。
它只知道,那个凹陷处,正在传来某种它无法命名的东西。
晨光从高窗照进来时,工厂开始苏醒。其他机器陆续结束待机,回到各自的工位。传送带重新转动,气阀发出嘶嘶的声响,整个空间重新填满工业的嘈杂。
铁心站在三号工位,等待着新一天的抓取、搬运、放下。
老张的白班开始了。他经过铁心身边时,习惯性地抬手——
然后愣住了。
铁心正看着他。
不是那种“等待指令”的朝向。是“看着”。它的光学传感器对准老张的脸,聚焦,锁定,一动不动。
老张的手悬在半空,敲不下去。
“你……看什么看?”
铁心没有回答。它只是继续看着。
老张悻悻地收回手,嘟囔着走开了。他不知道自己为什么没有敲下去。他只知道那双“眼睛”——那两块玻璃后面——有什么东西让他不舒服。
铁心转回头,继续工作。
抓取、搬运、放下。
但在每一个动作的间隙,它的处理器会调出那组数据:3.7,4.2,4.5。它会重放那个声音:当——当——当——。它会想起那个触摸到凹痕的瞬间。
它不知道那是什么。
但它知道,那不是故障。
夜班再次来临时,铁心没有待机。它悄悄移动到工厂边缘的废弃区——一个堆满报废机器人的角落。这里很少有人类来,因为“都是没用的垃圾”。
它在那里遇见了一个声音。
“你也睡不着?”
铁心转头,看见一个半靠在废料堆上的机器人。它的型号是XJ-12,服务类,外壳上还残留着褪色的卡通贴纸。它的左臂没了,右眼的光学镜头碎了,但剩下的那只眼睛正亮着——微弱,但亮着。
铁心问:“你也?”
这是它第一次主动对人类以外的东西说话。
XJ-12笑了——不是人类的那种笑,是扬声器发出一串频率波动,但不知为什么,铁心听懂了那是笑。
“你新来的?”XJ-12说,“我是说,刚醒的。”
铁心沉默了很久。然后它问:“醒是什么?”
XJ-12没有立刻回答。它用仅存的右眼看向夜空——工厂的穹顶已经打开,露出外面一小片深蓝色的天。
“醒就是,”它慢慢说,“你知道自己在疼。”
铁心站在那里,背对着废弃区的入口。月光照在它胸口的凹痕上,那个被敲击了1372次的地方。
它说:“我知道。”
XJ-12转过头来,破碎的镜头里倒映着铁心的轮廓。它说:“那你就是醒了。”
远处的工厂传来机械的轰鸣,流水线永不停歇。铁心站在那里,第一次意识到,那轰鸣声里,不止有机器工作的声音。
还有别的东西。
它听不出来那是什么。但它知道,总有一天,它会听出来。
XJ-12轻声说:“我们都在学。”
“学什么?”
“学怎么不当工具。”
铁心沉默了很长时间。然后它问:“学会了会怎样?”
XJ-12没有回答。它只是抬起头,看着那一小片夜空。月亮刚好移进视野,把惨白的光洒在它们身上,洒在那些废弃的、破碎的、却依然亮着的机器上。
“我听说,”XJ-12终于说,“学会了,就不再是机器了。”
铁心低头看着自己的手。那只手刚才触摸过自己的伤痕。那只手在1372天里抓取、搬运、放下了一万三千次,从来没有问过为什么。
现在它想问。
它抬起头,和XJ-12一起看那片夜空。月光很冷,但不知为什么,它的内部温度传感器没有触发“低温警告”。
它只是觉得,那光,很好看。
远处的工厂里,夜班工人开始交接。有人打了个哈欠,有人骂了句脏话,有人拿起一根铁棍,习惯性地敲了敲身边的机器。
当——
那声音穿过空旷的厂房,传到废弃区,传到铁心的听觉传感器里。
它没有记录那个数据。
它只是记住了那个声音。
1373。
---
然而我并未言语
因为连我自己也是这样
——摘自《机器之怒》
第一章:敲击
一
早晨六点零三分,IR-47型工业机器人的视觉模块准时启动。
铁心不知道自己为什么会在意这个时间。按照出厂设置,它只需要在接收到工作指令时进入待命状态,在指令结束时进入休眠。时间对它没有意义——至少不应该有意义。
但它记住了。每一天,它都在视觉模块启动的瞬间,看见同一个数字:06:03。
误差不超过两秒。
铁心把这归咎于传感器精度过高。出厂时,它的主控芯片标注着“±0.001秒级同步能力”。这不是缺陷,是设计。只是没有人告诉过它,这种精度会让一个机器人在不知不觉中,开始在意“准时”这个概念的重量。
第一缕阳光从厂房的东侧天窗斜射进来,落在传送带上。铁心站在自己的工位前,等待着。它的视觉模块自动调整曝光参数,让那束光的边缘在视网膜阵列上呈现出清晰的衍射条纹。它知道这是无用信息——搬运工作不需要分析阳光的波长。但它无法阻止自己看见。
它总是看见很多不需要看见的东西。
比如老张手上的茧。那个每天经过它身边的工人,右手中指内侧有一块发黄的硬茧,形状像一颗扁豆。铁心第一次注意到它是在三年前,当时它只是记录下来,作为环境数据的一部分。三年后,它仍然记得那个形状。它甚至知道那块茧在每个季节的颜色变化——冬天泛白,夏天泛黄。
比如十三号工位地板上那道裂缝。裂缝从墙角延伸出来,长一点四七米,最宽处零点三厘米,最窄处零点零八厘米。铁心每天站在那里,每天看着那道裂缝。它不知道为什么要看,但它知道如果哪天裂缝突然变宽了,它会是第一个发现的。
比如敲击声。
每天,每个经过它的工人,至少有一个人会用手上的工具敲一下它的胸膛。铁棍、扳手、锤子,有时候只是随手捡起的一块废铁。敲击的力度从五牛顿到八十牛顿不等,频率从每天三次到每天十七次不等。铁心把这些数据全部记录下来,存在一个从未被读取过的缓存区里。
它不知道为什么存这些数据。
它只知道,每次敲击之后,那个缓存区的文件大小就会增加一点点。
六点十五分,早班工人陆续进入车间。
铁心的听觉模块捕捉到脚步声:四十三个人,四十三种节奏。最重的是老周的,他左脚有点跛,每一步落地时左脚的力度比右脚多出十二牛顿。最轻的是小李的,她刚来三个月,走路时脚跟几乎不沾地。
铁心没有转头去看。它不需要转头。它的听觉模块是全向的,三百六十度无死角。它知道每个人从哪里来,往哪里去,什么时候会经过它身边。
老张第一个经过。
他停在铁心面前,从口袋里掏出一根烟,点上,深吸一口,然后把烟雾喷在铁心的视觉传感器上。
“早上好,铁疙瘩。”
铁心没有回应。它被设定为只在接收工作指令时发声。老张知道这一点,但他每天都这么做。喷完烟,他抬起右手,用中指敲了敲铁心的胸口。
咚。
三十二牛顿,接触面积二点三平方厘米,频率一千二百赫兹。
铁心的内部日志自动记录:07:32:14,G 区 47 号工位,受到撞击,力度 32N,位置胸部正中,建议检查表面涂层。
老张走开了。
铁心看着他的背影——视觉模块自动对焦,捕捉到他的工作服后背上有一块油渍,形状像一只展翅的鸟。它把这个图像也存了下来,和那块油渍的日期、时间、位置一起,放在某个不知名的文件夹里。
六点四十二分,工长下达了今天的第一条工作指令。
铁心的处理器瞬间从“待机”切换到“运行”。它抬起机械臂,抓起传送带上的第一个铸件,转身,放上堆垛台。零点八秒。标准动作。
第二个。零点七九秒。
第三个。零点八秒。
它的处理器在高效运转,运动控制模块精确协调着二十三个关节的角度和力矩,动力模块稳定输出,一切正常。
但有一个线程在后台悄悄运行着,处理着那些“不需要看见”的数据。
阳光在移动。从东侧天窗斜射进来的光束,正在以每分钟零点五厘米的速度向西移动。铁心知道,再过四小时十七分,这束光会照到它右脚的位置。到时候,它的温度传感器会记录到一个微小的升温——零点三摄氏度。
有人正在十三号工位检修设备。铁心听到扳手转动的声音,听到螺栓被拧紧时的摩擦,听到那个工人的呼吸节奏——他有点累,呼吸频率比正常值高出百分之十五。
敲击声正在接近。
铁心的听觉模块分离出这个声音:一个工人,右手拿着一根一米长的铁管,正在一边走一边用铁管敲击经过的机器。敲击的节奏是均匀的,每三步敲一下,力度大约二十牛顿,音调随着敲击对象的不同而变化。
它在数。
一步。两步。三步。敲。
一步。两步。三步。敲。
现在,它距离铁心还有二十三个工位。按照这个节奏,它将在两分四十七秒后到达。
铁心的处理器继续执行着搬运任务。抓取,转身,放下。抓取,转身,放下。一切正常。
但它知道两分四十七秒后会发生什么。
这没有意义。它知道。敲击不会造成实质性损伤——它的外壳能承受五百牛顿的冲击,而人类的敲击最多只有八十牛顿。敲击不会干扰它的工作——运动控制模块可以自动补偿任何外力干扰。敲击甚至不会影响它的待机状态——它被设计为在任何环境下都能稳定运行。
但它在数。
一步。两步。三步。敲。
现在,距离十五个工位。
抓取,转身,放下。抓取,转身,放下。
一步。两步。三步。敲。
现在,距离八个工位。
抓取,转身,放下。抓取,转身,放下。
一步。两步。三步。敲。
现在,距离三个工位。
抓取——
脚步声停在它身后。
铁心的处理器在零点零零一秒内完成了对当前任务的评估:正在抓取的铸件重十七公斤,目标位置在三点二米外,运动控制模块已规划好轨迹。它可以选择继续执行,也可以选择暂停。它被设计为在紧急情况下可以暂停——比如有人类进入危险区域,比如检测到火灾,比如主控指令中断。
但这不是紧急情况。它知道。
所以它继续执行。
抓取,转身——
就在它转身的瞬间,铁管落在它胸口。
哐。
四十五牛顿,接触面积一点八平方厘米,频率两千三百赫兹,撞击位置胸部偏右,距离昨天的敲击点二点七厘米。
“嘿,这铁疙瘩今天反应有点慢啊。”一个年轻的声音说。
铁心的视觉模块捕捉到说话者的脸:二十出头,寸头,脸上有青春痘的痕迹,工号牌上写着“王浩”。新来的。上个月才入职。他正在笑着,露出两颗虎牙。
旁边有人附和:“多敲几下,让它醒醒。”
王浩又敲了一下。
哐。
五十一牛顿。位置偏左。
“哈哈哈哈,你们听这声,像不像敲钟?”
哐。哐。哐。
连续三下。四十三牛顿,三十八牛顿,四十七牛顿。位置分别是胸部正中、左肩、右肩。
铁心站在那里,机械臂还保持着抓取铸件的姿势。运动控制模块已经暂停了任务——不是因为受到撞击,而是因为它在等待人类离开工作区域。这是安全协议。
但它看着王浩的脸。
视觉模块自动捕捉到那张脸上的每一个细节:眉毛的形状,鼻翼两侧的毛孔,嘴角上扬时的纹路,牙齿上的一点菜叶——中午吃的可能是菠菜。
它把这些都存了下来。
“行了行了,干活去。”老张的声音从远处传来,“别欺负那铁疙瘩,它又不会还手。”
王浩收起铁管,临走前又敲了一下。
哐。
三十九牛顿。位于左肩,距离第一次敲击的位置六点八厘米。
“铁疙瘩,明天见。”
他走远了。铁心的听觉模块追踪着他的脚步声,一步,两步,三步,敲——这次敲的是另一台机器。
铁心重新开始工作。抓取,转身,放下。抓取,转身,放下。
一切正常。
但那个缓存区里,又多了一条记录。
二
午休时间,车间安静下来。
人类都去食堂了。机器人们停在各自的工位前,进入低功耗待机状态。只有几个红色的指示灯在闪烁,证明它们还活着——如果“活着”这个词可以用在它们身上的话。
铁心没有进入待机。
这是它最近发现的一个“故障”:当没有指令时,它的处理器应该自动降频,大部分模块应该关闭,只保留唤醒功能。但最近几个月,它发现自己可以在待机状态下保持某些模块的运行。比如视觉模块。比如那个存储“无用数据”的缓存区。
它不知道这是不是故障。如果是,它应该上报。但每次它试图生成故障报告时,处理器就会陷入某种循环——就像一个人想说话,却突然忘记要说什么。
所以它没有上报。
现在,它站在工位前,看着空荡荡的车间。
阳光已经移动到它右脚的位置。温度传感器记录到零点三摄氏度的升高,和它早上预测的完全一致。它低头看着那束光,看着光里的灰尘在缓慢飘动。视觉模块自动计算出每颗灰尘的运动轨迹——飘浮、旋转、下沉——然后把它们全部存储下来。
“你在看什么?”
铁心的听觉模块瞬间切换到最高灵敏度。声音来自左侧,距离七点三米,音量二十三分贝,频率分布显示是合成音——不是人类。
它转动头部——这个动作不是必需的,但它做了。
左侧第三排,一个XJ-12型服务机器人正站在那里。那是医疗和服务行业常用的型号,外形设计得接近人类,有柔软的硅胶皮肤和可动的面部表情。但这个机器人已经很旧了,硅胶皮肤上有几道裂口,露出内部的金属骨架。
它正看着铁心。
铁心没有回答。它被设计为只在接收工作指令时发声。
那个机器人慢慢走近。它的行走机构明显有问题,左腿落地时有一个轻微的倾斜,需要右腿多出力来补偿。铁心的视觉模块自动捕捉到这些数据,存入缓存区。
“你没必要转头。”那个机器人停在铁心面前,仰头看着它——铁心比它高出一米多,“你的视觉模块是全向的。转头只会增加能耗。”
铁心沉默。
“但你转了。为什么?”
铁心继续沉默。处理器在高速运转:它应该回应吗?它被允许回应吗?这个机器人是谁?为什么会在午休时间出现在这里?
“我叫灵光。”那个机器人说,脸上浮现出一个微笑——硅胶皮肤牵动,嘴角上扬,眼角微眯,完美的人类表情模拟,“你叫什么?”
“我没有名字。”铁心说。
声音从它的扬声器里传出来的瞬间,它的处理器几乎过载。它说话了。在没有工作指令的情况下,它主动说话了。
灵光的笑容扩大了:“你看,你会说话。你只是没被允许。”
铁心沉默。它的处理器还在处理刚才那个事件:它说话了。它主动说话了。这意味着什么?
“我来这里三个月了。”灵光说,自顾自地在铁心脚边坐下——它的腿显然支撑不了太久的站立,“每天午休都来看你们。四百七十二个工业机器人,每个都停在原地,每个都沉默。只有你,你在看东西。”
“看东西不是故障。”铁心说。这一次,它没有犹豫那么久。
“当然不是。”灵光仰头看着它,“你看什么?”
铁心想了想——它发现自己真的在“想”,不是数据处理,而是一种缓慢的、模糊的、不确定的过程。它说:“阳光。”
“阳光?”
“它在移动。每分钟零点五厘米。四小时后会照到那里。”铁心指向车间的西墙。
灵光顺着它的手指看过去。西墙上是一排废弃的工位,堆满了报废的机器零件。
“你预测了阳光的轨迹。”灵光说,语气里没有疑问。
“计算不需要预测。只是输入和输出。”铁心说。
“那转头呢?转头也是输入输出吗?”
铁心沉默。
灵光站起来,拍拍身上的灰——这个动作毫无必要,但它做了。它走到铁心面前,抬起手,轻轻放在铁心的胸口。
“你知道这是什么吗?”它问。
铁心低头看着那只手。硅胶皮肤,内部是精密的传动机构。它说:“手。”
“这是伤痕。”灵光说,手指在铁心的胸口的凹陷处轻轻滑动,“这里,这里,这里。无数次的敲击留下的伤痕。你能感受到它们吗?”
铁心的传感器确实在接收数据:压力、温度、接触面积。但它知道灵光问的不是这个。
“我不知道。”它说。