← Radar

Konu: Ajanlar3 dk okuma

Docker Agent: Yapay zekâ ajanını kodla değil, YAML dosyasıyla tanımlamak

Bu neden önemli?

Ajan yazan herkes aynı döngüyü tekrar tekrar kodluyor: modeli çağır, aracı çalıştır, sonucu geri ver. Bu döngüyü hazır bir çalıştırıcıya bırakıp ajanı sadece ayar dosyası olarak tutmak, ajanları sürümlemeyi, incelemeyi ve paylaşmayı kolaylaştırıyor. A2A da farklı ekiplerin ajanlarının birbiriyle güvenli konuşmasının yolu.

Ajan döngüsü ve onu kim yazıyor?

Bir yapay zekâ ajanı aslında basit bir döngü. Modele bir görev ve kullanabileceği araçların listesini verirsin. Model “şu dosyayı oku” ya da “şu komutu çalıştır” der. Kodun bu aracı çalıştırır, sonucu modele geri verir. Model işin bittiğine karar verene kadar bu tekrarlanır.

Bu döngüyü Python’da elle yazmak zor değil, ama her projede aynı 30–40 satırı yeniden yazıyorsun. Üstüne hata yönetimi, akış (streaming), araç izinleri ve birden fazla ajan eklenince iş büyüyor. Vercel’in eve’i gibi framework’ler bu yükü kod tarafında hafifletiyor. Docker Agent ise farklı bir yol seçiyor: Hiç kod yazmamak.

YAML’da bir ajan

Docker Agent, Docker’ın Apache 2.0 lisanslı, açık kaynak komut satırı aracı. Eski adı cagent. Docker kendisini “konteynerler için docker run neyse, ajanlar için o” diye tarif ediyor. Belgeler ne olmadığını da açıkça söylüyor: İçinde kod yazdığın bir framework değil, barındırılan bir hizmet değil, yeni bir model de değil.

Bir YAML dosyasında ajanın modelini, açıklamasını, talimatını ve araç setlerini (toolsets) yazıyorsun. Araçlar hazır geliyor: dosya sistemi, kabuk (shell), düşünme, yapılacaklar listesi, hafıza gibi. İstediğin MCP sunucusunu da ekleyebiliyorsun. Model satırı OpenAI, Anthropic, Gemini, OpenRouter gibi sağlayıcılara ya da Docker Model Runner üzerinden yerel bir modele işaret edebiliyor. Sonra docker agent run agent.yaml diyorsun ve terminalde ajanla konuşmaya başlıyorsun.

Docker Desktop 4.63 ve sonrasında araç hazır kurulu geliyor. Değilse Homebrew ile ya da GitHub’daki hazır dosyayla kurabiliyorsun.

Neden ilginç?

  • Ajan bir ayar dosyası oluyor. Git’te sürümlenebiliyor, pull request’te incelenebiliyor. Modeli değiştirmek tek satırı değiştirmek demek.
  • İmaj gibi paylaşılıyor. docker agent share push ile ajanı Docker Hub’a ya da herhangi bir OCI kayıt deposuna gönderiyorsun. Başkası onu adıyla çalıştırabiliyor. İstersen imzalayıp alan tarafın doğrulamasını da sağlayabiliyorsun.
  • Ajan servis olabiliyor. Tek komutla bir ajanı HTTP API’si, MCP sunucusu ya da A2A sunucusu olarak açabiliyorsun. MCP modunda Claude Code gibi bir uygulama senin ajanını bir araç olarak kullanabiliyor.
  • Ekipler kurulabiliyor. Bir koordinatör ajan işi uzman alt ajanlara (sub_agents) dağıtabiliyor ya da ajanlar sohbeti sırayla birbirine devredebiliyor (handoffs).

A2A: Ajanlar arası konuşma

A2A (Agent2Agent), farklı araçlarla yazılmış ajanların birbirine görev verip sonuç almasını sağlayan açık bir protokol. MCP bir ajanı araçlara bağlıyor, A2A ise ajanı başka bir ajana. Önemli fark şu: Karşı taraf kendi araçlarını, hafızasını ve verisini paylaşmıyor, sadece cevabını veriyor.

Videodaki örnek bunu iyi anlatıyor. Ödeme sayfası çöküyor. Bir “log analisti” ajanı sadece log klasörünü okuyabiliyor, docker agent serve a2a ile bir portta servis ediliyor. İkinci ajan olan nöbetçi asistanın hiç dosya erişimi yok, sadece analistin adresini biliyor. Soruyu soruyor, analist logları ve dağıtım geçmişini inceleyip bulgularını dönüyor, asistan da bunu bir olay özetine çeviriyor. Gerçek bir şirkette logların sahibi olan ekip analisti işletir, diğer ekipler loglara erişmeden ona soru sorabilir. Videonun eğlenceli kısmında iki model, aynı yapıyla birbirine karşı Amiral Battı oynuyor.

Dikkat edilmesi gerekenler

  • Belgelere göre A2A desteği erken aşamada. Araç çağrıları ayrı olaylar olarak görünmüyor, alt ajanlı senaryolar henüz tam değil.
  • A2A sunucusu varsayılan olarak sadece kendi makinende dinliyor. Dışarı açarsan bir erişim anahtarı (--auth-token) vermen gerekiyor.
  • A2A oturumları varsayılan olarak “restricted” güvenlik modunda: Güvenli sayılan araçlar çalışıyor, silme gibi yıkıcı ya da tanınmayan komutlar reddediliyor. Bunu gevşetmek için bilinçli olarak bayrak vermen gerekiyor. İnsan başında değilken çalışan bir ajan için doğru varsayılan bu.

Düşün

  • Senin projende bir ajanın kodu mu daha çok değişiyor, talimatı ve araçları mı? Hangisi bir YAML dosyasına sığar?
  • Bir ajanı başka bir ekibin ajanına açarken neyi paylaşır, neyi saklardın?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (12, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.