1 poin oleh GN⁺ 4 hari lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • Cloudflare mengumumkan Project Think, versi generasi berikutnya dari Agents SDK, yang menyediakan primitif inti baru untuk agen yang berjalan jangka panjang seperti eksekusi tahan lama, sub-agen, eksekusi kode sandbox, dan sesi persisten
  • Agen coding yang ada selama ini memiliki keterbatasan: hanya berjalan di laptop lokal, tetap menimbulkan biaya saat idle, dan memerlukan penyiapan serta pengelolaan manual
  • Berbeda dari aplikasi tradisional, agen beroperasi dengan model 1:1 (satu instans per pengguna dan per tugas), sehingga mendukung puluhan juta sesi simultan menjadi tidak berkelanjutan dengan struktur biaya berbasis container
  • Dengan memanfaatkan model actor berbasis Durable Objects, agen memperoleh ekonomis skala besar: biaya komputasi nol saat dorman dan otomatis bangun saat menerima pesan
  • Sebagai gelombang ketiga agen AI, Cloudflare menargetkan agen sebagai infrastruktur (durabilitas, terdistribusi, serverless, keamanan yang terstruktur), agar semua developer dapat membangun dan menerapkan agen untuk miliaran pengguna

Ikhtisar Project Think

  • Versi generasi berikutnya dari Cloudflare Agents SDK, menyediakan sekumpulan primitif baru untuk membangun agen yang berjalan jangka panjang beserta kelas dasar yang mengintegrasikannya
  • Primitif utama: eksekusi tahan lama (fibers), sub-agen, sesi persisten, eksekusi kode sandbox, execution ladder, dan ekstensi yang ditulis sendiri
  • Primitif dapat digunakan secara terpisah, atau mulai cepat lewat kelas dasar Think

Keterbatasan agen coding saat ini

  • Alat seperti Pi, OpenClaw, Claude Code, dan Codex membuktikan bahwa saat LLM diberi kemampuan membaca file, menulis kode, mengeksekusi, dan belajar, ia dapat bertindak seperti asisten serbaguna
  • Agen coding semacam ini dapat dipakai bukan hanya untuk kode, tetapi juga pengelolaan kalender, analisis dataset, negosiasi pembelian, pelaporan pajak, dan otomasi workflow bisnis
  • Polanya selalu sama: agen membaca konteks, bernalar, menulis kode untuk bertindak, mengamati hasil, lalu mengulang → kode adalah medium universal untuk bertindak
  • Keterbatasan saat ini:
    • Hanya berjalan di laptop atau VPS mahal: tidak bisa dibagikan, tidak kolaboratif, dan tidak mulus berpindah antar-perangkat
    • Tetap menimbulkan biaya saat idle: biaya bulanan tetap melonjak saat diskalakan ke tingkat tim atau perusahaan
    • Perlu instalasi dan pengelolaan manual: memasang dependensi, mengelola update, autentikasi, dan secret

Masalah struktural agen: model 1:1

  • Aplikasi tradisional memproses banyak pengguna dalam satu instans, tetapi agen bersifat 1:1 — tiap agen adalah instans unik untuk satu pengguna dan satu tugas
  • Jika 100 juta knowledge worker masing-masing memakai asisten agen, maka dibutuhkan puluhan juta sesi simultan
  • Dengan struktur biaya per-container saat ini, hal itu tidak berkelanjutan dan membutuhkan fondasi lain

