GitHub Copilot 101Başlangıç14 dk

Chat Modları ve Bağlam Nasıl Çalışır?

Ask, Edit ve Agent, Copilot'tan farklı düzeylerde yardım almanızı sağlar. İşe uygun en sınırlı modu seçmeyi, yalnızca gerekli bağlamı paylaşmayı ve bir önerinin ilk girdiden doğrulamaya kadar nasıl ilerlediğini öğrenin.


Bu derste neler öğreneceksiniz?

  • İhtiyacınız olan sonuca göre Ask, Edit veya Agent modunu seçin
  • İsteğin yanıtlanması için gereken en küçük bağlamı sağlayın
  • Bir önerinin girdiden insan doğrulamasına kadar geçtiği aşamaları izleyin
  • Bir öneriyi kabul etmenin doğruluğu neden kanıtlamadığını açıklayın
Bu sayfada

Başarısız bir test, daha önce görmediğiniz bir yardımcı fonksiyonu işaret ediyor. Nerede olduğunu ve hangi davranıştan sorumlu olduğunu henüz bilmiyorsunuz. İhtiyacınız netleşmeden mod seçerseniz yama beklerken açıklama alabilir, yalnızca açıklama isterken birkaç dosyaya yayılan değişikliklerle karşılaşabilirsiniz. Seçtiğiniz mod, Copilot'tan istediğiniz işin türünü belirler.

Mod, bir çalışma sözleşmesidir

Ask, Edit ve Agent üç farklı eylem düzeyidir. Bir modu seçerken Copilot'a ne kadar hareket alanı verdiğinizi de seçersiniz. Bu nedenle modu ve prompt'unuzu bir çalışma sözleşmesi olarak düşünün:

Mod İstediğiniz sonuç Belirlediğiniz sınır İncelediğiniz öğe
Ask Açıklama ya da analiz Dosya değişikliği yok Gerekçeler, varsayımlar ve seçenekler
Edit Belirli, sınırları çizilmiş bir değişiklik Adı verilen dosyalar ya da seçili kod Önerilen diff ve etkisi
Agent Tamamlanmış, çok adımlı görev İzin verilen dosyalar, araçlar, kontroller, durma koşulları Araç eylemleri, diff ve doğrulama çıktısı

İhtiyacınızı karşılayacak en sınırlı eylem düzeyiyle başlayın. Davranışı henüz anlamıyorsanız Ask kullanın. Değişikliği tarif edip dosyaları adlandırabiliyorsanız Edit daha küçük bir diff verir. İş araştırma ve komut çalıştırma gerektiriyorsa Agent'a geçin ve durma koşulunu yazın. Mod, Copilot'un üstlenebileceği işi değiştirir. Sonucun sorumluluğu yine sizdedir.

Önce yeterli olan en sınırlı modu seçin

Ask ile yanıtlanabilecek bir soru için Agent seçmek gereksiz işlemlere yol açar. Önce Ask ile beklenen davranışı netleştirin. Kapsam belli olduğunda Edit'e geçin. Agent'ı yalnızca görev araç kullanımı ve birden fazla adım gerektirdiğinde seçin.

Değişiklik istemeden önce konuyu anlayın· github-copilot
Zayıf örnek

src/order-total.ts dosyasını açıkla ve neyin düzeltilmesi gerektiğini söyle.

İyi örnek

src/order-total.ts içindeki fonksiyonu açıkla. Hesabı sade bir dille anlat. Her parametreyle ilgili varsayımları, dört sınır veya geçersiz girdi durumunu ve artı/eksileriyle iki doğrulama politikasını listele. Çıkarıma dayanan iş kurallarını varsayım olarak etiketle. Dosyalarda değişiklik yapma.

Bu prompt neden daha iyi? Hiçbir dosya değişmeden sade bir açıklama, olası uç durumlar ve doğrulama seçenekleri elde edersiniz. Böylece koda dokunmadan önce amaçlanan davranışa siz karar verirsiniz.

Edit diff üretir, Agent görevi tamamlar

İstediğiniz davranışı netleştirdikten sonra işin ne kadar hareket alanı gerektirdiğine karar verin. Değişebilecek dosyaları adlandırabiliyor ve değişikliği açıkça tarif edebiliyorsanız Edit kullanın. Prompt'ta gerekli davranışı, korunacak noktaları, hata politikasını ve sonucu kanıtlayacak testleri belirtin. İyi bir Edit prompt'u, satır satır inceleyebileceğiniz küçük bir diff üretir.

