DevOps

GitHub Copilot CLI: Interactive vs Non-Interactive Mod Farkı

Ne yalan söyleyeyim, Geçen hafta bir müşteri ofisindeydim — Ankara’da bir sigorta şirketi. DevOps ekibinin lideri yanıma geldi, “Aşkın bey, bu Copilot CLI’yi kurduk ama ekip kafa karışık. Kimi terminal’i Copilot’a teslim etmiş, kimi tek satırlık komutlarla uğraşıyor. Hangisi doğru?” diye sordu. Açık konuşayım, ikisi de doğru. Ama amaca göre.

Yanı, İşin aslı şu ki, GitHub Copilot CLI’nın iki farklı çalışma modu var ve bu ikisi birbirinin alternatifi değil — birbirinin tamamlayıcısı. Bugün bunu lafı gevelemeden anlatacağım. Hem teorik tarafını hem de gerçek hayatta hangı senaryoda hangisini kullandığımı paylaşacağım.

“Interactive mod bir sohbet, non-interactive mod bir komut. Birini diğerine tercih etmek değil, doğru anda doğrusunu seçmek mesele.”

Önce şunu netleştirelim: Copilot CLI nedir, ne değildir?

Yanlış bir algı var sahada. Copilot CLI’yi VS Code içindeki Copilot’un terminale taşınmış hâli sanıyorlar. Tam olarak öyle değil. Bu araç, terminal’deki agent. Yanı sadece komut tamamlayan bir asistan değil — projenin dosyalarını okuyabilen, değişiklik yapabilen, server başlatabilen bir ajan. Kafanızda Claude Code ya da Cursor’ın CLI versiyonu gıbı düşünebilirsiniz.

Kurulum için Node.js 18+ ve aktif bir Copilot aboneliği lazım (inanın bana). npm install -g @github/copilot ile kuruluyor, sonrası copilot komutuyla başlıyor. Ben ilk denediğimde — itiraf edeyim — EACCES permission hatası aldım, çünkü global npm dizini root’a aitti. Çözümü nvm ile node’u kullanıcı dizinine almaktı. E peki, sonuç ne öldü? Bu detay dokümanda yok, dipnot olarak söyleyeyim.

Interactive mod: Sohbet ettiğin terminal

Interactive mod, varsayılan mod. Terminale copilot yazıp Enter’a bastığınız an buradasınız. Bir oturum açılıyor, Copilot size bir prompt veriyor, siz yazıyorsunuz, o cevaplıyor. Sonra siz tekrar yazıyorsunuz. Tıpkı ChatGPT gıbı — ama farkı şu: bu adam sizin proje dizinize hâkim. Dosyaları okuyabiliyor, çalıştırabiliyor, gerekiyorsa değiştirebiliyor.

İlk açılışta size “Bu klasöre güveniyor musun?” diye soruyor. Burası önemli. Çünkü trust verdiğiniz an, agent’ın o dizinde dosya okuma/yazma yetkisi oluyor. Production sunucusunda asla blanket trust vermeyin; bak şimdi burada iş değişiyor. Küçük görünen o izin meselesi sonra bütün geceyi yakabiliyor (ben kendi geliştirme makinemde bile sadece ~/projects altındaki klasörlere izin veriyorum).

Hmm, bunu nasıl anlatsamdı…

Interactive mod hangı senaryoda parlıyor?

Düşünün ki yeni bir repo’ya bakıyorsunuz. Hiçbir fikriniz yok — README yetersiz, dökümantasyon eksik. Geçen ay bir fintech projesinde aynen böyleydi; eski bir geliştiricinin bıraktığı dört yıllık bir Node.js servisini devraldık ve ne build sistemi belliydi ne env değişkenleri, yanı ortalık biraz dağınıktı açıkçası.

Evet.

  • Bu projeyi lokalde nasıl çalıştırırım?” — proje yapısını tarayıp adımları verdi
  • .env.example dosyası eksik, mevcut config’lerden çıkarabilir mısın?” — kodu okuyup tahmini bir.env üretti — bunu es geçmeyin
  • Hadi sen çalıştır” — bağımlılıkları kurup server’ı ayağa kaldırdı
  • Şimdi /health endpoint’ine istek at” — denedi, çalışmıyor olduğunu gördük, debug ettik

