---
# System prepended metadata

title: 讓 AI 真正「讀懂」程式碼：LSP 與 Claude Code 的進化革命

---


# 讓 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 在發揮作用了！
