- AI ajanlarının kod çalıştırması için hafif bir sandbox; konteynerlere kıyasla 100 kat daha hızlı başlatma süresi ve 10-100 kat daha yüksek bellek verimliliği sunuyor
- V8 JavaScript motorunun isolate teknolojisi temelinde çalışıyor; birkaç milisaniye içinde başlıyor ve yalnızca birkaç megabayt kullanıyor, bu sayede her istek için yeni bir sandbox oluşturup yok etmek mümkün
- Ajanların araç çağrıları yerine TypeScript kodunu doğrudan yazıp çalıştırdığı Code Mode yaklaşımıyla token kullanımını %81'e kadar azaltıyor
- HTTP filtreleme, credential injection, sanal dosya sistemi gibi güvenlik ve yardımcı kütüphaneleri birlikte sunarak ajan geliştirme ekosistemi oluşturuyor
- Konteyner tabanlı sandbox'ların maliyet, gecikme ve ölçeklenebilirlik sınırlarını aşarak tüketici ölçeğinde ajan hizmetlerini mümkün kılan bir altyapı dönüşümü
Arka plan: ajan kod çalıştırmada güvenlik sorunu
- Bir ajanın (veya MCP sunucusunun) yapay zekanın anlık olarak ürettiği kodu çalıştırabilmesi için, bu kodun güvenli bir ortamda çalışması gerekir
- Uygulama içinde
eval() ile doğrudan çalıştırılırsa, kötü niyetli kullanıcılar prompt injection yoluyla zafiyet ekleyebilir
- Hem uygulamadan hem de dış dünyadan izole edilmiş bir sandbox gerekir; ayrıca yalnızca kodun erişmesi gereken belirli işlevlere izin verilmelidir
Mevcut konteyner yaklaşımının sınırları
- Bugün sektörde çoğunlukla Linux tabanlı konteynerler sandbox olarak kullanılıyor
- Konteynerlerin açılması yüzlerce milisaniye sürüyor ve çalışmak için yüzlerce megabayt bellek gerektiriyor
- Gecikmeyi önlemek için sıcak tutulmaları gerekiyor; mevcut konteynerleri birden fazla işte yeniden kullanmak ise güvenliği düşürüyor
- Her son kullanıcının bir ajana sahip olduğu ve her ajanın kod yazdığı tüketici ölçeğinde konteynerler yeterli olmuyor
Dynamic Worker Loader: hafif sandbox
- Bir Cloudflare Worker'ın çalışma anında kod belirleyerek yeni bir Worker'ı kendi sandbox'ı içinde anında oluşturmasına olanak veren API
- Geçen eylülde Code Mode yazısında deneysel özellik olarak tanıtılmıştı; şimdi ise tüm ücretli Workers kullanıcıları için açık beta olarak sunuluyor
- Worker oluşturulurken kod
compatibilityDate, mainModule, modules ile tanımlanıyor; RPC stub'ları env ile aktarılıyor; globalOutbound ile internet erişimi engellenebiliyor veya yakalanabiliyor
100 kat daha hızlı
- Dynamic Workers, Cloudflare Workers platformunun 8 yıldır kullandığı aynı sandbox mekanizması olan V8 isolate tabanlı
- Isolate, Google Chrome'un da kullandığı aynı V8 JavaScript yürütme motorunun bir örneği
- Birkaç milisaniyede başlıyor, birkaç megabayt bellek kullanıyor; bu da onu konteynerlere kıyasla yaklaşık 100 kat daha hızlı ve 10-100 kat daha bellek verimli yapıyor
- Her kullanıcı isteği için yeni bir isolate oluşturup, tek bir kod parçasını çalıştırdıktan sonra yok etmek mümkün
Sınırsız ölçeklenebilirlik
- Birçok konteyner tabanlı sandbox sağlayıcısı, küresel eşzamanlı sandbox sayısı ve oluşturma hızı üzerinde sınırlar koyuyor
- Dynamic Worker Loader, platformu çalıştıran teknolojinin aynı API'si olduğu için bu tür sınırlar taşımıyor
- Saniyede milyonlarca isteği işlerken her istek için ayrı bir Dynamic Worker sandbox'ı yükleyip eşzamanlı çalıştırabiliyor
Sıfır gecikme
- Tek seferlik Dynamic Workers genellikle onları oluşturan Worker ile aynı makinede, aynı iş parçacığında çalışıyor
- Sıcak bir sandbox bulmak için dünya çapında iletişim gerekmediğinden, istek nereye geldiyse orada hemen çalıştırılıyor
- Cloudflare'ın yüzlerce küresel lokasyonunun tamamında destekleniyor
Yalnızca JavaScript çalıştırma ortamı
- Konteynerlere kıyasla tek sınırlama, ajanın JavaScript yazması gerekmesi
- Workers teknik olarak Python ve WebAssembly de destekliyor, ancak ajanın anlık ürettiği küçük kod parçaları için JavaScript çok daha hızlı yüklenip çalıştırılıyor
- LLM'ler tüm büyük dillere hakim ve JavaScript için eğitim verisi çok geniş
- JavaScript, web'in doğası gereği sandbox için tasarlanmış bir dil
TypeScript ile tanımlanan araç API'si
- MCP yalnızca düz araç çağrısı şemalarını tanımlarken, OpenAPI REST API'leri ifade ediyor; ancak hem şema hem de çağrı kodu oldukça ayrıntılı kalıyor
- JavaScript'e açılan API'ler için TypeScript en uygun tek çözüm olarak öne çıkıyor
- TypeScript arayüzleri, aynı OpenAPI tanımına göre API'yi çok daha az token ile doğru şekilde tanımlayabiliyor
- Workers Runtime, sandbox ile host kodu arasında Cap'n Web RPC köprüsünü otomatik kuruyor; böylece ajan API'leri yerel kütüphane çağırır gibi kullanabiliyor
HTTP filtreleme ve credential injection
globalOutbound seçeneğiyle tüm HTTP istekleri için callback kaydı yapılarak istek inceleme, yeniden yazma, kimlik doğrulama anahtarı ekleme veya engelleme gibi işlemler yapılabiliyor
- Credential injection (token injection): Ajan kimlik doğrulama gerektiren bir servise HTTP isteği gönderdiğinde, giden isteğe credential ekleniyor; böylece ajanın gizli credential'ları bilmesi gerekmiyor
- Özellikle iyi bilinen API'ler ajanın eğitim verisinde zaten yer alıyorsa veya REST API tabanlı kütüphaneler sandbox içinde çalıştırılıyorsa kullanışlı
- Ancak uyumluluk gerekmiyorsa TypeScript RPC arayüzü HTTP'den daha iyi: daha az token tüketimi, daha kısa çağrı kodu ve API yüzeyini daha hassas daraltma imkanı
Kanıtlanmış güvenlik mimarisi
- Isolate tabanlı sandbox'lar, donanımsal sanal makinelere göre daha karmaşık bir saldırı yüzeyine sahip ve V8 güvenlik açıkları genel hypervisor'lara göre daha sık görülüyor
- Şirketin, yaklaşık 10 yıldır isolate tabanlı platformları güvenceye alma deneyimi bulunuyor
- V8 güvenlik yamalarını Chrome'dan daha hızlı, saatler içinde üretime alabiliyor
- Özel bir ikinci katman sandbox ve risk değerlendirmesine dayalı dinamik tenant cordoning uygulanıyor
- MPK gibi donanım özellikleri kullanılarak V8 sandbox'ı genişletiliyor
- TU Graz ile iş birliği içinde Spectre savunmaları gibi yeni savunma teknikleri geliştiriliyor
- Kötü niyetli kalıpları otomatik tarayıp engelleyen / ek sandbox'a alan sistemler işletiliyor
Yardımcı kütüphaneler
Code Mode (@cloudflare/codemode)
- Model tarafından üretilen kodun, Dynamic Workers ile AI araçlarına karşı çalıştırılmasını basitleştiren kütüphane
- Temel bileşen
DynamicWorkerExecutor(); kod normalizasyonu ile yaygın biçimlendirme hatalarını ele alıyor ve globalOutbound fetcher'ına doğrudan erişebiliyor
codeMcpServer({ server, executor }), mevcut bir MCP Server'ı sararak araç yüzeyini tek bir code() aracıyla değiştiriyor
openApiMcpServer({ spec, executor, request }), OpenAPI tanımı ve yürütücüyü alıp search() ve execute() araçlarına sahip tam bir MCP Server'ı otomatik olarak kuruyor
Bundling (@cloudflare/worker-bundler)
- Dynamic Workers'ın beklediği önceden bundle edilmiş modülleri üretiyor
- Kaynak dosya ve
package.json verildiğinde npm bağımlılıklarını çözüyor, esbuild ile bundle oluşturuyor ve Worker Loader'ın beklediği modül haritasını döndürüyor
createApp ile sunucu Worker'ı, istemci JavaScript'i ve statik varlıkları birlikte bundle eden full-stack uygulamaları destekliyor
- İçerik tipi, ETag ve SPA yönlendirmesini işleyen yerleşik asset serving içeriyor
Dosya işlemleri (@cloudflare/shell)
- Dynamic Worker içinde ajana sanal dosya sistemi sağlıyor
state nesnesinin tiplenmiş metodlarıyla read, write, search, replace, diff, glob, JSON sorgu/güncelleme, arşivleme gibi işlemler yapılabiliyor
- Depolama, kalıcı Workspace (SQLite + R2) ile yedeklendiğinden dosyalar çalıştırmalar arasında korunuyor
searchFiles, replaceInFiles, planEdits gibi büyük ölçekli işlemlerle RPC gidiş gelişleri en aza indiriliyor — dosya bazlı döngüler yerine tek çağrı
- Toplu yazmalar varsayılan olarak transactional: işlemlerden biri başarısız olursa önceki yazmalar otomatik geri alınıyor
- Önceden derlenmiş TypeScript tip tanımları ve sistem prompt şablonları da sunuluyor
Kullanım örnekleri
Code Mode kullanımı
- Ajan, sıralı araç çağrıları yapmak yerine tek bir TypeScript fonksiyonu yazarak birden fazla API çağrısını zincirliyor, bunu Dynamic Worker'da çalıştırıyor ve yalnızca son sonucu döndürüyor
- Ara adımlar yerine sadece çıktı bağlam penceresine girdiği için hem gecikme hem token kullanımı azalıyor
- Cloudflare MCP sunucusu bu yaklaşımla kuruldu: tüm Cloudflare API'si yalnızca 2 araçla (
search, execute) ve 1.000 token'ın altında açığa çıkarılıyor
Özel otomasyon oluşturma
- Zite, kullanıcıların sohbet arayüzüyle etkileşime girdiği bir uygulama platformu geliştiriyor
- LLM arka planda TypeScript yazarak CRUD uygulamaları oluşturuyor, Stripe, Airtable ve Google Calendar bağlantıları kuruyor, backend mantığını çalıştırıyor
- Her otomasyon kendi Dynamic Worker'ında çalışıyor ve yalnızca ilgili endpoint için gereken belirli servis ve kütüphanelere erişebiliyor
- Zite CTO'su Antony Toron'a göre bu, "anında, izole ve güvenli bir çalıştırma katmanı"; benchmark yaptıkları tüm platformlar arasında hız ve kütüphane desteğinde en iyi performansı veriyor ve şu anda her gün milyonlarca çalıştırma isteğini işliyor
Yapay zeka tarafından üretilen uygulamaları çalıştırma
- Yapay zeka ile tam uygulama üreten platformlar kurmak için kullanılabiliyor
- Her uygulama istek üzerine oluşturuluyor ve tekrar çağrılana kadar soğuk depoda tutuluyor
- Hızlı başlatma süresi sayesinde aktif geliştirme sırasında değişiklik önizlemeleri kolaylaşıyor
- Üretilen kodun ağ istekleri engellenerek veya yakalanarak AI üretimi uygulamaların güvenli çalışması sağlanabiliyor
Fiyatlandırma
- Dinamik olarak yüklenen Workers için, günlük benzersiz Worker yüklemesi başına $0.002 ücret alınıyor (normal Workers CPU süresi ve çağrı ücretleri ayrıca geçerli)
- Yapay zeka üretimi "Code Mode" kullanımında tüm Worker'lar tek kullanımlık olduğundan, yükleme başına ücret $0.002; bu maliyet kod üretimi için yapılan çıkarım giderine kıyasla genellikle ihmal edilebilir düzeyde
- Beta süresi boyunca $0.002 ücreti alınmıyor
Henüz yorum yok.