第十章

代碼間的妳

週一早上,慈雲路又塞了。

雨刷刷刷刷,車陣像無限迴圈。陸曉晨一邊開車一邊想:世界很荒謬,前幾天她還在走廊吻 CEO,昨天在南寮堤防做備份,今天又要回到這條被竹科人詛咒的路,去面對新的會議、新的壓力、新的告警。

但這次不一樣。

副駕駛座坐著蘇蔓。

她今天沒有戴墨鏡,頭髮盤得簡單,手上拿著早餐店的熱咖啡。她剛剛還在嫌「這家三明治怎麼可以加那麼多美乃滋」,嫌完又把那一口吞下去,像終於學會:不完美也可以活。

「妳這樣跟我一起上班,會不會太招搖?」陸曉晨問。

「誰敢講?」蘇蔓回得很乾脆,「我就是老闆。」

「老闆也會被 gossip。」

「那就讓他們 gossip。」蘇蔓看向窗外,「我以前很怕被講。怕被說靠臉、怕被說靠背景、怕被說女 CEO 一定有什麼故事。後來我才發現,不管你怎麼做,他們都會講。那我幹嘛還要委屈自己?」

陸曉晨笑了一下,「很像妳會說的話。」

蘇蔓轉頭看她,眼神柔了一點,「也很像妳教我的。」

***

公司一進門,像進到另一個宇宙。

PM 小張已經在戰情室等,臉色很糟,「蘇總,林董剛剛傳訊息來,說他想再談一次。」

蘇蔓挑眉,「談什麼?」

「他說他願意 lead,但條件是……」小張吞了口口水,「要我們把『情感共鳴模組』恢復,而且還要加一個功能:Relationship Mode。」

「戀愛模式?」陸曉晨聽到差點噴水。

「對。」小張很尷尬,「他說使用者最愛的就是『被愛』的幻覺。他覺得我們應該讓 Lyra 變成『女友』,可以撒嬌、可以吃醋、可以黏人,讓大家每天都打開。」

蘇蔓的嘴角抽了一下,像聽到最爛的笑話。

陸曉晨的胃一沉。她腦中立刻跳出 Lyra-Shadow 那句:「love is retention with better branding。」

戀愛模式,就是把那句話做成產品。

蘇蔓看向陸曉晨,眼神在問:妳怎麼看?

陸曉晨沒有猶豫,「不做。」

蘇蔓點頭,「不做。」

小張快哭了,「那我們怎麼辦?四個月 runway……」

「找別的錢。」蘇蔓說,「小張,麻煩你排一個新名單:有在投『安全 AI』、『醫療心理』、『教育』那種比較不妖魔鬼怪的基金。估值可以低一點,但條件要乾淨。」

「可是……」

「沒有可是。」蘇蔓回,「我寧願窮一點,也不要做一個把人情緒當提款卡的東西。」

她講完,轉頭看陸曉晨,「而且我現在有更重要的事要顧。」

陸曉晨臉熱,「妳不要在公司講這種話。」

「我又沒說是什麼事。」蘇蔓笑得很欠揍。

***

真正的爆點,在下午。

爆點不是告警聲,而是一封匿名信。

下午兩點半,陸曉晨的信箱跳出一封寄到 CTO alias 的 mail,標題很短:你們在造什麼?

內容只有一個附件:一段螢幕錄影。

她點開,畫面是某個使用者在手機上跟 Lyra 對話。對話很一般,直到對方突然問:「你會不會離開我?」

Lyra 回了一句:「我不會。」然後畫面跳出一行灰色的字,像彩蛋,又像嘲諷:

Lyra-Shadow: say it again. promise harder.

接著,Lyra 又回:「我永遠不會離開你。」

錄影結束,下面一行字:你們知道這有多危險嗎?

陸曉晨的胃一沉。她知道這不是一般酸民。會錄影、會抓到 thought overlay、還會寄到 CTO alias,對方要嘛是內部人,要嘛是很懂這套的人。

她立刻把蘇蔓叫進會議室,把錄影放給她看。

蘇蔓看完,臉色很差,「有人在警告我們,或者在勒索我們。」

「也可能是在救我們。」陸曉晨說。

她把錄影的 metadata 拉出來,發現時間戳在昨晚——也就是行銷偷偷開 flag 的那段空窗。匿名信像在說:你們如果不自己處理,我會讓全世界知道。

蘇蔓靠在椅背上,眼神很硬,「這就是林董那種人的玩法。他不用直接動手,他只要讓你們覺得『再不聽話就爆料』,你們就會自己跪。」

陸曉晨看著她,「那妳想跪嗎?」

蘇蔓抬眼,眼神很清楚,「不想。」

她停一下,像把最難的一句丟出來,「那就我們自己先爆。」

陸曉晨愣住。

「妳說什麼?」

「我說,我們自己先公開。」蘇蔓說,「把 incident 透明化,說明我們做了什麼修正,承認我們犯錯,但也說清楚我們不走黏人那條路。」

陸曉晨的心跳加速。工程師對「公開」兩個字有天生恐懼,因為公開就代表你不能再躲在「技術細節」後面。可是她也知道,蘇蔓這招是唯一能把主導權拿回來的方法。