Agen yang berjalan jangka panjang

  • Agen saat ini bersifat ephemeral: hilang ketika sesi berakhir, dan berhenti saat laptop sleep
  • Agents SDK berbasis Durable Objects memberi setiap agen identitas, state persisten, dan kemampuan start otomatis saat menerima pesan
  • Dengan model actor, tiap agen adalah entitas yang dapat dialamati dan memiliki database SQLite sendiri, dengan biaya komputasi nol saat dorman
  • Saat ada event seperti HTTP request, pesan WebSocket, alarm terjadwal, atau email masuk, platform akan membangunkan agen dan memuat state-nya
  • Perbandingan Durable Objects dengan VM/container:
    • Biaya idle: VM selalu menanggung biaya komputasi penuh vs DO nol (dorman)
    • Skalabilitas: VM perlu provisioning manual vs DO autoscaling per agen
    • State: VM butuh DB eksternal vs DO SQLite bawaan
    • Pemulihan: VM harus dibangun sendiri vs DO restart otomatis oleh platform dengan state tetap terjaga
    • Routing: VM perlu load balancer dan sticky session vs DO pemetaan nama→agen bawaan
    • 10.000 agen (masing-masing aktif 1%): VM butuh 10.000 instans selalu aktif vs DO sekitar 100 yang aktif
  • Biaya marginal untuk membuat agen baru pada praktiknya nol → memungkinkan model agen “satu per pengguna”, “satu per tugas”, atau “satu per thread email”

Eksekusi tahan lama: Fibers

  • Pemanggilan LLM bisa berjalan 30 detik, dan loop agen multi-turn bisa lebih lama lagi; di tengah jalan lingkungan eksekusi bisa hilang karena deployment, restart platform, atau batas resource
  • runFiber() adalah pemanggilan fungsi tahan lama yang didaftarkan ke SQLite sebelum eksekusi dimulai; checkpoint dapat dibuat lewat stash(), dan pemulihan saat restart dimungkinkan lewat onFiberRecovered
  • SDK otomatis mempertahankan agen selama fiber berjalan, tanpa perlu konfigurasi khusus
  • Untuk tugas berdurasi menit, keepAlive() / keepAliveWhile() mencegah eviksi
  • Untuk tugas yang lebih panjang seperti pipeline CI, review desain, atau generasi video, sistem dapat menyimpan job ID lalu masuk dorman, kemudian bangun kembali saat callback datang

Sub-agen: Facets

  • Satu agen tidak harus mengerjakan semua tugas sendiri
  • Sub-agen adalah child Durable Objects yang di-co-locate dengan induknya, masing-masing memiliki SQLite dan konteks eksekusi yang terisolasi
  • Berbasis Facets, ia berada bersama agen induk, dan tidak ada berbagi data implisit antar sub-agen
  • Latensi RPC antar sub-agen setara pemanggilan fungsi, dan TypeScript dapat mendeteksi penyalahgunaan saat compile time

Sesi persisten: Session API

  • Agen yang berjalan selama hari atau minggu membutuhkan lebih dari sekadar daftar pesan datar
  • Session API eksperimental memodelkan percakapan sebagai struktur pohon, dengan parent_id pada tiap pesan
    • Forking: mengeksplorasi alternatif tanpa kehilangan jalur asli
    • Kompresi non-destruktif: meringkas pesan lama alih-alih menghapusnya
    • Pencarian full-text: pencarian teks penuh di seluruh riwayat percakapan berbasis FTS5
  • Bisa dipakai langsung di kelas dasar Agent, dan juga menjadi lapisan penyimpanan pada kelas dasar Think

Dari pemanggilan tool ke eksekusi kode

  • Pola tool calling lama: model memanggil tool → hasil dikembalikan ke context window → ulang; makin banyak tool, makin besar biaya dan inefisiensi
  • 100 file = 100 kali bolak-balik dengan model
  • Model ternyata lebih unggul dalam menulis kode untuk menggunakan sistem daripada bermain game tool calling — inilah wawasan inti dari @cloudflare/codemode
  • Alih-alih pemanggilan tool berurutan, LLM menulis satu program tunggal yang menangani seluruh tugas
  • Contoh server MCP Cloudflare API: dengan hanya mengekspos 2 tool (search(), execute()), konsumsi sekitar 1.000 token dibanding pendekatan tool per-endpoint sekitar 1,17 juta tokenturun 99,9%

Sandbox aman: Dynamic Workers

  • Jika model menulis kode atas nama pengguna, maka lingkungan eksekusinya menjadi pertanyaan utama
  • Dynamic Workers: lingkungan isolasi V8 baru yang dibuat saat runtime dalam hitungan milidetik, dengan memori beberapa megabyte
    • Dibanding container, sekitar 100x lebih cepat dan hingga 100x lebih efisien memori
    • Dapat dibuat baru untuk setiap request, lalu dibuang setelah kode selesai dijalankan
  • Desain inti: model capability — bukan membatasi mesin umum, melainkan mulai dari kondisi nyaris tanpa izin (globalOutbound: null, tanpa akses jaringan), lalu developer memberikan izin eksplisit per resource lewat binding
  • Pergeseran dari “bagaimana mencegah ini melakukan terlalu banyak hal?” menjadi “apa tepatnya yang boleh dilakukan ini?”