Buradaki "sınırlı" ifadesi, Edit modunun teknik olarak uyguladığı bir kısıt değildir. İsteğinizde tanımladığınız kapsamı anlatır. Sınırı prompt'unuz koyar, incelemeniz ise bu sınıra uyulup uyulmadığını gösterir. Değişikliğin istediğiniz dosyalarda kaldığını varsaymayın. Gerçek dosya listesini ve diff'i mutlaka kontrol edin.

Tamamlanma için dosya inceleme, kod düzenleme, komut çalıştırma ve sonuca göre düzeltme gibi ardışık adımlar gerekiyorsa Agent kullanın. Başlamadan önce koruma sınırlarını yazın. Nihai sonucu, değişebilecek dosyaları, yasak eylemleri, doğrulama komutunu, başarı ölçütünü ve durma koşulunu belirtin. Son sınır yoksa küçük bir düzeltme, asıl görev gözden kaybolduktan sonra da genişlemeye devam edebilir.

IDE'nizdeki Agent modu ile GitHub'ın cloud coding agent özelliği aynı değildir. Cloud coding agent, GitHub Actions destekli bir ortamda çalışır ve incelemeniz için pull request açar. Yerel ortamda Agent seçmek görevi bu cloud workflow'a devretmez.

Sınırlı ve incelenebilir bir diff isteyin· github-copilot
Zayıf örnek

Sipariş toplamındaki negatif quantity sorununu düzelt ve testleri güncelle.

İyi örnek

src/order-total.ts içinde negatif quantity değerini parametreye özgü bir mesaj içeren RangeError ile reddet. Dışarı aktarılan fonksiyon imzasını ve geçerli girdilerde kullanılan hesabı koru. Yalnızca test/order-total.test.ts dosyasını güncelle. İncelemem için diff'i göster.

Bu prompt neden daha iyi? Yalnızca kaynak ve test dosyasını değiştiren küçük bir diff elde edersiniz. Yeni kural için bir test eklenir ve geçerli girdi formülü korunur. Başka bir dosya değişirse öneriyi reddedin.

Agent'a bir sınır ve durma koşulu verin· github-copilot
Zayıf örnek

orderTotal doğrulamasını düzelt ve testlerin geçtiğinden emin ol.

İyi örnek

Üzerinde anlaşılan orderTotal doğrulamasını uygula. Yalnızca src/order-total.ts ve test/order-total.test.ts dosyalarını değiştirebilirsin. Şu komutu çalıştır: npx vitest run test/order-total.test.ts Yalnızca bu değişikliğin neden olduğu hataları düzelt. Hiçbir yapılandırmayı değiştirme. Odaklı test geçtiğinde veya komut çıktısıyla birlikte bir engel bildirdiğinde dur. Değişen dosyaları ve sonucu özetle.

Bu prompt neden daha iyi? Tamamlanmış değişikliği, gerçek komut çıktısını ve değişen dosya listesini görürsünüz. Agent, yapılandırmaya veya ilgisiz dosyalara dokunmadan belirlediğiniz sınırda durur.

Özeti değil, çıktıyı okuyun

Agent özetindeki "Tüm testler geçti" ifadesi yalnızca bir iddiadır. Gerçek komut çıktısını okuyun ve testlerin istediğiniz davranışı kapsadığını doğrulayın. Kendinden emin görünen bir özetin altında dönüş türünü değiştiren veya önemli bir durumu test etmeyen bir diff bulunabilir.

Bir öneri aslında nereden gelir?

Tuşa basmanızla önerinin ekranda görünmesi arasındaki yol, "Copilot böyle söyledi" ifadesinin neden kanıt olmadığını gösterir. Aşağıdaki sırayı düşünme modeli olarak kullanın:

Editör girdisi → bağlam seçimi ve prompt oluşturma → proxy filtreleme
  → model üretimi → son işleme → önerinin gösterilmesi
  → insan incelemesi ve doğrulaması

Girdi, süreci başlatan yorum, tamamlanmamış fonksiyon, seçili kod veya chat isteğidir. Girdi ne kadar açık olursa sonucu değerlendireceğiniz ölçüt de o kadar açık olur. Bağlam ise isteğin görebildiği sınırlı içerik paketidir. İmlecin yakınındaki kod, seçili bölüm, açıkça eklediğiniz bir dosya, geçerli talimatlar ve önceki mesajlar bu pakete girebilir. Bağlamın tüm repository'yi kapsadığını düşünmeyin. Eklemediğiniz bir dosyanın Copilot tarafından dikkate alındığını varsayamazsınız. Proxy filtreleme, model üretimi ve son işleme gerçek mimari aşamalardır. Ancak bu aşamaların iç kurallarını editörden göremezsiniz. Gözlemlediğiniz sonucu kaydedin, görünmeyen bir neden hakkında tahminde bulunmayın.