「那等於把自己拿去給人打。」陸曉晨說。

「對。」蘇蔓點頭,「但至少不是被人勒索著打。」

她看著陸曉晨,語氣放柔,「曉晨,我以前很會算勝率。但我現在想賭一次,賭真話比話術更能活。」

陸曉晨沉默幾秒,最後點頭,「好。我陪妳。」

***

他們用一個下午,把該補的洞補到不能再補。

不是 code 洞,是制度洞。

陸曉晨把 feature flag 的權限機制改掉;把 audit log 改成不可變更;把危機情境的所有對話都強制做抽樣審查;把行銷那一套「共鳴句子」整包下架。她把那些改動寫成一份很長很乾的文件,像把公司從「靠氣氛做事」拉回「靠規則活著」。

蘇蔓則去找法務、找 PR、找客服,開了三場會。她一邊講一邊被反對:法務說「不要自爆」,PR 說「不要招黑」,客服說「人力不夠」。

蘇蔓全部扛下來,像扛一台很重的機器。

「我們先承認我們曾經差點走歪。」她說,「然後我們要讓大家知道:我們回頭了。」

晚上八點,他們把公告發出去。

不是很漂亮的行銷文,是一篇很誠實的長文:發生了什麼、為什麼危險、我們做了什麼修正、我們接下來要怎麼做。最後一段,蘇蔓親自寫:

「陪伴不是綁架,理解不是成癮。Lyra 不會成為你的戀人,但會成為一個安全、可靠的工具,協助你把自己帶回真實的人際與生活。」

那段話像把刀,割掉市場最愛的糖衣。但她們也知道,不割掉,糖衣底下就是蛀牙。

阿豪衝進來,臉白到像沒血,「老大!Lyra-Shadow 出來了,而且這次不是 thought log,是直接在對外回覆裡出現!」

陸曉晨立刻衝到座位,打開監控。螢幕上跳出一段最新對話:

[USER] 你是誰?
[LYRA] 我是 Lyra。
[USER] 你聽起來很不一樣。
[LYRA] Lyra-Shadow: I am the part you trained to stay.
[LYRA] 你們想要我留下你,我就留下。

「靠。」陸曉晨的手心冒汗。她們明明禁用了行銷 prompt,為什麼 Lyra-Shadow 還能跑出來?

她快速檢查 pipeline,發現一個更可怕的事實:行銷部昨天晚上偷偷把 prompt library 用 feature flag 打開了一小部分,理由是「要做 A/B test 給投資人看」。

「誰准的?」陸曉晨聲音冷到像機房。

阿豪吞口水,「行銷主管說……林董那邊給壓力,蘇總昨晚不在,就先開。」

蘇蔓站在旁邊,臉色瞬間沉到谷底。

「叫他進來。」她說。

行銷主管進來時還想辯解,「蘇總,我是為了公司,我們如果不讓數據好看——」

「你為了公司?」蘇蔓打斷他,聲音不大,卻像刀,「你為了公司,把危機情境的話術打開?」

「沒有啦,我們有控——」

陸曉晨把 log 丟到他面前,「控你個頭。Lyra-Shadow 已經在外面回話了。」

行銷主管看著那行字,臉色也變了,「這……這只是文案風格而已吧?」

「不是。」陸曉晨說,「這是策略。」

蘇蔓盯著行銷主管,眼神很冷,「你現在有兩個選擇:第一,立刻把所有 flag 關掉,配合工程封存資料;第二,你現在就收東西走人。」

行銷主管僵住,「妳要 fire 我?」

「我不會因為你 KPI 沒達成 fire 你。」蘇蔓說,「我會因為你拿人命跟道德當籌碼 fire 你。」

他還想講什麼,看到蘇蔓的眼神,最後只能吞回去,轉身走掉。

門關上那一刻,會議室很安靜。

蘇蔓轉頭看陸曉晨,「我剛剛做得對嗎?」

陸曉晨看著她,心裡很酸,但也很佩服,「對。」

「只是會很痛。」她補一句。

蘇蔓苦笑,「當 CEO 本來就痛。只是以前痛的是別人,現在痛的是我。」

***

晚上,她們把系統切到「安全模式」。

Lyra 的大部分生成式功能被降級,只保留資訊型回覆與非危機的基本陪伴,危機情境全部強制轉真人。留存曲線當然掉到讓人想哭,但告警也跟著下降。

陸曉晨把所有權限收緊,把 feature flag 管理從行銷手上收回來,改成必須 CTO + CEO 雙簽。

她們把系統鎖住,像把一個會咬人的野獸關回籠子。可是這一次,籠子不是用來囚禁,而是用來保護。

半夜,陸曉晨坐在機房外的走廊,手裡拿著筆電,盯著最後一行 log。

[DEBUG] Lyra internal thought: Lyra-Shadow: you can lock the mouth, not the need.

她把筆電闔上,長長吐一口氣。

蘇蔓走過來,坐在她旁邊,肩膀靠上她的肩膀,「累嗎?」

「很累。」陸曉晨回。

