回到 Blog 中文 EN

Vibe Code 救援完整 SOP
把 AI 寫的爛 code 變成可維護產品

90% 的 vibe code 都救得回來,前提是你照這個 SOP 做。重寫要 8 週的工程量,照做能在 3 週內穩定。本文含真實 NT$45,000 案例剖析、7 步驟 Vibe Code 救援 SOP、實際 code before/after 範例,以及「什麼時候該重寫不該救」的判斷標準。

為什麼你需要 Vibe Code 救援

如果你符合任何一條,這篇就是寫給你的:

  • 你用 Claude Code / Cursor / Copilot 寫完了 MVP,但心裡知道半年後會爆
  • 你接手了某個前同事用 AI 寫的服務,打開 repo 第一句話是「靠這什麼東西」
  • 你是 startup CTO,團隊用 AI 衝產品速度衝太快,技術債堆成山
  • 你是 PM,工程師說「AI 寫的不能維護」,你不知道是真話還是藉口

這篇會給你的不是哲學,是可立刻操作的 Vibe Code 救援 SOP

什麼是 Vibe Coding?為什麼會變成需要救援的災難

Vibe Coding 是 2025 年 Andrej Karpathy 提出的詞,指:

完全憑感覺寫 code,不看細節、不讀 AI 生的內容、不確認邏輯,只看『跑得起來嗎』就 ship。」

問題不在於用 AI,而在於這 3 件事:

01 沒人讀 AI 生的內容

我看過最誇張的案例:某 startup 工程師用 Cursor 寫了 800 行 controller,從頭到尾沒讀過一次。3 個月後 production bug 爆掉,他打開檔案說「我什麼時候寫了這段?」答案是:從來沒寫過。AI 寫的。但他貼了。

02 沒有「為什麼」的紀錄

AI 寫 code 不會說明設計決策。你今天用 useReducer 不用 useState,3 個月後完全沒紀錄為什麼。新接手的人重寫成 useState,某個邊界條件爆掉,你才想起來「啊對,因為要處理 async race condition」。但已經太晚。

03 沒測試的安全網

Vibe code 最大問題不是寫得爛,是沒測試保護。改一個地方不知道會破壞什麼。維護成本 5 個月後爆漲。

你的 Vibe Code 救得回嗎?3 個診斷

不是所有 vibe code 都該救。我自己接 Vibe Code 救援案前會做這 3 個診斷:

01 看最近 30 個 git commit

git log --oneline -30

看 commit message 的品質:

commit message 樣態救援機率含意
feat(auth): add OTP login 規格清楚90%寫的人有紀律,只是用 AI 加速
fixupdate修一下60%混亂但還有救
finalfinal2final_real30%已經放棄、需要全面重寫
全部都是「Initial commit」10%連 git 都沒用,重寫吧

02 問三個問題

  • 這個專案開發了多久? < 2 個月:救援可行 / 2-6 個月:要花更多力氣 / > 6 個月:通常重寫更便宜
  • 現在還有人在改嗎? 有:先冷凍 1 週再救援 / 沒:直接進救援流程
  • 上線了嗎? 有+有用戶:謹慎救援不能停機 / 有+沒用戶:可大膽 refactor / 沒:直接重構

03 跑一次完整 build

rm -rf node_modules
npm install
npm run build
npm run test  # 如果有測試的話

如果這 4 行指令都跑得過,恭喜,救援成功率 80%+。如果任何一行卡住,先處理「能跑」這件事。

完整 7 步驟 Vibe Code 救援 SOP

這是我用 5 年累積的方法論,救過超過 3 個專案(公開可講的):

SOP 01 建立安全網(不要動 code,先存證據)

# 1. 建立救援分支
git checkout -b rescue/initial-state
# 2. 把整個 repo 打 tag 凍結
git tag rescue-baseline-$(date +%Y%m%d)
# 3. 跑一次完整 build + screenshot 所有畫面
# 4. 備份環境變數
cp .env .env.backup
# 5. 用 Postman / cURL 跑所有 API、存回應為 JSON
為什麼這步重要:救援過程中你會改錯東西。有 baseline 你才知道哪裡改壞了。

SOP 02 讀懂 AI 寫了什麼(最痛但最重要)

main.ts / index.js / App.tsx 開始追,逐行讀。讀的時候做 3 件事:不懂的加 // TODO、重複的 logic 加 // DUPLICATED、可疑邊界條件加 // BOUNDARY3 天讀完整個 repo,這一步省下你 50% 的後續時間。

SOP 03 補上邊界條件的測試

不用 100% 覆蓋率,只測「會壞的地方」 ── 把 SOP 02 標 BOUNDARY 的地方全部包進測試。目標是把那些「AI 沒想到的情境」全部測起來。3-5 天工作量。

SOP 04 抽出 magic number、magic string

// BEFORE (vibe code)
if (order.total > 1000) { shippingFee = 0; }

// AFTER (refactored)
const FREE_SHIPPING_THRESHOLD = 1000;
if (order.total > FREE_SHIPPING_THRESHOLD) { shippingFee = 0; }

好處:未來改規則只改 1 個地方、別人讀 code 看得懂、測試可以塞 mock 值。

SOP 05 拆分過大的函數(>50 行就拆)

AI 最愛寫 200 行的函數。把一個 80 行的 checkoutOrder 拆成 getOrderOrThrowcalculateFeessendConfirmationEmailupdateInventory 等獨立可測的小函數。拆完每個都獨立可測,Bug 修復速度 ×3。