Execution Ladder

  • Spektrum tempat komputasi yang dapat dinaiki agen sesuai kebutuhan:
    • Tier 0 — Workspace: virtual filesystem tahan lama berbasis SQLite + R2, mendukung baca/tulis/edit/search/grep/diff, menjalankan @cloudflare/shell
    • Tier 1 — Dynamic Worker: menjalankan JavaScript buatan LLM dalam isolasi sandbox tanpa akses jaringan, menjalankan @cloudflare/codemode
    • Tier 2 — tambah npm: @cloudflare/worker-bundler mengambil package dari registry lalu membundel dengan esbuild untuk dimuat ke Dynamic Worker, sehingga import { z } from "zod" bekerja apa adanya
    • Tier 3 — browser headless: Cloudflare Browser Run untuk navigasi, klik, ekstraksi, screenshot; berguna untuk layanan yang tidak mendukung MCP atau API
    • Tier 4 — Cloudflare Sandbox: menjalankan git clone, npm test, cargo build, dan lainnya dalam lingkungan dengan toolchain, repo, dan dependensi yang sudah dikonfigurasi, tersinkron dua arah dengan Workspace
  • Prinsip desain inti: Tier 0 saja harus sudah cukup berguna, dan tiap tier bersifat tambahan

Building block, bukan framework

  • Semua primitif disediakan sebagai package independen: Dynamic Workers, @cloudflare/codemode, @cloudflare/worker-bundler, @cloudflare/shell
  • Dapat digabungkan langsung dengan kelas dasar Agent untuk memakai workspace, eksekusi kode, dan resolusi package runtime tanpa mengadopsi framework milik Cloudflare secara penuh

Seluruh stack platform

  • Isolasi per agen: Durable Objects — tiap agen punya dunianya sendiri
  • Biaya nol saat idle: DO Hibernation — $0 sampai agen dibangunkan
  • State persisten: DO SQLite — penyimpanan yang bisa di-query dan ditransaksikan
  • Filesystem tahan lama: Workspace(SQLite + R2)
  • Eksekusi kode sandbox: Dynamic Workers + @cloudflare/codemode
  • Dependensi runtime: @cloudflare/worker-bundlerimport * from react tetap berjalan
  • Otomasi web: Browser Run
  • Akses OS penuh: Sandboxes — git, compiler, test runner
  • Eksekusi terjadwal: DO Alarms + Fibers
  • Streaming real-time: WebSockets
  • Koneksi tool eksternal: MCP
  • Koordinasi antar agen: sub-agen (Facets) — type RPC
  • Akses model: AI Gateway + Workers AI (atau model sendiri)

Kelas dasar Think

  • Harness terpadu yang menangani seluruh lifecycle chat: loop agen, persistensi pesan, streaming, eksekusi tool, resume stream, dan ekstensi
  • Subclass minimal: cukup implementasikan metode getModel() untuk memperoleh agen chat dengan streaming, persistensi, interupsi/pembatalan, penanganan error, stream yang bisa dilanjutkan, dan filesystem workspace bawaan
  • Dideploy dengan npx wrangler deploy
  • Yang bisa dioverride: getModel(), getSystemPrompt(), getTools(), maxSteps, configureSession()
  • Di setiap turn, sistem menjalankan seluruh loop agentic: merakit konteks (instruksi dasar + deskripsi tool + skill + memori + riwayat percakapan) → memanggil streamText → mengeksekusi tool call (dengan pemotongan output agar konteks tidak meledak) → menambahkan hasil → mengulang sampai model selesai atau batas langkah tercapai

