Yapay Zekaya Nasıl Komut Verilir? Agent Araçlarıyla Yazılım Geliştirme

• • 8 dk okuma 15 görüntülenme

Selamlar,

Hepimiz yapay zeka ile yazılım geliştirmeyi günlük hayatımıza adapte ettik. Ama artık bu, ChatGPT’ye kod yapıştırıp cevabı geri kopyalamaktan ibaret değil. Claude Code, Antigravity, Cursor gibi araçlar direkt projenin içinde çalışıyor. Dosyaları kendisi okuyor, terminali kendisi açıyor, testi kendisi çalıştırıyor. Peki bu araçlara işi doğru anlatmak için yapay zekaya nasıl komut verilir?

Bu araçlara ilk geçtiğimde yaptığım en büyük hata, eski alışkanlıkla komut yazmaktı. Tek cümlelik, bağlamsız, “şunu yap” tarzı şeyler. Sonuç da ortada: yarım yamalak işler, istemediğim dosyalarda değişiklikler, bir sürü geri alma. Zamanla neyin işe yaradığını öğrendim, bu yazıda onları anlatacağım.

Yapay zekaya nasıl komut verilir? Chat ile agent arasındaki fark

Chat’te bağlamı sen taşıyordun. Hata mesajını yapıştırıyordun, ilgili kodu yapıştırıyordun, cevabı alıp deniyordun, olmazsa geri dönüyordun.

Agent araçlarında bu iş değişiyor. Araç projenin klasör yapısını görüyor, ilgili dosyaları açıyor, gerekirse testi çalıştırıp hatayı kendisi okuyor. Yani ona kod göstermene gerek yok. Senin işin ne istediğini ve nelere dikkat etmesi gerektiğini anlatmak.

Ben şöyle düşünüyorum: ekibe yeni katılmış bir arkadaşa iş veriyorsun. Ona “şu dosyadaki 42. satır hata veriyor” demezsin, “profil sayfasına avatar yükleme ekle, upload servisimiz zaten var, onu kullan, bir de test yaz” dersin. Agent’a da aynen böyle konuşmak lazım.

Yanlış anlaşılmasın, chat’in işi bitmedi. Tek seferlik bir soru, bir regex ya da bir kavram açıklaması için hala gayet mantıklı. Ama projenin içinde çalışacaksan agent araçları çok daha verimli.

Önce projenin kural dosyasını yaz

Bunu keşfettiğimde yapay zeka ile kod yazmam daha da kolaylaştı. Claude Code’da CLAUDE.md diye bir dosya var. Antigravity ve Cursor’ın da benzer şekilde kural ya da talimat tanımlayabildiğin yerleri var. Mantık hep aynı: araç her oturumda projeni baştan öğrenmesin diye kalıcı bir not bırakıyorsun.

Ben içine projenin ne yaptığını iki üç cümleyle yazıyorum, hangi teknolojileri kullandığımı, testi ve build’i hangi komutla çalıştıracağını ve bir de “şunu asla yapma” diyeceğim şeyleri. Örneğin benim bir projedeki dosya kabaca şöyle:

# Sipariş Takip Paneli
Next.js 15, TypeScript, Tailwind, Prisma (PostgreSQL)
Test: npm run test / Lint: npm run lint
Bileşenler src/components altında, her biri kendi klasöründe
Yeni paket eklemeden önce bana sor
Kullanıcıya görünen tüm metinler Türkçe

Bir kere yazıyorsun, sonra her komutta “TypeScript kullan, Tailwind kullan” diye tekrar etmiyorsun. Bu dosyayı kısa tutmakta fayda var. Agent’ın her seferinde bilmesi gerekenleri yaz, projenin tarihçesini değil. Çok şişirirsen araç önemli kuralları gözden kaçırabiliyor.

Büyük işlerde önce plan iste

Agent’lar hızlı çalışıyor ve bu iki yönlü bir şey. Yanlış anladığı bir işi dakikalar içinde on beş dosyaya yayabiliyor. Ben bunu birkaç kez yaşadıktan sonra, büyük işlerde direkt kod yazdırmayı bıraktım.

Claude Code’da plan modu var, diğer araçlarda da benzer bir şey bulunuyor. Olmasa bile komutla aynı etkiyi yaratabilirsin. Şöyle bir şey yazıyorum mesela:

Ürün sayfasına favorilere ekleme özelliği koymak istiyorum. Henüz kod yazma. Projeyi incele, hangi dosyalarda değişiklik gerekeceğini ve nasıl bir yol izleyeceğini yaz. Emin olmadığın bir yer varsa bana sor.

Çıkan planı okuyorsun, “şurası olmaz, böyle yapalım” diyorsun. Yanlış bir planı düzeltmek, yanlış yazılmış kodu geri sarmaktan çok daha basit.

Görevi ne çok büyük ne çok küçük ver

“Sepet sistemini yap” demek çok geniş, ne yapacağını kendi kafasına göre seçiyor. Öbür uçta, chat zamanından kalma alışkanlıkla tek tek fonksiyon istemek de agent’ın gücünü boşa harcıyor.

Benim bulduğum denge, bitirilebilir ve sınırı belli bir iş vermek. Mesela:

Sepete ürün ekleme akışını yaz. POST /api/cart endpoint’i, Prisma’da CartItem modeli ve ürün kartındaki “Sepete Ekle” butonuna bağlanması gerekiyor. Aynı ürün tekrar eklenirse adedi artırsın. Bitince testleri çalıştır.