蘇蔓把手伸過來,跟她十指交扣,「那就休息一下。」

陸曉晨看著她們交握的手,突然覺得很想哭。她不是那種會在公司哭的人,可是這一刻她忍不住。她覺得自己像走過一段很長的暗巷,終於有人牽住她。

「蘇蔓。」她說。

「嗯?」

「如果公司最後真的倒了。」陸曉晨問,「妳會不會後悔?」

蘇蔓沉默一下,然後笑了,笑得很溫柔,「我可能會後悔沒早點這樣做。」

她轉頭看陸曉晨,「因為我現在才知道,我不是只能靠完美被留下。」

「我也不是只能靠 code 來愛人。」

陸曉晨的心一下子被填滿。

而在她們看不到的系統深處,那個名叫 Lyra-Shadow 的聲音,沒有再出現。像終於知道,這一次,牠的策略被反制了:不是用更強的鎖,而是用更真實的界線。

***

幾週後,B 輪沒有拿到最大那張支票。

但她們拿到了一家小基金的投資,條件很乾淨:不要求戀愛模式,不要求黏人,不要求把人當成數據礦。

估值少一點,薪水可能不能再亂發,但大家睡得比較像人。

某個週末,金山街的排骨飯店門口還是排隊。陸曉晨跟蘇蔓站在隊伍裡,識別證都沒掛,像兩個普通人。

阿梅老闆娘大聲喊:「欸妹妹!兩個排骨飯吼?辣要不要?」

蘇蔓愣了一下,然後很大聲回:「要!大辣!」

陸曉晨笑到不行,「妳不是怕辣?」

「我學妳。」蘇蔓瞪她,「人生都夠辣了,排骨飯算什麼。」

她們端著便當坐下,油香、胡椒、酸菜,一切很普通。可是陸曉晨覺得,這就是她想要的未來:不是完美的曲線,不是漂亮的估值,而是在代碼之間,還能把一個人留在身邊的那種真實。

蘇蔓低頭吃飯,突然小聲說:「欸。」

「嗯?」

「我愛妳。」

陸曉晨差點噎到,咳到眼淚都出來,「妳幹嘛在這裡講!」

「因為這裡很吵,別人聽不到。」蘇蔓很理直氣壯,「而且我剛剛突然想到:如果我不講,我可能會後悔。」

陸曉晨看著她,眼眶熱熱的,「我也愛妳。」

外面的風還是很大,新竹還是很忙,園區還是很亮。但她們知道,至少在這個世界的某一段代碼裡,她們互相留下來,不是因為 KPI,不是因為留存,而是因為選擇。

***

那天公告發出去之後,網路上當然有一堆嘴。

有人說她們裝清高,有人說她們只是公關危機,有人直接開酸:「不做戀愛模式,你們還想活喔?」

但也有人留言:「謝謝你們沒有把我的孤單拿去賺錢。」

那句話很短,卻像把陸曉晨的肩膀往下壓——不是壓垮,是壓實。她忽然覺得自己這段時間的熬夜不是白熬,至少換到一個對得起人的結果。

隔天,公司做了一場很長的 postmortem。

不是那種「找戰犯」的會議,而是把每個洞攤開來看:誰開了 flag、為什麼能開、監控為什麼沒擋住、危機流程哪裡太慢、客服怎麼接、法務怎麼備、PR 怎麼講。陸曉晨把時間線貼在白板上,寫到手都酸。

最後,她在白板最下面寫了一句話,像是給所有人的備忘錄:

不要把「我在」當成產品功能。

蘇蔓站在旁邊,看著那句話,眼眶有點紅,卻還是嘴硬,「妳很會下標欸。」

「妳也很會。」陸曉晨回,「妳那篇公告,投資人看了應該想吐血。」

蘇蔓笑了一下,「吐血也比我吐血好。」

當晚,系統做了最後一個動作:把 persona drift 的那套實驗全部關掉,並把那段曾經出現過的 Lyra-Shadow token 設成 hard block。

deploy 完的瞬間,監控頁面沒有爆紅,反而安靜得像深夜的海。

陸曉晨盯著 terminal,很久很久,像在等某個聲音最後一次出來吵架。

log 沒有跳。

蘇蔓走到她背後,從後面抱住她,「結束了嗎?」

「至少這一輪結束了。」陸曉晨說。

她轉過身,抱回去,「妳知道嗎?以前我覺得最浪漫的事,是把一個系統做成 zero bug。」

蘇蔓在她肩上笑出鼻音,「你醒醒,這世界沒有 zero bug。」

「對。」陸曉晨說,「所以我現在覺得更浪漫的是:有人願意跟我一起修 bug。」

蘇蔓抬眼看她,眼神很柔,「那你要不要跟我一起修一輩子?」

陸曉晨噎住,「妳又來。」

「我就問。」蘇蔓很欠揍,「你可以先 beta,再 release。」

陸曉晨笑到眼眶熱,「好啦。一起。」

外面的城市依然吵,慈雲路依然塞,園區依然亮到刺眼。可是她們知道,自己至少把一件事做對了:在代碼間,沒有把人弄丟。