第一章:AI 鬼打牆怎麼辦?打斷重來的藝術與 Git 基礎回退策略

在 Vibe Coding 的過程中,最常遇到的問題絕對是:「AI 突然開始亂改程式碼,而且越改越錯!」這就是俗稱的「AI 鬼打牆」。本章將帶你深入了解為什麼會發生這種情況,以及如何透過「打斷重來」與「Git 回退」來完美解決這個問題。

為什麼 AI 會鬼打牆?

AI 大語言模型(如 GPT-4, Claude 3.5 Sonnet)的本質是文字接龍。當上下文(Context Window)中充滿了錯誤的邏輯、無效的修補(Patch)、或者是互相矛盾的 Prompt 時,AI 的注意力機制(Attention Mechanism)就會被這些雜訊干擾。

具體來說,鬼打牆通常發生在以下情境:

  1. 連續修補(Band-aid Fixes):你發現了一個 Bug,AI 給了一個解法,結果引發了另一個 Bug。你繼續貼上新 Bug,AI 繼續修補... 最後整個檔案面目全非。
  2. 上下文污染:對話串太長,AI 忘記了最一開始的系統架構設定。
  3. 幻覺(Hallucination):AI 虛構了不存在的套件或 API 函式庫。

核心心法:打斷重來的藝術

當你發現 AI 連續兩次修改都無法解決同一個問題,甚至引發更多紅字時,請立刻停止對話! 不要再試圖說服 AI 去修復那個已經爛掉的程式碼了。你需要做的是「打斷重來」。

什麼是打斷重來?

  1. 放棄當前的對話串(Context)。
  2. 將程式碼回退到「上一個會動的狀態」(Working State)。
  3. 開啟一個全新的對話串,重新描述問題。

實戰教學:如何使用 Git 安全回退

在 Vibe Coding 中,我們強烈建議你「每完成一個小功能就 Commit 一次」。這樣當 AI 搞砸的時候,你才能一鍵還原。

情境模擬

假設你正在開發一個登入按鈕,原本按鈕長得很漂亮,但你請 AI 加上動畫後,按鈕消失了。你跟 AI 討論了 20 分鐘,結果整個頁面都白屏了。

步驟一:確認目前的修改狀態

打開你的終端機(Terminal)或 Cursor 的 Git 面板,輸入:

git status

你會看到一堆被修改的紅字檔案。

步驟二:狠下心來,全部放棄

如果你還沒 Commit 這些壞掉的程式碼,你可以直接用以下指令放棄所有修改:

# 放棄所有未暫存的修改(警告:此動作無法復原)
git checkout .

# 如果有新增但還沒追蹤的檔案,可以用這招清除
git clean -fd

步驟三:如果已經 Commit 了怎麼辦?

如果你不小心把爛扣 Commit 上去了,不用慌,我們可以使用 git reset。 首先,查看歷史紀錄:

git log --oneline

找到你上一個會動的版本(例如 hash 為 a1b2c3d),然後執行:

git reset --hard a1b2c3d

砰!你的專案瞬間回到了那個美好的時刻。

重啟對話的 Prompt 技巧

退回安全點後,我們要開啟一個全新的對話(New Chat)。不要在舊的對話裡繼續,因為舊對話已經被污染了。

使用以下 Prompt 結構來重啟對話:

[目標] 我要在 LoginButton.tsx 加上 Framer Motion 的 Hover 動畫。

[目前的程式碼] (貼上你還原後、乾淨會動的程式碼)

[剛剛失敗的教訓] 我剛才嘗試直接包一層 <motion.div>,結果導致原本的 flex 排版跑掉,按鈕消失。 請特別注意不要破壞原本的 className="flex items-center" 結構。

總結

  1. AI 鬼打牆的根本原因是上下文污染。
  2. 遇到連續兩次修不好的 Bug,立刻停止。
  3. 用 Git 回退到上一個安全點。
  4. 開新對話,總結失敗教訓,重新發出 Prompt。

掌握這個心法,你在使用 Cursor 或 ChatGPT 寫程式時,效率將會提升 300%,再也不會被 AI 氣到砸電腦了!

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