# 讓 AI 真正「讀懂」程式碼:LSP 與 Claude Code 的進化革命 還記得以前用 AI 寫程式的痛苦嗎? 你丟給 AI 一段程式碼,請它幫忙重構。它寫得頭頭是道,變數命名漂亮,邏輯看似完美。但當你興高采烈地把程式碼貼回編輯器——**滿江紅**。 「嘿!這個函式 `get_user_data_v2` 根本不存在啊!」你在心裡吶喊。 AI 委屈地回覆:「抱歉,我以為你有定義這個函式。」 這就是傳統 AI 寫程式的致命傷:**它們是在「猜」字,而不是在「懂」Code。** 它們把程式碼當成普通文本在閱讀,卻無法像編譯器那樣理解程式碼之間的關聯。 直到 **LSP (Language Server Protocol)** 的出現,尤其是最近整合進 **Claude Code** (CLI) 的重大更新,這一切正在發生翻天覆地的改變。 ## 什麼是 LSP?程式碼的「通用翻譯機」 LSP,全名 Language Server Protocol,是由微軟(Microsoft)為了 VS Code 開發的一套通訊協定。 在 LSP 出現之前,如果你想開發一個新的編輯器(比如 Sublime Text),並且希望它支援 Python、Java 和 Go,你需要為每一種語言單獨寫一套插件來處理語法高亮、自動補全和跳轉定義。這是一個可怕的 **M x N** 問題(M 個編輯器 x N 種語言)。 LSP 解決了這個問題。它把「語言智慧」從編輯器中抽離出來,變成一個獨立的伺服器(Server)。 - **Language Server (後端)**:負責苦力活。它知道 Python 的語法,知道這個變數在哪裡定義的,知道這裡少了一個分號。 - **Client (前端/編輯器)**:只負責顯示。VS Code、Vim、甚至現在的 **Claude Code**,都是 Client。 簡單來說,LSP 就是一個標準化的翻譯官。編輯器問:「使用者滑鼠停在這個變數上,這是什麼?」Language Server 回答:「這是一個字串,定義在第 30 行。」 ## 為何 LSP 對 AI (Claude Code) 如此重要? 最近 Claude Code 的更新 (v2.0.74+) 引入了 LSP 支援,這不僅僅是一個功能更新,而是 **AI 寫程式的思維升級**。 ### 1. 從「文本預測」進化到「語意理解」 以前的 Claude Code 就像一個記憶力超強但沒學過程式邏輯的打字員。它靠機率預測下一個字。 有了 LSP,Claude Code 獲得了「視力」。它能看到: - **Go to Definition (跳轉定義)**:當它想修改一個函式時,它能真正「跳」過去看原始碼,而不是瞎猜。 - **Find References (尋找引用)**:當你要重構變數名稱時,它能找出專案中所有使用到這個變數的地方,確保改得乾淨俐落。 ### 2. 消滅「幻覺 API」 這是開發者最有感的改變。 以前 AI 常會捏造不存在的函式庫方法(Hallucination)。現在,透過 LSP 的 **Diagnostics (診斷)** 功能,如果 Claude 寫了一行 `import pandas as pdd`,LSP 會立刻在背景告訴它:「嘿,你的環境裡沒有這個模組,或者你拼錯了。」 Claude 可以在把程式碼交給你之前,自我修正這些低級錯誤。 ### 3. 即時的錯誤回饋 就像你在 VS Code 裡看到的紅色波浪線,現在 Claude Code 在生成程式碼的過程中,也能接收到這些錯誤訊號。這讓它變成了一個**Headless IDE (無頭整合開發環境)**——它不只是一個聊天機器人,而是一個沒有圖形介面、但在背景默默執行完整 IDE 功能的工程師。 ## 實戰:在 Claude Code 中體驗 LSP 如果你是 Claude Code 的使用者,你會發現這種體驗是無縫的,但背後的運作邏輯完全不同。 ### 場景:重構遺留代碼 **以前的流程:** > 你:「請幫我把 `user.id` 改成 `user.uuid`。」 > AI:「好的。」(然後它只改了當前檔案,漏掉了引用這個模組的其他三個檔案,導致你的專案跑不動。) **現在的流程 (With LSP):** > 你:「請幫我把 `user.id` 改成 `user.uuid`。」 > Claude Code (內部思考):*啟動 LSP... 查詢 `user.id` 的 Reference... 發現它被 `auth.ts` 和 `payment.ts` 引用...* > AI:「沒問題,我已經修改了 `models.ts`,並同步更新了 `auth.ts` 和 `payment.ts` 中的引用。LSP 檢查通過,沒有型別錯誤。」 這就是差別。 ## 給開發者的建議 1. **擁抱 CLI 工具**:現在的趨勢是 AI Agent 透過 CLI 直接操作你的檔案系統。Claude Code 支援 `terminal-setup`,能自動適應你的 Kitty、Alacritty 或 Zed 終端機設定,這不是巧合,而是為了讓 AI 更深地整合進你的開發環境。 2. **理解你的工具鏈**:LSP 雖然強大,但需要正確的配置。確保你的專案中有正確的 `tsconfig.json` (TypeScript) 或 `pyproject.toml` (Python),這樣 LSP Server 才能正確啟動,餵給 AI 正確的資訊。 3. **OpenCode 的未來**:雖然我們以 Claude Code 為例,但這個概念適用於所有未來的 "OpenCode" 類工具。任何想要達到「資深工程師」水準的 AI Agent,最終都必須整合 LSP。因為**準確性**遠比**創造力**更重要。 ## 結論 LSP 是連線「人類自然語言」與「機器程式語言」的橋樑。對於 Claude Code 來說,LSP 就是它的「導盲犬」。它不再是在黑暗中摸索文字的規律,而是真正看見了程式碼的結構與脈絡。 下次當你發現 Claude 準確地修正了一個跨檔案的 Bug,請記得感謝背後那位默默工作的功臣——LSP。 > [!tip] 技術小貼士 > 想檢查你的 Claude Code 是否啟用了 LSP 功能?試著問它:「你能幫我找出這個函式在專案中所有的引用位置嗎?」如果它能精確列出檔案與行號,而不只是進行文字搜尋,那就是 LSP 在發揮作用了!