GitHub Copilot CLI, bir JAR dosyasını geçici bir dizine çıkartıp .class dosyalarını tarayan ya da node_modules içinde metin araması yapan bir ajan olarak çalıştığında, bu işlemler kodunuz hakkında sınırlı ve hataya açık bilgiler sunar. Dil Sunucusu Protokolü (LSP) tabanlı yeni bir LSP Setup becerisi, terminalinizde de IDE’lerdeki kadar güçlü kod analizi yapabilmenizi sağlıyor. Bu beceri sayesinde Copilot CLI, metin aramaları yerine gerçek semantik analizle çalışarak, tip çözümlemesi, tanımlara gitme ve referans bulma gibi işlemleri sorunsuzca gerçekleştirebiliyor.
Bu rehberde, LSP Setup becerisinin nasıl çalıştığını, ürettiği yapılandırma formatını ve desteklediği 14 programlama dili için nasıl kurulum yapacağınızı adım adım öğreneceksiniz.
Neden dil sunucularına ihtiyacınız var?
Copilot CLI’nin varsayılan davranışı, kodunuzu anlamak için yüzeysel metin aramaları ve ikili dosya analizi yapmaktır. Örneğin Java projelerinde bu süreç şu komutlarla gerçekleşir:
# Bağımlılık JAR dosyasını bul
find ~/.m2/repository -name "*httpclient*.jar"
# JAR dosyasını geçici bir dizine çıkar
mkdir /tmp/httpclient && cd /tmp/httpclient
jar xf ~/.m2/repository/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar
# Sınıf dosyalarında metot araması yap
grep -r "execute" --include="*.class" .Python projelerinde ise ajan, site-packages içindeki dosyaları cat komutu ile okurken, TypeScript projelerinde node_modules klasöründe gezinir. Bu yöntemler basit durumlarda işe yarasa da, jenerikleri, aşırı yüklemeleri (overload) ya da derlenmiş bytecode’ları göremez. Dil sunucuları ise tam tersine, semboller için tam kaynak konumlarını, çözümlenmiş tipleri ve imzaları doğrudan sunar.
LSP Setup becerisi nasıl çalışır?
Bu beceri, yedi adımdan oluşan otomatik bir kurulum akışı sunar. Her adım, kullanıcıdan girdi alabilir, sistem bilgilerini kontrol edebilir ya da dil sunucusunu yapılandırabilir. Bütün bu süreç, ajan becerilerinin standart yapısına uygun olarak Markdown dosyalarında tanımlanmıştır ve YAML önyüz bilgileri içerir.
1. Dil seçimi
Beceri, kullanıcıya desteklemek istediği programlama dilini sorar. Seçilen dile göre kurulum adımları değişir. Örneğin Java için jdtls, TypeScript için typescript-language-server tercih edilir.
2. İşletim sistemi algılama
Ajan, uname -s komutunu çalıştırarak ya da Windows’ta $env:OS / %OS% ortam değişkenini kontrol ederek sisteminizi tanımlar. Kurulum komutları, işletim sistemine göre farklılık gösterir:
- macOS:
brew install jdtls - Linux: Eclipse.org’tan indirme
- Windows: Chocolatey gibi paket yöneticileriyle kurulum
3. Dil sunucu listesine erişim
Beceri, yerleşik bir referans dosyasına (references/lsp-servers.md) sahiptir. Bu dosyada 14 farklı dil için:
- Kurulum komutları
- İlgili ikili dosya adları
- Hazır yapılandırma şablonları
bulunur. Ajan, seçilen dile uygun girişimi otomatik olarak seçer.
4. Yapılandırma kapsamının belirlenmesi
Kullanıcıdan, dil sunucusunun yapılandırmasının kullanıcı düzeyinde (~/.copilot/lsp-config.json) ya da depo düzeyinde (lsp.json ya da .github/lsp.json) olmasını ister. Depo düzeyindeki yapılandırma, kullanıcı düzeyindekiyle çakıştığında öncelik alır.
5. Dil sunucusunun yüklenmesi
Seçilen dile uygun komut çalıştırılır. Örnekler:
# Tüm işletim sistemlerinde TypeScript
typescript-language-server --stdio
# Rust
typescript-language-server --stdio
rustup component add rust-analyzer
# Java (macOS)
brew install jdtls6. Yapılandırmanın kaydedilmesi
Ajan, seçilen kapsama uygun JSON dosyasına, aşağıdaki formatta bir giriş ekler:
{
"lspServers": {
"java": {
"command": "jdtls",
"args": ["--stdio"],
"fileExtensions": {
".java": "java"
}
},
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"fileExtensions": {
".ts": "typescript",
".tsx": "typescriptreact"
}
}
}
}Yapılandırma kuralları:
command,$PATHiçinde ya da mutlak yol olarak bulunmalıdır.argsgenellikle standart I/O iletişimi (--stdio) için kullanılır.fileExtensions, her uzantıyı VS Code dil tanımlayıcısına eşler.- Mevcut girişler korunur; dosya üzerine yazma yapılmaz.
7. Doğrulama
Ajan, dil sunucusunun sistemde bulunup bulunmadığını kontrol eder (which komutu ya da Windows’ta where.exe). Ardından yapılandırma dosyasının geçerli JSON olup olmadığını doğrular.
Desteklenen diller ve gelecek adımlar
LSP Setup becerisi, aşağıdaki 14 programlama dili için önceden tanımlanmış dil sunucularını destekler:
- Java
- TypeScript / JavaScript
- Python
- Go
- Rust
- C / C++
- PHP
- Ruby
- Swift
- Kotlin
- Dart
- Scala
- Lua
- Bash
Eğer desteklenen bir dil listesinde değilse, ajan size manuel yapılandırma için adımlar sunacaktır.
Kurulum sonrası neler değişir?
Dil sunucuları etkinleştirildikten sonra Copilot CLI’nin yetenekleri önemli ölçüde genişler:
- Üçüncü parti kütüphanelerdeki sembollere doğrudan gitme
- Referansları bulma (kaynak kodda değilse bile)
- Tip çözümlemesi ve hata ayıklama
- Anında belge görüntüleme (herhangi bir fonksiyon ya da sınıf için)
Bu sayede ajan, gereksiz dosya aramaları yerine kodunuzun yapısal anlamını kullanarak daha doğru ve hızlı yanıtlar üretir. ArtıkJAR dosyalarını dekompile etmek ya da node_modules içinde kaybolmak yerine, IDE’nizdeki "Git’e Git" düğmesi kadar güvenilir bir şekilde çalışıyor. Böylece Copilot’a daha karmaşık görevler verebilir ve sonuçların doğruluğundan emin olabilirsiniz.
GitHub Copilot CLI’nin gelecekteki güncellemeleriyle birlikte, dil sunucuları daha da genişleyecek ve ajan becerileri daha akıllı hale gelecek. Bu yenilikler, geliştiricilerin terminalden çıkıp doğrudan kod üretimine odaklanmalarını sağlayacak.
Yapay zeka özeti
GitHub Copilot CLI’ye dil sunucusu kurarak kod analizi yeteneklerini geliştirin. Terminalde IDE kalitesinde semantik analiz için adım adım kurulum rehberi.