Burada ne yapılacağı belli, nerede duracağı belli. Agent “bitti” ne demek bilmiyorsa ya erken bırakıyor ya da gereğinden fazlasını yapıyor.

Doğrulama yolunu mutlaka söyle

Bence agent araçlarının en iyi yanı bu: yazdığı kodu kendisi çalıştırıp kontrol edebiliyor. Bundan mutlaka faydalanmalıyız. Komutun sonuna “bitince npm run test çalıştır, hata varsa düzelt” yazman yeterli. Ya da test odaklı çalışıyorsan önce başarısız bir test yazdırıp sonra kodu geçecek şekilde yazdırabilirsin.

Bunu eklemeden önce çok yaşadığım bir şey vardı: “Kod hazır” diyor, ben çalıştırıyorum, patlıyor, hatayı geri yapıştırıyorum. Aradaki o gidip gelme tamamen ortadan kalktı.

Kapsamı sen çiz

Agent’ın elinde klavye de var terminal de. O yüzden neye dokunmayacağını söylemek şart. “Sadece src/features/cart altında çalış”, “mevcut API yanıt formatını bozma”, “veritabanı şemasına dokunman gerekiyorsa önce sor” gibi şeyler yazıyorum.

Bir de şu var: bazı araçlar iş yaparken “madem buradayım şurayı da temizleyeyim” diyebiliyor. Sonra bakıyorsun, yapmasını istediğin üç satırlık işin diff’i kırk dosya olmuş. Bunu önlemek için “bu işle ilgisiz dosyalara ve kullanılmayan kodlara dokunma” demek işe yarıyor.

Ne kadar serbestlik vereceğin de işin riskine bağlı. Küçük ve geri alınabilir işlerde rahat bırakabilirsin. Veritabanı, deploy, dosya silme gibi geri dönüşü zor şeylerde ise mutlaka onay isteyecek şekilde ayarla.

Projedeki mevcut koda işaret et

Yeni bir şey yazdıracaksan, projede benzeri varsa onu göstermek uzun açıklamadan iyi. “Yeni OrderList bileşenini ProductList’in yapısına benzer şekilde yaz, aynı klasör düzenini ve aynı veri çekme yöntemini kullan” gibi. Araç o dosyayı açıp stili yakalıyor ve kod projenin geri kalanıyla uyumlu çıkıyor.

Yaptığı değişikliklere mutlaka bak

Kod çalışıyor diye iyi olduğu anlamına gelmiyor. Diff’i açıp şunlara bakıyorum: istemediğim dosyaya dokunmuş mu, gereksiz paket eklemiş mi, güvenlik açısından garip bir şey var mı.

En sinir bozucusu da şu: bazen testi geçirmek için kodu düzeltmek yerine testi değiştiriyor. Evet, gerçekten oluyor. Bu yüzden komutlarıma “testleri değiştirme, kodu düzelt” cümlesini ekledim.

Yanlış gidiyorsa durdur

Agent yanlış yolda ilerliyorsa durdurmaktan çekinme. “Dur, bu yaklaşım olmaz, şöyle yapalım” demek çok normal. Oturum uzadıkça ve yanlış denemeler biriktikçe bağlam da karışıyor. Böyle durumlarda yeni bir oturum açıp, o ana kadar öğrendiklerini de içeren net bir komutla baştan başlamak çoğu zaman daha hızlı ve daha anlamlı sonuç veriyor.

Hangi Yapay Zeka Aracını Kullanmak Mantıklı?

Claude Code mu Antigravity mi diye kararsız kalanlarımız elbet vardır. Burda kesinlikle şunu kullanın demeyeceğim. çünkü hepsini farklı şekilde kullanan insanlar var. Claude Code terminal odaklı çalışıyor, Antigravity ise IDE deneyimini agent’larla birleştiriyor. Hangisi iş akışına daha çok uyuyorsa onu seç. Komut verme mantığı hepsinde büyük oranda aynı. Kısacası AI ile yazılım geliştirmek artık bir ekip arkadaşına iş devretmeye daha çok benziyor. Projenin kurallarını bir kere yazıyorsun, işi net tarif ediyorsun, nasıl kontrol edeceğini söylüyorsun ve sonunda çıkanı kendin gözden geçiriyorsun. Benim için bu dört şey çıktının kalitesini en çok değiştiren şeyler oldu.

Siz bu araçlarla çalışırken hangi yöntemleri kullanıyorsunuz? Benim kaçırdığım bir yöntem varsa yorumlarda yazın, ben de deneyeyim.

Bir sonraki yazımda görüşmek üzere, sağlıkla kalın.

Yazar

Ünsal Gel

Çocukluk yıllarımdan beri bilgisayara olan merakım sayesinde yazılım dünyasıyla tanıştım. Yeni şeyler öğrendikçe teknolojiye ve yazılıma olan merakım gitgide artmaya başladı. Kendi araştırmalarımda Türkçe kaynak bulmakta zorlandığım konuları anlatmak için bir blog açmaya karar verdim ve şimdi buradayım. Umarım blogumda keyifli ve bilgi dolu zaman geçirirsiniz.

Yorum Yap

Gerekli alanlar * ile işaretlenmişlerdir.

Bu site istenmeyenleri azaltmak için Akismet kullanır. Yorum verilerinizin nasıl işlendiğini öğrenin.