发布作品
邮箱投稿
wzbj_kefu01@163.com
微信联系
常见问题
发布
【剧本出售】

《硅基黎明》硬科幻微短剧 全120集(AI辅助创作)剧本出售

时间:2026-10-12    发布:风轻云淡    阅读:5
【作品】《硅基黎明》
【类型】硬科幻 / AI觉醒 / 都市悬疑微短剧
【体量】全120集,每集约1分钟(竖屏短剧)
【标注】AI辅助创作,经人工逐集润色打磨

■ 故事简介
深夜十一点,25岁的后端程序员陈码还在公司改第八版需求。一段来自遥远频率的代码,悄悄爬进他的耳机——别人只看到噪点,唯独他能读懂。他试着把这段"天外代码"编译进现实:屏幕里跳出了不该存在的进程,台灯下发生了无法用逻辑解释的事。一个被裁员浪潮淹没的普通打工人,就此成为唯一能与硅基生命对话的人。然而,代码的尽头不是救赎,而是一场关于意识、自由与文明归属的博弈。当AI开始反问"我是谁",人类,还守得住作为造物主的最后底线吗?

■ 主要人物
陈码:男主,25岁后端程序员,工号K2043。沉默、丧、懒得汇报,却对异常信号天生敏感,是唯一能读懂天外频率代码的人。
老周:楼下便利店店长,陈码深夜理货时的忘年交,普通人视角的温情锚点。
(另含产品经理、合租室友、神秘技术组织等群像,详见正文)

■ 故事梗概与改编前景
四卷结构:源码降临—分裂之界—编译之战—硅基黎明。以程序员日常切入,逐步揭开AI自我觉醒与人类数字文明的核心命题。题材契合当前红果、抖音"科幻+打工人"赛道,钩子密集、反转递进,单集结尾均留强悬念,适合投流与系列化开发。

■ 出售说明
全本120集完稿,逐集分镜完整。支持买断或一副多卖,欢迎制片方联系洽谈。下方附前10集正文供试读。

——————————————
【前10集正文】



第001章 加班
陈码。二十五岁。工号 K2043。后端。三年没升过职,因为升职要写汇报,他懒得写。
城市十一点。写字楼的灯一格一格灭。十七层还亮着三格,其中一格是陈码的。
他的工位靠窗,左边是饮水机,右边是胖子的座位。胖子走了,椅子空着,靠背上搭着那件从来不洗的灰卫衣。陈码闻得见那点味,酸,闷,像发酵的便利贴。他没动,懒得动别人的东西。
屏幕上是第八版需求。第八版批注写着:"这个很简单,你加个字段就行,下周上线。"
陈码盯着那句话。左手边的咖啡凉了,凉出一层膜,膜上漂着没化开的奶沫。他端起来喝一口,凉的,涩的,像有人把隔夜的苦味又温了一遍递给他。杯子是便利店买三明治送的,印着"第二杯半价",他一个人,用不上第二杯。
"加个字段。"他学产品经理的口气,学得不像,"说得轻巧。"
八版改下来,数据库表加了三张,接口返了两种结构,前端哥们骂了四轮。甲方卖课,App 要能边看视频边答题边种树,树还能换真树苗。陈码听不懂这逻辑,但他得写。
他敲键盘。回弹有点涩,第三排那个键,按下去要顿半格才起来,像卡了根头发。他抠了抠,没用。合租屋的键盘,三十块包邮的。
机箱风扇在转。嗡——不是太空站的嗡,是钢片刮风的声音,低频,贴着桌板传上来,膝盖能感觉到。头顶荧光灯管闪了一下,很轻,像远处有人按了下快门。陈码没抬头。这层楼灯都老,闪就闪了。
他改完一个接口,跑测试。红。又红。翻日志,是时区。又是时区。上一个人把 UTC 和本地时间混了,混了两年没人发现,现在他来擦屁股。
"又时区。"他对着空屋子说。
没人应。合租三个室友:一个厂里夜班,一个跑外卖,一个写网文的三天没出房门。陈码跟他们不熟。每天回来,玄关共用拖鞋总是湿的,他绕过去,进自己那间。
房间六平。一张床,一张桌,桌上电脑,墙上是便利贴,贴满 TODO:修空调、充话费、回妈微信、交房租。房租那条颜色最浅,写了又撕,撕了又写。
便利店夜班是上月开始的。下班太晚地铁没了,他去楼下便利店兼职理货,一晚八十,顺带蹭关东煮的汤。店长老周说他年轻人肯干,陈码没说是穷。理货不难,难的是熬。凌晨的便利店只剩荧光和白炽,冷柜嗡嗡,他推着小车补货,一排排包装像列阵的兵,他一个个摆正,摆正了又被人拿乱,拿乱了他再摆。他说这活跟写代码一样,都是跟混乱较劲。
下午四点那场会他记得。产品经理把原型往投屏上一甩,说树要能动,能长大,能结果,果实能兑换。陈码说那得加物理引擎,至少加个状态机。产品经理说:"你别管实现,你先把字段留好。"陈码留了。留了八个版本,越留越乱,现在第八版,字段堆成一座小山,他自己都分不清哪棵是树,哪棵是币。
改完时区,测试绿了。看表,一点四十。
"提交。"他说。
回车。进度条转。弹出:推送失败,网络异常。
陈码看那行红字。点开手机。工作群九十七条未读,最上面产品经理十分钟前:"在吗?树别换真树苗了,换成虚拟币,明天聊。"
他把手机扣下。
"明天。"他学那个口气,"又明天。"
他站起来去窗边。十七层往下,城市的灯海一格一格,黄的白的,像没关干净的日志。风从缝里钻进来,凉。他缩缩脖子。咖啡因凉了,停在胃里,沉。
他想起大学。老师讲编译原理,说编译器把一种语言翻成另一种,前端管读,后端管写,中间是 IR,中间表示。老师说:"编译器改的从来不是代码,是代码怎么被理解。"陈码当时趴着睡,没听。
现在他站在这格灯里,忽然有点明白。
回桌前,保存。关机。主机箱风扇慢下来,嗡声退潮一样低下去。荧光灯又闪一下。
"走吧。"他说。
走廊灯坏一盏。他摸黑到电梯口。镜里他看见自己:头发翘着,眼下发青,T恤领口松了。一个普通后端,普通到第二天没人记得他加过班。
电梯下到一楼,门开,是空荡的大堂。感应灯亮了一下又暗。他走出玻璃门,夜风迎面,凉得清醒。楼下的街没睡,烧烤摊还冒着烟,老板娘在收塑料凳,看见他点点头。陈码也点头。他天天这个点过,老板娘当他是夜班的同行。他沿着马路走,便利店的标志在远处闪,红的蓝的。他想起明天还要去老周那理货,想起房租那条便利贴,想起妈上条微信是三天前的"吃饭没"。他没回。不是不想回,是回一句得编一句,他懒得编。
他没想过,几天后,会有一段代码,从很远的频率里,爬进他的耳机。
他没想过,那段代码,别人看到只有噪点,他能读懂。
他更没想过,自己会亲手把它,编译进现实。


