我返工一直同好多 vibe coder 合作,呢樣嘢令我開始諗維護呢件事。軟件推出之後都要有人睇住,套件會過時,漏洞會俾人發現,而啱啱開始用 AI 整嘢嗰陣,好容易諗唔到呢啲嘢。
之後我醒起,應該用同一個諗法睇吓自己啲項目,於是翻查咗佢哋嘅 git 紀錄。我搵到唔少嘢,只係同預期唔同,而且其中一樣喺我查嗰日都仲未解決。
所以呢篇已經唔係講人哋忘記咗乜嘢。係講我自己。
一條公告,三個 App
10 月 14 日,Next.js 發布咗兩個嚴重(critical)漏洞同一個高危(high)漏洞嘅修復。呢度嘅「嚴重」即係遙距執行程式碼,意思係喺某啲情況下,互聯網上一個陌生人唔使登入,就可以喺你部伺服器度行佢自己嘅程式碼。修復喺 16.4.1 版本入面。
我有三個 App 行緊 Next.js,全部用 AI 編程工具整,負責人都係同一個,即係我。情況係咁:
| App | 程式碼幾時升到有修復嘅版本 | 公告後過咗幾耐 | 上到正式環境 |
|---|---|---|---|
| chandlernguyen.com | 10 月 18 日 | 4 日 | 10 月 18 日 |
| DIALØGUE(對話) | 10 月 29 日 | 15 日 | 10 月 29 日 |
| Prova | 11 月 3 日 | 20 日 | 11 月 3 日 |
我喺 11 月 3 日查嗰陣,Prova 仲鎖死喺 Next.js 16.2.6,即係佢由 5 月用到而家嘅版本,正式環境行緊嘅都係佢。行 pnpm audit --prod 列出咗 5 條嚴重公告,全部都喺 Next.js。
呢個數字聽落比我實際搵到嘅情況差,所以我想講得公道啲。我同 AI 工具逐條睇過,大部分嚴重公告都唔適用於 Prova。佢冇 use cache 函數,唔係行 Windows,我亦都搵唔到攻擊者控制到嘅輸入可以去到 next/og 嘅程式碼。圖片優化嗰幾條喺 Vercel 上面應該都唔適用,不過呢個係我由平台運作方式推斷出嚟,因為我搵唔到 Vercel 咁講嘅聲明。明確適用嘅係 Server Actions 入面一個高危嘅阻斷服務問題,即係有人可以搞亂個 App,而呢個問題一直存在,直到打咗 patch 為止。
我當日就將正式環境升到 Next.js 16.4.5。audit 由 5 條嚴重跌到 0 條,大部分高危都冇埋。剩返嘅喺 Next.js 以外,我仲要繼續處理,所以係好咗,但未算乾淨。
呢啲都唔算係好嘅維護。最嚴重嘅公告大多數打唔中 Prova,係因為佢啱啱好係咁樣起,唔係因為有人查過。嗰個係好彩,而我知道都只係因為我終於去睇。
表入面第一行我都唔敢攞太多功勞。我個網站 10 月 18 日嘅 commit 係一次一般嘅工具鏈升級,由 Next.js 16.1.6 升上去,commit 訊息完全冇提過呢條公告。可能只係時間啱啱好。
點解忙都幫唔到手
最易嘅解釋係 Prova 俾我冷落咗,呢個都有幾分道理。佢喺 8 月同 9 月之間,有過 41 日嘅 commit 空檔。
不過呢個解釋去到 10 月就企唔住腳。Prova 嗰個月有 175 個 commit。我出咗 iOS、收費、電郵同翻譯嘅修復,而 Next.js 版本郁都冇郁過。10 月 30 日,我甚至寫咗一份依賴套件維護計劃。佢嘅狀態行寫住:「已計劃;未開始實作。」
所以活躍唔等於維護,我覺得對每個用 AI 整嘢嘅人嚟講,呢點最緊要。整一個功能,你即刻有回應。你見到個掣,㩒一㩒,睇住佢行。你五個月前裝嘅套件俾人公布有漏洞嗰陣,你乜回應都收唔到。App 照樣出到網頁,測試一片綠,build 都過到。乜都冇壞,亦正正因為咁,冇人會去睇。
就好似一個煙霧警報器,要你行過去問佢先會響。AI 工具令起屋平咗好多,但佢哋唔會幫你裝警報器。
呢啲事我以前都撞過。DIALØGUE 由 2025 年 10 月 6 日到 2026 年 1 月 11 日之間冇任何 commit。React2Shell 係 Next.js 同 React 一個嚴重漏洞,喺 12 月初公開。我嘅 patch commit 日期係 1 月 11 日,遲咗五個幾禮拜,而我而家仲睇到最舊嘅正式環境部署紀錄係 1 月 18 日,所以我冇辦法確切話你知 12 月行緊啲乜。最幫到我嘅大概同我完全無關:Vercel 話佢為所有客戶推出咗防火牆規則,同時亦講明唔好靠呢啲規則嚟代替打 patch。
有一點我想講清楚,因為「vibe coder」呢個詞聽落可能似鬧人。我係透過有系統嘅課程學識寫程式,當中包括一張網絡安全證書,呢啲 repo 亦都有測試同審查關卡,但呢件事都係發生咗。所以我唔覺得呢個係新手問題。我覺得當整軟件變得平,又冇人被指派去睇住佢,預設就會咁。
警報器係點樣
好消息係,一個好細嘅檢查已經可以改變好多。
10 月 27 日,我將 pnpm audit --prod 加咗入網站嘅 CI,即係 push 程式碼嗰陣自動行嗰組檢查。10 月 28 日佢失敗咗,原因係一個電郵渲染程式庫嘅保安公告,我個網站帶咗入嚟但從來冇用過,10 月 29 日我就將佢移除。前後兩日,我乜都唔使記住。
呢度完全冇乜高明之處。只係一定要有人,或者有啲嘢,被安排去睇。
更新套件救唔到我
如果呢篇文喺度完咗,只會俾你一種假安心,因為我 10 月做嘅修復入面,有啲更加令人唔舒服嘅,同過時套件完全無關。嗰啲係我自己產品嘅錯誤。
例如喺 DIALØGUE:
- 有特權嘅資料庫函數,只用公開金鑰就叫得到,已登入嘅用戶亦都掂到本來只係俾我後端用嘅函數。
- 已退款嘅 podcast 可以「翻生」,喺冇再收費嘅情況下完成,而且真係有少量 podcast 發生過。
喺 Prova,公開嘅資料庫角色繼承咗冇人揀過嘅權限,例如 TRUNCATE,因為嗰啲權限嚟自平台預設。App 入面冇任何路徑用到,但佢哋就喺度。
冇任何版本升級修到呢啲嘢。呢啲 App 帶住呢啲問題一路行緊,呢度一樣乜都冇壞。佢哋會浮面,只係因為一次保安審查專登去搵,而我之前對呢啲產品做過嘅保安審查,並冇全部捉到。
呢啲問題有冇俾人濫用過?我唔知,亦冇辦法完全查清楚。我嘅資料庫日誌只可以追溯大約 90 日,而當中有啲問題比呢段時間更舊。喺我睇到嘅時段入面,我搵唔到外部對嗰啲函數嘅呼叫。呢個只係涵蓋有限嘅時段,並唔代表乜都冇發生過。我亦都講唔到係邊個或者乜嘢重新啟動咗嗰啲已退款嘅 podcast,不過我最好嘅估計係我自己程式碼入面嘅一次重試。
呢個都唔係完整清單。我仲處理緊其他問題,喺佢哋未解決之前我唔會講。
模型呢個問題同我諗嘅唔一樣
我本來打算寫舊 AI 模型會令你使多咗錢。我支持唔到呢個講法。我查過,呢啲 repo 入面都冇前後成本嘅比較,所以嗰個只係估。
我搵到嘅情況更加奇怪。DIALØGUE 嘅劇本草稿同審查模型,喺 10 月 12 日之前都設定做 gemini-3.5-flash。Google 嘅文件而家話,呢個 endpoint 唔會熄,仲會自動將請求轉去 gemini-3.6-flash。我唔知呢個轉駁幾時開始,所以冇辦法話你知究竟係邊個模型答咗幾耐。設定檔入面寫住模型名,並唔會將個模型凍結。
價錢都會變。Gemini 3.8 Flash 係我 10 月將 Prova 同 DIALØGUE 轉過去嘅模型,12 月 31 日之前嘅標價係每百萬輸入 token $0.75、每百萬輸出 token $3.75。由 2027 年 1 月 1 日起加倍,變成 $1.50 同 $7.50。我上個月先轉過去,仲要計吓對我嘅成本有咩影響。
升級都唔係冇風險,我唔想扮冇:
- 我將 Ask Sydney(悉尼)轉去 DeepSeek Flash 之後唔耐,正式環境有至少一條問題失敗,因為模型想要嘅搜尋輪數多過我程式碼容許嘅上限。
- 我搬 Prova 嘅 embedding 嗰陣,最初幾次運行喺知識庫表清空咗之後失敗,所以檢索質素受到影響,直到我復原為止。
- 同一次遷移仲發現咗一個正式環境設定,佢本來會將 Claude 嘅模型名發去 Google 嘅 API。
令 Prova 今次遷移值得信任嘅,係一樣好悶嘅嘢。我有一份改動之前記錄低嘅評估,24 個 sprint review 決定入面啱咗 22 個,改完之後都係同一個分數。冇咗佢,我就只可以靠祈禱。
你究竟應唔應該維護佢?
最難嘅問題,係我差啲漏咗嗰個。你推出嘅每個 App,都係一份要用注意力不斷畀錢嘅細訂閱,而 AI 令你好容易再訂多幾份。
喺 STRAŦUM(斯特拉圖姆) 度,我揀咗另一條路。我將佢退役,並將 v1 當參考實作發布。個 repo 寫明佢唔係當正式服務嚟維護,保安檔案列出咗我知道嘅公告,包括一啲 build 階段嘅依賴問題,暫時冇修復方案,評估為實際風險低。我覺得呢個係一個完全誠實嘅結果。唔誠實嘅版本,係一個冇人睇住但仲收緊註冊嘅 App。
星期一我會做啲乜
如果你用 AI 推出咗嘢,又有人用緊,我會由呢份清單開始。冇一項需要完美。
- 今日就行一次 audit。 喺每個上咗線嘅 repo 行
npm audit --omit=dev或者pnpm audit --prod。然後問你嘅 AI 工具,邊啲結果適用於你個 App 嘅整法,因為唔會全部都適用。 - 將呢個檢查變成自動。 加入 CI,咁唔使你記住都會失敗。對於好少掂嘅 App,仲要加定時運行,因為只喺 push 嗰陣行嘅檢查,喺靜嘅月份幫唔到手。
- 睇你嘅權限,唔好淨係睇套件。 問吓人哋淨係得你嘅公開金鑰、冇帳戶,做到啲乜。然後喺本機副本度測試,唔好靠假設。
- 喺 git 紀錄入面搵密鑰。 如果曾經 commit 過真嘅密鑰,就撤銷佢。淨係刪咗嗰行唔夠。
- 喺需要之前,搞清楚你嘅日誌追溯到幾遠。 呢個決定咗你究竟有冇可能答到「有冇嘢俾人濫用過」呢條問題。
- 每個 AI 功能保留一個細評估。 就算只有 20 個已知好答案嘅真實例子,都可以話你知換模型有冇令情況差咗。
- 定期睇 AI 供應商嘅停用同價錢頁面。 放入日曆。如果你用緊 Gemini 3.8 Flash,1 月 1 日已經係個好起點。
- 逐個 App 決定留低定退役。 如果你唔打算睇住佢,就落架,或者講清楚。
我仲摸索緊呢啲嘢有幾多可以按時間表交俾 agent。我知道嘅係,10 月 30 日寫嗰份計劃,乜都冇修好。
如果你用緊 AI 整嘢,你上一次檢查已經推出嘅嘢係幾時,搵到啲乜?我真係好想知,尤其係如果你有比我更好嘅警報器。