20 poin oleh GN⁺ 8 hari lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • Managed Agents, layanan hosting untuk agen yang berjalan jangka panjang, mengadopsi arsitektur berbasis antarmuka yang tetap stabil meskipun harness berubah seiring kemajuan model
  • Harness mengodekan asumsi tentang tugas yang tidak dapat dilakukan Claude sendirian, tetapi saat model berkembang, asumsi tersebut menjadi usang (stale) dan menimbulkan overhead yang tidak perlu
  • Seperti sistem operasi yang memvirtualisasi perangkat keras menjadi abstraksi seperti proses dan file, Managed Agents memvirtualisasi komponen agen (session, harness, sandbox) agar dapat diganti secara independen
  • Dengan memisahkan otak (harness) dan tangan (sandbox), dicapai peningkatan performa berupa penurunan p50 TTFT sekitar 60% dan penurunan p95 lebih dari 90%
  • Desain ini berperan sebagai meta-harness yang dapat mengakomodasi harness atau sandbox apa pun yang muncul di masa depan

Asumsi harness menjadi usang seiring perkembangan model

  • Harness adalah struktur yang mengodekan asumsi tentang tugas yang belum bisa dilakukan Claude sendiri, tetapi saat model berkembang, asumsi tersebut menjadi tidak lagi diperlukan
  • Pada Claude Sonnet 4.5, ada fenomena "context anxiety" di mana tugas dihentikan lebih awal saat batas konteks mulai mendekat, sehingga reset konteks ditambahkan ke harness
  • Pada Claude Opus 4.5, perilaku tersebut hilang sehingga logika reset menjadi kode yang tidak diperlukan
  • Karena harness diperkirakan akan terus berubah, dibangun layanan Managed Agents berbasis antarmuka umum yang tidak bergantung pada implementasi tertentu

Filosofi desain yang terinspirasi dari sistem operasi

  • Sistem operasi memvirtualisasi perangkat keras menjadi abstraksi seperti process dan file, sehingga dirancang agar dapat menjalankan program yang bahkan belum ada
  • Seperti perintah read() yang bekerja sama baiknya pada disk pack era 1970-an maupun SSD modern, abstraksi bertahan lebih lama daripada perangkat keras
  • Managed Agents mengikuti pola yang sama dengan memvirtualisasi komponen agen
    • Session: log append-only dari semua event yang terjadi
    • Harness: loop yang memanggil Claude dan merutekan pemanggilan tool
    • Sandbox: lingkungan eksekusi tempat Claude menjalankan kode dan mengedit file

Desain awal: keterbatasan satu container (masalah "pet")

  • Pada awalnya, session, harness, dan sandbox ditempatkan dalam satu container
  • Keuntungannya, pengeditan file bisa dilakukan langsung lewat syscall dan tidak perlu merancang batas layanan
  • Namun muncul masalah bahwa container menjadi "pet" (instance individual yang tidak bisa diganti)
    • Saat container gagal, session hilang
    • Saat tidak responsif, container harus dipulihkan secara manual
  • Dari sudut pandang debugging, hanya dengan event stream WebSocket, tidak mungkin mengetahui lokasi terjadinya kegagalan, dan saat mengakses shell container terdapat data pengguna sehingga debugging itu sendiri menjadi sulit
  • Harness mengasumsikan semua target kerja ada di dalam container, sehingga saat pelanggan meminta koneksi VPC, dibutuhkan network peering atau menjalankan harness di lingkungan mereka sendiri

Memisahkan otak dan tangan (arsitektur inti)

  • "Otak" (Claude dan harness), "tangan" (sandbox dan tool), dan "session" (event log) dipisahkan menjadi antarmuka independen
  • Setiap komponen bisa gagal atau diganti secara independen

Harness keluar dari container

  • Harness dipindahkan ke luar container, dan memanggil container seperti tool lain melalui execute(name, input) → string
  • Container berubah menjadi "cattle" (instance yang bisa diganti)
  • Saat container gagal, harness menanganinya sebagai error pemanggilan tool, dan jika Claude memutuskan untuk mencoba lagi, harness menginisialisasi container baru dengan provision({resources})

Pemulihan saat harness gagal

  • Karena log session berada di luar harness, tidak ada state yang harus tetap hidup di dalam harness
  • Saat terjadi kegagalan, wake(sessionId)getSession(id) mengambil event log dan melanjutkan dari event terakhir
  • Di dalam loop agen, harness menjaga pencatatan event yang durable melalui emitEvent(id, event)

Batas keamanan

  • Dalam desain yang terikat, kode tidak tepercaya yang dihasilkan Claude dijalankan di container yang sama dengan kredensial, sehingga prompt injection dapat mencuri environment variable
  • Jika penyerang memperoleh token, mereka dapat membuat session baru tanpa batas dan mendelegasikan pekerjaan
  • Solusi strukturalnya adalah pemisahan sehingga sandbox tidak pernah bisa mengakses token
  • Git: saat sandbox diinisialisasi dengan token akses repository, sandbox melakukan clone dan menghubungkannya ke git remote lokal, sehingga agen dapat melakukan push/pull tanpa menangani token secara langsung
  • Tool kustom MCP: token OAuth disimpan dalam vault yang aman, lalu melalui proxy khusus, saat tool MCP dipanggil, kredensial diambil dari vault menggunakan token yang terkait dengan session untuk memanggil layanan eksternal