Proxy filtreleme ile içerik dışlamasını birbirinden ayırın. Proxy filtreleme bu düşünme modelindeki işleme aşamalarından biridir. İçerik dışlaması ise belirli dosyalar için yapılandırılan ayrı bir korumadır ve modülün ilerleyen bölümünde ele alınır. Bir alıştırmada çıktı alabilmek için hiçbir korumayı kapatmayın. Öneri görünmezse yalnızca "öneri görünmedi" gözlemini kaydedebilirsiniz. Bunun bir filtre tarafından engellendiğini kanıtlayamazsınız.

Son aşama sizin inceleme ve doğrulamanızdır. Model üretimi yalnızca bir adayın ortaya çıktığını gösterir. Adayın doğru olduğunu göstermez. Öneriyi kabul etmek editördeki kodu değiştirir, fakat davranış hakkında kanıt sunmaz. Önceki dersteki alışkanlık burada da geçerlidir. Açık bir sözleşme ve gerçekten çalıştırılmış kontroller olmadan gösterilen koda güvenmeyin.

Bağlamı kanıt gibi yönetin

Copilot kendisine verilen bağlamdan hareket eder. Bu yüzden hangi kanıtı paylaştığınızı bilin. Davranış tek dosyadaysa dosya yolunu yazın. Soru yerelse ilgili fonksiyonu seçin. Hata ayıklıyorsanız hata metnini ekleyin. İlgili kodun nerede olduğunu gerçekten bilmiyorsanız repository incelemesi isteyin.

Bağlamı kontrollü tutmak iki yanıtı karşılaştırırken de önemlidir. Prompt'u, seçili kodu, ekli dosyayı ve konuşma geçmişini aynı anda değiştirirseniz sonuçtaki farkın nedenini anlayamazsınız. Her denemede tek bir değişkeni değiştirin. Prompt'u, seçimi, imleç konumunu ve çıktı ölçütünü sabit tutup yalnızca ekli bağlamı değiştirmek anlamlı bir karşılaştırma sağlar. Dosya referansları için yarım hatırladığınız özel söz dizimlerine güvenmeyin. Editörünüz dosya veya seçim eklemek için görünür bir kontrol sunuyorsa onu kullanın. Böyle bir kontrol yoksa dosya yollarını, sembolleri, tanılamaları ve hata metnini prompt'ta açıkça yazın. Sağlam bir istek, sürümler arasında değişebilecek tek bir token yazımına bağlı kalmaz.

Moddan bağımsız olarak aynı inceleme döngüsünü uygulayın. İstediğiniz sonucu belirtin, gerekli kanıtı sağlayın, kapsamı ve kısıtları tanımlayın, yanıtı, diff'i veya araç eylemlerini inceleyin ve işe yarayacak en dar kontrolü çalıştırın. Sonra gördüğünüz belirli bir uyuşmazlığa göre isteği iyileştirin. "Tekrar dene" demek Copilot'a düzeltilebilir bir bilgi vermez. Bunun yerine "Yama public dönüş türünü değiştirdi" veya "Test üst indirim sınırını kapsamıyor" gibi somut bir sorun belirtin. Açık bir geri bildirim uygulanabilir bir talimata dönüşür. Bu prompt'ları test edilebilir şartnamelere dönüştürmek için Kod İçin Prompting dersine geçin.

Şimdi siz deneyin

Aynı sorunu Ask, Edit ve Agent ile ele alın

Üç mod arasındaki farkı küçük bir fonksiyon üzerinde görün. Bu çalışma için yaklaşık sekiz dakika ayırın.

  1. 01

    Bir çalışma klasörü oluşturun. src/discount.mjs dosyasına price * quantity * (1 - discountRate) sonucunu döndüren discountedPrice(price, quantity, discountRate) fonksiyonunu ekleyin. Bir başarılı test yazın ve başlangıç durumunun yeşil olduğunu görmek için testi çalıştırın.

  2. 02

    Ask modunda formülün açıklanmasını, varsayımların belirtilmesini ve negatif quantity değeri verildiğinde ne olduğunun anlatılmasını isteyin. Dosyalarda değişiklik yapılmamasını açıkça belirtin.

    İpucu: İyi bir yanıt, başlangıç kodunun negatif quantity değerini kabul ettiğini belirtir.

  3. 03

    Politikaya kendiniz karar verin. Negatif quantity değeri RangeError üretmeli, diğer davranışlar aynı kalmalıdır.

  4. 04

    Edit modunda iki dosyayla sınırlı bir diff isteyin. Negatif quantity için bir test eklenmesini ve mevcut testlerin korunmasını belirtin. Öneriyi kabul etmeden önce gerçek diff'i okuyun.

  5. 05

    Agent modunda üzerinde anlaştığınız politikanın uygulanmasını ve test komutunun çalıştırılmasını isteyin. Yalnızca özeti değil, terminal çıktısını da okuyun.

