第 1 章
第一章:#include <family.h>
沈靖晞覺得自己上輩子一定得罪了什麼負責分配浴室的神明。
七點十五分,她站在浴室門口,手裡拿著兩條毛巾、一管兒童牙膏、以及一顆快要碎掉的耐心。鏡子上用沐浴乳畫了一隻歪歪扭扭的恐龍,恐龍旁邊的泡泡還在往下滑。
「晏秋,鏡子不是你的畫布。」
弟弟蹲在洗手台旁邊,仰頭看著自己的傑作,非常滿意:「可是媽媽你看,這是暴龍。」
「暴龍不長這樣。」哥哥晏禾站在旁邊,牙刷插在嘴裡,語氣像一個已經退休的古生物學家。但他伸手在恐龍頭上加了兩筆——翅膀。
「暴龍沒有翅膀。」沈靖晞說。
「這是變異種。」晏禾面不改色。
她深呼吸。早上七點十五分,她的浴室裡有一隻會飛的沐浴乳暴龍。這很正常。這是她的日常。
四個人的浴室動線是一場微型戰爭:晏秋洗手的時候一定會把水甩到鏡子上,晏禾刷牙的泡泡一定會掉在弟弟的拖鞋裡,而沈靖晞在兩個孩子之間擠來擠去,試圖在不踩到任何人的前提下擠出一條通往洗手台的路。
從浴室出來的時候,餐桌上已經擺好了早餐。吐司、煎蛋、一小碟醬瓜、昨天剩的味噌湯。程諳遠坐在餐桌後面的位子,筷子已經拿起來了,但一直沒動——他在看手機。螢幕上是一排密密麻麻的英文字。
「程諳遠,吃飯。」
「嗯,等一下。」他沒抬頭。
她已經懶得計較「等一下」到底是三十秒還是三分鐘。兩個兒子爬上椅子,晏秋立刻把筷子伸向煎蛋,晏禾默默把自己的蛋推遠了一點——他知道弟弟會搶。
沈靖晞坐下來,正要夾菜,碗裡多了兩塊滷肉。她抬頭。程諳遠的筷子已經縮回去了,眼睛還盯著手機,臉上一派無辜,像什麼都沒發生。
她看了他一秒。他假裝在咀嚼一個其實還沒夾到嘴裡的東西。
她低頭,把滷肉吃了。嘴角彎了一下,很快壓下去。
晏秋不知道什麼時候跑進了書房。
沈靖晞端著兩杯水經過的時候,看到的畫面是:她丈夫坐在那張不知道花了多少錢的人體工學椅上,雙螢幕都亮著,左邊是一堆她看不懂的深色背景加彩色字母,右邊是一個對話框。晏秋趴在他爸的扶手上,臉幾乎貼上了螢幕。
「你在幹嘛?」她把水放在桌上,順手把杯子推離滷肉乾的便利貼區域。桌上黏了七八張便利貼,有的寫著英文,有的畫著箭頭和方塊,全都是她解讀不了的外星語。
「我在調 Agent 的最後一個模組。」程諳遠沒有回頭,手指在鍵盤上飛快地打著什麼。機械鍵盤的噠噠聲在小房間裡異常清脆,像一群迷你啄木鳥在趕工。
「又在搞那些有的沒的。」她靠在門框上,看著他的後腦勺。
他終於轉過來,眼睛亮得不正常。她認得這種亮法——上次他發現一個什麼「開源框架」的時候也是這個表情,像一個撿到寶的小孩。
「你過來看一下。」他招手,「這個真的很厲害,我跟你講——」
「嗯嗯。」
「它的底層是 RAG 架構,就是Retrieval-Augmented Generation,簡單來說就是——」
「嗯。」
「——我把所有的保單條款、家裡的重要文件、還有一些生活知識都灌進去了,它可以根據你的問題去檢索最相關的段落,然後用自然語言回答你——」
她的腦子在「Retrieval」那個字的時候就已經自動關機了。她知道自己的表情正在從「禮貌性傾聽」滑向「魂飛天外」,但她控制不住。他每次講到技術就像一台被按了加速鍵的錄音機,而她是一個沒有快轉功能的播放器。
「你有在聽嗎?」
「有啊。」她誠懇地點頭。「你剛剛說⋯⋯那個⋯⋯人工什麼的很厲害。」
程諳遠的表情像一杯被倒了醬油的拿鐵。
「好啦好啦,」她舉手投降,「我真的聽不懂,你不要逼我。」
他沉默了兩秒,然後嘆了一口氣。不是生氣的嘆氣,是「好吧,我早該知道」的嘆氣。
「好啦,我設計得很簡單。」他的聲音放軟了,「就是一個對話框,你打字進去,它回答你。跟LINE聊天一樣。你到時候一定會用。」
「到時候?什麼時候?」
他張了張嘴,像是要說什麼,但最後只是笑了一下:「就⋯⋯需要的時候。」
「蛤,講話都不講清楚——」
「爸,恐龍為什麼會絕種?」
兩個人同時轉頭。晏秋不知道什麼時候爬上了椅子,手指在鍵盤上亂戳,螢幕上的對話框裡出現了一串亂碼。他抬頭看爸爸,理直氣壯:「我要問恐龍。」程諳遠笑了一聲,把亂碼刪掉,幫他打了那個問題。三秒後,Agent 開始回覆——語氣平穩、條理分明,從六千五百萬年前的小行星撞擊講到氣候變遷,最後補了一句:「不過有些科學家認為,暴龍的後代其實活到了今天——就是你在公園裡看到的鴿子喔。」
沈靖晞看了一眼螢幕,又看了一眼她丈夫。
程諳遠的表情很複雜。他花了三個月設計的系統,他老婆眼神放空,他五歲的兒子三秒就上手了。
「⋯⋯至少有人會用。」他說。
晏禾不知道什麼時候也出現在門口,探頭看了一眼螢幕,面無表情地評論:「暴龍本來就不會飛。」
凌晨一點四十二分。公寓安靜得像一個正在存檔的硬碟。
書房裡只亮著兩個螢幕和一盞忘了什麼時候打開的小檯燈。程諳遠的咖啡已經冷透了,杯緣有一圈乾掉的褐色痕跡。桌上那個晏秋送的扭蛋公仔——一隻歪嘴的柴犬——安靜地守在鍵盤旁邊,塑膠的眼睛反射著螢幕的藍光。
他在寫 Prompt。
螢幕上的游標一閃一閃,段落已經寫了很長。他的手指偶爾停頓,不是在想措辭,是在想她。想她會怎麼問、想她聽不懂的時候會怎麼反應、想她最容易在哪個環節卡住。
# 保險知識庫 - 回覆風格設定
# 使用者是非專業人士,對保險和金融術語極度不熟悉
# 所有回答必須用日常口語,不使用專業術語
# 如果必須使用術語,立刻附上一句「白話說就是___」
# 一次只給一個選項或建議,不要列清單轟炸她
# 她做決定需要時間,不要催
他盯著最後一行看了幾秒,把「不要催」刪掉,重新打了一行:
# 她會猶豫,這不是缺點。給她空間
然後他切到另一個檔案。這個檔案更長,結構更複雜——是延時觸發系統的設定。他在幾個日期後面填入了對應的條件判斷。如果觸發日期到了但沒有人使用,就沈默。如果有人使用了,才送出。他不想讓一段話在空蕩蕩的房間裡自言自語。
他在一段觸發條件上方寫了一行註解:
# 如果她走到這一步,代表她比我想的還勇敢
寫完之後他靠回椅背,摘下眼鏡揉了揉眼睛。螢幕上的字在他模糊的視線裡變成一團團發光的碎片——每一團都是他對那個女人的理解。十年了。十年的觀察、十年的碎念、十年的「你又在搞那些有的沒的」。他全記得。他不知道怎麼說出來,所以他寫成了程式。
他把眼鏡重新戴上,按下了存檔。
書房外面的走廊沒有聲音。他知道她睡了,兩個小的也睡了。這間三十坪的公寓在深夜像一艘安靜的船,只有他還醒著,坐在引擎室裡確認每一根管線都接好了。
他不覺得這是犧牲。他覺得這是理所當然。
清晨五點半。天還沒完全亮。
程諳遠把筆電闔上,背包已經在門口放好了——今天要去東部出差,跟一個客戶談專案。他換了鞋,手放在門把上。
他回頭。
客廳還是暗的。餐桌上有昨晚沒收的蠟筆,沙發靠墊歪成一個奇怪的角度,茶几上一本翻到一半的恐龍圖鑑。廚房的方向傳來冰箱運轉的嗡嗡聲。
她在裡面的某個房間裡睡著。她的頭髮一定亂成一團。晏秋一定踢了被子。晏禾一定抱著那隻已經洗到變形的兔子玩偶。
這個家。
他看了兩秒。或者三秒。沒有人看見他在看。
然後他轉身,打開門,走了出去。
門在他身後輕輕合上。鎖舌咬進門框的聲音很小,像一句沒有說出口的話。