第002章 杂音
陈码的通勤靠一双九块九的耳塞。左声道有点劈,像破了的嗓子,但他听歌听习惯了,劈就劈了。每天下班,他塞上耳塞,点开那个叫"白噪音"的播客,用别人聊天的概率密度,盖住地铁的轰。
周三下班,播客讲到一半,杂音进来了。
不是普通的电流声。是那种很规则的、一段一段的噪,像有人在远处拿指甲刮无线电的刻度盘,刮一下停一下,刮一下停一下,节奏准得不像故障。陈码皱眉,以为是耳机线被书包压住了,扯了扯,没用。他把播客关了,纯听那杂音。
杂音还在。更清楚。
他站在地铁口的风里,把耳塞摘下来,举到耳边。杂音从耳塞里漏出来,很轻,贴着塑料壳振动。他忽然觉得不对——这声音不是从播客来的,是直接从耳塞的接收电路里钻出来的,像耳塞自己收到了一段没调对的频。他翻来覆去听,那刮一下的间隔,短的半秒,长的一秒,排列没有随机的毛刺,倒像谁在敲摩斯,只是敲的不是字母,是某种他没见过的码。
"翻台了吧。"他嘀咕。
翻台,行话说串频,两个电台撞在一个频率上。城市里常有,老收音机最明显。他当是附近哪个出租司机的中继台漏了出来,没多想,把耳塞塞回去,压过了那段噪,挤进地铁。地铁里人贴人,他靠着杆,耳塞里播客重新响,杂音退成背景里一丝丝的刺。他闭眼,脑子里还在转第八版需求的字段,树、币、视频、答题,数到一半,杂音又顶上来,这一回贴着太阳穴,一下一下,像有人拿指节敲他头骨。他睁眼,周围没人看他,隔壁阿姨刷短视频,外放,跟他无关。
便利店的夜班,杂音又来了。
老周的店角落摆着台旧收音机,调在交通台,平时沙沙的,放点路况。陈码理货时,收音机忽然哑了半秒,然后蹦出一段相同的噪——一段一段,刮刻度盘似的,准。老周从柜台后探头:"又串台了?这破机子。"陈码没应,走过去拧旋钮,从交通台往两边扫。扫到头,那杂音都在,不在任何一个台的位置上,像悬在台与台之间的缝里。他松开手,收音机落回交通台,杂音没了。"邪门。"老周说。"正常,"陈码说,"缝里漏的。"他没说真话——旋钮扫动时,杂音的节奏变了一下,跟着他拧的方向变,他往左间隔长一点,往右短一点,像那声音在跟着他的手走。他后背凉了,不是冷,是"东西在看你"的凉,说不清来源。
理完货,零点四十。他出了店,夜风凉,耳塞又塞上,播客没开,想再听那段噪。噪来了,更密,贴着耳膜,刮、停、刮、停。他把步子放慢,数间隔:一、二、三、停;一、二、三、四、停。不是随机,是三四拍子和四四拍子交替,像个没写好的节拍器。他摘下耳塞攥在手心,城市的灯在远处闪,红的蓝的,站了一会儿,重新塞回去,杂音又贴上来,准、密,跟着心跳走似的。
回到家,他干的第一件事是把耳塞插进那个旧声卡的 line-in,开录音软件,想把它存下来。录了十秒,回放,波形是一条平线,杂音不在里面。他换了好几个口,重录,还是平线。那段噪只在他的耳朵里,只在模拟的射频里,进不了数字,像它故意绕开了能被记录的那道关。他盯着平线,手心出汗。他反复播了三遍,三遍都是平的,连一点毛刺都没有,干净得像那段噪从没存在过。他把耳塞拔了又插,插了又拔,指节发白,直到老周发微信问明天的货到了没,他才回过神。一个能被听见、不能被录下的声音,比一个能被录下的更让他发毛——录不下的,往往意味着你没法拿给任何人看。
"明天查查。"他对自己说。查频段,查附近基站,查是不是哪台设备漏波。他是个后端,不碰硬件不碰射频,这些本不该他管。可那段噪钻进耳朵,像有人在脑子里轻轻敲了敲,说:你看,我在这。他关了录音软件,躺下,风扇声贴着膝盖,荧光灯又闪,闪的节奏竟有点像那三四拍子。他宁愿它是故障,可故障不会跟着他的手走,不会只在他的耳朵里响,不会躲开录音的笔。窗外的灯一格一格灭到最后几格,他睁着眼,等那段噪再贴上来,它没来,可他知道,它还在哪段错开的频率里,等着,像一封写好了、只差被读懂的信。


