即時診斷 (LSP)
最緊湊的反饋迴圈不會等你去執行程式碼——它會在你剛敲下錯誤的那一刻就抓住它。這正是語言伺服器協議 () 所提供的:你編輯器背後的即時"智慧",包括即時的錯誤、型別資訊、跳轉到定義和自動補全。語言伺服器會在你的程式碼發生變化時讀取它,並在任何東西執行之前就報告問題。
對 vibe coding 而言,這裡的槓桿在於把這些診斷回傳給 AI。沒有它,迴圈很慢:AI 寫程式碼,你執行它,它因為一個拼寫錯誤或型別錯誤而崩潰,然後你手動把錯誤資訊貼回去。把診斷接進來以後,智慧體會在它寫下那行程式碼的瞬間,看到和你一樣的紅色波浪線——並隨手修掉型別或 lint 錯誤,根本不用等程式碼執行。
你可以用幾種方式給智慧體這雙眼睛:
- 為你的技術棧執行語言伺服器(tsserver、rust-analyzer、pyright 等等)——大多數 AI 原生編輯器會替你做好這件事。
- 讓智慧體執行一個型別檢查或 lint 命令並讀取輸出,或者通過一個 伺服器暴露診斷資訊。
- 把一份乾淨的診斷報告當作"完成"的一部分,而不是事後才想起來的東西。
這樣接好線,智慧體就能自己跑一個自我糾正的迴圈——編輯、執行、讀取失敗、修復,再執行,直到診斷乾淨地返回:
┌──────────┐ ┌──────────┐ ┌──────────────┐
│ 編輯 │ ───▶ │ 執行 │ ───▶ │ 讀取失敗 │
└──────────┘ └──────────┘ └──────┬───────┘
▲ │
│ ▼
│ ┌──────────┐ ┌──────────┐
│ │ 通過 │ ◀──── │ 修復 │
│ │ (完成) │ 否 └──────────┘
│ └────┬─────┘
└─────────────────┘
仍在失敗
這也是為什麼一門帶型別的語言,對 vibe coding 來說可以是一種安靜的超能力:每一個型別註解都是一份小小的、由機器檢查的規格,會在 AI 的錯誤執行起來之前就把它逮住。一個"執行—崩潰—貼上"的迴圈,於是變成了一個安靜的、自我糾正的迴圈。AI 少做無用功,收斂得更快。