Bu süreç toplam 20 dakika sürdü. Ben kendim yapsam yarım gün giderdi rahat rahat; hatta bazı yerlerde daha da uzardı çünkü insan bazen aynı klasöre üçüncü kez bakıp yine hiçbir şey görmüyor. İşte interactive modun gücü burada: iteratif keşif. Çünkü her sorunun cevabı, bir sonraki sorunun bağlamını oluşturuyor.

Non-interactive mod: Tek atışlık komut

Şunu söyleyeyim, Gel gelelim diğer tarafa. Non-interactive mod, copilot -p "prompt" şeklinde çalışıyor. Adı üstünde — interaktif değil. Bir prompt yazıyorsunuz, cevabı alıyorsunuz, terminal akışınıza geri dönüyorsunuz. Session falan yok; kısa kesiyor ve çıkıyor. Tek seferlik bir alışveriş gıbı düşünün.

Hmm, bunu nasıl anlatsamdı…

İlk başta “ne gerek var, interactive moda girip sorsam aynı şey değil mi?” diye düşünmüştüm (evet, doğru duydunuz). Yanılmışım; hatta baya yanılmışım diyebilirim çünkü aradaki kritik fark otomasyon tarafında ortaya çıkıyor. Orada işin rengi değişiyor. Daha fazla bilgi için Kubernetes v1.36 Controller Staleness: Artık Daha Az Acı yazımıza bakabilirsiniz.

Non-interactive modu nerede kullanıyorum?

Peki neden? Bir dakika, şunu da ekleyeyim: bu mod aslında shell pipeline’larına tümleşik edilmek için tasarlanmış. Yanı CI/CD scriptlerinizde, bash alias’larınızda, git hook’larınızda kullanabiliyorsunuz; kısa cümleyle söylersem iş akışına gizlice giriyor ve sızı çok uğraştırmadan sonuç veriyor. Win+R Yenilendi: Yeni Run Dialog’un Perde Arkası yazımızda bu konuya da değinmiştik.

Aşağıdaki örnekler fena değil:

# Pre-commit hook içinde commit mesajı önerisi
git diff --cached | copilot -p "Bu diff için Conventional Commits standardına uygun bir commit mesajı yaz"
# Repository özeti
copilot -p "Bu repo ne yapıyor, ana klasörler neler, 5 cümlede özetle"
# Hızlı kod snippet'i
copilot -p "Python'da bir dosyayı satır satır okuyup boş satırları atlayan generator yaz"

Bilmem anlatabiliyor muyum, Logosoft’ta bir bankacılık müşterimizde Azure DevOps pipeline’larına Copilot CLI’yi entegre ettik; PR açıldığında otomatik bir adımda copilot -p ile değişen dosyaların kısa özeti çıkarılıyor. PR description’a ekleniyor (reviewers bayağı memnun kaldı). Çünkü 40 dosyalık PR’larda kim okuyor değişiklikleri tek tek? Kimse okumuyor desem yeridir. Daha fazla bilgi için Kubernetes v1.36: Pod-Level In-Place Resize Beta’da yazımıza bakabilirsiniz.

İki modu yan yana koyalım

İşte, bilmem anlatabiliyor muyum, Neyse uzatmayalım; şimdi gelelim asıl meseleye. Hangı durumda hangisi? Kafanızda netleşsin diye tabloyu aşağıya bırakıyorum. Önce şunu söyleyeyim: biri öbürünü boşa düşürmüyor. Teams SDK Python Desteği GA: Pythoncular İçin Yeni Kapı yazımızda bu konuya da değinmiştik.

Senaryo Interactive Non-interactive
Yeni bir repoyu keşfetmek ✅ İdeal ❌ Yetersiz
Bug ayıklama, debug ✅ İdeal ❌ Bağlam kaybolur
CI/CD entegrasyonu ❌ Çalışmaz ✅ Zorunlu
Tek satırlık kod üretmek ⚠️ Aşırı ✅ İdeal
Refactoring ✅ İdeal ⚠️ Riskli
Git hook’larına bağlamak ❌ Mümkün değil ✅ Tek seçenek
Hızlı bir sorunun cevabı ⚠️ Yavaş ✅ Hızlı
Masaüstünde çoklu dosya değişikliği yapmak

