我開了四個 session 跑 over night,隔天醒來像在看別人的鬼屋

你有沒有過那種,睡前覺得自己是天才、醒來覺得自己是凶手的經驗?

我有。而且是同一個 codebase。

事情是這樣的。公司有三個老系統要合併進同一個 codebase——代號 WF。三個來源各有各的身世:KM 是我五年前寫的(所以爛得我有印象);PE 是某位離職同事三年前寫的,寫完人就走了,留下一坨「只有他和上帝看得懂」的東西,現在上帝也未必記得;EF 更狠,是十五年前的套裝軟體——而且連原始碼都沒有

對,你沒看錯。EF 我手上只有三樣東西:一個還在跑的使用者界面、一份 DB schema、和一堆真實資料。沒有 code、沒有文件、沒有當年的工程師可以問。整套業務流程要靠 agent 對著界面點、對著 schema 猜、對著資料反推,自己重新「考古」出每一個流程到底在幹嘛,再重新設計一遍。這已經不是讀程式了,這是黑箱逆向工程——拿著一個鎖好的保險箱,從外面的刮痕去推理裡面放了什麼。

我看了一眼這三攤,心裡盤算:資料是分開的嘛,那就分開做啊。於是我很瀟灑地開了三個 session,一個顧一攤,叫他們各自去研究、設計、寫 spec。然後——這是重點——我這個 human 幾乎沒參與。我粗略瞄了一下 spec,覺得「嗯,看起來很忙,很專業」,就放著讓他們三個 over night 自己跑。

啊對,我還順手開了第四個 session,想說把 MCP server 也一起架進去,效率拉滿。

隔天早上我泡了杯咖啡,打開螢幕,看到 700 多個測試全綠,整個人神清氣爽。心想:這就是 agentic engineering 的時代啊,我睡覺的時候 AI 把活幹完了,我只要驗收。生產力 up up,老闆看了都要哭。

對吧?

代誌不是憨人想的這麼簡單。

問題出在一個我當下完全沒意識到的地方:專案架構還沒定、repo 裡一份標準 spec 都沒有,我就讓四個 session 自己長 spec、自己開發。你把這句話念三遍就會開始冒冷汗——沒有共同地基,四個 agent 各自蓋房子,蓋到一半才發現一個用公制、一個用英制、一個自己發明了一套單位、第四個忙著裝修還沒蓋牆。

700 個測試全綠?綠的意思只是「它們各自符合自己幻想出來的規格」。測試不會告訴你「這三套規格彼此打架」。測試只忠於它自己的 spec——而那份 spec 是 AI 自己長出來的,沒有任何人類審過。綠燈不等於正確,綠燈只等於自洽。這兩件事差很多。

EF 的部分尤其要命。它的 spec 不是「讀出來的」,是「猜出來的」——agent 對著界面和資料反推流程,推得很有自信,測試也寫得漂漂亮亮全部通過。但通過的是 agent 自己對這個黑箱的假設,不是真實業務邏輯。萬一某個 edge case 它從資料裡看不到(十五年的系統,誰知道有多少沒人記得的隱藏分支),那條路徑就會被靜靜地推理錯,然後綠燈照亮,沒人發現。逆向工程最危險的不是看不懂,是「看起來懂了」。

於是接下來那兩天,我在做一件非常哲學的事:閱讀我自己專案裡、卻完全看不懂的 spec。我強調一下「凡是個人類都看不懂」那種程度的陌生。命名是 AI 的品味,抽象層是 AI 的偏好,模組邊界是 AI 半夜三點的靈感。我得一邊跟 session 對質「你這段到底在想什麼」,一邊把那些只有機器能讀的東西,翻譯回人類看得懂的版本補上去。

說真的,這比從零寫還累。從零寫你至少知道自己在想什麼;考古一座 AI 蓋到一半的鬼屋,你得先猜建築師的心理狀態。

最諷刺的是,這課我五年前就該學會了。KM 當年會變成我口中的爛 code,不就是因為我那時也沒先把架構和規格定清楚、邊寫邊長嗎?我以為交給 AI 就不一樣了。結果只是把「一個人慢慢長出技術債」升級成「四個 session 平行高速量產技術債」——而且還是在沒有人類監工的夜裡。權力下放沒有問題,沒有共同憲法的權力下放才是問題

所以這一課很貴,但結論其實很簡單,簡單到我有點不好意思講:在系統架構還沒定、repo 裡沒有一份大家都遵守的標準 spec 之前,不要發散。 尤其不要四個 session 同時發散。先讓人類把地基的那份 spec 寫死——介面長什麼樣、命名怎麼取、模組邊界畫在哪——再放 agent 去填血肉。AI 很會蓋,但它不會幫你決定要蓋哪一棟;那是 human 還沒能外包的工作。

至於那座鬼屋,我會把它救回來的。先把那份缺席的地基 spec 補上,讓四個 session 重新對齊同一部憲法,再一塊一塊把幻想規格收斂回現實。要花幾天我還不知道——但至少這次,我會在睡前先看清楚他們在蓋什麼。

先不說了,我得回去抓鬼了。


這件事發生於 2026 年 5 月,文章整理於 2026 年 5 月。