Hook lifecycle

  • Think menyediakan hook di setiap tahap turn chat tanpa harus memiliki seluruh pipeline:
    • beforeTurn()streamText()beforeToolCall()afterToolCall()onStepFinish()onChatResponse()
  • Memungkinkan penggantian ke model murah di turn berikutnya, pembatasan tool, penerusan konteks klien, logging analitik semua tool call, atau trigger turn lanjutan otomatis tanpa mengganti onChatMessage

Memori persisten dan percakapan panjang

  • Think dibangun di atas Session API dengan pesan berbentuk pohon dan branching bawaan
  • Memori persisten lewat context block: bagian terstruktur dalam system prompt yang bisa dibaca model dan diperbarui dari waktu ke waktu, serta tetap tersimpan saat dorman
  • Model dapat melihat format seperti "MEMORY (Important facts, use set_context to update) [42%, 462/1100 tokens]" dan mengingat secara proaktif
  • Beberapa percakapan dapat berjalan per agen, dan forking memungkinkan eksplorasi arah lain tanpa kehilangan percakapan asli
  • Saat konteks membesar, dilakukan kompresi non-destruktif: pesan lama diringkas alih-alih dihapus, sementara riwayat penuh tetap disimpan di SQLite
  • Pencarian berbasis FTS5: riwayat percakapan dapat di-query dalam satu sesi atau lintas seluruh sesi; agen juga bisa mencari masa lalunya sendiri lewat tool search_context

Integrasi penuh execution ladder

  • Think mengintegrasikan seluruh execution ladder lewat satu hasil getTools(): tool workspace, tool eksekusi, tool browser, tool sandbox, dan tool ekstensi dapat dikonfigurasi sekaligus

Self-authored Extensions

  • Agen dapat menulis ekstensi sendiri: program TypeScript yang berjalan di Dynamic Workers dan mendeklarasikan akses jaringan serta izin kerja pada workspace
  • ExtensionManager milik Think membundel ekstensi (termasuk dependensi npm), memuatnya ke Dynamic Worker, lalu mendaftarkan tool baru
  • Ekstensi persisten di penyimpanan DO sehingga tetap ada meski agen dorman
  • Contoh: saat pengguna menanyakan PR, tool github_create_pr yang 30 detik sebelumnya belum ada dapat dibuat
  • Ini adalah loop peningkatan diri lewat kode, bukan fine-tuning atau RLHF — TypeScript yang tersandbox, dapat diaudit, dan dapat dicabut

RPC sub-agen

  • Think juga dapat berjalan sebagai sub-agen yang dipanggil dari induknya melalui chat() over RPC, dengan dukungan event streaming lewat callback
  • Tiap child memiliki pohon percakapan, memori, tool, dan model sendiri, tanpa induk perlu mengetahui detail internalnya

Memulai

  • Project Think masih berstatus eksperimental, dengan API surface yang stabil tetapi diperkirakan terus berkembang
  • Cloudflare sudah memakainya secara internal untuk membangun infrastruktur agen background mereka sendiri
  • Think memakai protokol WebSocket yang sama dengan @cloudflare/ai-chat, sehingga komponen UI yang ada tetap bekerja
  • Jika dibangun di atas AIChatAgent, kode klien tidak perlu diubah

Tiga gelombang agen AI

  • Gelombang pertama — chatbot: tanpa state, reaktif, rapuh, selalu mulai dari nol di tiap percakapan, tanpa memori, tool, atau kemampuan bertindak, hanya berguna untuk menjawab pertanyaan
  • Gelombang kedua — agen coding: memiliki state, menggunakan tool, seperti Pi, Claude Code, OpenClaw, dan Codex; dapat membaca codebase, menulis kode, mengeksekusi, dan mengulang; membuktikan bahwa LLM dengan tool yang tepat adalah mesin serbaguna, tetapi hanya berjalan di laptop untuk satu pengguna dan tidak memiliki jaminan durabilitas
  • Gelombang ketiga — agen sebagai infrastruktur: tahan lama, terdistribusi, aman secara struktural, serverless, berjalan di internet, bertahan dari kegagalan, biaya nol saat idle, dan keamanan ditegakkan melalui arsitektur, bukan perilaku

Belum ada komentar.

Belum ada komentar.