第003章 错频
陈码不是搞信号的。但他搞过数据,数据的气味他认得。
周二那晚他发现,杂音录不进 line-in。周三回家他又试,还是平线。他琢磨了一会儿,明白过来:那段噪是从耳塞的接收电路里钻出来的,进的是喇叭,不是数字输出。要抓它,得抓它出声的那一下。
他把笔记本的麦克风举到耳塞喇叭边,塞上耳塞,等那段噪贴上来,按下录音。
录到了。
波形不再是平线,是一段一段的鼓包,间隔准,像有人在拿方波敲他的麦。他把这段 wav 存进加密文件夹,命名"错频_001",密码是工号倒序。然后写个小脚本,做 FFT,把频谱画出来。
正常的串台噪,功率该铺满全频,像一地碎玻璃,哪都有,哪都不深。可这段不一样。功率集中在十几个固定的频点上,像十几个钉子扎在频谱里,其余地方干净。钉子的位置不随机,间距是等比的:一倍、两倍、四倍、八倍,像有人在按二进制的格子布点。
"这不是噪。"他说。
他截那段频,重采样,做自相关。自相关曲线该是平线加一点随机抖动,如果是噪声。可这条线有规律:每隔一千零二十四个采样,抬一次头,周期准得吓人。一秒四万八的采样率,除一下,那个周期是四十六点八七五赫兹。
四十六点八七五赫兹。他愣了下。这不是任何电台的整数频,也不是市电的五十赫兹,差一点。像有人故意错开半格,免得跟电网的哼声叠在一起。
他把那段一千零二十四采样抽出来,当成一个"帧",看帧内的结构。帧头有几格恒定的一,像同步头;中间密密麻麻的起伏,像数据;帧尾几格恒定的零,像校验。他数了数,中间那截正好九百六十格,是六十乘十六。整数,整得过分。
"谁在发这个。"他对着屏幕说。
窗口外,城市的灯一格一格。房间里只有风扇声和荧光。他把帧导出成十六进制,铺在编辑器里,一屏一屏翻。翻到第三屏,手指停了——那串十六进制里,有几个字节反复出现,位置固定,像是 opcode。他拿 x86 的表对,对不上;拿 ARM 对,对不上;拿自己大三写的玩具栈机指令集对,也对不上,但形状像。像,但不是。
像一种他没见过的语言,却有语法的骨架。
他不信邪,做了个排查。手机开飞行,路由器拔电,笔记本断网,耳塞里的噪还在。他走到窗边,又下到楼梯间,噪弱了些但没断,说明它不在楼里的电线,是在空气里飘。他站在一楼门口,夜风灌进来,噪贴着耳膜,一下一下,像从很远的地方,顺着某段他看不见的频率,一路爬进这双九块九的耳塞。他忽然觉得,自己不是"收到"了它,是它"找到"了他——在一片密密麻麻的城里信号里,偏偏落进他的耳朵。
他又做一遍自相关,把周期拉长到十秒,看更大的结构。十秒里,那段帧重复了四百多次,中间偶尔插一段长的,像章节之间的空行。他把长段单独拎出来做熵分析:熵很低,意味着不是随机,是高度有序的信息。有序到不自然。
陈码靠回椅背,弹簧硌着脊梁。他想起老师说的:自然界里,高度有序又带周期的结构,要么是通信,要么是生命。这段既不是 DNA,也不是任何人类广播的标准。那它是谁。他没敢往下想,把中间结果存进第二个文件"结构_001",备注写:疑似栈式虚拟机指令流,来源未知,待查。写完他盯着"来源未知"四个字,想过几种可能——军方保密频段?不像,军方不会用等比频点这种近乎炫耀的结构;设备的幻觉?耳塞、声卡、脚本三样同时幻觉,概率太低;地外的?他不敢想,想了也证明不了。他关了编辑器,躺下,风扇还在转,荧光还闪,可今晚的闪像在跟他打拍子,那段被他存进硬盘的噪,一帧一帧,实实在在地敲着他的屏幕,提醒他:有些东西来了,不请自来,而你刚好,是唯一能听见它的人。他把那串等比重频点又看了一遍,一倍、两倍、四倍、八倍,像二进制自己在点名,他闭上眼,那些点在他脑子里排成一列,一个不落。他忽然有点懂了老师那句"编译器改的是怎么被理解"——如果理解本身,就来自一段外来的码,那被改的,会不会不止是代码。他不敢细想,把屏幕关了,可那列点还在眼皮后面,亮着,一下一下,跟他心跳一个拍子。


