LSP Server
OpenCode lässt sich in Ihren LSP-Server integrieren.
OpenCode kann sich in Language Server Protocol (LSP)-Server integrieren, um Diagnosen als Feedback für den Agenten zu verwenden.
Integriert
OpenCode verfügt über mehrere integrierte LSP-Server für gängige Sprachen:
| LSP Server | Erweiterungen | Anforderungen |
|---|---|---|
| astro | .astro | Automatische Installation für Astro-Projekte |
| bash | .sh, .bash, .zsh, .ksh | Installiert den bash-language-server automatisch |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatische Installation für C/C++-Projekte |
| csharp | .cs | .NET SDK installed |
| clojure-lsp | .clj, .cljs, .cljc, .edn | clojure-lsp-Befehl verfügbar |
| dart | .dart | dart-Befehl verfügbar |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno-Befehl verfügbar (automatische Erkennung von deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir-Befehl verfügbar |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint dependency in project |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installed |
| gleam | .gleam | gleam-Befehl verfügbar |
| gopls | .go | go-Befehl verfügbar |
| hls | .hs, .lhs | haskell-language-server-wrapper-Befehl verfügbar |
| jdtls | .java | Java SDK (version 21+) installiert |
| kotlin-ls | .kt, .kts | Automatische Installation für Kotlin-Projekte |
| lua-ls | .lua | Automatische Installation für Lua-Projekte |
| nixd | .nix | nixd-Befehl verfügbar |
| ocaml-lsp | .ml, .mli | ocamllsp-Befehl verfügbar |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint dependency in project |
| php intelephense | .php | Automatische Installation für PHP-Projekte |
| prisma | .prisma | prisma-Befehl verfügbar |
| pyright | .py, .pyi | pyright dependency installed |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Befehle ruby und gem verfügbar |
| rust | .rs | rust-analyzer-Befehl verfügbar |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installed (xcode on macOS) |
| svelte | .svelte | Automatische Installation für Svelte-Projekte |
| terraform | .tf, .tfvars | Automatische Installation von GitHub-Releases |
| tinymist | .typ, .typc | Automatische Installation von GitHub-Releases |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript dependency in project |
| vue | .vue | Automatische Installation für Vue-Projekte |
| yaml-ls | .yaml, .yml | Installiert den Red Hat yaml-language-server automatisch |
| zls | .zig, .zon | zig-Befehl verfügbar |
LSP ist standardmäßig deaktiviert. Wenn es aktiviert ist, starten Server, sobald eine der oben genannten Dateierweiterungen erkannt wird und die Anforderungen erfüllt sind.
Funktionsweise
Wenn LSP aktiviert ist und OpenCode eine Datei öffnet, geschieht Folgendes:
- Überprüft die Dateierweiterung anhand aller aktivierten LSP-Server.
- Startet den entsprechenden LSP-Server, falls er noch nicht ausgeführt wird.
Bewährte Praktiken
LSP kann dem Agenten helfen, Probleme zu finden und zu beheben, indem es Diagnosen von Sprachservern bereitstellt. Das ist in einigen Projekten nützlich, aber nicht immer ein klarer Vorteil.
Sprachserver können aus dem Sync geraten, viel Speicher verwenden, je nach Version oder Projekt unterschiedlich arbeiten und Agent-Workflows verlangsamen. In vielen Projekten ist es besser, wenn der Agent lint, typecheck oder andere diagnostische CLI-Tools direkt ausführt, damit Fehler in die Agent-Schleife zurückfließen, ohne diese Kompromisse einzugehen. Dokumentieren Sie diese Befehle in Instruktionsdateien wie AGENTS.md oder Skills, damit der Agent weiß, was er ausführen soll. Aktivieren Sie LSP, wenn Ihr Projekt von zusätzlichem Sprachserver-Feedback profitiert.
Konfiguration
Sie können LSP-Server über den Abschnitt lsp in Ihrer OpenCode-Konfiguration aktivieren und anpassen.
Um alle integrierten LSP-Server zu aktivieren, setzen Sie lsp auf true.
{ "$schema": "https://opencode.ai/config.json", "lsp": true}Verwenden Sie ein Objekt, um integrierte Server aktiviert zu lassen und gleichzeitig Überschreibungen oder benutzerdefinierte Server zu konfigurieren.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Jeder LSP-Server unterstützt Folgendes:
| Eigentum | Geben Sie | ein Beschreibung |
|---|---|---|
disabled | boolescher Wert | Setzen Sie dies auf true, um den LSP-Server zu deaktivieren |
command | string[] | Der Befehl zum Starten des LSP-Servers |
extensions | string[] | Dateierweiterungen, die dieser LSP-Server verarbeiten soll |
env | Objekt | Umgebungsvariablen, die beim Starten des Servers festgelegt werden |
initialization | Objekt | Initialisierungsoptionen zum Senden an den LSP-Server |
Schauen wir uns einige Beispiele an.
Umgebungsvariablen
Verwenden Sie die Eigenschaft env, um Umgebungsvariablen festzulegen, wenn Sie den Server LSP starten:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Initialisierungsoptionen
Verwenden Sie die Eigenschaft initialization, um Initialisierungsoptionen an den Server LSP zu übergeben. Dies sind serverspezifische Einstellungen, die während der LSP initialize-Anfrage gesendet werden:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}Deaktivieren von LSP-Servern
Wenn lsp ausgelassen wird, sind alle LSP-Server deaktiviert. Um alle LSP-Server zu deaktivieren, nachdem sie durch eine andere Konfiguration aktiviert wurden, setzen Sie lsp auf false:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}Um einen bestimmten LSP-Server zu deaktivieren, setzen Sie disabled auf true:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Benutzerdefinierter LSP-Server
Sie können einen benutzerdefinierten LSP-Server hinzufügen, indem Sie den Befehl und die Dateierweiterungen angeben:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Weitere Informationen
PHP Intelephense
PHP Intelepense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei einfügen unter:
- Auf macOS/Linux:
$HOME/intelephense/license.txt - Unter Windows:
%USERPROFILE%/intelephense/license.txt
Die Datei sollte nur den Lizenzschlüssel ohne zusätzlichen Inhalt enthalten.