Üç başarılı test ve iki dosyayla sınırlı bir diff elde edersiniz. Ayrıca Ask, Edit ve Agent modlarının hangi aşamada neden uygun olduğunu uygulama üzerinde görmüş olursunuz.

Aklınızda kalsın

  • Mod bir çalışma sözleşmesidir. Anlamak için Ask, sınırlı bir diff için Edit, araç gerektiren çok adımlı görev için Agent kullanın.
  • İşi tamamlayabilecek en sınırlı modla başlayın ve yalnızca ihtiyaç olduğunda daha geniş yetkili moda geçin.
  • Edit modunda sınırı prompt'unuz belirler. Gerçek dosya listesini ve diff'i her zaman inceleyin.
  • Bir önerinin üretilmesi yalnızca adayın gösterildiğini kanıtlar, adayın doğru olduğunu kanıtlamaz.
  • Yalnızca gerekli bağlamı paylaşın ve yanıtları karşılaştırırken her denemede tek bir değişkeni değiştirin.

Kendinizi test edin

  1. 1. Devraldığınız fiyatlandırma fonksiyonunun neden iki kez yuvarlama yaptığını bilmiyorsunuz. Önce hangi modu kullanmalısınız?

  2. 2. Satır içi bir önerinin geçtiği aşamalar hangi seçenekte doğru sıralanmıştır?

  3. 3. Bir fonksiyon yazarken hiçbir öneri görünmüyor. Bu durumda kesin olarak ne söyleyebilirsiniz?

  4. 4. Bir Agent prompt'unda hedef açıkça belirtilmiş, ancak durma koşulu verilmemiştir. Bunun riski nedir?

  5. 5. Eklenen bir dosyanın Copilot yanıtını nasıl etkilediğini karşılaştırmak istiyorsunuz. Geçerli bir karşılaştırmayı nasıl yaparsınız?

  6. 6. Copilot, Edit modunda bir diff sunuyor. Sınırlı bir değişiklik istediğiniz için bu sınırın korunduğundan emin olabilir misiniz?

Sık sorulan sorular

IDE'deki Agent modu ile GitHub cloud coding agent aynı şey midir?

Hayır. IDE'deki Agent modu yerel editör oturumunda çalışır. Cloud coding agent ise GitHub Actions destekli bir ortamda görev yürütür ve incelemeniz için pull request açar. Editörde Agent modunu seçmek görevi bu cloud workflow'a göndermez.

Editörümde üç modun tamamı görünmüyor. Ne yapmalıyım?

Özelliklerin kullanılabilirliği plana ve geliştirme ortamına göre değişir. Ayarları değiştirmeden veya uzantıları yeniden yüklemeden önce GitHub Copilot özellik matrisini kontrol edin. Arayüzün her yerde aynı olduğunu varsaymak yerine kullandığınız ortamda sunulan modlarla çalışın.

Bağlama dosya eklemek için özel bir "#file" söz dizimi gerekir mi?

Hayır. Editörünüzde görünen bağlam kontrollerini kullanabilirsiniz. Bu kontroller yoksa dosya yollarını, sembolleri, seçimleri, tanılamaları ve hata metnini prompt'ta doğrudan belirtin. Referans token'larının yazımı sürümler arasında değişebilir. Sağlam bir prompt tek bir yazıma bağlı kalmaz.

Bu dersteki terimler

chat modu
Copilot'tan istediğiniz eylem düzeyi. Ask açıklama, Edit sınırlı değişiklik, Agent ise araçlarla yürütülen çok adımlı görev içindir.
Agent modu
Copilot'un tanımladığınız dosya sınırları ve durma koşulları içinde dosya inceleyebildiği, kod düzenleyebildiği ve sırayla komut çalıştırabildiği moddur.
öneri yaşam döngüsü
Editör girdisinden bağlam oluşturmaya, işlemeye, gösterime ve insan incelemesine uzanan aşamalardır. Bir önerinin üretilmesinin neden doğruluk kanıtı olmadığını anlamaya yardımcı olur.
bağlam
Bir isteğin görebildiği sınırlı kod, seçim, dosya ve geçmiş paketidir. Açıkça eklenmedikçe tüm repository bağlama dahil değildir.

Daha fazla kaynak