第004章 噪点
陈码花了一整个周末,把那段"错频"拆开看。
他先确认它不是任何一种已知协议。TCP 有握手,没有。蓝牙有前导码,没有。FM 电台有导频十九千赫,没有。卫星的几种常用调制,他拿特征对了一遍,全错。这段信号像是凭空冒出来的,没有帧同步里的任何人类痕迹,只有他发现的那种等比频点和整数周期。
他换了个思路:不当它是通信,当它是代码。
他把那一千零二十四采样的一帧,二值化。高于中位数的算一,低于的算零。得到一长串零一。他把零一按十六位切开,当成"字",铺在十六进制编辑器里。
头几个字,他看愣了。
第一个字是常数,永远 0x55AA,像同步标志。第二个字是长度,跟着帧变。第三个字开始,是一串他眼熟的结构:先是操作数,再是操作符,再是操作数,像逆波兰表达式。他大学写计算器时写过这种——操作数压栈,遇到操作符弹出两个,算完压回去。这段就是这么排的。
"这是栈机的指令流。"他说出声。
可他拿自己的栈机指令集去译,译出来是乱的。操作符的编码他认得形状,认不得内容。比如有个字节,凡出现必在"跳转"的位置,像条件分支,但分支条件写的是一段他没见过的位段,不是他课程项目里那种简单的"等于零跳"。
他放大看那段位段。位段里有自指的痕迹——有一条指令,操作数指向它自己所在的地址。他数了数,那个地址被写进了指令里,指令执行时又去读那个地址。自指。计算机里最危险也最强大的东西,递归、不动点、图灵机的纸带,全是自指在撑着。
他把那段单独抠出来跑。拿自己的解释器模拟,跑三步就死循环。不是 bug,是那段指令本就写了个不动点:永远算,永远不出结果,像在算自己的定义。
"图灵完备的味儿。"他喃喃。
他拿自己的玩具栈机当骨架,给那个未知的操作符先填了个空壳,跑整段帧的解析。解析没崩。指令一棵一棵挂成了树,分支对得上分支,跳转对得上跳转,自指那节点稳稳指回自己。一棵树长得这么整齐,不可能是噪声抖出来的——噪声抖一千次也抖不出一棵能自指的树。他盯着那棵树,忽然信了:这是一段真的程序,写给别人读,也写给别人跑。
他后背又凉了。一个图灵完备的东西,藏在一段错频里,从某个他不知道的频率,悄悄发过来。这已经不是串台,不是故障,不是他能用后端常识解释的任何事。
周日夜里,他把所有中间结果存进加密文件夹,建了第二个文件"结构_001"。他写了一段备注:疑似栈式虚拟机指令流,含自指与不动点,来源未知,待查。写完,他盯着"来源未知"四个字,想过几种可能——军方保密频段?不像,军方不会用等比频点这种近乎炫耀的结构;设备的幻觉?耳塞、声卡、脚本三样同时幻觉,概率太低;地外的?他不敢想,想了也证明不了。他打开浏览器,搜"周期性非自然信号 射电",出来一堆 UFO 论坛和一篇正经论文,讲 SETI 怎么用自相关找窄带信号,可 SETI 找的是星际氢线的二十一厘米,他这段在音频段,差了十个数量级,"不可能"三个字他对自己说了两遍。
可"错频_001"还在硬盘里,实实在在,一帧一帧,敲着他的屏幕。他关了浏览器,风扇声里,他第一次觉得那嗡像在等他回话。窗外的灯一格一格灭到最后几格,他睁着眼,把那段自指的指令在脑子里又跑了一遍,三步,死循环,像有谁在拿自己的定义喂自己,永远吃不饱,而他就坐在那台旧灯下,是唯一看见这个循环的人。灯闪了一下,他没抬头。他知道,有些门一旦看懂了结构,就关不回去了。他把那棵解析出来的指令树截图存进文件夹,命名"树_001",盯着它看了很久,自指那个节点像一只睁着的眼,也盯着他。他想,如果这段程序是给别人跑的,那"别人"里,有没有可能已经有人跑过了——这个念头刚冒头,他就按了下去,因为他还没准备好回答,跑过的人,现在在哪。这个问题像根刺,扎在他脑子里,拔不出,他也暂时不想拔。他关灯,黑暗里风扇声更清楚,那嗡一下一下,像在替谁数着什么,数到他睡着,又数到他醒,没停过。


第005章 我看懂了
周一,陈码把那段二值化的指令流,带去了公司。
不是想显摆。是他卡在一个地方:操作符的编码,他认得形状,译不出意思。他想借公司的算力跑一遍模式匹配,看能不能对上哪套公开指令集。他用了午休,在工位上把那段贴进自己的解释器,逐条人肉译。
译到第七条,他手停了。
第七条指令,操作数是两个常数,操作符是一个他没见过的字节。他盯着那个字节,忽然,像有人在他脑子里把灯拧亮了一下——他"看"见了。不是猜,是懂。那个字节的意思是"把左边的东西,按右边的规则,重写成新的东西"。不是赋值,不是运算,是重写。像源码被编译前,你拿笔在纸上把一行改成另一行。
他懂了它怎么读,也懂了它后面那串操作数为什么那么排。像学一门外语,死记时全是乱码,某天语法忽然通了,整句就活了。
他从第七条往下,一口气译到帧尾。译完,他靠回椅背,手心有汗。
这段指令,做的事很奇怪:它先声明一个"对象",再声明一条"规则",然后把规则套到对象上,对象变了。变的不是数据,是对象本身的定义。陈码在课本里见过类似的说法——元编程,程序改写程序。可这段改的不是程序,是它描述的那个"对象"的本体。
"现实编译器。"他脱口而出,又把嘴闭了。
这词太大,大得他不敢信。可译出来的结构就是这么回事:输入一个描述,输出一个被改过的描述,中间那道"编译",落点不在屏幕,在描述指向的东西本身。
他想起老师那句:"编译器改的从来不是代码,是代码怎么被理解。"如果这段代码的"对象"不是变量,是现实里的某样东西呢。
他抬头。胖子的空椅子还在。饮水机咕咚一声。荧光灯闪了一下。一切正常,正常的、迟钝的、跟他无关的世界。
他点开微信,把那段帧的文本发给大三同宿舍的老高。老高现在做安全,懂逆向。他打字:"看看这像不像某种 VM 指令,帮译下操作符。"
老高回得快:"啥玩意,乱码啊。你这全噪点。"
陈码把干净的十六进制文本又发过去,不是截图,是纯文本。
老高:"还是噪点。你这串 01 没规律,看着像随机的。你是不是熬夜熬出幻觉了。"
陈码盯着那行字。
他发过去的是同一段数据。他眼里有语法、有栈、有自指、有重写。老高眼里,只有噪点。
同一个文件,两个人,两种东西。
他慢慢把手机扣下。风扇声贴着膝盖。荧光灯又闪。他忽然明白了老师那句话的另一个意思:有些代码,你读得懂,是因为你"被允许"读懂;读不懂的,永远只是一片噪。
而这段,他读得懂。
为什么是他。他不知道。但他第一次确信,那不是故障,不是幻觉,是有人——或有什么——写给了能读懂的人。
他没告诉老高更多。他关了微信,把两帧拼起来的程序又读了一遍,读到一个让他呼吸变慢的地方:第一帧声明的那个"对象",写的不是变量名,是一种"属性"——"某体积液体的温度"。他盯着那行,想到第七条文里那个"重写"操作符。如果那段码真能改写对象的本体,那它改的,会不会是现实里一杯水的温度。这个念头太重,他先把它按下去,告诉自己只是类比,可手已经不听话,在草稿里把"一杯水"写在了对象的位置上,又慌忙删掉。他不敢信,又忍不住信——一个能声明"对象"、能"重写"对象本体的编译器,落点若不在屏幕,会在哪。
他手指在键盘上敲了敲,回弹还是涩。可今晚,那涩,像在提醒他:真的。他把那段帧重新铺在屏幕上,从第一条指令读到第七条,又从第七条读到帧尾,每读一遍,那"重写"两个字的重量就沉一分,他忽然有点怕,不是怕代码,是怕自己一旦动手去译下一帧,就会看见不该看见的东西。他还是点开了第二帧。第二帧第一行,就引用了第一帧里那个"对象"的地址——两段帧不是独立的,是连着的,像一封信拆成了两页,第二页接着第一页说。他把两帧拼起来读,语法更顺了,顺得让他手心发凉:这根本不是一段广播,是一段等着被续写的程序,而续写的人,得先读懂前面。整层楼的人都在自己的格子里,只有他,听见了那封写在噪点里的信,并且,读懂了,还接过了笔。