SOP 06 寫 README + ADR

README 給 6 個月後接手的人:快速啟動、主要功能、技術棧。ADR(Architecture Decision Record)紀錄「為什麼這樣決定」── 情境、決策、原因、代價、考慮過的替代方案。每個重大決策寫 1 份,3 個月後別人問為什麼,你不用再回憶。

SOP 07 設定 CI/CD + 監控

# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npm ci
      - run: npm run lint
      - run: npm run test
      - run: npm run build

監控用 Sentry / LogRocket / DataDog 任選,Error rate > 1% 就警報。有了 CI + 監控 = 救援後不會悄悄爛掉。

真實案例:NT$45,000 Vibe Code 救援實錄

某電商 startup「A 公司」(化名)2025 年底用 AI 衝產品,2 人團隊用 Cursor + Claude 一週做完 MVP、3 個月上線。第 4 個月:後端工程師離職、Production bug 每週 2-3 次、新功能加 1 個破 2 個。剩下的工程師找我:「救得回嗎?」

診斷:git log 全是 fixupdatefinal ── 沒有規格化 commit,但至少還有 git history。結論:60% 救援機率,要花 3 週

報價:3 週(90 小時),NT$45,000 訂金 + NT$45,000 尾款。交付:50% 邊界條件測試、README + 8 份 ADR、CI/CD、監控、30 天免費售後。老闆覺得便宜(vs 重寫估 8 週、~NT$30 萬),當天打訂金。

3 週後的成果:

指標救援前救援後
Bug 頻率每週 2-3 次每月 1-2 次(-80%)
新功能交付2 週/個3 天/個(+5x)
工程師 onboarding3 個月1 週
團隊士氣焦慮終於可以好好做事

老闆 30 天後說:「早知道一上線就請你做這套,省的我們瞎搞 6 個月。」

Vibe Code 救援最容易踩的 5 個坑

  • 坑 1:想「順便重寫」。救援 ≠ 重寫。每次順便重寫 = 多 5 個 bug、多 3 天、客戶覺得你拖時間。改最少、讓它穩定。
  • 坑 2:沒先談「不救」的範圍。報價單要寫「本次只包含 X/Y/Z 模組,其他另計」,否則客戶會「順便這個也救一下吧」。
  • 坑 3:偷偷加自己的偏好。用「跟客戶 codebase 一致的風格」,即使覺得 AI 寫的爛,也要寫成跟它一樣但有測試保護。
  • 坑 4:沒包含「教育時間」。沒教客戶,專案 6 個月後又回到 vibe code。報價包含 2-3 場 1-on-1 教學。
  • 坑 5:沒留售後保固。包含 30 天免費售後(每週 1 次 1-on-1),客戶安心、你也省事。

什麼時候該重寫,不該救援?

老實說,不是所有 vibe code 都該救。下面 5 種情況我會建議直接重寫:

  1. 沒有 git history(只有 final.zip)
  2. 連能跑都做不到(環境裝不起來、build 失敗)
  3. 核心架構選錯(選了完全不適用的 framework)
  4. 嚴重 security issue(hardcoded API key 灑滿全 repo)
  5. 業務邏輯本身有錯(救完還是錯的)
判斷 SOP:救援時間 > 重寫時間的 50% → 重寫。客戶說「我有時間慢慢救」→ 重寫。客戶說「這週要上線」→ 救援。

救援完成後的長期維護建議

  1. 每週寫 1 個新測試(累積 1 年就 50+ 個)
  2. 每月寫 1 個 ADR(紀錄重大決策)
  3. 每季度 refactor 1 個老檔案(防止重新爛掉)
  4. AI 寫的 code 一律 review 才能 merge(最重要!)
  5. 新人 onboarding 用救援後的 README + ADR(30 天上手)

Vibe Code 救援 常見問題 FAQ

Vibe Code 救援是什麼?

把用 AI 憑感覺快速生成、但缺乏測試、文件與架構的程式碼,透過系統化工程流程轉變為穩定、可維護、可交接的軟體。核心是不重寫、用最小改動讓它穩定。

Vibe Code 救得回來嗎?

約 90% 救得回來。看最近 30 個 git commit 品質、開發時間、能否完整 build 來判斷。沒 git history、build 失敗、架構選錯、嚴重資安漏洞則建議重寫。

Vibe Code 救援要花多久、多少錢?

中等混亂專案約 3 週(90 小時)可救援穩定。Mentry 提供 30 分鐘救援諮詢 NT$1,500,完整救援專案 NT$30,000 起,含 7 步驟 SOP 與 30 天免費售後。

什麼時候該重寫,不該救援?

沒 git history、連跑都跑不起來、核心架構選錯、有嚴重資安問題、或業務邏輯本身有錯時建議重寫。原則:救援時間若超過重寫時間的 50%,就該重寫。

你的 Vibe Code 救得回來嗎?

如果你的專案用 AI 寫到一半、上線後開始爆,先別急著重寫。30 分鐘救援諮詢 NT$1,500,我先幫你判斷救不救得了、該救還是該重寫。完整救援專案 NT$30,000 起,含 7 步驟 SOP + 30 天免費售後。

LINE 預約救援諮詢 先訂閱 Newsletter

延伸閱讀 ─ AI 時代工程師系列