LSP
是什麼
不妨把它想像成一個不知疲倦的程式碼拼寫檢查器兼語法檢查器——你一邊打字,它一邊給錯誤劃上下劃線。這個幫手就是 (語言伺服器協議)。LSP 是編輯器和工具獲取專案即時程式碼智慧資訊的一種通用方式。"語言伺服器"在你編寫程式碼時讀取程式碼,並報告錯誤、型別資訊、自動補全建議以及"跳轉到定義"連結。有了這一協議,一個語言伺服器就能為多個編輯器提供支援——你在 VS Code 中看到的那些紅色波浪線,同樣可以驅動命令列工具或 AI 編碼代理。
優勢
- 提供真實的、理解語言的反饋:是實際的型別錯誤和未定義引用,而非憑空猜測。
- 標準化,因此同一個伺服器可在多種編輯器和工具間通用。
- 隨輸入即時更新,問題會立刻浮現,而不必等到構建時。
- 支撐開發者日常依賴的各項功能:補全、懸停文件、重新命名、跳轉到定義。
取捨
- 每種語言都需要自己的伺服器,而各伺服器的質量參差不齊。
- 在大型專案上,伺服器可能佔用大量記憶體和 CPU(中央處理器)。
- 它告訴你哪裡有問題,卻不會告訴你如何修復——解讀仍需靠你(或 AI)。
- 配置可能比較瑣碎;為一個專案配好合適的伺服器需要費些心思。
何時使用
任何你希望對正在編寫的程式碼獲得可信、即時反饋的時候——這基本上就是任何時候。對 vibe coding 而言,它最重要的作用是作為一個訊號源:語言伺服器產生的診斷資訊,正是你希望反饋回迴圈中的內容。
與 vibe coding 的契合度
LSP 能讓 AI 看到與你相同的問題。一個好的框架會在每次編輯後將語言伺服器的診斷資訊反饋給代理,這樣 AI 就能在你執行程式碼之前發現並修復自己的型別和 lint 錯誤。你得到的不再是"看起來合理",而是"編譯器認可"。告訴你的代理去讀診斷資訊,而不僅僅是檔案本身。
// LSP 伺服器返回的一條診斷——把它反饋給代理
{
"severity": "error",
"range": { "start": { "line": 12, "character": 6 } },
"message": "Type 'string' is not assignable to type 'number'."
}