~/VibeHandbook
PDF miễn phí

Dịch vụ AI

microsoft.github.io

LSP

Nó là gì

Hãy hình dung một công cụ kiểm tra chính tả và ngữ pháp không biết mệt mỏi dành cho code — loại công cụ gạch chân lỗi ngay khi bạn gõ. Đó chính là những gì , viết tắt của Language Server Protocol (Giao thức Máy chủ Ngôn ngữ), mang lại: một cách chung để các trình soạn thảo và công cụ nhận được thông tin thông minh, cập nhật liên tục về code của một dự án. Một "language server" (máy chủ ngôn ngữ) đọc code của bạn trong lúc bạn làm việc và báo cáo lỗi, thông tin kiểu dữ liệu, gợi ý tự động hoàn thành (autocomplete), và các liên kết "đi tới định nghĩa" (go to definition). Nhờ có giao thức này, một language server duy nhất có thể phục vụ nhiều trình soạn thảo — những đường gạch chân đỏ ngoằn ngoèo bạn thấy trong VS Code cũng có thể vận hành một công cụ dòng lệnh hoặc một AI coding (tác nhân AI hỗ trợ viết code).

Điểm mạnh

  • Đưa ra phản hồi thực sự am hiểu ngôn ngữ: lỗi kiểu dữ liệu thật sự và tham chiếu chưa được định nghĩa, chứ không phải chỉ là đoán mò.
  • Được chuẩn hóa, nên một máy chủ duy nhất hoạt động được trên nhiều trình soạn thảo và công cụ khác nhau.
  • Cập nhật ngay khi bạn gõ, nên vấn đề hiện ra ngay lập tức thay vì phải đợi đến lúc build.
  • Là nền tảng cho các tính năng hằng ngày mà lập trình viên phụ thuộc vào: tự động hoàn thành, xem tài liệu khi rê chuột (hover docs), đổi tên, nhảy đến định nghĩa.

Đánh đổi

  • Mỗi ngôn ngữ cần một máy chủ riêng, và chất lượng giữa các máy chủ này không đồng đều.
  • Máy chủ có thể tốn nhiều bộ nhớ và CPU (bộ xử lý của máy tính) trên các dự án lớn.
  • Nó chỉ cho bạn biết cái gì sai, chứ không cho biết cách sửa — việc diễn giải vẫn là do bạn (hoặc AI) đảm nhiệm.
  • Việc thiết lập có thể khá rắc rối; cấu hình đúng máy chủ cho một dự án đòi hỏi sự tỉ mỉ.

Khi nào nên dùng

Bất cứ khi nào bạn muốn có phản hồi đáng tin cậy, theo thời gian thực về code khi nó được viết ra — mà về cơ bản là luôn luôn cần. Đối với vibe coding, điều này quan trọng nhất với vai trò là một nguồn tín hiệu: các thông tin chẩn đoán (diagnostics) mà language server tạo ra chính là thứ bạn muốn đưa ngược trở lại vòng lặp làm việc.

Sự phù hợp với vibe coding

LSP là thứ giúp AI nhìn thấy chính những vấn đề mà bạn nhìn thấy. Một harness (bộ khung hỗ trợ) tốt sẽ chuyển tiếp các thông tin chẩn đoán từ language server ngược lại cho agent sau mỗi lần chỉnh sửa, để AI tự phát hiện lỗi kiểu dữ liệu và lỗi lint (kiểm tra chất lượng code) của chính nó và sửa chúng trước khi bạn chạy thử code. Thay vì chỉ nghe "có vẻ hợp lý", bạn sẽ có được "trình biên dịch đồng ý điều đó". Hãy yêu cầu agent của bạn đọc các thông tin chẩn đoán, chứ không chỉ đọc file.

// a diagnostic an LSP server returns — feed this back to the agent
{
  "severity": "error",
  "range": { "start": { "line": 12, "character": 6 } },
  "message": "Type 'string' is not assignable to type 'number'."
}