從猜測到診斷:LSP 如何讓 AI Agent 的除錯迴圈更具確定性

當前的 AI Agent 在除錯時,多半仍在昂貴的「猜測-試誤」迴圈中空轉。然而,將語言伺服器協定(LSP)這類靜態分析工具整合進 Agent 的觀察迴路,是將其從隨機試錯轉向結構化診斷的關鍵一步。這不僅是單一工具的升級,更是 Agent 執行迴路(execution loop)設計思維的根本轉變,目標是打造更具確定性、更低資源浪費的軟體工程系統。

從猜測到診斷:LSP 如何讓 AI Agent 的除錯迴圈更具確定性

多數 AI Agent 在面對軟體開發任務時,其除錯過程本質上是一場昂貴的「機率遊戲」。它們觀察到程式碼執行失敗的模糊結果,然後生成一個假設性的修補方案,再重新執行、觀察,如此反覆。這個過程充滿了不確定性,大量運算資源與時間被浪費在試誤(trial-and-error)的黑箱中。然而,近期一些開源專案的進展揭示了一條更清晰的路徑:將語言伺服器協定(Language Server Protocol, LSP)這類結構化的診斷資訊直接整合進 Agent 的執行迴圈,能根本性地將除錯過程從「猜測」轉變為「診斷」,大幅降低軟體工程中的隨機性。

當 AI Agent 只能「猜」程式碼的錯誤?

一個典型的自主程式碼 Agent 運作迴圈,大致是觀察(Observe)、思考(Think)、行動(Act)。當行動階段(例如執行一段程式碼或一個測試)失敗時,Agent 得到的「觀察」結果往往是粗糙、非結構化的,例如一段終端機的錯誤訊息、一個失敗的 HTTP 狀態碼,或僅僅是一個布林值的 False。面對這些資訊,Agent 只能像一個被蒙住眼睛的開發者,根據過往訓練數據中的模式,去「猜測」問題的根源可能在哪一行、可能是哪種類型的錯誤。

這種模式的代價極高。每一次猜測與嘗試,都意味著一次完整的 LLM 推理請求,以及潛在的編譯、執行與測試成本。如果第一次猜錯了,Agent 可能會陷入一個漫長的迴圈,不斷提出相似卻無效的解法,直到耗盡 token 預算或達到最大重試次數。這不僅效率低下,也使得 Agent 的行為難以預測與治理。我們需要的是一種能讓 Agent 直接「看見」問題根源的機制,而不是讓它在黑暗中摸索。

為什麼 LSP 是提升除錯確定性的關鍵?

語言伺服器協定(LSP)正是這道難題的解方之一。LSP 是由微軟在 2016 年為 Visual Studio Code 所創建的一套開放標準,旨在將程式語言的靜態分析功能(如語法錯誤檢查、型別提示、自動完成)從編輯器本身解耦,成為一個獨立的「語言伺服器」。開發者工具只需遵循此協定,就能夠與任何支援該語言的伺服器溝通,取得豐富、即時且結構化的程式碼診斷資訊。

近期,開源的編碼 Agent 工具 OpenClaude 在其 v0.22.0 版本中,便實驗性地整合了 LSP 診斷功能。這項改變的意義遠不止是新增一個功能,正如 原始實驗與觀察 所揭示的,它代表了一種設計典範的轉移:

將 LSP 診斷資訊直接餵給 Agent,就像是給了它一副 X 光眼鏡,讓它能直接看穿程式碼的結構性問題,而不是只能靠觀察外在症狀來猜測病因。

例如,當一段 TypeScript 程式碼存在型別不符的錯誤時,傳統 Agent 可能只會看到 tsc 編譯失敗的籠統錯誤訊息。但整合了 LSP 的 Agent 能直接收到一份 JSON 格式的診斷報告,明確指出:「在 main.ts 檔案的第 10 行第 5 個字元處,發生了型別錯誤(error code 2322),因為 string 型別無法指派給 number 型別。」有了如此精確的資訊,Agent 就不再需要猜測,而是可以一步到位地生成針對性的修復程式碼。這條從「模糊觀察」到「精確診斷」的捷徑,極大地縮短了除錯迴圈的長度,也降低了其成本。

如何設計一個更高效的 Agent 執行迴路?

LSP 的整合只是冰山一角,其背後的核心思想是為 Agent 打造一個「高頻寬、結構化的回饋迴路」。這不僅限於編譯前的靜態分析,任何能提供確定性、機器可讀的回饋,都應該被視為 Agent 執行環境中的一等公民。一個更穩健、更高效的 Agent 系統,其設計應包含多層次的回饋機制:

  • 靜態分析回饋:來自 LSP 或其他 linter 工具(如 ESLint)的即時診斷,能在程式碼執行前就捕捉到大量語法和型別錯誤。
  • 測試框架回饋:結構化的單元測試或整合測試結果(例如 Jest 的 JSON 輸出),能明確回報哪個測試案例失敗、失敗的原因與位置。
  • 執行期回饋:來自 Profiler 的效能數據、來自 OpenTelemetry 的結構化日誌,或是應用程式的健康檢查端點,都能提供關於系統動態行為的精確資訊。

將這些結構化數據流整合進 Agent 的觀察(Observe)階段,本質上是在降低系統的熵。每一次的行動(Act)後,Agent 得到的不再是需要大量猜測才能解讀的模糊訊號,而是可以直接指導下一步決策的清晰情報。學術界在自動化程式修復(Automated Program Repair)領域的研究早已證明,高度依賴這類精確的回饋訊號是成功的關鍵。當我們將這個概念應用於更廣泛的自主 Agent 時,我們不僅是在提升單一任務的成功率,更是在為建立可預測、可治理的 AI 軟體工程奠定基礎。

最終,目標是將軟體開發從一門高度依賴人類直覺與經驗的「手藝」,轉變為一個更具確定性的工程過程。透過為 AI Agent 建立強大的診斷迴路,我們正朝著這個方向邁出重要的一步。這不僅關乎效率,更關乎在日益複雜的軟體系統中,如何建立信任與可靠性。

延伸閱讀

我是江中喬,專注於 AI Agent Architecture、Memory Governance 與 Cognitive Diversity,持續研究如何打造能夠長期協作、可信任且可治理的 AI 系統。