黃敬是一位再普通不過的程式設計師,二十九歲,剛過完生日,在台北某間中型軟體公司上班,寫的是那些用戶永遠看不到、卻又永遠不能錯的後端服務。他的生活簡單到幾乎可以用crontab來排程:早上八點起床,九點前打卡,十二點外送便當,下午寫code,晚上加班,十點前關機回家,凌晨再爬起來偷偷練自己的side project。
他沒有人際焦慮,但也沒有社交快樂。他討厭Slack的通知聲,卻比誰都還在乎Merge Conflict的紅色提示。他不覺得這樣生活有什麼問題,直到那個晚上——他遇見了那個帳號。
那天是星期三,雨下得很大,他像往常一樣加班到十點半,等雨稍微小一點才戴上耳機走回宿舍。進門的那刻,他照例脫下濕透的鞋,打開電腦,習慣性地打開GitHub,檢查自己那個沒人看的side project:GhostTalk,一個匿名即時聊天的Web App,裡面沒什麼人,偶爾有人註冊,也只是玩一下就走。但他還是每天修一點bug,像是在修一座早已廢棄的公園裡那張沒人坐過的長椅。
他一邊啃著滷味,一邊看著他昨天修的API還算穩定,心情不錯。就在他準備push最後一段commit時,GitHub通知出現了。一封Pull Request。
「Fix memory leak and predictive failure at /chat/handler.js」
提交者的名字叫:sigmaxghost。
他楞了一下。他從沒對外公開這個專案,甚至README都沒寫完。這個sigmaxghost,從哪裡發現這個repo的?而且,他真的修了那段記憶體洩漏的問題嗎?黃敬看著PR裡的diff,心跳開始加速。
那是一段他自己都沒發現的潛在bug。更詭異的是,sigmaxghost不僅修掉了bug,還加了一段預測性機制,能提前三次API出錯前自動重啟chat handler,這種寫法他從沒見過,卻完美得令人毛骨悚然。
他點開sigmaxghost的頁面。沒有大頭貼,沒有bio,只有一個公開repo,裡面是一個叫做deadlang的語言框架,看起來像是某種基於Rust與Lua混合的語言。他看不懂那個語言,但那份README的第一句話讓他背脊發涼。
「你在這裡寫下的每一行,都會有人在另一個世界讀到。」
黃敬忍不住笑出聲,覺得自己可能太累了。但他還是回到那封Pull Request,決定留言:「你是怎麼發現這個repo的?」然後他merge了那段代碼。
接下來的三天,什麼也沒發生。他像往常一樣上班、加班、回家。直到週末,他打算再開GhostTalk來更新幾個UI細節時,發現有三個新用戶註冊。
他按開用戶紀錄,發現這三個人——都是空白資料,沒有Email,沒有IP,只有一個共通點:他們的帳號建立時間精準地在凌晨三點三十三分。
而聊天室裡,只留下了一句訊息:「我們很喜歡你寫的程式,尤其是你睡著的時候寫的那段。」
他開始慌了。他沒有夢遊寫程式的習慣。他打開IDE,發現某個凌晨三點的時段,竟然真的有git commit紀錄——訊息是:「dream commit」,內容是一段看起來不像他風格的代碼,更奇怪的是,那段代碼加密了一個url,看起來像是某個深網網站。
他花了一整晚破解那段代碼,解出的網址是:「ghosttalk.io/door」
出於某種病態的好奇,他打開了那個網頁。
網頁背景是漆黑的,只顯示一行字:「你願意進來嗎?」下面有兩個按鈕:「Yes」與「No」。
他猶豫了很久,終於點下「Yes」。
接下來的畫面沒有跳轉,而是他的筆電風扇突然全速運轉,IDE自動打開,開始瘋狂輸出紅字:「Welcome, new contributor.」
他試圖強制關閉,拔掉網路,關閉電源,甚至按住電源鍵硬關機,卻發現畫面還在持續運作,甚至出現了不該存在的畫面:他自己坐在電腦前的即時畫面。
那是從筆電內建鏡頭拍攝的,但他明明已經貼了黑膠帶。鏡頭怎麼還能拍到?
畫面中的自己表情木然,一隻手在鍵盤上飛快打字,另一隻手卻不自然地垂著,好像不是他自己的。他想要動,但發現自己根本無法控制身體,只能眼睜睜看著畫面中的「他」,繼續寫著他從未學過的程式語言。
幾分鐘後,畫面黑了,電腦自動關機。他癱坐在地板上,渾身是汗。
隔天醒來,他發現地上躺著他的筆電,開機狀態。他遲疑地打開螢幕,一封來自sigmaxghost的私訊等在GitHub上。
「你的夢很有創意,我們已經開始部署了。下一次,試著寫點關於結局的內容。」
接下來幾天,他開始夢到一段又一段從未寫過的代碼。夢裡總有一個模糊的聲音,像在他耳邊低語,念出他每一個變數名稱、每一行function。他再也無法控制自己醒來後的動作,電腦自動記錄下那些夢中的代碼,發佈在一個叫做GhostTalk Black的分支中。
公司也開始注意到他的異常。他的主管問他為何最近的提交風格完全變了,為何他能在一天內寫出過去一週都寫不出的演算法。他苦笑,說自己只是失眠多了點靈感。沒有人懷疑。
直到有一天,公司內部程式崩潰,一個資安工程師追蹤到source,發現GhostTalk Black的代碼竟然在內部伺服器中自動植入,並啟動了一個名為”after.life”的未知模組。
那天晚上,公司斷電,整層樓的筆電與桌機同時開機,一個畫面同步出現:sigmaxghost的帳號頭像——竟然變成了黃敬自己的臉。
他再也無法登出。他的名字出現在deadlang的貢獻者列表中,永遠排在第一位。
現在的你,如果還在線上,千萬別試著搜尋GhostTalk。千萬別merge你看不懂的Pull Request。
因為,有些程式,是寫給「另一邊」的人看的。
而你,是下一個Contributor。