Session bukan context window Claude

  • Pekerjaan jangka panjang sering kali melampaui panjang context window Claude, sehingga diperlukan keputusan yang tidak dapat dibalik tentang apa yang harus dipertahankan
  • Compaction: Claude menyimpan ringkasan dari context window
  • Memory tool: Claude menulis konteks ke file agar pembelajaran lintas session dimungkinkan
  • Context trimming: menghapus token tertentu secara selektif seperti hasil tool lama atau blok pemikiran
  • Pembuangan konteks yang tidak dapat dibalik dapat menyebabkan kegagalan karena sulit memprediksi token apa yang akan dibutuhkan turn di masa depan
  • Penelitian sebelumnya mengeksplorasi pendekatan menyimpan konteks sebagai objek di luar context window, lalu LLM menulis kode untuk mengaksesnya secara terprogram

Pemanfaatan session log di Managed Agents

  • Session berperan sebagai objek konteks yang berada di luar context window
  • Session disimpan secara durable di session log, bukan di sandbox atau REPL
  • Melalui antarmuka getEvents(), dimungkinkan memilih slice berbasis posisi dari event stream
    • Membaca lanjut dari titik baca terakhir
    • Memundurkan beberapa event sebelum titik waktu tertentu untuk meninjau kembali
    • Membaca ulang konteks sebelum aksi tertentu
  • Event yang diambil dapat ditransformasikan di harness lalu diteruskan ke context window Claude
  • Transformasi ini mencakup penataan konteks dan context engineering untuk tingkat prompt cache hit yang tinggi
  • Session hanya menjamin penyimpanan durable dan pengambilan, sementara pengelolaan konteks yang spesifik didelegasikan ke harness agar bisa menyesuaikan perubahan kebutuhan model di masa depan

Banyak otak, banyak tangan

Banyak otak (Many Brains)

  • Pemisahan otak dan tangan menyelesaikan keluhan awal pelanggan: saat bekerja dengan resource di dalam VPC, network peering tidak lagi diperlukan
  • Dalam desain awal, setiap otak membutuhkan container, sehingga inferensi tidak bisa dimulai sampai provisioning container selesai
  • Bahkan session yang tidak memerlukan sandbox tetap menanggung biaya setup container penuh seperti clone repository, boot process, dan mengambil event yang pending
  • Setelah dipisahkan, container hanya diprovision melalui pemanggilan tool saat memang dibutuhkan, sehingga waktu tunggu yang tidak perlu dihilangkan
  • Inferensi dapat dimulai segera setelah lapisan orkestrasi mengambil event yang pending dari session log
  • p50 TTFT turun sekitar 60%, dan p95 TTFT turun lebih dari 90%
  • Skalasi banyak otak cukup dilakukan dengan menjalankan banyak harness stateless, lalu menghubungkannya ke tangan hanya saat diperlukan

Banyak tangan (Many Hands)

  • Diperlukan kemampuan untuk menghubungkan tiap otak ke banyak lingkungan eksekusi
  • Karena Claude harus bernalar tentang banyak lingkungan eksekusi dan memutuskan pembagian kerja, ini adalah tugas yang secara kognitif lebih sulit dibanding satu shell
  • Pada awalnya, karena kemampuan model belum memadai, otak ditempatkan dalam satu container, tetapi seiring meningkatnya kecerdasan model, satu container justru menjadi kendala
  • Dalam desain terpisah, tiap tangan diperlakukan sebagai tool execute(name, input) → string
    • Mendukung tool kustom, server MCP, maupun tool internal
    • Harness tidak perlu tahu apakah sandbox itu container, ponsel, atau emulator Pokémon
  • Karena otak dan tangan tidak terikat satu sama lain, tangan juga dapat dipindahkan antar otak

Kesimpulan: Managed Agents sebagai meta-harness

  • Pendekatannya sama seperti sistem operasi yang memvirtualisasi perangkat keras untuk mengakomodasi program yang belum ada
  • Managed Agents adalah meta-harness yang tidak bergantung pada harness tertentu dan menyediakan antarmuka umum untuk mengakomodasi beragam harness
  • Claude Code juga dapat digunakan sebagai salah satu harness, dan harness agen yang terspesialisasi untuk tugas tertentu juga dapat diakomodasi
  • Ada posisi yang jelas terhadap antarmuka: Claude memerlukan kemampuan untuk memanipulasi state (session) dan menjalankan komputasi (sandbox)
  • Antarmuka ini dirancang untuk ekspansi ke banyak otak dan tangan, serta untuk operasi jangka panjang yang stabil dan aman
  • Tidak ada asumsi apa pun tentang jumlah maupun lokasi otak dan tangan

Belum ada komentar.

Belum ada komentar.