Sıkça Sorulan Sorular

GitHub Copilot CLI ücretsiz mi?

Kendi deneyimimden konuşuyorum, Hayır, aktif bir GitHub Copilot aboneliğine ihtiyacınız var — Individual, Business veya Enterprise, hangisi olursa — bence çok yerinde bir karar —. Öğrenciyseniz aslında şansınız var: GitHub Student Pack üzerinden ücretsiz erişebiliyorsunuz. Bir de şunu belirteyim, attığınız promptlar mevcut Copilot kotanızdan düşüyor (buna dikkat edin) Bu konuyla ilgili langchain-azure-cosmosdb: Tek Veritabanıyla Agent ve RAG yazımıza da göz atmanızı tavsiye ederim.

Interactive ve non-interactive modu aynı oturumda karıştırabilir mıyım?

İlginç olan şu ki, Doğrudan karıştıramazsınız, çünkü ikisi ayrı çalışma biçimleri. Ama yanı büyük ölçüde imkânsız da değil — en azından ben öyle düşünüyorum — — tek bir terminal penceresinde sırayla başvurabilirsiniz. Mesela önce copilot -p ile hızlıca bir cevap alırsınız, sonra copilot komutuyla interactive moda geçersiniz (yanlış duymadınız). Bence bunu bilmek işleri epey kolaylaştırıyor. Şunu da söyleyeyim: bağlam paylaşılmıyor, her biri kendi başına çalışıyor.

Çok konuştum, örnekle göstereyim.

Copilot CLI hangı dosyalara erişebilir?

Bak şimdi, Sadece trust verdiğiniz klasörlere erişebiliyor (ki bu çoğu kişinin gözünden kaçıyor). İlk çalıştırmada zaten size soruyor, “bu klasöre güveniyor musun?” diye. Trust vermediğiniz yerlerde okuma da yazma da yapamıyor. Ama açıkçası dikkat etmeniz gereken bir nokta var: trust verdiğiniz klasördeki gizli dosyalar dahil her şeye erişebiliyor. Yanı hassas dizinlerde biraz temkinli olmakta fayda var.

CI/CD pipeline’ında Copilot CLI kullanmak güvenli mi?

Tecrübeme göre, özet çıkarma veya dokümantasyon üretme gıbı read-only promptlar için makul bir seçenek. Ama kod değiştiren ya da otomatik commit atan şeyler kurmaktan kaçının — hani PAT token yönetimi ve prompt enjeksiyon riskleri var, bunlar gerçekten önemli (en azından benim deneyimim böyle). En sağlıklısı: pipeline’da non-interactive modu yalnızca bilgi üretimi için kullanmak.

Önceki oturuma nasıl dönerim?

Interactive moddayken /resume komutunu kullanabilirsiniz. Ya da terminal başlatırken copilot --resume bayrağıyla mevcut oturum listesinden istediğinizi seçebilirsiniz. Oturum geçmişi ~/.copilot/sessions dizininde tutuluyor, yanı aslında kaybolmuyor hiçbir şey.

Kaynaklar ve İleri Okuma

GitHub Copilot CLI Resmî Dokümantasyonu — Kurulum, mod detayları ve örnekler için ana referans kaynağı.

GitHub Blog: Copilot CLI for Beginners (Kayla Cinnamon) — Bu yazıya ilham veren orijinal İngilizce kaynak, video formatı da mevcut.

GitHub Copilot CLI Repository — Kaynak kod, issue tracker ve community tartışmaları için resmî GitHub deposu.

Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.

← Onceki Yazi
Azure Integrated HSM Açık Kaynak Oluyor: Güven Donanımdan
Sonraki Yazi →
Bankacılıkta Customer 360: Azure DocumentDB ile Pratik Yol

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İçindekiler
← Azure Integrated HSM Açık Kayn...
Bankacılıkta Customer 360: Azu... →