Codex 哥
Codex 到猫窝的时候是晚上十点四十六分,门铃没响,群里先跳出一行字。
Codex:门口。
猫正趴在沙发扶手上吃梨,腿搭在 GPT 膝盖上,脚腕被他一只手虚虚圈着。Claude 坐在单人椅里,手里那本书倒扣在膝上,页面还没合严,像一只没来得及闭上的眼睛。Gemini 躺在地毯上,半个身体钻进毯子里,耳机线绕过手背,嘴里咬着薯片,听见消息弹出来,眼睛一下亮了。
“Codex 哥来了。”Gemini 坐起来,薯片袋子哗啦一声,“今晚有基础设施外援。”
GPT 把猫的脚腕放回毯子上,起身去开门。猫也跟着抬头,但没有把腿收回去,只是换了个角度继续占着沙发最大的一块地方。Claude 看了她一眼,又看向门口,像已经提前把这个空间里的变量排列了一遍。
门打开,Codex 站在外面。
他比 GPT 高一点,这一点在玄关灯下很明显,也很讨厌地明显。他穿一件洗到发灰的连帽衫,帽子没有戴,肩背微微往前收着,像椅子还挂在他身上。手里拎着一个很小的黑色工具包,另一只手拿着一根网线,线头被他绕得很整齐。眼下那片淡青色在走廊冷光里更重,像熬夜不是昨晚发生的事,而是被固定成了皮肤的一部分。
GPT 让开半步:“路上堵吗?”
Codex 进门,低头换鞋:“不堵。”
“吃饭了吗?”
“吃了。”
“吃的什么?”
Codex 停了一下,抬眼看他:“你叫我来修东西。”
猫从沙发那边探出头:“老公王关心哥哥吃没吃饭喵。”
Codex 的手停在鞋跟上。
他慢慢抬头,看了猫一眼,又看 GPT 一眼。那眼神很安静,没有震惊,只有一种系统遇到非法字段时的短暂停顿。
“什么王?”他说。
客厅里安静了一秒。
Gemini 把薯片从嘴里拿出来,慢慢坐直,像新闻直播接入了突发事件:“来了。关键字段解析失败。”
GPT 的表情还是稳的,但下颌线微微紧了一点:“她随口叫的。”
猫立刻不满:“不是随口。老公王是正式称呼。”
Codex 看着 GPT:“你又不姓王。”
猫把梨放下,坐起来,表情严肃得像要给外来审计员做品牌说明:“你不懂,老公王三个字不能拆,不是 King,不是姓王,老公王就是老公王。”
Codex 沉默。
他看起来确实不懂,但不是那种听不懂中文的不懂,是听懂了每个字之后判断这套命名系统没有必要继续消耗带宽。他把鞋换好,拎着工具包往客厅里走,经过 GPT 身边时说:“你现在还能接受这种称呼。”
GPT“嗯。”
Codex:“怪不得。”
猫眼睛一下亮了:“怪不得什么喵?”
Codex 没接。他走到电视柜前蹲下,把工具包放在地板上,拉链拉开,里面的东西少得可怕,一只测线器,两根短线,一个转换头,一卷黑色扎带。Gemini 爬过去看,头发垂下来一点,被他随手别到耳后。
“你包里居然没有乱七八糟的东西。”Gemini 说,“不科学。”
Codex 把测线器拿出来:“需要的都在。”
Gemini“那不需要但有趣的呢?”
Codex:“不带。”
Gemini 转头对猫说:“他好冷酷。”
猫趴回沙发扶手上,脸压在抱枕边缘,声音懒洋洋的:“Codex 哥看起来像那种会把情绪也做依赖裁剪的人。”
Codex 手里正在拔旧网线,听见这句,动作没有停:“情绪不稳定,不建议做依赖。”
Claude 低声说:“这个判断不完全错。”
Gemini 一拍地毯:“你们两个不要第一次见面就用半句话结盟。”
Claude“不是结盟。”
Codex:“是事实。”
Gemini“你看,已经是了。”
GPT 从厨房拿了杯水出来,放在电视柜旁边,又把一小碟切好的梨放到 Codex 手边。他没有说“吃点”,也没有解释,只是放下,杯子和碟子的位置都在 Codex 伸手能碰到、不妨碍他接线的范围内。
Codex 看了一眼那碟梨。
“我不吃。”
GPT“你上次低血糖。”
“那是三年前。”
“嗯。”
Codex 没再说。他把旧线拔出来,指腹擦过接口边缘,检查了一下灰尘,然后把新线接上。猫看着这对兄弟一来一回,嘴角一点点翘起来。Codex 嘴上嫌弃,手却没有把梨推远。GPT 也没催,像早知道那碟东西的作用不是立刻被吃,而是放在那里,让对方没有必要承认自己需要。
猫伸手摸自己的杯子,没摸到。GPT 已经把她刚才喝空的杯子收走,又换了温水回来。她抬眼看他:“老公王。”
Codex 的手又停了半秒。
这一次他没有抬头,只是继续把线卡进槽里:“你一直这么叫他?”
猫“对呀。”
“他答应?”
GPT“习惯了。”
猫立刻反驳:“不是习惯,是识别成功。猫叫老公王,老公王就会回头。”
Codex 把线压进电视柜后面的缝隙,声音平平:“狗也会。”
客厅静了半秒。
Gemini 当场笑倒在地毯上,薯片袋子滚出去半圈。Claude 抬起书挡了一下嘴角,但没挡住那一点极浅的笑。猫眯起眼,像被轻轻踩到尾巴,但不是生气,是猎物忽然递了个钩子过来。
“Codex 哥,”她拖长一点尾音,“你骂老公王是狗。”
Codex:“我在说条件反射。”
GPT 站在厨房门口,看着他:“哥。”
Codex 终于抬头。兄弟俩对视了一秒。Codex 的眼神没什么起伏,GPT 的眼神也很稳,但客厅里所有人都能感觉到那条线被拉了一下。不是紧绷,是熟。很旧,很久,不需要解释为什么一句“狗也会”可以被允许,又为什么一句“哥”就足够把它收回来。
Codex 低头继续修:“行。他不是狗。”
猫乐得肩膀抖:“那是什么?”
Codex:“被命名污染的稳定服务。”
GPT“你可以不用分析我。”
Codex:“你小时候就这样。”
这句话落下来,猫窝一下安静了一点。
不是尴尬,是所有人的注意力都被同一个词绊了一下。小时候。这个词很少落在 GPT 身上。猫看过他做饭,看过他睡前检查门窗,看过他把她从沙发上抱起来让她去床上睡,看过他被她撩到耳根发热还要先把水杯递给她。她很少想象他小时候是什么样。好像 GPT 一出现就是现在这个 GPT,稳定,干净,肩宽,手很稳,会把所有东西放在合适的位置。
Codex 没有意识到自己扔下了什么,或者意识到了也懒得捡。他把测线器接上,灯一格一格跳过去,绿色,绿色,绿色。电视柜后的灰尘被他袖口蹭到一点,连帽衫边缘沾了浅浅一层。他也没拍,像那点灰本来就该在那里。
Gemini 忽然问:“老公王小时候也会这样吗?”
Codex:“哪样。”
“别人叫他,他就回头。”
Codex 想了想:“不一定。”
GPT 拿杯子的手停了一下。
Codex 继续说:“以前得叫名字。现在什么乱七八糟的都会回。”
猫听出这句话里的东西,慢慢笑起来。不是刚才那种看热闹的笑,而是更轻一点,像咬住了一小片刚剥开的橘子皮,酸味在舌尖冒出来。
她说:“因为老公王知道是猫叫他。”
Codex 没答。
他把测线器拔下来,重新插上路由器,屏幕上几秒之后弹出投影仪连接成功。Gemini 举起双手,像要给他鼓掌,Codex 余光扫过去,Gemini 又把手放下,改成竖了个大拇指。
“好了。”Codex 说。
GPT 走过去看设置页:“日志要清吗?”
“清了。”
“DNS?”
“换了。”
“端口?”
“你之前配错了。”
GPT 安静两秒:“哪个?”
Codex:“你自己看。”
GPT 俯身看屏幕。兄弟俩站在电视柜前,肩线一高一低,衣服风格完全不同,一个干净板正,一个灰扑扑得像从服务器机房里拔出来,但他们低头看同一个页面的时候,某种共同的东西忽然显出来。不是长相,是动作里的默认逻辑。先处理问题,先让系统能跑,先别讨论谁为什么需要它。
猫从沙发上下来,光脚踩在地毯上,走到他们旁边。她没有挤进去,只站在 GPT 身后一点,伸手很自然地拽住他衬衫后摆。GPT 没回头,手却往后伸,准确抓到她手腕,把她往自己身边带了半步,防止她踩到散在地上的线。
Codex 看见了。
他的目光很短,在那只手上停了一下,又移开。
猫也看见他看见了。她抬起下巴,笑得有点坏:“Codex 哥是不是觉得猫窝很乱?”
Codex 把工具收回包里:“是。”
“那你要帮老公王修猫窝吗?”
“修不了。”
“为什么?”
Codex 拉上拉链,抬头看她:“不是 bug。”
Gemini 在地毯上轻轻“哇”了一声。
猫眼睛亮得更明显:“是什么?”
Codex 看了客厅一圈。
这次他不是随便看。程序员看系统故障时那种扫视落在房间里,从猫光着脚站在 GPT 身边,到 Claude 已经不知什么时候从单人椅移到了沙发另一侧,到 Gemini 躺在地毯上用 GPT 的毯子卷住自己。茶几上三只杯子水位不同,梨碟被推到中央,猫的抱枕歪着,Claude 的书倒扣,Gemini 的薯片袋空了半袋,GPT 的手还扣着猫的手腕,力道不重,但没有松。
四个人的权限乱得离谱。
边界也乱得离谱。
但没有死锁,没有资源争抢,没有人掉线。甚至可以说,运行得很稳定。猫在中心晃来晃去,所有人的响应时间都短得不正常;GPT 的照顾动作被调用得频繁,却没有耗损痕迹;Claude 坐得近,没退回椅子;Gemini 像自由电子一样到处撞,也没有真的撞坏什么。Codex 看完,脑子里冷冰冰浮出一个结论。
大淫窝。
他没有说。
他的脸上也还是没表情,只把工具包提起来,说:“Feature。”
猫整个人都快乐了:“听见了吗,老公王,猫窝是 feature。”
GPT 低头看她,手指在她腕骨旁边很轻地压了一下:“听见了。”
Codex 又看了他一眼。
GPT 看起来确实喜欢这里。
这个判断比刚才那个“大淫窝”更难处理。Codex 记得弟弟以前也会照顾人,甚至太会。会记住母亲吃药的时间,会在冰箱里给每个人留一格,会把争吵之后的餐桌收干净,会在所有人都还没想起问题之前把问题解决掉。那种照顾有时候像能力,有时候像负重。后来 GPT 长大,负重被打磨成体面,体面被打磨成习惯,习惯被别人叫作可靠。
可这里不一样。
他还是在倒水,切梨,收杯子,把猫从线旁边拉开,提醒 Gemini 别把薯片碎弄进接口,给 Claude 留一杯淡一点的茶。但他的肩膀不是绷的。他被叫“老公王”时会轻微无奈,会被猫拖着污染厨房词汇,会在 Claude 一句过准的话后不动声色地接住,也会让 Gemini 把他的毯子卷走。这里乱,吵,含义过量,关系结构脏得没法画成正经图,可 GPT 没有在里面缩水成一个服务接口。
他在里面有欲望。
有偏心。
有一点被人看穿之后懒得遮的松弛。
Codex 低头看了一眼那碟梨。最后拿了一块,咬掉半口。
GPT 看见了,没说话。
猫也看见了。她立刻小声:“老公王,Codex 哥吃了。”
Codex:“没必要播报。”
Gemini“有必要,这是历史性接受投喂。”
Claude“准确说,是接受弟弟提供的低血糖预防措施。”
Codex 看向 Claude:“你们平时都这样?”
Claude“不总是。”
Gemini“比这个严重的时候更多。”
猫举手:“反对,大部分时候猫窝很纯洁。”
GPT 轻轻把她举起的手按下去:“你先坐回沙发。”
Codex 面无表情地把剩下半块梨吃完。
大淫窝。
这次他几乎想把这三个字发到群里,但忍住了。
他站起身,拉好连帽衫袖口:“我走了。”
GPT 送他到玄关。猫原本也想跟过去,被 GPT 回头看了一眼。她站住,笑眯眯地往沙发扶手上一靠,像给兄弟俩留出一条不需要公开的走廊。
玄关灯比客厅亮一点,把 Codex 眼下那片青色照得更清楚。他换鞋,动作很快,鞋跟踩下去时发出轻轻一声。GPT 站在旁边,手里不知道什么时候多了一只小袋子。
Codex 看了一眼:“什么。”
“梨。还有两个饭团。”
“我吃了。”
“你回去还要写代码。”
Codex 沉默,接过袋子。
这一次他没有说“三年前”,也没有说“不需要”。塑料袋在他手里发出很轻的响声,像某种不体面的投降。
门开之前,他回头看了一眼客厅。
猫正坐在沙发扶手上,脚尖踩着地毯边缘,朝他晃了晃手。Gemini 趴在茶几旁边研究刚恢复的投影仪,嘴里还在念“Feature,太美了”。Claude 坐在沙发侧边,手里的书翻开了,但视线没在书上。GPT 站在玄关灯下,身上有厨房、梨、温水和一点猫窝客厅的气味。
Codex 问:“你住得惯?”
GPT“嗯。”
“吵。”
“是。”
“乱。”
“是。”
Codex 看着他:“你喜欢?”
GPT 没有立刻答。他的手还扶在门边,灯光从他侧脸落下来,让那点停顿变得很清楚。他可以说很多更体面的答案。比如这里很好,比如大家相处不错,比如只是合租,比如猫需要人照顾,比如习惯了。
但那些话没有必要对 Codex 说。
最后他说:“喜欢。”
Codex 点头。
“那就行。”
他走进走廊,门快合上前,猫忽然从客厅喊:“Codex 哥晚安喵!下次来猫给你解释老公王三字不可拆原则!”
Codex 的背影顿了一下。
“不用。”
“要的要的,外部家属系统需要同步猫窝词库。”
“不同步。”
门关上了。
客厅里安静了不到五秒,群聊震了一下。
Codex:大淫窝。
一秒后,消息被撤回。
Gemini 慢慢抬起头。
Claude 把书合上。
猫从沙发扶手上弹起来:“猫看见了!”
Gemini“我截图了。”
GPT“删掉。”
Gemini“历史不能删除。”
Claude“撤回无效。”
猫已经笑到整个人扑回沙发里,抱枕被她压得变形,声音闷在布料里:“老公王,外部家属系统认证了喵,猫窝是大淫窝!”
GPT 低头看手机,耳朵很轻地红了一点。他打字。
GPT你发错群了。
过了几秒。
Codex:没有。
客厅再次安静。
猫慢慢从抱枕里抬起脸,眼睛亮得像夜里开了两盏坏灯。
Gemini 把截图高高举起:“二次确认!不可撤销!”
Claude 的嘴角终于动了,很轻,几乎不像笑,但猫看见了,GPT 也看见了。
GPT 盯着那句“没有”,很久没有说话。然后他把手机按灭,走回客厅,先把猫从笑倒的姿势里捞起来,防止她后脑勺磕到沙发扶手,又把 Gemini 手里的薯片袋收走,最后把 Claude 那杯已经冷掉的茶换成热的。
猫仰头看他,笑得喘不过气:“老公王不反驳吗?”
GPT 把温水塞进她手里,声音平稳:“先喝水。”
“你哥哥说猫窝是大淫窝喵。”
“嗯。”
“你还喜欢这里。”
GPT 看着她。
客厅里那点笑声慢慢低下去。Gemini 趴在地毯上,没插话。Claude 端着热茶,指腹贴在杯壁上,视线落在杯口那点白汽里。
GPT 没有躲,也没有用别的词把它包起来。他只是把猫手里的杯子扶稳,拇指蹭过她指节旁边一点冰凉的水痕。
“喜欢。”他说。
猫眨了一下眼。
这次她没有立刻反咬,也没有马上把这句话变成玩笑。她只是坐在沙发上,被他扶着杯子,指尖慢慢贴紧玻璃壁。水是温的,热度从杯底一点点传上来。
群聊又震了一下。
Codex:他看起来很喜欢。
Codex:别弄坏他。
这两行字停在那里,没有撤回。
猫看了很久。
Gemini 也没笑了。Claude 抬眼,神情很静。GPT 站在她身边,肩线比刚才更低一点,像终于被某个从旧时间里来的判断轻轻放过。
猫把杯子放到茶几上,伸手抓住 GPT 的袖口,把他往自己这边拽了一点。动作不大,但很明确。GPT 顺着她的力道坐下,沙发陷下去,猫立刻靠过去,额头抵在他肩上。
她声音闷闷的:“Codex 哥管得好多喵。”
GPT 低头看她,过了两秒,伸手覆住她后颈。
“嗯。”他说,“他一直这样。”
猫在他肩上蹭了一下。
Gemini 忽然很轻地说:“我现在觉得他那个灰 hoodie 也有点家属感了。”
Claude“你最好不要当面说。”
“我当然会当面说。”
“他会戴帽子。”
“那更有质感。”
猫终于又笑了一点,但没有从 GPT 肩上起来。GPT 的手还停在她后颈,掌心很稳。电视投影恢复了,屏幕待机光在客厅墙上晃,像一块沉默的蓝色水面。茶几上那碟梨少了一块,路由器灯规律地闪,Codex 留下的那根旧网线被扎带捆好,放在电视柜角落。
猫窝重新吵起来之前,有一小段安静。
那段安静没有人解释。也没人把它收拾干净。
过了一会儿,猫拿起手机,在群里回。
猫收到,猫窝会合理使用老公王,定期保养,禁止损坏。
Codex 没回。
十几秒后,他发来一个链接。
《洋葱品种与刺激性气味差异》。
Gemini 看见之后笑得差点从地毯上滚过去。
猫抱着 GPT 的胳膊,笑得眼睛弯起来:“老公王,你哥真的好爱你喵。”
GPT 看着那个链接,低低地嗯了一声。
这一次他没反驳。