LSP serveri
OpenCode se integriše sa vašim LSP serverima.
OpenCode se može integrisati sa Language Server Protocol (LSP) serverima kako bi koristio dijagnostiku kao feedback za agenta.
Ugrađeni
OpenCode dolazi sa nekoliko ugrađenih LSP servera za popularne jezike:
| LSP server | Ekstenzije | Zahtjevi |
|---|---|---|
| astro | .astro | Automatske instalacije za Astro projekte |
| bash | .sh, .bash, .zsh, .ksh | Automatski instalira bash-language-server |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatske instalacije za C/C++ projekte |
| csharp | .cs | .NET SDK instaliran |
| clojure-lsp | .clj, .cljs, .cljc, .edn | clojure-lsp komanda dostupna |
| dart | .dart | dart komanda dostupna |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno komanda dostupna (automatski detektuje deno.json) |
| elixir-ls | .ex, .exs | elixir komanda dostupna |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint ovisnost u projektu |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK instaliran |
| gleam | .gleam | gleam komanda dostupna |
| gopls | .go | go komanda dostupna |
| hls | .hs, .lhs | haskell-language-server-wrapper komanda dostupna |
| jdtls | .java | Java SDK (version 21+) instaliran |
| julials | .jl | julia i LanguageServer.jl instalirani |
| kotlin-ls | .kt, .kts | Automatske instalacije za Kotlin projekte |
| lua-ls | .lua | Automatske instalacije za Lua projekte |
| nixd | .nix | nixd komanda dostupna |
| ocaml-lsp | .ml, .mli | ocamllsp komanda dostupna |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint zavisnost u projektu |
| php intelephense | .php | Automatske instalacije za PHP projekte |
| prisma | .prisma | prisma komanda dostupna |
| pyright | .py, .pyi | pyright ovisnost instalirana |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby i gem komande dostupne |
| rust | .rs | rust-analyzer komanda dostupna |
| sourcekit-lsp | .swift, .objc, .objcpp | swift instaliran (xcode na macOS-u) |
| svelte | .svelte | Automatske instalacije za Svelte projekte |
| terraform | .tf, .tfvars | Automatske instalacije iz GitHub izdanja |
| tinymist | .typ, .typc | Automatske instalacije iz GitHub izdanja |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript zavisnost u projektu |
| vue | .vue | Automatske instalacije za Vue projekte |
| yaml-ls | .yaml, .yml | Automatski instalira Red Hat yaml-language-server |
| zls | .zig, .zon | zig komanda dostupna |
LSP je podrazumijevano isključen. Kada je omogućen, serveri se pokreću kada se otkrije jedna od gore navedenih ekstenzija datoteke i zahtjevi su ispunjeni.
Kako radi
Kada je LSP omogućen i opencode otvori fajl, on:
- Provjerava ekstenziju datoteke u odnosu na sve omogućene LSP servere.
- Pokreće odgovarajući LSP server ako već nije pokrenut.
Najbolje prakse
LSP može pomoći agentu da pronađe i popravi probleme pružanjem dijagnostike iz jezičkih servera. Ovo je korisno u nekim projektima, ali nije uvijek neto pozitivno.
Jezički serveri mogu ispasti iz sinhronizacije, koristiti mnogo memorije, razlikovati se po verziji ili projektu i usporiti agent workflow. U mnogim projektima je bolje da agent direktno pokreće lint, typecheck ili druge dijagnostičke CLI alate, tako da se greške vraćaju u agent loop bez tih kompromisa. Dokumentujte te komande u instrukcijskim fajlovima kao što su AGENTS.md ili skills, kako bi agent znao šta treba pokrenuti. Uključite LSP kada vaš projekt ima koristi od dodatnog feedbacka jezičkog servera.
Konfiguracija
Možete omogućiti i prilagoditi LSP servere kroz lsp odjeljak u vašoj opencode konfiguraciji.
Da biste omogućili sve ugrađene LSP servere, postavite lsp na true.
{ "$schema": "https://opencode.ai/config.json", "lsp": true}Koristite objekt da zadržite ugrađene servere omogućene dok konfigurirate izmjene ili prilagođene servere.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Svaki LSP server podržava sljedeće:
| Svojstvo | Vrsta | Opis |
|---|---|---|
disabled | boolean | Postavite ovo na true da onemogućite LSP server |
command | string[] | Naredba za pokretanje LSP servera |
extensions | string[] | Ekstenzije datoteka koje ovaj LSP server treba da rukuje |
env | objekt | Varijable okruženja koje treba postaviti prilikom pokretanja servera |
initialization | objekt | Opcije inicijalizacije za slanje na LSP server |
Pogledajmo neke primjere.
Varijable okruženja
Koristite svojstvo env za postavljanje varijabli okruženja prilikom pokretanja LSP servera:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Opcije inicijalizacije
Koristite svojstvo initialization da prosledite opcije inicijalizacije na LSP server. Ovo su postavke specifične za server poslane tokom LSP initialize zahtjeva:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}Onemogućavanje LSP servera
Ako je lsp izostavljen, svi LSP serveri su onemogućeni. Da biste onemogućili sve LSP servere nakon što ih je druga konfiguracija omogućila, postavite lsp na false:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}Da onemogućite specifičan LSP server, postavite disabled na true:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Prilagođeni LSP serveri
Možete dodati prilagođene LSP servere navodeći ekstenzije naredbe i datoteke:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Dodatne informacije
PHP Intelephense
PHP Intelephense nudi vrhunske funkcije putem licencnog ključa. Možete dati licencni ključ postavljanjem (samo) ključa u tekstualnu datoteku na:
- Na macOS/Linuxu:
$HOME/intelephense/license.txt - Na Windowsima:
%USERPROFILE%/intelephense/license.txtDatoteka treba da sadrži samo licencni ključ bez dodatnog sadržaja.