← semua berita

Sandbox MicroPython Simon Willison: 362 KB WASM dengan batas CPU berbasis fuel

AI · · · sumber (simonwillison.net)

Simon Willison menghabiskan akhir pekan membangun sandbox Python untuk kode yang dihasilkan LLM, dengan cara mengompilasi MicroPython ke WebAssembly dan menjalankannya lewat library Python wasmtime. Seluruh sandbox berukuran 362 KB binary WASM, dirilis sebagai PyPI wheel, dan terus hidup di antara panggilan dengan variabel tetap di memori berkat threading model yang mengoper kerja lewat antrian request dan reply.

Batas resource didapat dari wasmtime. Memori dibatasi langsung. CPU dibatasi via mekanisme "fuel" wasmtime: tiap instruksi membakar fuel, dan eksekusi berhenti ketika budget habis. Willison memilih 20 juta unit fuel sebagai default dan mengaku belum yakin angka itu yang paling pas. Host function diekspos ke kode sandbox secara selektif, jadi secara default kode tamu bisa menghitung tapi tidak bisa menyentuh jaringan atau filesystem.

Ia luar biasa jujur soal risikonya. Kode C di balik host function belum diaudit profesional, ia menyebut rilis ini alpha bukan tanpa alasan, dan kekhawatirannya adalah celah yang membuat eksekusi WASM gagal dengan exception, bukan kabur dari sandbox. Ia belum merekomendasikan ini ke siapa pun untuk produksi. Tulisan ini diterbitkan sekarang untuk berbagi pilihan desainnya: Python WASM kecil, batas CPU berbasis fuel, dan interpreter persisten dengan host function terkontrol.

Kenapa ini penting

Kalau kamu membiarkan Claude atau agent lain menjalankan Python dari prompt buatanmu, kamu mungkin sudah khawatir kode itu menyentuh host. Ini contoh kerja yang lengkap, dengan ukuran, knob, dan celah yang diakui, soal bentuk sandbox in-process yang hati-hati. Sekalipun kamu tidak mengadopsi library-nya, pilihan antara batas fuel versus timeout wall-clock dan state interpreter persisten adalah keputusan yang tetap harus kamu ambil untuk sandbox apa pun yang kamu rilis.

SecurityAgentsDeveloper Tools