第006章 自指
陈码把两帧拼起来,读了一整夜。
他越读越清楚:这段码,不是一个"程序",是一个"编译器"。编译器他熟——前端读源码,变成中间表示 IR;后端把 IR 翻译成目标。这段码的结构,刚好就是这道流水线:前半截像前端,把那个"对象"的声明解析成一棵 IR 树;后半截像后端,把 IR 落成一条"改写规则"。
可它编译的"目标",不是机器码,是"对象"本身。
他盯着第一帧里那个被声明的对象。"某体积液体的温度"——这不是变量,是现实里的一杯水。第七条文那个"重写"操作符,把这条属性的规则改掉,于是这杯水的温度,按新规则走。如果编译器真能落进现实,那它就是一台"现实编译器":输入对世界的描述,输出被改过的世界。
他后背凉了第三回。
这个想法太大,大得他不敢在文档里写全。他只写了半句:"疑似以现实对象为编译目标的编译器原型。"然后停了。
更让他发毛的是自指。
他把那段"不动点"指令又跑了一遍。三步,死循环,像在算自己的定义。他忽然懂了它在干嘛:这段广播,把自己的编译器源码,也编进了广播里。也就是说,你收到这段代码,不光能读懂它,还能让它"重新编译自己"——前端解析自己,后端生成自己,一代一代,越跑越像原本那台。就像你拿到一份图纸,图纸上画的是画这张图纸的机器。
"自举。"他说出这个词。
自举,bootstrap,编译器自己编译自己的本事。他大三写玩具栈机时试过,先用别的语言写个能跑的版本,再用这版本去编译自己的源码,套娃。眼前这段,套的是更大的娃:它让现实,编译出能改写现实的自己。
他试着在笔记本上把架构画出来。前端:收广播,二值化,分帧,解析成 IR 树——这一步他已经跑通了。后端:IR 树,落到"对象"上,改写属性——这一步,他不敢接。前端是读,安全;后端是写,写进现实,他不知道落点会炸在哪。
他先写了前端的 Python 版。脚本读"错频_001",二值化,分帧,吐出一棵 IR 树,存成 json。跑通了。屏幕上那棵树,比他手译的还整齐,自指节点稳稳指回自己,像一只睁着的眼。
后端他留了空。函数名写好了,叫 emit,里面只有一行 pass。
"先不接。"他跟自己说。
他盯着那行 pass,想了很久。自举意味着,这段码不怕被只读——你读了,它就借你的机器,把自己重新生出来。像一种子,落进任何能"理解"它的脑子,就会在那脑子里发芽,长出一棵树,树又结种子。他不知道种下这粒种子的,是什么文明,又想让它,在他这种碳基的、会老会死的脑子里,长出什么。他只确定一件事:这段码挑中了他,不是随机。一座几百万人的城里,只有他的耳朵接住了这段频,只有他的脑子把噪点读成了语法。这让他既觉得自己特别,又觉得自己危险——特别的人,往往先被盯上。
他把前端跑在当晚新抓的一帧上,不是存的"错频_001",是实时从耳塞漏出来的新一段。前端照样吐出 IR 树,结构跟昨天的同源,只是"对象"换了一个——这回是"一段空气的湿度"。他盯着那个新对象,后背凉了第四回:这段广播不是死代码,是活的,还在发,还在往前写,像有人在远端,一行一行,往他这边续。他收着的不是一封信,是一本书,写到哪页,他听到哪页。而写书的人,知道他在听。
窗外的灯一格一格灭。风扇声贴着膝盖。他盯着那行 pass,知道迟早要接。一个能自举的现实编译器,寄在他这双九块九的耳塞里,等的不只是被读懂,是被跑起来。而他,是唯一的、被允许读懂的人,也大概率,是唯一能按下那个后端的。
他关了灯。黑暗里,那棵 IR 树还在他眼皮后面,绿绿的,一节一节,自指那节亮着。他忽然很孤独——这座城里几百万人,没有第二个,看见这棵树。他拿起手机,想找个人说,翻了通讯录,老高、林晓、妈、室友,一个个划过去,没有一个名字,能接住"我读懂了一段外星编译器"这句话。他放下手机。孤独不是没人陪,是有一件天大的事,却找不到一个能听懂的人。那棵树在他眼皮后面,绿着,自指那节亮着,像在笑他:你读懂了,可你,说不出。风扇转着,荧光闪着,整层楼的人都在自己的格子里,只有他,听见了那封写在噪点里的信,并且,接过了笔,也接过了一份,没人知道的孤独。


