Project Think: Cloudflare'da yeni nesil yapay zeka ajanları oluşturmak
(blog.cloudflare.com)- Cloudflare, Agents SDK'nin yeni nesil sürümü olan Project Think'i duyurdu; uzun süre çalışan ajanlar için dayanıklı yürütme, alt ajanlar, sandbox içinde kod çalıştırma ve kalıcı oturumlar gibi yeni temel primitifler sunuyor
- Mevcut kodlama ajanlarının yalnızca yerel dizüstü bilgisayarlarda çalışması, boştayken bile maliyet üretmesi ve manuel kurulum ile yönetim gerektirmesi gibi sınırlamaları vardı
- Ajanlar, mevcut uygulamalardan farklı olarak 1:1 modelle çalıştığı için (bir kullanıcı ve bir görev başına bir örnek), on milyonlarca eşzamanlı oturumu desteklemek konteyner tabanlı maliyet yapısıyla sürdürülebilir değil
- Durable Objects tabanlı aktör modeli kullanılarak, ajanların uykudayken sıfır hesaplama maliyetiyle beklemesi ve mesaj aldığında otomatik uyanması sayesinde büyük ölçekte ekonomik genişleme sağlanıyor
- Yapay zeka ajanlarının üçüncü dalgası olarak altyapı olarak ajanları hedefliyor; dayanıklılık, dağıtıklık, sunucusuz yapı ve yapısal güvenlik özellikleriyle, tüm geliştiricilerin milyarlarca kullanıcıya yönelik ajanlar kurup dağıtabileceği bir platform amaçlanıyor
Project Think'e genel bakış
- Cloudflare Agents SDK'nin yeni nesil sürümü olarak, uzun süre çalışan ajanlar inşa etmek için yeni bir primitif seti ve bunları birleştiren bir temel sınıf sunuyor
- Başlıca primitifler: dayanıklı yürütme (fibers), alt ajanlar, kalıcı oturumlar, sandbox içinde kod çalıştırma, execution ladder ve kendi kendine yazılan uzantılar
- Primitifler tek tek kullanılabileceği gibi, Think temel sınıfı ile hızlı başlangıç da yapılabiliyor
Kodlama ajanlarının bugünkü sınırları
- Pi, OpenClaw, Claude Code ve Codex gibi araçlar, LLM'e dosya okuma, kod yazma, çalıştırma ve öğrenme yetenekleri kazandırıldığında onun genel amaçlı bir asistan gibi davranabildiğini kanıtladı
- Bu kodlama ajanları yalnızca kod için değil; takvim yönetimi, veri kümesi analizi, satın alma pazarlığı, vergi beyanı ve iş akışı otomasyonu gibi alanlarda da kullanılabiliyor
- Desen hep aynı: ajan bağlamı okur, akıl yürütür, harekete geçmek için kod yazar, sonucu gözlemler ve tekrarlar → kod, eylemin evrensel ortamıdır
- Güncel sınırlamalar:
- Yalnızca dizüstü bilgisayarda veya pahalı VPS'lerde çalışır: paylaşım, iş birliği ve cihazlar arasında geçiş mümkün değil
- Boştayken bile maliyet üretir: sabit aylık maliyet, ekip ve şirket ölçeğinde hızla büyür
- Manuel kurulum ve yönetim gerekir: bağımlılık kurulumu, güncelleme yönetimi, kimlik doğrulama ve secret ayarları
Ajanların yapısal sorunu: 1:1 model
- Geleneksel uygulamalarda tek bir örnek çok sayıda kullanıcıyı işler, ancak ajanlar 1:1'dir — her ajan kendine özgü bir örnek olarak bir kullanıcı ve bir görev için çalışır
- 100 milyon bilgi çalışanının her biri bir ajan asistanı kullanırsa on milyonlarca eşzamanlı oturum gerekir
- Mevcut konteyner başına maliyet yapısı ile bu sürdürülebilir değildir; farklı bir temel gereklidir
Uzun süre çalışan ajanlar
- Bugünkü ajanlar geçicidir (ephemeral): oturum bittiğinde yok olur, dizüstü bilgisayar uykuya geçtiğinde durur
- Agents SDK, Durable Objects temeli üzerinde tüm ajanlara kimlik, kalıcı durum ve mesaj geldiğinde otomatik başlatma yeteneği verir
- Aktör modeli: her ajan adreslenebilir bir varlıktır, kendi SQLite veritabanına sahiptir ve uykudayken hesaplama maliyeti sıfırdır
- HTTP isteği, WebSocket mesajı, zamanlanmış alarm ya da gelen e-posta gibi bir olay olduğunda platform ajanı uyandırır ve durumunu yükler
- VM/konteyner ile Durable Objects karşılaştırması:
- Boşta maliyet: VM'de her zaman tam hesaplama maliyeti vardır, DO'da ise sıfırdır (uykuda)
- Ölçekleme: VM'de manuel provisioning gerekir, DO'da ajan başına otomatik ölçekleme vardır
- Durum: VM'de harici veritabanı gerekir, DO'da yerleşik SQLite bulunur
- Kurtarma: VM'de bunu sizin kurmanız gerekir, DO'da platform otomatik yeniden başlatır ve durumu korur
- Yönlendirme: VM'de load balancer ve sticky session'ı sizin kurmanız gerekir, DO'da isim→ajan eşlemesi yerleşiktir
- 10.000 ajan (%1'i aktif) senaryosu: VM'de 10.000 örnek sürekli çalışır, DO'da ise yaklaşık 100 tanesi aktif olur
- Yeni bir ajan oluşturmanın marjinal maliyeti fiilen sıfıra iner → "kullanıcı başına bir", "görev başına bir", "e-posta zinciri başına bir" ajan modeli mümkün hale gelir
Dayanıklı yürütme: Fibers
- LLM çağrıları 30 saniye sürebilir; çok turlu ajan döngüleri ise bundan da uzun çalışabilir ve bu sırada yürütme ortamı ortadan kalkabilir (deployment, platform yeniden başlatması, kaynak sınırları)
runFiber(): çalıştırma başlamadan önce SQLite'a kaydedilen bir dayanıklı fonksiyon çağrısıdır;stash()ile checkpoint oluşturulabilir veonFiberRecoveredile yeniden başlatma sonrası kurtarma yapılabilir- SDK, fiber çalışırken ajanı otomatik olarak ayakta tutar; özel bir ayar gerekmez
- Dakikalar süren işler için
keepAlive()/keepAliveWhile()ile tahliye önlenebilir - CI pipeline'ları, tasarım incelemeleri, video üretimi gibi daha uzun işler için, iş başladıktan sonra job ID saklanır ve ajan uykuya geçer; callback geldiğinde yeniden çalışır
Alt ajanlar: Facets
- Tek bir ajanın her işi yapması gerekmez
- Alt ajanlar, ebeveynle birlikte yerleştirilen child Durable Objects'tir; her biri izole SQLite ve yürütme bağlamına sahiptir
- Facets tabanıyla ebeveyn ajanla aynı yerde bulunurlar ve alt ajanlar arasında verinin örtük paylaşımı yoktur
- Alt ajan RPC gecikmesi fonksiyon çağrısı düzeyindedir; TypeScript yanlış kullanımı derleme zamanında yakalar
Kalıcı oturumlar: Session API
- Günler veya haftalar süren ajanlar için sıradan düz mesaj listelerinden daha fazlası gerekir
- Deneysel Session API, konuşmayı ağaç yapısı olarak modeller ve her mesaja
parent_idverir- Forking: asıl yolu kaybetmeden alternatifleri keşfetme
- Yıkıcı olmayan sıkıştırma: eski mesajları silmek yerine özetleme
- Tam metin arama: FTS5 tabanlı tüm konuşma geçmişinde arama
- Agent temel sınıfında doğrudan kullanılabilir ve Think temel sınıfında depolama katmanı görevi görür
Araç çağrısından kod yürütmeye
- Geleneksel araç çağrısı yaklaşımı: model bir araç çağırır → sonuç bağlam penceresine geri alınır → tekrar edilir; araç sayısı arttıkça maliyet ve verimsizlik de artar
- 100 dosya = modelle 100 kez gidiş geliş
- Model, araç çağırma oyunu oynamaktan ziyade sistemi kullanmak için kod yazmada daha iyidir — @cloudflare/codemode'un temel içgörüsü budur
- Ardışık araç çağrıları yerine LLM, tüm işi çözen tek bir program yazar
- Cloudflare API MCP sunucusu örneğinde yalnızca iki araç (
search(),execute()) açığa çıkarılarak yaklaşık 1.000 token harcanıyor; endpoint başına araç yaklaşımında ise yaklaşık 1,17 milyon token gerekiyor → %99,9 azalma
Güvenli sandbox: Dynamic Workers
- Model kullanıcı adına kod yazıyorsa, bu kodun hangi ortamda çalıştırılacağı temel sorudur
- Dynamic Workers: çalışma anında milisaniyeler içinde oluşturulan yeni bir V8 izole ortamı, birkaç megabayt bellek
- Konteynerlere kıyasla yaklaşık 100 kat daha hızlı ve en fazla 100 kat daha bellek verimli
- Her istek için yeniden oluşturulup kod çalıştıktan sonra atılabilir
- Temel tasarım: capability modeli — genel amaçlı bir makineyi kısıtlamak yerine, neredeyse hiç yetki olmadan başlar (
globalOutbound: null, ağ erişimi yoktur) ve geliştirici binding'ler üzerinden kaynak bazında açık yetki verir - "Bunun fazla şey yapmasını nasıl engelleriz?" sorusundan, "Bunun tam olarak ne yapmasına izin vereceğiz?" sorusuna geçiş
Execution ladder
- Ajanın ihtiyaca göre kademeli biçimde daha üst hesaplama ortamlarına yükseldiği bir spektrum:
- Tier 0 — Workspace: SQLite + R2 tabanlı dayanıklı sanal dosya sistemi; okuma, yazma, düzenleme, arama, grep ve diff desteği;
@cloudflare/shellçalıştırır - Tier 1 — Dynamic Worker: LLM tarafından üretilen JavaScript'i ağ erişimi olmayan sandbox izole ortamında çalıştırır;
@cloudflare/codemodekullanır - Tier 2 — npm ekleme:
@cloudflare/worker-bundler, registry'den paketleri alır ve esbuild ile bundle edip Dynamic Worker'a yükler;import { z } from "zod"doğrudan çalışır - Tier 3 — Headless browser: Cloudflare Browser Run ile gezinme, tıklama, veri çıkarma, ekran görüntüsü alma; MCP veya API desteklemeyen servislerde faydalıdır
- Tier 4 — Cloudflare Sandbox: toolchain, repo ve bağımlılıkları hazırlanmış bir ortamda
git clone,npm test,cargo buildgibi işleri yürütür; Workspace ile çift yönlü senkronize olur
- Tier 0 — Workspace: SQLite + R2 tabanlı dayanıklı sanal dosya sistemi; okuma, yazma, düzenleme, arama, grep ve diff desteği;
- Temel tasarım ilkesi: Ajan yalnızca Tier 0 ile bile faydalı olmalıdır; her ek katman isteğe bağlı bir ilavedir
Bir framework değil, yapı taşları
- Tüm primitifler bağımsız paketler olarak sunuluyor: Dynamic Workers,
@cloudflare/codemode,@cloudflare/worker-bundler,@cloudflare/shell - Agent temel sınıfıyla doğrudan birleştirilerek workspace, kod yürütme ve çalışma anı paket çözümleme özellikleri ayrı bir framework benimsemeden kullanılabiliyor
Platformun tam yığını
- Ajan başına izolasyon: Durable Objects — her ajanın kendi dünyası
- Boşta sıfır maliyet: DO Hibernation — ajan uyanana kadar $0
- Kalıcı durum: DO SQLite — sorgulanabilir ve transaction destekli depolama
- Dayanıklı dosya sistemi: Workspace (SQLite + R2)
- Sandbox içinde kod çalıştırma: Dynamic Workers +
@cloudflare/codemode - Çalışma anı bağımlılıkları:
@cloudflare/worker-bundler—import * from reactolduğu gibi çalışır - Web otomasyonu: Browser Run
- Tam OS erişimi: Sandboxes — git, derleyiciler, test runner'lar
- Zamanlanmış çalıştırma: DO Alarms + Fibers
- Gerçek zamanlı akış: WebSockets
- Harici araç bağlantısı: MCP
- Ajanlar arası koordinasyon: alt ajanlar (Facets) — tipli RPC
- Model erişimi: AI Gateway + Workers AI (veya kendi modeliniz)
Think temel sınıfı
- Ajan döngüsü, mesaj kalıcılığı, akış, araç çalıştırma, akışın devam ettirilmesi ve uzantılar dahil tam sohbet yaşam döngüsünü yöneten birleşik bir harness
- En küçük alt sınıf: yalnızca
getModel()metodunu uygularsanız, akış, kalıcılık, durdurma/iptal, hata yönetimi, devam ettirilebilir akışlar ve yerleşik workspace dosya sistemiyle çalışan bir sohbet ajanı elde edersiniz npx wrangler deployile dağıtılır- Override edilebilen öğeler:
getModel(),getSystemPrompt(),getTools(),maxSteps,configureSession() - Her turda tam agentic loop çalışır: bağlam birleştirme (temel komutlar + araç açıklamaları + beceriler + bellek + konuşma geçmişi) →
streamTextçağrısı → araç çağrılarının yürütülmesi (bağlam patlamasını önlemek için çıktı kırpma) → sonucun eklenmesi → model tamamlanana veya adım sınırına ulaşılana kadar tekrar
Yaşam döngüsü hook'ları
- Think, tüm pipeline'ın sahibi olmayı zorunlu kılmadan sohbet turunun her aşamasında hook'lar sunar:
beforeTurn()→streamText()→beforeToolCall()→afterToolCall()→onStepFinish()→onChatResponse()
- Sonraki turlarda daha ucuz modele geçmek, araçları kısıtlamak, istemci bağlamı aktarmak, tüm araç çağrılarını analitik olarak log'lamak veya otomatik takip turları tetiklemek,
onChatMessagedeğiştirilmeden yapılabilir
Kalıcı bellek ve uzun konuşmalar
- Think, Session API üzerine kuruludur; ağaç yapılı mesajlar ve dallanma yerleşik gelir
- Context block'lar aracılığıyla kalıcı bellek: modelin okuyabildiği ve zaman içinde güncelleyebildiği, sistem prompt'u içindeki yapılandırılmış bölümler; uyku dönemleri arasında da korunur
- Model bunu "MEMORY (Important facts, use set_context to update) [42%, 462/1100 tokens]" biçiminde görür ve proaktif olarak hatırlayabilir
- Her ajan için birden fazla konuşma yürütülebilir; forking sayesinde asıl konuşmayı kaybetmeden farklı yönler denenebilir
- Bağlam büyüdüğünde yıkıcı olmayan sıkıştırma uygulanır: eski mesajlar silinmek yerine özetlenir, tüm geçmiş SQLite'ta korunur
- FTS5 tabanlı arama: konuşma geçmişi oturum içinde veya tüm oturumlar arasında sorgulanabilir; ajan da
search_contextaracıyla kendi geçmişinde arama yapabilir
Tüm execution ladder'ın entegrasyonu
- Think,
getTools()tarafından döndürülen tek bir yapı ile tüm execution ladder'ı birleştirir: workspace araçları, yürütme araçları, browser araçları, sandbox araçları ve uzantı araçları aynı anda yapılandırılabilir
Kendi kendine yazılan uzantılar (Self-authored Extensions)
- Ajan, kendi uzantı programlarını bizzat yazabilir: ağ erişimini ve workspace işlem izinlerini tanımlayan, Dynamic Workers üzerinde çalışan TypeScript programları
- Think'in ExtensionManager'ı uzantıları bundle eder (npm bağımlılıkları da dahil olabilir), Dynamic Worker'a yükler ve yeni araçlar kaydeder
- Uzantılar DO depolamasında kalıcıdır ve uyku sırasında da yaşamaya devam eder
- Örnek: kullanıcı bir PR ile ilgili soru sorduğunda, 30 saniye önce var olmayan
github_create_praracı oluşturulabilir - Fine-tuning veya RLHF yerine, kod üzerinden kendi kendini geliştiren bir döngü — sandbox'lanmış, denetlenebilir ve geri alınabilir TypeScript
Alt ajan RPC
- Think, ebeveynden RPC üzerinden
chat()ile çağrılan bir alt ajan olarak da çalışır; callback'ler üzerinden akış olaylarını destekler - Her child kendi konuşma ağacına, belleğine, araçlarına ve modeline sahiptir; ebeveynin ayrıntıları bilmesi gerekmez
Başlangıç
- Project Think şu anda deneysel (experimental) durumda; API yüzeyi kararlı olsa da zaman içinde gelişmeye devam edecek
- Cloudflare içinde, şirketin kendi arka plan ajan altyapısını kurmak için zaten kullanılıyor
- Think,
@cloudflare/ai-chatile aynı WebSocket protokolünü kullandığı için mevcut UI bileşenleri olduğu gibi çalışır AIChatAgenttabanında kurulum yaptıysanız istemci kodunda değişiklik gerekmez
Yapay zeka ajanlarının üç dalgası
- Birinci dalga — chatbot'lar: durumsuz, reaktif, kırılgan; her konuşmaya baştan başlar; bellek, araç ve eylem yeteneği yoktur; yalnızca sorulara yanıt vermede faydalıdır
- İkinci dalga — kodlama ajanları: durumu korur, araç kullanır; Pi, Claude Code, OpenClaw ve Codex gibi araçlarla kod tabanını okuyabilir, kod yazabilir, çalıştırabilir ve yineleyebilir; uygun araçlarla donatılmış bir LLM'in genel amaçlı bir makine olduğunu kanıtlar, ancak yalnızca dizüstü bilgisayarda tek kullanıcı için çalışır ve dayanıklılık garantisi yoktur
- Üçüncü dalga — altyapı olarak ajanlar: dayanıklı, dağıtık, yapısal olarak güvenli, sunucusuz; internette çalışır, arızalardan sağ çıkar, boştayken sıfır maliyet üretir ve güvenliği davranışla değil mimariyle zorunlu kılar
Henüz yorum yok.