Kodlama ajanı nasıl yapılır
(ghuntley.com)- 2025 itibarıyla kodlama ajanını doğrudan yapmak, bireysel geliştiricilerin deneyebileceği en iyi projelerden biri
- Ajanlar yalnızca 300 satır kod ve bir LLM token döngüsü ile çalışır; bunu yapmak, tüketici olmaktan çıkıp bir AI üreticisine dönüşme fırsatı sunar
- Temel bileşenler dosya okuma, dosya listeleme, Bash çalıştırma, dosya düzenleme, kod arama gibi araçlardır ve bunlarla gerçek otomasyon işlevleri kurulabilir
- Model seçiminde Claude Sonnet, Kimi K2 gibi agentic modeller uygundur; gerekirse GPT gibi oracle modeller araç olarak bağlanıp daha üst düzey doğrulama yapılabilir
- Amp, Cursor, Claude Code, GitHub Copilot gibi ticari ürünler de pratikte benzer bir yapıya sahiptir
Atölye özeti
- Geoffrey Huntley'nin yürüttüğü ücretsiz bir atölye; kodlama ajanını doğrudan nasıl yapacağınızı ve mantığını uygulama odaklı şekilde anlatıyor
- Roo code, Cline, Amp, Cursor, Windsurf, OpenCode gibi mevcut ticari AI yardımcılarıyla yapı ve prensipler karşılaştırılıyor; ayrıca bunu bizzat uygulama fırsatı sunuluyor
- Geliştirme deneyimi sayesinde sıradan bir AI kullanıcısı olmaktan çıkıp AI kullanarak otomasyon araçları üreten bir geliştirici olarak gelişmek mümkün
- Temel yapı, yaklaşık 300 satırlık kod içinde LLM token'larını döngü biçiminde kullanarak ajan işlevleri oluşturmaya dayanıyor
- Her araç için primitive işlevler (okuma, dosya listeleme, çalıştırma, düzenleme, kod arama) ekleniyor; gerçek çalışma örnekleri ve kodlar GitHub deposunda açıklandı
Ajan nedir?
- Son dönemde "ajan" terimi çok yaygın kullanılıyor, ancak gerçek anlamı ve iç çalışma prensibi net değil
- Ajan geliştirmenin giriş engeli düştükçe, AI tüketicisinin ötesine geçip iş otomasyonuna yön veren bir üretici olarak gelişmek mümkün hâle geliyor
- 2025 itibarıyla, temel veritabanı kavramları (Primary key) gibi ajan geliştirme prensipleri de zorunlu bilgi hâline geliyor
- Canva gibi şirketler mülakat süreçlerinde şimdiden AI kullanımını teşvik ediyor ve AI otomasyon yeteneği işe alımın kilit unsurlarından biri oluyor
- Artık geride kalmanın nedeni AI değil; kişinin kendini geliştirip yeni araçları öğrenmemesi
Kodlama ajanının temel ilkeleri
- Kodlama ajanı yalnızca 300 satır kod ve bir LLM token döngüsü ile kurulur; tekrar eden token girişleri üzerinden işlev üretir
- Eşzamanlı çalışma (concurrent work) kavramı önemlidir
- Örnek: Zoom toplantısı sırasında bile ajan paralel olarak çalışıp iş akışının verimini ciddi biçimde artırabilir
- Her LLM agentic değildir
- 'yüksek güvenlik' (örn. Anthropic, OpenAI)
- 'düşük güvenlik' (örn. Grok)
- 'oracle' (özetleme ve üst düzey düşünmede avantajlı)
- 'agentic' (eyleme yatkın, hızlı yineleme ve araç çağırma)
- Geliştiriciler modellere özgü özellikleri anlamalı ve amaca göre kullanılacak modeli seçmelidir
- Bağlam penceresini koşulsuz büyütmek performansı düşürür; "ne kadar az verirseniz sonuç o kadar iyi olur" ilkesini akılda tutmak gerekir
- Aşırı MCP araç kaydı performans düşüşüne yol açar
- Kural: "Less is more" → en iyi performans için yalnızca gerekli araç ve verileri bağlama yerleştirmek gerekir
Kodlama ajanı kurma sürecinin akışı
-
1. Araç kaydı ve fonksiyon çağırma
- Örneğin LLM'e bir hava durumu sorgulama aracı kaydedilir ve LLM'in uygun durumlarda buna fonksiyon çağırma biçiminde yanıt verebilmesi sağlanır
- MCP(Model Context Protocol), "bir fonksiyon için bilgi afişi"ne benzer; sadece fonksiyon açıklaması kaydedilse bile otomatik çağrı mümkün olur
-
2. Primitive araçların temel işlevleri
- Dosya okuma (ReadFile): Yol verildiğinde dosya içeriğini bağlama okur
- Dosya listeleme (ListFiles): Bir dizindeki dosya ve klasör listesini sağlar
- Komut çalıştırma (Bash): LLM sistem kabuğu komutlarını çalıştırır ve sonucu döndürür
- Dosya düzenleme (Edit): Belirli bir dosyayı oluşturma veya değiştirme işini otomatikleştirir
- Kod arama (CodeSearch): Desen, anahtar kelime veya fonksiyon adına göre tüm kod tabanında hızlı arama yapar (ripgrep kullanır)
-
3. Örnekler ve sonuç akışı
- Her araç LLM'e entegre edilerek yalnızca doğal dil prompt'u ile ardışık işler (örn. FizzBuzz kodu üretme → çalıştırıp doğrulama, dizin gezme → içerik analizi) otomatikleştirilebilir
- Araç fonksiyonları kullanıcı girdisine veya senaryoya göre sırayla çağrılır ve sonuçlar döngü içinde tekrar tekrar döndürülür
- Ajanın temel çalışma dizisi: kullanıcı girdisi → araç çağrılıp çağrılmayacağına karar verme → aracı çalıştırma → sonucu bağlama ekleme → tekrar
Genişleyebilirlik ve açık kaynak
- Günümüzde çoğu kodlama ajanı ripgrep gibi mevcut açık kaynak araçlar üzerine kuruludur
- GitHub'da SST Open Code, mini-swe-agent gibi yalnızca 100 satırla yazılmış basit ama güçlü ajan projeleri vardır; performans ve yapı açısından iyi birer referanstır
- Geliştiricilere, mevcut ürünleri kıyaslamak yerine bizzat yaparak prensipleri anlamaları ve kullanmaları tavsiye edilir
- Gerçek işlerde ve otomasyonda uygulandığında, kendi ajanını üretmek ve bunu organizasyon içinde yaymak rekabet avantajına dönüşür
Sonuç ve çıkarımlar
- Kodlama ajanı karmaşık bir teknoloji değil, basit bir döngü yapısı ve araç kombinasyonudur
- Kodlama ajanı geliştirmenin özü, yapıyı anlamak ve hızlı uygulamaktır; bizzat geliştirme deneyimi, AI teknolojisindeki değişimlere aktif yanıt vermeyi sağlar
- Bugün asıl önemli olan şey AI'ın kendisinden çok sürekli kendini geliştirmek ve araç üretme yetkinliğine yatırım yapmaktır
- "İşinizi elinizden alacak olan AI değil; ajanlarla donanıp otomasyon yapan ve daha hızlı çalışan iş arkadaşlarınızdır"
4 yorum
Hacker News görüşleri
Princeton SWE-bench ekibimizde, yaklaşık 100 satır kodla SWE-bench'te iyi sonuç veren bir ajan yaptık; ilgini çekerse bir bakmanı öneririm: mini-swe-agent
Yapının gerçekten epey basit olmasına şaşırdım, bunu paylaştığın için teşekkürler
Tüm kod aslında şu prompt'larla çalışıyor: ajan temel prompt kaynak kodu
Ajan örnek prompt'larındaki “1. Kod tabanında ilgili dosyaları bul ve oku 2. Sorunu yeniden üreten bir script oluştur 3. Sorunu düzelt 4. Script ile düzeltmeyi doğrula 5. Edge case'leri test et” kısmı faydalı
Ben de debug döngüsünde buna benzer prompt'lar kullanıyorum
“Kod tabanını analiz ettikten sonra olası kök nedenleri listele, olasılık sırasına göre sırala ve script ya da debug logging ile hipotezleri doğrula” yaklaşımı kendi problem çözme rutinimde çok işe yarıyor
Sorun tek bir dosyada kendi içinde çözülüyorsa, LLM kullanarak düzeltmek çok kolay
Ama genel bir kod tabanında dosyalar ve bağlam oraya buraya dağılmış oluyor; geliştiricinin yapılandırılmış tasarım niyetine ve organizasyonuna uygun şekilde bunu kavramak kolay değil
Güzel bir deneme, alkışı hak ediyor; ama bence eksik tarafı araç sayısının az olması
Kodun büyük kısmı ajan framework'üne ait ve yalnızca SWE'ye özel kod sanıldığı kadar fazla değil
Ben de eğlencesine bir SWE ajanı yaptım; istersen autocode'a da bakabilirsin
Teşekkür etmek için bunu referanslara ekledim
Thorsten Ball'ın yazdığı çok benzer bir “ajan nasıl inşa edilir rehberi” AmpCode How To Guide içinde de var
Genel olarak Amp de oldukça ilginç
Artık gizemli bir servis değil ama ajan kodlama araçlarının giderek daha açık hale gelmesi sevindirici
İleride çeşitli yazılımlarda bu tür ajan modellerinin varsayılan olarak yer alacağını düşünüyorum
Bu çok daha okunaklı olmuş, bunun için teşekkürler
Yazarın bizzat Amp'te çalıştığı da belirtilmiş
Ghuntley de Amp'te çalışıyor
Bir resim genelde 1000 kelime eder derler ama bu materyalde görseller sanki %99,6 indirimli gibi
Bunun ne olduğunu merak ediyorum
Metinler de gerçek sunumdaki ifadelerin dikte edilmiş hali
Araç kullanım biçimiyle ilgili bunu doğrulayabilecek biri var mı diye merak ediyorum
Claude, ChatGPT vb. API üzerinden “araçlar” sunuyor ve araç çağrısı isteği geldiğinde yanıtlayan taraf aracı gerçekten çalıştırıp sonucu geri iletiyor diye anlıyorum
Ama modelin aslında sıkı anlamda metin tabanlı olduğunu düşününce, API'nin model yanıtını farklı yapılara nasıl dönüştürdüğünü merak ediyorum
Muhtemelen fine-tuning sürecinde belirli araç çağrılarını özel bloklar halinde gösteren örneklerle model bunu öğreniyor ve sonra Claude/ChatGPT sunucuları bunu yorumluyor diye tahmin ediyorum
Bununla ilgili dokümantasyon ya da dahili olarak kullanılan özel token'lara dair bilgi var mı, ayrıca kullanıcı girdisinin bu “anlam taşıyan” token'ları kötüye kullanması nasıl engelleniyor diye merak ediyorum
Anthropic'in yayımladığı bir uygulama dokümanı var
Anthropic Tool Use Documentation
Burada modelin aslında “metin” değil token düzeyinde çalıştığı net biçimde görülebiliyor
Bu, bir derleyicinin kaynak kodu parse edip anahtar kelimeler, parantezler, yapılar vb. için bir “token” dizisi oluşturmasına benziyor
Çıktı yalnızca gerçek kelimeleri değil, metadata da içerebilir
Kavramsal olarak doğru anlamışsın
LLM ile gerçek arayüz yalnızca “token”lar ve kontrol kanalıyla veri kanalı ayrı değil
Model API katmanında araç çağrısı talimatları ile kullanılabilir araçların listesi prompt'a ekleniyor; her biri için açıklama da veriliyor
Araç çağrısı gerektiğinde model yanıtına özel bir blok ekliyor (özel token'lar, araç adı ve parametreler dahil) ve API katmanı bunu çekip JSON biçimine dönüştürüyor
Araç çalıştırma sonuçları da özel token'larla kodlanıp ekleniyor
API katmanı, kullanıcının kendi başına bu tür token'ları enjekte etmesini engelliyor
En güncel SoTA modeller araç çağrıları için ciddi biçimde fine-tune edildi; buna genel amaçlı araç çağrısı ve belirli araç durumları da dahil (ör. Claude Sonnet modelinin Claude Code araçlarına özel ayarlanması)
Her şeyin çalışıyor olması neredeyse şaşırtıcı; araç çağrılarında fine-tuning gerçekten kritik rol oynuyor
Fine-tuning olmadan da çalışabilir ama başarı oranı ciddi biçimde düşer
“Araç çağrısı gerektiren örnekleri özel bloklarla döndürecek şekilde fine-tune edilmiştir” tahmininin doğru olduğunu düşünüyorum
Cevabı iyi bilmediğinde ya da talimat aldığında araç çağrısı formatında yanıt vermesi öğretiliyor
Hem formatı izleyen araç çağrısı örnekleri hem de bazı araçlara özel eğitim yapılıyor
Örneğin gpt-oss, bahsi hiç geçmese bile arama aracını kullanmaya eğilimli
Anthropic dokümanında ayrıca tanıdık araçlar listesi de var (ör.
text_editor,bash) ve bu araçların kullanımına dair daha derin anlamların ayrıca eğitilmiş olma ihtimali yüksekGerçekte yapı epey kırılgan ve her şey “özel token'lar veya token dizileri” gibi düşük seviyeli sinyaller üzerinden işliyor
“Token'ları sürekli döngüye atarsan bir ajan ortaya çıkar” sözünde
tokenyerineparakoyunca işin hicvi daha gerçekçi geliyorSonuçta sürekli para yakarsan bir ajan elde etmiş oluyorsun
Yerel modeller de sürekli gelişiyor
Şimdilik en iyi sonucu almak için token (= para) gerekiyor ama gelecekte bu değişebilir
Bu kadar çok görsel olunca okumak çok zorlaşıyor
Sanki bir scroll simülatörüne bakıyormuşum gibi
basharacı dışında neden özellikle başka araçlara ihtiyaç duyulduğunu merak ediyorumDosya listeleme, repo bulma ve gezme, dosya içeriği düzenleme gibi işler
bashile zaten yapılabilir değil miYoksa bu, yukarıdaki mini-swe-agent örneğinde gösterilen türden bir durum mu
Teknik olarak bakınca yalnızca
bashile oldukça geniş bir iş yelpazesi zaten yapılabiliyor ve ben de bu şekilde başarılı oldumİlginç olan şu ki araçları ne kadar kısıtlarsan ajan o kadar yaratıcı yaklaşıyor
Ama eğitilmiş çeşitli araçları sunduğunda model her birini nasıl kullanacağını zaten bildiği için token kullanımı daha verimli oluyor ve genel başarı oranı da yükseliyor
Sadece Bash kullanıldığında
bashism, argüman işleme ve boşluk işleme gibi konularda sık sık tökezliyorAyrı araçlar kullanmak, her şeyi tek bir
basharacına yüklemekten çok daha basitHer şeyi
bashile yaparsan, her durumda güvenle çalıştırılabilecek komutları (ör. dosya listeleme) doğrudan çalıştırıp diğer riskli komutlar için kullanıcı onayı isteyen ayrı bir sistem kurman gerekirDosya listelemeyi ayrı bir araç olarak sunarsan proje dizini dışındaki dosyaların açığa çıkmasını da engelleyebilirsin
Pratikte yalnızca
basharacı ve Edit aracıyla kodlama ajanı çalıştırmak mümkün (Edit zorunlu değil ama verimsizlik ciddi artıyor)Yine de kod arama gibi konularda zorlanabilir
Mesela prompt'u,
ripgrep'i bash içinde kullanacak şekilde ayarlayarak bunu bir ölçüde telafi etmek mümkün olabilirNeden IDE gerekli? Kabukta her şeyi yapabiliyorsan neden onu kullanıyoruz?
UI'nin görevi, o anda ihtiyaç duyduğun bilgi ve eylemleri sana sunmaktır
Neden
bashdışında başka araçlar da eklenmiş sorusuna cevaben, sanırım önce minimum araç setiyle başlayıp sonradanbasheklenebilmesi mantığı var“Ajan nasıl yapılır”ı uzun uzun anlatmak yerine, bir ajanın gerçekten yaptığı bir projeyi görmek isterdim
Oracle, Agent, high safety, low safety eksenlerinin ne anlama geldiğini açıklayabilecek biri var mı diye soruluyor
Edge ve Chrome'un cihaz üstü modelleriyle (
phi4-mini,gemini nano) bunu bizzat denedim; model boyutuna kıyasla oldukça iyi çalışmasına şaşırdımcihaz üzerinde ajan nasıl yapılır deneyi
Aşırı komik ya hahaha, ne demek istiyor diye düşündüm ama linke girince dank diye anlaşılıyor
Blogdaki diğer gönderilerin küçük görselleri de kötü; insanın kesinlikle tıklamak istemeyeceği gibi görünüyorlar.
ahahahahahahahahahahahaha