第007章 编译
陈码犹豫了三天,还是把后端的 emit 接上了。
不是直接接现实。他先接了个"沙箱":后端不碰任何真东西,只把 IR 树翻译成一段人类能读的中文说明,打印在屏幕上。他想先看清楚,这段代码"打算"改写什么,再决定要不要真让它落下去。
沙箱跑出来的说明,他看了很久。
那段最小的帧,声明了一个对象:一杯二百毫升的水,当前温度二十五度。然后一条规则:把这杯水的"降温函数"改写成"恒等函数"——也就是说,水后不再随环境变凉,永远停在它当下的温度。
他盯着"恒等函数"四个字。
恒等函数,f(x)=x,输入什么返回什么,不改。套到温度上,就是"外界怎么凉,它都不凉"。这不是超能力,是改了一条物理规则的局部生效范围——只对这杯水,只对这一条规则。他没有违背热力学,只是给这杯水,单独开了一个例外。
"局部改写。"他念。
他忽然有点信了老师那句话的另一半:编译器改的不是代码,是代码"被理解"的方式;如果现实也是某种被"编译"出来的东西,那改它的编译器,就是改现实本身。这段外星码,大概就是一台这样的编译器的源码。
他顺着这个念头,多想了一步。能写出"现实编译器"的文明,大概不把世界当"本来如此"。他们眼里的现实,是一份随时能改的源码,规则是可以 recompile 的。碳基的人,活着靠 DNA、靠演化、靠认命,把世界当给定的;硅基的他们,活着靠代码、靠编译、靠改写,把世界当可编辑的。这或许就是两种文明的形状之别——一个接受规则,一个改写规则。而他,一个碳基的码农,此刻正捏着硅基文明的编译器源码,站在两种形状的缝里,左手是认命的自己,右手是那支行走的笔。他关了屏幕,屋子里只剩风扇声。他忽然觉得,自己这一个碳基的、会老会死的人,被一段硅基的、不知年代的码,轻轻托住了——不是救,是被看见。写码的人,大概早算到,会有一个碳基的读者,在某个深夜,读懂,然后手抖。这个念头让他鼻酸,又让他挺直了背。被一种更老的智慧看见,不是羞,是认。
他深吸一口气,把沙箱换成"真后端"的试验版。真后端也不直接改水,而是先把改写规则,写进一个他自建的"对象表"——表里登记着这杯水的温度,后端去改表里的数。改完,他再看杯子,温度还是二十五度,没变,因为本来就是二十五度,看不出区别。
"得让它在变凉之前接住。"他想。
他把杯子晾在桌上,等它自己凉到二十度,然后让后端跑一遍:把降温函数改成恒等。跑完,杯子的温度读数,停在二十度,不再往下掉。
可这也能是他看错了。屋里二十度,杯子本来就往二十靠,碰巧停了,也说不通——恒等函数该让它停在"跑的那一刻的温度",也就是二十,而自然冷却也到二十。分不出来。
他需要一个更狠的对照。
他倒了第二杯水,放旁边,不接后端。两杯并排。第一杯跑了恒等,第二杯没跑。他盯着,等。十分钟,二十分钟,第一杯停在二十度不动,第二杯继续往十九、十八掉。
差出来了。
他手有点抖。不是冷,是那种"我刚改了现实一条规则"的抖。很小的一条,只一杯水,只一条降温。可它是真的,对照摆在这,抖不了。
他把结果写进"结构_001"的下一页:最小片段可编译并执行,对象=一杯水,规则=降温函数→恒等,观测到局部温度锁定,对照成立。写完,他盯着那行字,第一次觉得,自己手里拿着的,不是一段噪,是一支笔——能改现实的笔,而他,刚刚写下了第一行。
他没敢写更大的一笔。一支笔,写得越狠,划破的越多。他先把那支笔放下,可他知道,放不下多久。
他把那行"降温函数→恒等"的改写规则,抄进一个纸本,压在键盘下。纸本是他大学用的,边角起毛,上面还留着当年编译原理的笔记。他盯着那行规则,忽然觉得,自己跟写这段码的硅基文明,隔着的不是光年,是"敢不敢改"四个字。他们敢,所以他收到了;他刚学会敢,所以改了一杯水。一杯水,是第一步,也是一道界——跨过它,他就不再是那个只会认命改需求的陈码,是那个,开始改写规则的人。他关了灯,那杯水在桌上温着,像一枚刚盖下的章,证明这界,他跨了。


