一
林逸早上出門前有一個習慣,會把前一天晚上泡的茶倒掉。
不是什麼講究的茶,就是超市買的茶包,紅色鐵罐裝的那種。他每天晚上泡一杯放在書桌上,喝兩三口就忘了,隔天早上看到的時候茶已經涼透了,顏色深得發黑。他把它倒進水槽,看那團深色的水沿著不鏽鋼壁流下去。水槽的排水口有一小圈鏽漬,怎麼刷都刷不掉。
他的公寓在五樓,沒有電梯。樓梯間的燈有一盞壞了,三樓跟四樓之間那盞,壞了大概兩個月。他每次經過都想著要跟房東說,但每次到了樓下就忘了。
出門之前他拉開書桌抽屜拿悠遊卡。抽屜角落有一顆三號電池滾了一下。他不記得是什麼時候放進去的,也不記得是從什麼東西拆下來的。
七月的台北,早上八點已經很熱。他走到捷運站的時候後背已經有汗了。
林逸三十二歲,做提示詞工程快兩年。之前在一家內容公司當文案,寫社群貼文和產品描述,寫了四年。後來公司開始用 AI 生成初稿,他的工作從「寫」變成「改」,再後來變成「教 AI 怎麼寫」,再後來他跳槽到現在這間公司,職稱變成了 Prompt Engineer。
他有時候會跟朋友說他的工作是「AI 馴獸師」,朋友通常會笑一下然後換話題。
公司在南京東路的一棟商辦大樓裡,十四樓。辦公室不大,十幾個人,大部分是工程師。林逸算是裡面最「文科」的一個。他負責的專案叫 Project Mirror,一個自適應敘事引擎——用大型語言模型生成小說級的長篇文本。他的工作是測試模型的輸出品質,找出那些一看就是 AI 寫的地方,然後調整提示詞讓下一版更好。
他能在三秒內認出一段文字是 AI 生成的。句式的重複、比喻的安全牌、情緒弧線的過度工整——他把這些叫做「塑膠感」。他的工作就是把塑膠感磨掉。
二
今天下午他在測試模型的第五版輸出。
故事設定是他寫的:一個叫沈默的男人,三十出頭,在一間科技公司上班,某天開始懷疑自己的記憶被篡改了。心理驚悚短篇。
前四版都退了。第一版太平。第二版恐怖元素堆太急。第三版對話全是空話。第四版差一點就過了,但結尾有一整段「不是 A 而是 B」的連環轟炸,五次,他直接退回。
現在是第五版。他在提示詞裡加了硬規則:「禁止使用否定定義句型。角色心理狀態必須通過動作和感官呈現,不得直接陳述。」
模型跑了大概四十秒。文本開始輸出。
前面幾段還行。沈默在公寓裡醒來,去浴室刷牙,發現鏡子上有一道指痕,不是他留的。開始回想昨晚做了什麼。節奏是對的,細節顆粒度也可以——模型寫到沈默刷牙的時候注意到牙膏快用完了,他把管子從底部往上擠,擠出最後一點。這種細節是林逸花了很多輪才訓練出來的。
然後他讀到第三段。
「沈默走到廚房,把昨晚泡的茶倒掉。紅茶,便宜的那種,顏色已經深得發黑。茶水沿著不鏽鋼水槽壁流下去,排水口有一圈怎麼刷都刷不掉的鏽漬。」
林逸的手停了一下。
他重新讀了一遍。然後翻了一下提示詞文件。設定裡寫的是:「沈默的公寓位於城市邊緣,租屋,獨居。」沒有提到茶。沒有提到水槽。沒有提到鏽漬。
他想這大概是模型從訓練資料裡拉出來的生活細節。隨機的。巧合。這種事以前也有過——有一次模型寫了一個角色在便利商店買關東煮,挑了白蘿蔔和米血糕,剛好是他最常買的組合。他當時截了圖發到群組裡,大家笑了笑就過了。
他繼續往下讀。
沈默的公寓在五樓,沒有電梯。樓梯間有一盞壞掉的燈。
他把外帶咖啡放下了。冰塊早就融完了。
他翻回提示詞。沒有。沒有五樓。沒有壞燈。搜了對話紀錄,前四版也沒有。第五版自己長出來的。
三
第五版全文大約八千字。林逸花了四十分鐘讀完。
故事是好的。他得承認。是他測試以來最好的一版。沈默這個角色有了某種之前沒有的東西——一種不太整齊的、像是真的活著的質地。他會在不重要的時候想不重要的事,等紅綠燈的時候想起冰箱裡的蛋快過期了。恐懼不是一條上升的直線,有時候他甚至會覺得自己大驚小怪。
但問題是那些細節。
林逸讀完以後打開一個空白文件,開始列:
——沈默的公寓在五樓沒有電梯。 ——茶包,紅色鐵罐。 ——排水口鏽漬。 ——樓梯間的壞燈在三樓和四樓之間。 ——沈默左邊眉骨下面有一道疤。
寫到疤的時候他停了。
這個他確定不在提示詞裡。他翻了。不在。前四版裡也沒有。
他摸了一下自己的左眉骨。很淺的一條,不仔細看不到。小時候騎車摔的。
他關掉列表,去模型後台查訓練資料的來源標籤。如果模型抓到了他的個人資料——社群帳號、雲端檔案什麼的——那是資料汙染,要提報的。
他查了二十分鐘。標籤裡沒有任何指向他個人資料的來源。
他又打開第五版文本,這次不看故事,只看細節。每讀到一個跟自己的生活重疊的地方就用螢光筆標。讀完的時候文本上密密麻麻全是黃色。
他能列出來的重疊有十四處。不能確定的有七八處——比如沈默走路的時候會把鑰匙在口袋裡轉,林逸覺得自己好像也會,但又不完全確定,因為那是一種你不會主動注意的動作。
然後他讀到了一個讓他坐不住的段落。
故事後半段,沈默開始懷疑自己的記憶有問題。他想起一件小時候的事——他在外婆家打破了一樣東西,具體是什麼他記不清了,只記得外婆沒有生氣,倒是他媽很緊張,抓著他的手洗了很久。他記得肥皂的力道,但不記得媽媽說了什麼。
林逸盯著這段看了很久。
他沒有在提示詞裡寫過這個。他也沒有在任何公開的地方寫過這個。
但這是他的記憶。他六歲的時候在外婆家打破了一支溫度計。水銀珠滾在地上,他蹲著用手指去推。他媽看見以後抓著他的手用肥皂搓了很久。他記得力道。不記得她說了什麼。
模型寫的不完全一樣——沒有寫溫度計,寫的是「一樣東西」,故意模糊的。但骨頭是一樣的。力道、肥皂、外婆沒生氣、媽媽緊張。
林逸站起來去上了個廁所。
他在洗手台前面站了一會兒。鏡子裡的自己看起來跟平常一樣。他用手指摸了一下左眉骨的疤。
然後他回去了。
四
他關掉了 Project Mirror 的所有視窗。
跟主管說頭痛,提早走。主管看了他一眼,說好。
捷運回家。車廂裡擠,有人的手肘頂到他的腰。他沒有在意。
到家以後他沒有開電腦。他煮了一包泡麵,加了一顆蛋。吃到一半他把筷子放下了。蛋黃破了,在湯裡散開,他看著那片黃色的暈往外擴,想到了什麼又沒想到什麼。
他拿起手機打了他媽的電話。
響了三聲。他掛了。
他不知道自己要問什麼。問什麼?媽,我六歲的時候在外婆家打破溫度計,你記不記得?然後呢?她說記得,或者說不記得,然後呢?
他把泡麵吃完了。碗放在水槽裡。水龍頭開了沖了一下。
他坐在沙發上滑手機。滑了大概半小時,什麼都沒看進去。
他的腦子一直在轉那件事。但轉的方式不像在想,比較像是同一個畫面不斷地冒出來被他推掉又冒出來——螢幕上密密麻麻的螢光筆黃標,十四處重疊,沈默的疤跟他的疤在同一個位置,「一樣東西」,模型知道是溫度計但沒寫,為什麼不寫,資料來源標籤裡查不到,那它是從哪裡——
然後中間會插進完全不相干的念頭。他上禮拜訂的書到了沒。冷氣的濾網好像很久沒洗。他上次跟他媽吃飯是什麼時候,兩個禮拜前?三個禮拜?她那天穿什麼來著?
他想不起來。
他去浴室洗澡。蓮蓬頭的水壓不太夠。他站在水底下,水打在後背。
站了一會兒之後,有一個念頭從很底下的地方浮上來。不是一句完整的話。比較像是一個方向。
他花了好幾個月教模型怎麼寫得像人。餵了大量的範例、修改紀錄、批註——「這裡太假了」「真正的人不會這樣反應」「害怕的時候人不會用形容詞,會去摸口袋裡的東西」。
摸口袋裡的東西。他有這個習慣。鑰匙。
他教模型「人是什麼樣的」時候,他拿什麼當標準?他沒有去街上做田野調查。他沒有去訪談一百個人。他就是拿自己。他的反應、他的習慣、他的記憶碎片——他以為自己在教模型「人類的共性」,但其實他塞進去的全部都是他自己。
所以模型輸出的角色活動方式像他,記憶結構像他,連水槽的鏽漬都像他。因為模型的「人類」模板就是他。
水從後背流下去。他把臉對著蓮蓬頭沖了一下。
這個想法應該讓他放心。它解釋了一切。巧合、資料洩漏,全部不需要,原因就是這麼平淡:他一直在用自己的影子訓練一面鏡子,現在鏡子照出了他的樣子,他嚇到了。蠢不蠢。
他關了水。擦了身體。換了衣服。
但放心沒有來。
因為順著這個邏輯再往前走一步,會到一個他不想到的地方:如果模型生成的沈默,跟他之間的差異,到底是什麼?
他有身體。他剛才站在水底下能感覺到水溫。沈默不行。
但模型可以寫「他感覺到水溫」。寫出來的時候,讀起來跟真的一樣。
那個「一樣」重不重要?他說不上來。
他以前覺得這種問題是大學哲學課的無聊辯論。現在他站在浴室裡,頭髮還是溼的,不這樣覺得了。
他走到書桌前。拉開抽屜拿吹風機的時候碰到了那顆電池。電池在抽屜裡滾了一下。他看了它一眼。然後拿了吹風機。
五
睡前他習慣泡一杯茶放在書桌上。
他打開鐵罐,拿出茶包。愣了兩三秒。然後把茶包放回去,罐子蓋上。
今天不泡了。
不是因為什麼。
他躺在床上看天花板。天花板有一條裂縫,從角落延伸到靠近燈的地方。他每次躺在床上都會看到,每次都想「這條裂縫是不是又長了一點」,每次結論都是沒有。
他拿起手機。通話紀錄裡有一通他媽的未接來電——啊,他剛才撥了三聲掛掉,她回撥了。回撥的時間是四十七分鐘前。他沒有接到。大概是在洗澡。
他按了回撥。
響了兩聲,接了。
「喂?逸仔?你剛是不是打給我?」
「嗯,打錯了。沒事。」
「喔。你吃飯了嗎?」
「吃了。」
「吃什麼?」
「泡麵。」
「又泡麵。你不要每天吃泡麵,鈉——」
「好啦好啦,媽,我知道。」
「週末要不要回來?我滷了肉。」
他的手指在棉被上捏了一下。
「看看喔。」
「好啦。不回來也沒關係。我拍照給你看。」
掛了。
他盯著天花板。
他媽說「我拍照給你看」。她拍的照片永遠歪歪的,燈光偏黃,鏡頭上永遠有指紋。
他閉上眼睛。
那些東西是他的。泡麵、媽、滷肉照、鏡頭指紋、天花板裂縫、抽屜裡那顆不知道從哪來的電池。是他的。這些東西加在一起等於他的生活,他的生活等於他自己。
但如果把這些東西全部寫進一個文檔裡——每一個茶包每一條裂縫每一通電話——那個文檔跟他之間差了什麼?
他沒有答案。
他翻了個身,面對牆壁。牆壁上什麼都沒有。
他睡了。夢到什麼他第二天不記得了。
六
第二天。
他走進辦公室的時候同事跟他說早,他說早。工位上多了一杯飲料,隔壁工程師幫他帶的,紅茶拿鐵。他說了謝謝。
他打開 Project Mirror 的後台。第五版的文本還在那裡,螢光筆標記全部都在。他看了幾秒,然後把標記清掉了。
他打開提示詞文件,想了一會兒,什麼都沒改。
他在對話框裡輸入:「繼續。從沈默醒來的第二天開始。」
按了送出。
模型開始生成。沈默醒來。刷牙。出門。故事繼續。
林逸一邊讀一邊喝紅茶拿鐵。
讀了兩頁左右,他在一個段落上停了。模型寫了一段沈默的內心獨白。沈默覺得自己的生活太合理了——鏽漬就是鏽漬,壞燈就是壞燈,每一樣東西都有它存在的原因。沒有任何一個細節是多餘的。
「但真正的生活不是這樣的,」模型寫,「真正的生活裡有多餘的東西。有你說不出為什麼存在的東西。」
林逸讀完這段,把游標停在那裡。
他沒有標螢光筆。他繼續看下一段。
下午三點同事問他中午要不要一起訂便當。他說好。他點了雞腿飯。吃的時候有一粒飯掉在鍵盤上,他撿起來繼續吃。
五點半他存檔,關了所有視窗。站起來的時候腰有點酸。骨頭咔了一聲。
電梯口等電梯的時候有人在聊週末。電梯來了。一樓。
出了大樓,南京東路,太陽已經不那麼猛但還是熱。他走向捷運站。
口袋裡的鑰匙碰在一起,發出很輕的聲音。
他聽見了。
他沒有去想它。他在想晚上要不要去超市買點菜,泡麵吃太多了,他媽說的也對,鈉太高。買什麼好呢,冰箱裡好像還有兩顆蛋。
他進了捷運站。閘門逼了一聲。手扶梯往下。
月台上人不多,他站在他習慣的位置,靠柱子那一側。等了兩分鐘,車來了。他上車,抓住吊環。
車廂裡有一個女人在看手機,螢幕光照在她臉上。有一個穿制服的高中生在打瞌睡,頭一點一點的。有一個老先生提著一袋橘子。
列車動了。窗外是隧道壁,水泥跟管線。
林逸站在那裡。他回家以後會把鞋脫在門口,鞋子的擺法每天都差不多,左邊那隻會稍微歪一點。他會開冷氣,把溫度調到二十六度。他會站在冰箱前面想今天煮什麼,打開冰箱看一下,關上,再打開。
然後他會泡一杯茶。或者今天也許不泡。
列車過了一個彎,吊環晃了晃。他抓穩了。