IDE'de AI Asistanları: Copilot Agent Mode, Rider AI ve Güvenli Kullanım
Derleyici uydurulmuş API'yi yakalar, derlenen yanlış davranışı ise yalnız iş kuralını bilen test yakalar: agent'ın yazdığı testte MidpointRounding.HalfUp CS0117 verdi, implementasyondaki banker's rounding'i 1,025 sınır değeriyle bir xUnit testi buldu. Completion, NES, chat ve agent farkı; Visual Studio 2026 18.x, VS Code 1.145 ve Rider 2026.2'nin AI özellikleri; copilot-instructions.md, MCP güveni ve güvenli kullanım kuralları.
Sürüm notu: Bu yazıdaki kodlar .NET 10 SDK (Software Development Kit) 10.0.402 ve xUnit 2.9.3 ile derlenip denenmiştir. Visual Studio 2026 (18.11), Visual Studio Code (VS Code) 1.145 ve Rider 2026.2'nin AI (Artificial Intelligence) özellikleri bu yazı için çalıştırılmadı; anlatım 8 Kasım 2026 itibarıyla resmi release notes, dokümanlar ve sürüm duyurularından. Tarih notu: bu, serinin en hızlı eskiyen yazısı; özellik adları ve "preview" etiketleri her ay değişiyor, yayından sonra okuyorsan release notes ile yeniden doğrula.
Önce Tahmin Et
Bookstore'un indirim service'i için bir AI agent'ına "DiscountService için xUnit testleri yaz, yarım kuruşları yukarı yuvarlamayı da test et" diyorsun. Agent beş test yazıyor, açıklaması ikna edici, diff temiz görünüyor. Testlerden biri şu satırla bitiyor:
Assert.Equal(Math.Round(expected, 2, MidpointRounding.HalfUp), discount);
Sence bu test derlenir mi? Derlenirse geçer mi? Ve agent'ın aynı oturumda yazdığı implementasyondaki Math.Round(price * rate, 2) iş kuralına uyuyor mu? Cevaplar yazının ortasında, gerçek derleyici ve test çıktılarıyla.
Dört Kademe: Completion, Next Edit Suggestions, Chat, Agent
IDE'deki (Integrated Development Environment) AI yardımı aynı şey değil; dört kademesi var ve her kademede kontrol senden biraz daha uzaklaşıyor. Inline completion, imlecin olduğu yere bir sonraki birkaç satırı önerir; Tab'e basmazsan hiçbir şey olmaz. Next edit suggestions (NES), az önce yaptığın değişikliğe bakıp dosyanın başka bir yerinde yapman gereken bir sonraki düzenlemeyi önerir; Visual Studio 18.7 ile uzak mesafeli NES'i (dosyanın uzak bir yerindeki öneriyi) varsayılan olarak kapalı bir seçenek olarak getirdi. Chat (Ask) soruları cevaplar ve kod önerir, ama dosyalara kendisi dokunmaz. Agent mode ise bir hedef alır, dosyaları okur ve değiştirir, terminalde komut çalıştırır, build ve test sonuçlarına bakıp tekrar dener.
Bu ayrımın pratik sonucu şu: kademe yükseldikçe review'in ağırlığı artar. Completion'ı satır satır görürsün; agent'ın on dosyalık değişikliğini ise ancak diff'i okuyarak görürsün. Agent'a ne kadar özerklik verdiğin, yani her komut için onay isteyip istemediği, IDE'lerin permission ayarlarıyla belirlenir; VS Code 1.111'de agent permission seviyeleri ve görev bitene kadar kendi kendine yineleyen Autopilot (preview) bu yüzden ayrı ayarlar olarak geldi.
Visual Studio 2026: Agent, Copilot SDK, BYOK, Debugger ve Profiler Agent
Visual Studio'nun AI tarafı 18.x hattı boyunca neredeyse her ay değişti. Release notes'tan bir .NET geliştiricisini ilgilendirenler:
- 18.0 (Kasım 2025): unit test'ler için Debugger Agent ve CPU (Central Processing Unit) ile allocation analizi yapan Profiler Agent; Copilot Chat'te
@profilerile çağrılır. - 18.4 (Mart 2026):
.agent.mddosyalarıyla custom agent'lar, agent mode için symbol bulanfind_symbolaracı, kurumsal MCP (Model Context Protocol) yönetimi için yönetici allowlist'leri. - 18.5 (Nisan 2026):
.github/skills/,.claude/skills/,.agents/skills/klasörlerinden otomatik bulunan agent skill'leri ve bug'ı yeniden üreten, tracepoint'lerle izleyen, düzeltmeyi çalışma zamanında doğrulayan Debugger Agent. - 18.7 (Haziran 2026): MCP server trust validation; bir MCP server'ın configuration'ı ya da dosyaları değiştiğinde yeniden onay ister, varsayılan olarak açık.
- 18.8 (Temmuz 2026): Copilot CLI (Command Line Interface) ile aynı GitHub Copilot SDK üzerine kurulu Agent (Preview), agent seçiciden seçilir.
- 18.10 (Eylül 2026): BYOK (Bring Your Own Key, preview); Microsoft Foundry, OpenAI, Anthropic, Ollama ve özel endpoint'lerle kendi model anahtarını kullanmak. Release notes, Ask ve Agent mode'daki eski BYOK deneyiminin artık desteklenmediğini breaking change olarak yazıyor.
- 18.11 (Ekim 2026): Copilot SDK üzerine kurulu yeni Copilot chat deneyimi, opt-in olarak Tools > Options > GitHub > Copilot > Copilot Chat altından açılıp yeniden başlatma gerektiriyor.
Debugger ve Profiler Agent'ın debugger ve profiler özellikleriyle ilişkisi Debugging serisinin beşinci yazısında ve ilerideki Profiling serisinde; burada önemli olan, bu agent'ların IDE'nin araçlarını (breakpoint, tracepoint, profiler oturumu) kendi başlarına kullanabilmesi. Bu güç, review sorumluluğunu da büyütüyor.
VS Code: Agent Oturumları, Harness'lar ve Automation'lar
VS Code 2026'da editörden çok bir agent çalışma alanına dönüştü. 1.120 (13 Mayıs 2026) ile Agents window Stable kanala geldi: bütün projelerdeki agent oturumlarını tek pencerede yönetirsin. 1.130 ile agent host, oturumları birden fazla VS Code penceresinden bağlanılabilen ayrı bir process'te çalıştırmaya başladı. 4 Kasım 2026'daki 1.145'te iç içe oturumlar farklı harness kullanabiliyor (preview): Copilot'un yazdığı planı aynı oturum içinde Claude'a review ettirmek ya da aynı işi Codex'e verip yan yana karşılaştırmak mümkün; her alt oturumun kendi modeli, agent'ı ve permission seviyesi var. Aynı sürümde automation'lar cron ifadeleriyle zamanlanabilir hale geldi; agent'ın ne kadar ayrıntı göstereceği de ayarlanabiliyor.
.NET tarafında agent, C# Dev Kit'in language server'ı ve dotnet CLI ile çalışır; Angular tarafında integrated browser'da açtığı sayfanın içeriğini ve konsol hatalarını görebilir. Altıncı yazıdaki Dev Container'ın agent oturumları için izolasyon sınırı olarak kullanılabilmesi (1.140) güvenlik açısından önemli bir adım: agent'ın çalıştırdığı komutlar senin host makinende değil, container'da koşar.
Rider: AI Chat, Junie, Yerleşik Copilot ve .NET Agent Skills
JetBrains'in yaklaşımı tek bir agent'a bağlanmamak. Rider'daki AI chat'in agent seçicisinde JetBrains'in kendi coding agent'ı Junie, ACP (Agent Client Protocol) Registry üzerinden eklenen agent'lar ve 2026.2 ile Microsoft ile ortaklık sonucu yerleşik gelen GitHub Copilot var; Copilot için ACP kurulumu gerekmiyor, aktif bir Copilot aboneliği yeterli. AI completion tarafında JetBrains'in kendi eğittiği modellerin yanında 2026.2 ile llama.cpp gibi yerel çalışan, OpenAI uyumlu endpoint'ler bağlanabiliyor.
2026.2'nin asıl farkı agent'ları IDE'nin zekâsına bağlaması: dotCover verisinden hangi testin nereye yazılacağını bulan finding-tests, dotTrace snapshot'ını okuyan dottrace-analyze gibi paketli skill'ler; Microsoft'un resmi .NET, Aspire ve Azure skill'lerinin IDE'den bulunup kurulabilmesi; Claude Code için her değişikliği doğrulayan ve derleme hatası varken agent'ın işi bitirmesini engelleyen kalite kontrol hook'ları. Skill'ler Settings > Tools > AI Assistant > Skills, hook'lar Tools > AI Agent Hooks altında. 2026.2.2 ile status bar'a gelen AI Agent Setup widget'ı bu özelliklerin hangisinin açık olduğunu tek yerde gösteriyor. ReSharper 2026.2 da Visual Studio içinde ACP tabanlı agent desteğine Junie'nin preview'ıyla başladı.
Repo'daki Talimatlar: copilot-instructions.md, Skill'ler ve MCP Güveni
Agent'ın ekibin kurallarını bilmesinin yolu, kuralları repo'ya yazmak. Visual Studio ve VS Code, repo'daki .github/copilot-instructions.md dosyasını her isteğin bağlamına ekler; Visual Studio 18.3'te gelen /generateInstructions komutu bu dosyanın bir taslağını üretir. Bookstore için kısa ve denetlenebilir bir örnek:
# Bookstore coding instructions
- Target .NET 10 and C# 14. Use file-scoped namespaces, primary constructors and collection expressions.
- Money is always decimal. Round to 2 digits with MidpointRounding.AwayFromZero.
- Tests use xUnit. One behavior per test; name tests Method_condition_result.
- Never add a NuGet package without asking. Never read or print files under secrets/ or *.pfx.
- Run `dotnet build` and `dotnet test` before saying a task is done.
Talimat dosyası bir güvenlik kontrolü değil, bir rica. "secrets klasörüne dokunma" yazmak agent'ın oraya erişemeyeceği anlamına gelmez; bu yüzden aşağıdaki güvenli kullanım kuralları ayrıca gerekli. Aynı mantık skill'ler ve MCP server'lar için de geçerli: bir skill ya da MCP server, agent'a yeni araç ve talimat ekler; sekizinci yazıdaki extension güvenliği kuralları birebir burada da geçerli. Visual Studio'nun 18.7'deki MCP trust validation'ı, onayladığın bir server'ın sessizce değişmesine karşı bir önlem. MCP server yazmak ise ilerideki AI Agent'ları ve MCP serisinin konusu.
Uydurulmuş API'yi Derleyici, Yanlış Davranışı Test Yakalar
Önce Tahmin Et'e dönelim. Agent'ın yazdığı test dosyası:
[Theory]
[InlineData(100.00, 0, 0.00)]
[InlineData(100.00, 2, 5.00)]
[InlineData(100.00, 5, 10.00)]
[InlineData(10.25, 5, 1.03)]
public void LoyaltyDiscount_rounds_half_away_from_zero(decimal price, int years, decimal expected)
{
decimal discount = _service.LoyaltyDiscount(price, years);
Assert.Equal(Math.Round(expected, 2, MidpointRounding.HalfUp), discount);
}
$ dotnet test tests/Bookstore.Pricing.Tests
./tests/Bookstore.Pricing.Tests/DiscountServiceTests.cs(16,63): error CS0117: 'MidpointRounding' does not contain a definition for 'HalfUp'
İlk cevap: derlenmez. HalfUp .NET'te yok; Java'nın RoundingMode.HALF_UP'ından tanıdık gelen, makul görünen ama uydurulmuş bir API (Application Programming Interface). Bu tür hatanın iyi tarafı derleyicinin onu anında yakalaması; bu yüzden agent'a "işi bitirmeden önce build al" demek (Rider 2026.2'nin hook'u tam olarak bunu zorunlu kılıyor) en ucuz güvenlik ağı. Test satırını düzeltip Assert.Equal(expected, discount) yaptık ve testleri çalıştırdık:
[xUnit.net 00:00:00.06] Bookstore.Pricing.Tests.DiscountServiceTests.LoyaltyDiscount_rounds_half_away_from_zero(price: 10.25, years: 5, expected: 1.03) [FAIL]
Failed Bookstore.Pricing.Tests.DiscountServiceTests.LoyaltyDiscount_rounds_half_away_from_zero(price: 10.25, years: 5, expected: 1.03) [< 1 ms]
Error Message:
Assert.Equal() Failure: Values differ
Expected: 1.03
Actual: 1.02
Failed! - Failed: 1, Passed: 4, Skipped: 0, Total: 5, Duration: 9 ms - Bookstore.Pricing.Tests.dll (net10.0)
İkinci cevap: implementasyon iş kuralına uymuyor. Math.Round(decimal, int) varsayılan olarak MidpointRounding.ToEven kullanır (banker's rounding); 10,25'in yüzde 10'u olan 1,025, çift olan 1,02'ye yuvarlanır. İş kuralı yarım kuruşu yukarı yuvarlamak:
return Math.Round(price * rate, 2, MidpointRounding.AwayFromZero);
Passed! - Failed: 0, Passed: 5, Skipped: 0, Total: 5, Duration: 7 ms - Bookstore.Pricing.Tests.dll (net10.0)
Ders iki katlı. Derleyici uydurulmuş API'yi yakalar, ama derlenen yanlış davranışı yalnız iş kuralını bilen bir test yakalar. Agent hem implementasyonu hem testi yazarsa, ikisi aynı yanlış varsayımı paylaşabilir; sınır değerini (1,025 gibi) testte senin seçmen bu yüzden önemli.
Güvenli Kullanım: Diff, Secret'lar, Politika ve Lisans
Diff'i satır satır review et. Agent'ın açıklaması değil diff'i gerçektir; özellikle silinen testlere, gevşetilen assertion'lara, eklenen paketlere ve değişen configuration'a bak. Visual Studio 18.6'daki çok dosyalı özet diff görünümü ve parça parça kabul/geri al bu iş için var.
Secret'ları bağlama sokma. appsettings.Development.json'daki gerçek bir connection string, açık bir .env dosyası ya da terminal çıktısındaki bir token, agent'ın okuduğu bağlamın parçası olur. GitHub'ın dokümanına göre Copilot Business ve Enterprise'da content exclusion ile belirli dosyalar dışarıda bırakılabilir ve Visual Studio, VS Code ve JetBrains IDE'lerinde chat ve agent için destekleniyor; ama aynı doküman bunun bir dosya sistemi güvenlik sınırı olmadığını, agent'ların dolaylı dosya erişimini her zaman fark edemeyebileceğini açıkça yazıyor. Asıl önlem, sırrı geliştirme makinesinde düz dosyada tutmamak.
Organizasyon politikası ve lisans. Hangi modele, hangi veriyle, hangi plan üzerinden erişildiği bir hukuk ve uyum konusu; BYOK ile kendi anahtarını kullanmak kodun nereye gittiğini değiştirir. Copilot ve JetBrains AI'ın kurumsal planlarındaki politikaları (model seçimi, public code eşleşmesi, veri saklama) yönetici tarafından ayarlanır; bireysel geliştiricinin "bende açık" demesi yeterli değil.
AI ile çalışma yöntemi, prompt yazımı ve görev bölme ise Yapay Zeka kategorisindeki AI Destekli Geliştirme serisinin konusu; bu yazı yalnız IDE'deki araçları ve güvenlik çerçevesini anlatıyor.
Üretimde Dikkat
Agent'ı izole et. Komut çalıştırabilen bir agent'ı Dev Container'da, ayrı bir worktree'de ya da yetkisi kısıtlı bir ortamda çalıştırmak, yanlış bir rm ya da yanlış bir migration'ın etkisini sınırlar.
Maliyeti izle. Visual Studio 18.8 token tabanlı faturalama için kullanım takibi ve uyarılar ekledi; agent oturumları completion'dan çok daha fazla token tüketir. Uzun agent oturumlarını bütçe ve limitle yönet.
Sürüm takibi yap. Bu yazıdaki özelliklerin önemli bir kısmı preview; adı, yeri ya da varsayılan değeri bir sonraki ay değişebilir. Ekip için bir "AI araçları" sayfası tutup hangi özelliğin hangi sürümde açık olduğunu not et.
Sık Düşülen Tuzaklar
Derleniyorsa doğru sanmak. Gerçek çıktı: uydurulmuş HalfUp'ı derleyici yakaladı, banker's rounding'i yalnız test yakaladı.
Testi ve implementasyonu aynı agent'a aynı oturumda yazdırıp ikisini birden kabul etmek. Aynı yanlış varsayım iki tarafa da girer; en az sınır değerlerini sen seç.
Talimat dosyasını güvenlik kontrolü sanmak. copilot-instructions.md bir rica; erişim kontrolü işletim sisteminde, content exclusion'da ve izolasyonda.
MCP server'ı ve skill'i extension'dan farklı görmek. Hepsi agent'a yeni yetenek ve yeni talimat ekleyen, senin yetkinle çalışan kod; aynı review'dan geçmeli.
Preview özelliği üretim akışının parçası yapmak. Bir sonraki güncellemede davranışı değişebilir; release notes'taki breaking change satırlarını oku (18.10'daki BYOK değişikliği gibi).
Küçük Bir Deneme
★☆☆ Repo'na bu yazıdaki gibi beş satırlık bir .github/copilot-instructions.md ekle ve agent'tan küçük bir değişiklik iste. Talimatlardan hangilerine uydu, hangilerine uymadı?
★★☆ Kendi projende bir service seç ve testlerini bir agent'a yazdır. Testleri çalıştırmadan önce diff'i oku ve şüphelendiğin satırları not et; sonra build ve test çıktısıyla karşılaştır. Derleyicinin yakaladığı, testin yakaladığı ve ikisinin de yakalamadığı sorunları ayrı listele.
★★★ Aynı görevi iki farklı harness'a ya da agent'a ver (VS Code 1.145'in iç içe oturumları ya da Rider'ın agent seçicisiyle) ve sonuçları karşılaştır: değiştirdikleri dosya sayısı, eklenen paket, testlerin geçip geçmediği, harcanan süre.
AI özellikleri en hızlı değişen alan, ama tek değişen o değil. Serinin son yazısında geriye bakıyoruz: Visual Studio 2022'den 2026'ya, Rider ve VS Code'un 2025 ve 2026'daki yenilikleri ve .NET 11 geçişi için bir kontrol listesi.