← Radar

Konu: Ajanlar3 dk okuma

DeepSeek Harness: Ajan döngüsü bile bir eklenti, çıkarınca iz bırakmıyor

Bu neden önemli?

Ajanlar artık kendi araçlarını ve eklentilerini yazabiliyor. Çalışan bir sisteme kod ekleyip çıkarmak ise yazılımın en eski dertlerinden biri: Geride kalan dinleyiciler, kayıtlar, yarım temizlikler. Harness'ın cevabı, her kaydı geri alınabilir bir işlem olarak tasarlamak. Bu fikir, kendi eklenti sistemini yazan herkes için de öğretici.

Ne çıktı?

DeepSeek, Ağustos ortasında DeepSeek Harness adlı açık kaynak (MIT) bir ajan altyapısını yayınladı. Kısa adı dsh. Harness, bir dil modelini iş yapan bir ajana çeviren kod katmanı demek: araçlar, dosya erişimi, komut çalıştırma, konuşma geçmişi. Kavramı Flue yazısında anlatmıştık.

Ürün olarak tanıdık bir şey: Masaüstü uygulaması (macOS ve Windows) ya da tarayıcıda açılan bir arayüz. Dosya ve belge işleri, kod yazma ve test çalıştırma, kaynak gösteren araştırma, zamanlanmış görevler. Two Minute Papers videosu sistemi tanıtıyor. Biz ayrıntıları projenin kendi belgelerinden ve arkasındaki makaleden kontrol ettik.

“Her şey bir eklenti” ne demek?

Çoğu ajan aracında sabit bir çekirdek var, eklentiler onun etrafına takılıyor. dsh’te ayrıcalıklı bir çekirdek yok. Mimari belgesine göre model bağlantısı, araç kayıt sistemi, oturum kaydı ve ajan döngüsünün kendisi de birer eklenti. Hepsi ayar dosyasından değiştirilebiliyor.

Somut bir örnek: Komut çalıştırma ve dosya erişimi aynı “sağlayıcı” arayüzünü paylaşıyor. Bu sağlayıcıyı uzak bir kum havuzuna (sandbox) yönlendirdiğinde terminal, Bash ve dil sunucusu hep birlikte oraya taşınıyor. Başka bir parçaya dokunmana gerek kalmıyor.

Bir ilke daha dikkat çekiyor: “Modelin gördüğü her şey kayıtlı.” Modele giden her istek, oturum kaydından yeniden kurulabilmeli. Yani bir eklenti modelin bağlamına bir şey ekliyorsa, bu kayda da geçmek zorunda. Hata ayıklarken “model o an neyi gördü?” sorusunun cevabı her zaman elinde oluyor.

Altındaki fikir: Cordis

dsh, 2022’den beri geliştirilen Cordis adlı bir TypeScript çatısının üstünde duruyor. Cordis’in tasarımı Ağustos’ta bir makaleyle anlatıldı. Makale, çalışan bir sisteme parça ekleyip çıkarmanın iki ayrı sorunu olduğunu söylüyor:

  • Zaman boyutu: Bir parçayı kaldırdığında, onun yaptığı her şeyin de tamamen geri alınabilmesi. Cordis’te her kayıt (bir araç, bir olay dinleyicisi, bir prompt bölümü) kendi geri alma işlemiyle birlikte yapılıyor ve çatı bu işlemi saklıyor. Eklenti kalkınca bu kayıtları çatı kendisi söküyor.
  • Mekân boyutu: Bir parçanın neye ihtiyaç duyduğunu ilan etmesi ve gerisini çatının yönetmesi. Bir eklenti “bana araç kaydı servisi lazım” diyorsa, o servis ortaya çıkınca kendiliğinden çalışıyor, kaybolunca kendiliğinden duruyor.

Web geliştiriciysen bunu React’teki useEffect ve onun döndürdüğü temizlik fonksiyonuna benzetebilirsin. Fark, Cordis’in bunu bütün sistemin kuralı yapması ve makalenin, çok sayıda parça iç içe çalışırken birbirini bozmayacağını biçimsel olarak göstermeye çalışması.

Ajanlar için neden önemli?

Proje sayfasına göre “Creator mode” ile sohbet ederek yeni eklenti yazdırabiliyorsun. Sistem eklentileri yeniden başlatmadan yükleyebiliyor (hot reload). Kâğıt üstünde bu, ajanın kendine yeni bir araç yazıp hemen kullanabilmesi demek. Bu gücün riski de belli: Kötü yazılmış bir eklenti geride çöp bırakırsa sistem zamanla bozulur. Geri alınabilir kayıtlar, bu kapıyı açarken temizliği garanti etmenin bir yolu.

Kullanmadan önce

  • Denemek için Node.js yeterli: npx @deepseek-ai/dsh web arayüzü yerelde açıyor.
  • Proje hâlâ geliştirici önizlemesi. Ekim ortasında çıkan son sürüm bile 0.2.1 sürüm adayı. README, uyumluluğu bozan değişikliklerin geleceğini açıkça yazıyor.
  • Güvenlik notu daha da açık: Yazılım güvenlik denetiminden geçmedi. Model ürettiği komutları çalıştırabiliyor, dosyalarına ve anahtarlarına erişebiliyor. Atılabilir bir sanal makine ya da konteyner öneriliyor. Seçenekleri kod izolasyonu yazımızda anlattık.

Düşün

  • Senin kullandığın bir eklenti sisteminde, bir eklentiyi kaldırınca geride ne kalıyor?
  • Bir ajanın kendine eklenti yazmasına izin verirsen, o eklentiyi kim inceleyecek?

Videoyu izle

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

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