LSP Servers

OpenCode tích hợp với Language Server Protocol (LSP) để giúp AI hiểu codebase của bạn.


Tổng quan

OpenCode tự động phát hiện và cài đặt LSP servers cho các ngôn ngữ phổ biến. Khi bạn mở file, nó kiểm tra extension và khởi động LSP server tương ứng.

LSP servers cung cấp:

  • Diagnostics (lỗi, warning)
  • Go to definition
  • Find references
  • Hover info
  • Code completions

Built-in LSP Servers

LSP ServerExtensionsYêu cầu
astro.astroTự động cho Astro projects
bash.sh, .bash, .zshTự động cài bash-language-server
clangd.c, .cpp, .cc, .h, .hppTự động cho C/C++ projects
csharp.cs, .csxCần .NET SDK
dart.dartCần dart command
deno.ts, .tsx, .js, .jsxCần deno command
eslint.ts, .tsx, .js, .jsxCần eslint trong project
gopls.goCần go command
jdtls.javaCần Java SDK 21+
pyright.py, .pyiCần pyright
rust.rsCần rust-analyzer
svelte.svelteTự động cho Svelte projects
typescript.ts, .tsx, .js, .jsxCần typescript trong project
vue.vueTự động cho Vue projects

Xem danh sách đầy đủ

LSP servers tự động được bật khi phát hiện extension tương ứng và đáp ứng yêu cầu.


Cấu hình

Tùy chỉnh LSP servers qua opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {}
}

Environment variables

{
  "lsp": {
    "rust": {
      "env": { "RUST_LOG": "debug" }
    }
  }
}

Initialization options

{
  "lsp": {
    "typescript": {
      "initialization": {
        "preferences": { "importModuleSpecifierPreference": "relative" }
      }
    }
  }
}

Disable LSP

Tắt tất cả LSP:

{ "lsp": false }

Tắt một LSP cụ thể:

{
  "lsp": {
    "typescript": { "disabled": true }
  }
}

Custom LSP servers

{
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}

Lưu ý

  • Tắt tự động download LSP: OPENCODE_DISABLE_LSP_DOWNLOAD=true
  • PHP Intelephense premium: đặt license key trong ~/intelephense/license.txt