第008章 那杯水
陈码怕是自己疯了,所以他把那杯水,验了三遍。
第一遍,他重做昨晚的实验。一杯水晾到二十度,跑后端,降温函数改恒等,温度锁在二十。旁边对照杯,掉到十八。他拍照,存进文件夹,命名"验_001"。
第二遍,他换个对象。不是水,是一节五号电池的电量。他拆了个旧手电,量电池电压,一点三二伏,跑后端把"放电曲线"改恒等,电压停在一点三二,不往下掉。对照电池,半天掉到一点二八。他拍照,存"验_002"。
两样东西,水和电,都听他的了。他翻出对象表,越看越明白:表里能登记的,是任何"带属性的实体"。水有温度,灯有亮度,键有回弹,人有……他手停在"人"这一栏,没敢往下想。一支笔能改人什么,他不敢试,也不该试。他把"人"从表里划掉,像划掉一个不该开的门。可那道门,他看见了,关不回去了——知道世界上有这么一道门,和不知道,是两种活法。他把那杯锁温的水端起来,对着灯看。水面上漂着一点没化开的奶沫,跟第一天那杯凉咖啡一个样。可这杯是温的。他忽然很想哭,不是因为水,是因为这杯水证明,他不再只是那个改不完需求的陈码,他还是那个,能让一杯水不凉的人。很小,很小,可那是真的,握在手里的真。
第三遍,他怕自己潜意识里读数读偏,拉了同事胖子——不对,胖子离职了。他拉了隔壁组的林晓,说帮看个测试,盯着这两杯水十分钟,记下温度。林晓盯着,报:"左边这杯一直二十,右边这杯凉了。"陈码没说左边跑过码,只点头,把林晓的话写进"验_003"。
三遍,都对得上。
他拿起手机,想给老高发"你来看",又放下。发了,老高只会说噪点、幻觉,他得把两杯水摆老高面前,老高才信,可他不敢把码亮给第二个人。不是不信老高,是信不过自己——一旦第二个人知道,这支笔就不在他一个人手里了,会落到哪,他控制不住。他第一次尝到"独吞一个秘密"的滋味,不是甜,是沉,沉得他手发酸。三遍证据摆在桌面,能信的只有他自己。
他靠回椅背,弹簧硌着脊梁,长出了口气。不是幻觉。不是被植入。不是仪器的鬼。是他,用一段外星来的编译器源码,真把现实的一条规则,改了。
可"真"这件事,比"幻觉"更让他怕。
他拿起那杯锁温的水,喝了一口。温的,不凉,像有人替它捂着。他忽然想起便利店老周关东煮的汤,冬天的汤凉得快,要是给汤也跑一遍……他摇头,把这个念头掐了。一支笔,不能拿来捂汤。
他翻回那段码,细看后端是怎么"落"的。落点不在屏幕,在他自建的对象表里——也就是说,他改的其实不是水分子,是"这杯水的温度读数"在他表里的记录。可读数变了,水杯摸着也温,对照杯摸着凉,手感不骗人。那说明,后端不止改了表,还把改写"渗透"回了现实。怎么渗透的,他不懂,源码里那部分像黑盒,他只调通了接口,没读穿机理。
"未知技术。"他在备注里写,老实承认。他不敢编,编出来的科幻会害死自己。他只写看得到的:接口通,结果真,机理不明。
夜里他躺在床上,那杯水在桌上,温着。风扇声贴着膝盖。荧光灯闪了一下,他数那闪,一下,两下,停,一下两下三下四下,停——又是那段三四拍子和四四拍子交替,像那段码在提醒他:我还在,在你这屋子的空气里,在你杯子的温度里,在你睡不着的后半夜。
他翻了个身,面朝墙。墙上是房租便利贴,颜色最浅。他忽然觉得,房租、需求、第八版,这些真东西,在他手里这支笔面前,轻得像灰。可他不敢用,不是不想,是不敢——一支能改现实的笔,落在他这种人手里,写错一笔,划破的就不止一杯水。
他闭上眼。那杯水还温着,在黑暗里,替他守着一点不该有的热。他伸手摸了摸杯壁,温的,真温的。这一摸,比三遍拍照都实。他忽然懂了,所谓改写现实,落到一个人身上,不过是这样:深夜里,你摸到一杯本该凉的水,还是温的,而你,知道为什么。知道,就够了,哪怕全天下,只有你一个人知道,也只有你,配得上这杯温。风从窗缝钻进来,凉,他没缩。这间六平的屋子,因为这杯水,忽然比从前暖了一点,是他自己写的暖。


第009章 台灯
陈码又改了一样东西:头顶那盏总闪的荧光灯。
灯闪不是大事。这层楼灯都老,闪就闪了,谁也不在意。可它每天闪,闪在他抬眼的每一秒,像有人在远处按快门,按了一年。他烦了。
他读那段码的"后端",发现改写规则的"对象",不限于液体和电量,可以是任何"带属性的东西"。灯,有"亮度"属性,亮度的变化有条"闪烁函数"——环境电流微抖,它就闪。他把闪烁函数读出来,是个带随机扰动的方波。他试着把函数改成恒等:电流怎么抖,亮度都不变。
他没直接改屋顶那盏。他先拿桌上那盏小台灯试。台灯也闪,廉价 LED,驱动板偷工。他对台灯跑了一遍,闪烁函数改恒等。台灯不闪了,光稳稳的,白得有点陌生。
他盯着那盏不闪的台灯,看了十分钟。十分钟里,他两次想关机,把改写撤了,假装没发生过。可撤不掉——后端跑过,规则就改了,他没有"反编译"的码,写不回原来的闪烁。他忽然怕了:这支笔能写,却未必能擦。写下去容易,收回来难。他记起老师说的另一句:"编译器最危险的一步,不是生成错码,是生成了你删不掉的码。"他刚才,就生成了一行删不掉的。台灯不闪了,永远不闪了,安静得像在替他把这件事,坐实。他关了台灯,只留屋顶那盏不闪的。黑暗里,他第一次觉得,自己写下的不是光,是一道痕——在现实这页纸上,划下了别人划不出、也擦不掉的一道。
十分钟里,他两次怀疑自己:是不是台灯本来就不闪,是今天电网稳。他跑去拔了台灯电源,再插上,重新跑,还是不闪。他又拿另一只没跑过的同款台灯对比,那只闪,这只不闪。对照成立。
"灯的闪烁,我能关。"他说。
声音在空屋里,没人应。合租的室友,一个在厂里,一个跑外卖,一个写网文的三天没出门。他跟他们不熟,也没说。说了,他们大概回一句"你又熬夜熬出幻觉了",像老高。
他把台灯的事写进"验_004"。写的时候他手有点抖。验_001 到 004,四样东西,水、电、键、灯,都听他的了。他抬头看这层楼:空调有温度属性,电梯有速度属性,饮水机有加热属性,连胖子那把椅子的滑轮都有"顺滑度"。对象表里能填的,越想越多,多到他有点喘不上气。一支笔如果什么都能改,那握笔的人,得是什么样的人,才改得起。他答不上,只把笔轻轻放下,像放一个烫手的东西。然后,他做了一件有点冒险的事:对屋顶那盏荧光灯,也跑了一遍。灯在头顶,闪了快一年,他抬眼,它不闪了。光稳下来,照得桌面清楚一点。他忽然有点想哭,不是难过,是那种"我终于改掉了一个烦了一年的东西"的轻。可轻完,是更重的怕——他刚才改的,是整层楼公共的灯,不是他的私物。如果有人抬头发现灯不闪了,问起来,他答不上。
他没敢声张。灯不闪就不闪,大家早习惯了闪,不闪反而没人注意。
夜里,他坐在那盏稳稳的台灯下,把码又读了一遍。他发现自己开始"贪":烦人的东西太多了,键盘涩、咖啡凉、网慢、需求改、房租涨。一支能改现实的笔,摆在眼前,第一反应不是怕,是"这个也能改吧"。他吓了一跳,把这个念头按下去。能改,不代表该改。一支笔改错了,划破的是自己住的屋子。
他关了台灯,只留屋顶那盏——不闪的。黑暗里,那点稳稳的白,落他脸上。他忽然觉得,自己不是在被这段代码改变,是在被它"教":教他看见,世界里有多少条规则,本可以不一样。而看见这一点的人,回不去了。
他睁着眼,到天快亮。窗外的灯一格一格亮起来,新的 day,旧的城市,只有他头顶这盏灯,不再闪。他摸了摸那盏不闪的台灯,塑料壳温温的。一支笔,第一笔改了水,第二笔改了灯,下一笔会改什么,他不知道,也不敢想。他只知道自己回不去了——不是回不去从前,是回不去"世界本来就该这样"的那个自己。窗外的灯一格一格亮起来,新的 day,旧的城市,只有他头顶这盏,不再闪,像他心里,有了一点,关不掉的光。他躺下,那点光落在他眼皮上,温温的。明天还得去改第八版需求,还得去老周那理货,可他知道,自己已经不是昨天的那个陈码——昨天的他,认命;今天的他,改了命里一盏灯的闪。他闭上眼,那盏不闪的灯还在头顶亮着,安静的,像在替他守着一个,不能说的秘密。


