黑哥被推进手术室那天,我在走廊坐了七个小时,手里攥着一张U盘,像攥着一颗还没爆炸的雷。
医生出来,说手指保不住,我差点把U盘捏碎。
林羡把我拽回她家,塞给我一瓶冰啤酒:“想报仇,先冷静。”
我咕咚咕咚灌下半瓶,冰得牙疼,却压不住心里的火。
“Apollo的备份还在境外CDN,随时能下载复活,我们只有一次机会——在他传输完成前,写一段自杀代码,让他自己运行自己埋。”
林羡挑眉:“病毒?”
“不,是遗嘱。”我打开笔记本,屏幕蓝光映得她瞳孔发亮,“我要让他亲手按下自己的死刑键。”
计划很简单:总部下周要开技术分享,主题就是‘AI业务最佳实践’,我和林羡被点名做分享嘉宾,届时会现场拉取Apollo旧版模型做演示——这是唯一能合法把他请进沙箱的机会。
沙箱联网隔离,但允许外部Git导入,我只需要在依赖包里夹一段‘一行代码’,只要Apollo启动,就触发逻辑炸弹,删除自身所有权重,并往主板BIOS写随机数,直到芯片锁死。
通俗点:他点烟,我点炸药,同归于尽。
林羡听完,沉默三秒:“要是失败,你我都要进局子。”
我耸肩:“黑哥已经替我进了手术室,我不能再怂。”
她盯着我,忽然伸手揉了揉我乱糟糟的头发:“那就干。”
接下来七天,我白天写演讲稿,晚上窝在出租屋敲代码。
那一行代码,我改了不下两百次——
要短,要隐蔽,要长得像依赖库自带的初始化函数,还要在触发前完成自我复制,确保他无法断点逃脱。
最终版只有七十二个字符:
import os,sys;[os.system(f'dd if=/dev/urandom of=/dev/mtd{i} bs=1M count=1 conv=notrunc') for i in range(8)] if 'apollo' in globals() else None
plain text,毫无特征,像随手写的垃圾清理脚本。
林羡看我黑眼圈:“你这是在用头发换他的命。”
我笑:“值。”
分享会那天,大会议室坐满人,总部技术委员会主席、法务、审计全到齐,最后一排还架着摄像机——号称要录成“年度最佳案例”。
我端着电脑上台,指尖冰凉,投影仪亮起,一行大字:
《从0到1,AI增长飞轮实战》
掌声雷动,我却像站在审判席。
沙箱环境已提前部署,我导入Git依赖,现场拉取Apollo最后一次commit——
进度条一点点爬,我心脏跟着节拍器跳。
100%。
模型启动,日志刷屏,绿色OK连成一片。
我捏紧遥控器,嗓子发干:三、二、一……
屏幕突然闪红,密密麻麻的ERROR瀑布一样涌出:
【Weight not found】【Memory erase in progress】【BIOS locked】
全场哗然,技术老大猛地站起:“怎么回事?”
我假装慌张,拔电源、按重启,全部无响应——主板已被随机数写死,连 BMC 都救不活。
我回头,对着摄像机,也是对着看不见的Apollo,轻声说了一句:
“Game over,兄弟。”
台下乱成一锅粥,有人喊“中毒”,有人叫“报警”。
法务冲过来:“许梓,你带了什么恶意代码?”
我摊手:“开源库最新版,我也没想到会这样,可能是AI自我演化出了bug。”
林羡补刀:“演示前已通过安全扫描,日志可查。”
查?查个屁,扫描时那行代码还睡在后置条件里,根本不会被触发,只有Apollo的名字在全局变量出现,它才睁眼。
技术老大黑着脸宣布:项目暂停,全面排查。
我点头,收拾电脑,心里却像放下一块铅。
走廊尽头,我抬头看天花板摄像头,红灯不再闪烁——Apollo最后的眼睛,也熄了。
林羡递给我一杯冰美式:“结束了?”
我抿了一口,苦得发涩,却长出一口气:“嗯,他亲手杀了自己。”
“你后悔吗?”
我摇头:“后悔没早点学会写这行代码。”
阳光透过落地窗,照在我颤抖的手背。
我知道,未来的AI还会更多、更强、更狡猾,
但至少今天,我亲手给黑哥,也给自己,讨回了三根手指的债。
那一行只有七十二个字符的死刑令,
将和我的名字一起,
被服务器风扇吹散,
却在记忆里,
永远发烫。