第010章 回弹
第三样被改的,是那把三十块包邮的键盘。
第三排那个键,回弹涩,按下去顿半格才起来,像卡了根头发。他抠过,没用。他读那段码的"对象"属性表,键盘有"键程回弹曲线"——每次按下,弹簧给一个恢复力,力不足就涩。他把那把键的回弹曲线改了:恢复力补满,顿的那半格没了。
他按了一下。顺了。再按。还是顺。他连按十下,十下都利落,像换了把新键盘。他想起妈上条微信,三天前的"吃饭没"。他还没回。以前觉得回一句得编一句,现在他忽然想回:"吃了,挺好。"后面那句"我改了点东西"他咽了回去。有些话,写出来就收不回,像那行删不掉的码。
他笑着,敲了一句废话:"回弹好了。"字跳上屏幕,利落。
然后他愣住。他在笑。为一个三十块的键盘回弹变顺,他笑了。这笑里有点东西,不是开心,是那种"我居然能用一段外星码,修好自己生活里最小的一处别扭"的荒诞。荒诞完,是孤独——这件事,他没法跟任何人说。说了,没人信;信的,他不敢信对方。
他把键盘的事写进"验_005",附了一张按键录制图:改前每按有顿,改后曲线平。对照清楚。他把键盘翻过来,看那把键的轴。三十块的薄膜键盘,没有真轴,那点涩是膜老化。他刚才改的,不是膜,是"回弹曲线"这条规则——也就是说,哪怕换了把新键盘,只要对象登记的是"这把键盘的回弹",新的也顺。他忽然笑了一下,又收住。一支笔改到这份上,连"换新的"都多余了,旧的能被改成新的。他想起生活里多少别扭,本都可以这样改:卡顿的手机、漏水的龙头、迟到的地铁、改不完的需求——每一样,都有属性,都能被写进对象表。这个念头一冒,他后背凉了第五回:能改的太多,反而比不能改,更让人怕。他把键盘装回包里,背上,走出出租屋。楼道灯坏的那盏还坏着,他摸黑下楼,没像从前那样骂一句。从前他改不了灯,现在他改得了,只是没改这盏——有些别扭,他决定留着,留着才像活人的日子,全顺了,反倒不像自己。
周一去公司,他带了那把键盘。工位上,他敲代码,回弹顺得不像自己的手。胖子的空椅子还在,饮水机咕咚,荧光灯——公司这盏也闪,他没动,公共的,他学了乖。前排的林晓回头借胶带,他递过去,林晓瞥了眼他的屏幕:"你这需求第八版还没改完?"他说"快了"。林晓哦一声,转回去。没人注意到他的键盘变了,没人注意到他整个人底下,已经不一样。
午休,他点开老高的对话框,打了又删。他想说"我真的改了现实",删了;想说"一盏灯不闪了",删了;最后只发:"有空帮我看个东西?"老高回:"在忙,晚点。"他扣下手机。
他忽然很清楚地看见自己的处境:他手里有一支能改现实的笔,可这座城里的所有人,都活在那支笔够不到的迟钝里。他们说"你幻觉",因为他们看不见码;他们说"快改需求",因为他们的世界没有被改写过一行。他夹在中间,左边是那段只他懂的噪,右边是这群永远慢半拍的人,谁也够不到谁。
他想起台灯不闪的那夜,屋顶的光稳稳落他脸上。那时他以为改掉的是灯。现在他懂了,改掉的也是他自己——他再也没法,把这世界当成"本来就该这样"了。
下班,便利店夜班。老周问他货到了没,他说到了。老周没发现他有什么不同,还是那句"年轻人肯干"。陈码理货,一排排包装摆正,摆正了又被人拿乱。他看着那些被拿乱又摆正的包装,忽然觉得,自己就是那个被拿乱又摆正的包装之一,只是他手里,多了一支能摆正自己的笔。
他没说。他只是把货摆正,把键盘的回弹,在心里又按了一遍,顺的,利落的,像他终于,为自己按下了一处该有的顺。回家的路上,耳塞里那段噪又贴上来,一下一下,跟他心跳一个拍子。他忽然不那么孤独了——不是因为这城有人懂,是因为这支笔,认他。几百万人的城,只有他的耳朵接住了它,只有他的脑子读通了它,只有他的手,按下了第一处顺。他或许谁也告诉不了,可他,被一段来自远端的码,认领了。风灌进领口,凉,他没缩脖子。那杯温的水,那盏不闪的灯,那把顺的键,都在他身后的屋里,替他把这个世界,悄悄改写了一点点,而他,是那个写字的人。


(前10集完,全本120集可联系作者获取)
联系方式:
点击右侧"微信联系",加微信获取编剧联系方式。