openclaw worker yang dibatasi. Panggilan model diproksikan kembali melalui Gateway, sehingga kredensial penyedia tidak pernah meninggalkan mesin Anda, dan penyimpanan cache prompt tetap berfungsi karena penyedia melihat satu aliran berkelanjutan.
Ketika pekerjaan selesai (atau mesin berhenti berfungsi), mesin tersebut dibuang. Status yang persisten — transkrip, commit ruang kerja, catatan penempatan — berada bersama Gateway.
Cloud worker bersifat opsional dan tidak terlihat sampai Anda mengonfigurasi profil. Instalasi yang belum dikonfigurasi tidak melihat RPC, konfigurasi, atau UI baru.
Apa yang berjalan di mana
Mesin tidak memerlukan port masuk selain
sshd: Gateway membuat koneksi keluar melalui SSH yang dipatok, dan tunnel balik membawa WebSocket worker kembali. Penyedia Crabbox bawaan memaksakan rute SSH publik dan menonaktifkan pendaftaran Tailscale terkelola. Akses internet keluar bergantung pada kebijakan penyedia; profil AWS default dapat mengakses internet kecuali Anda membatasi jaringan atau grup keamanannya.
Persyaratan
- Plugin penyedia worker. Plugin
crabboxbawaan mengendalikan CLI Crabbox, yang menjadi perantara penyewaan di berbagai backend cloud (AWS, Hetzner, dan lainnya). Binercrabboxharus berada diPATH(atau tetapkansettings.binary) dengan kredensial penyedia yang sudah dikonfigurasi. Penerimaan AWS memerlukan Crabbox 0.38.1 atau yang lebih baru. - Untuk worker AWS Crabbox,
aws.instanceProfileefektif harus kosong. Penyedia memeriksacrabbox config show --jsonsebelum alokasi, lalu mengharuskancrabbox inspect --jsonmelaporkanproviderMetadata.instanceProfileAttached: falsedariDescribeInstancesEC2. Penyewaan dengan peran instans atau tanpa metadata otoritatif dihentikan dan ditolak. - Node.js pada mesin yang disewa. Image cloud dasar biasanya tidak menyertakannya — pasang Node.js dalam perintah
setupprofil. - Sesi dengan worktree terkelola milik sesi (buat dengan
worktree: true). Pengiriman memindahkan isi worktree tersebut; direktori biasa disinkronkan sebagai cerminan manifes.
Konfigurasi
Tambahkan profil di bawahcloudWorkers.profiles dalam openclaw.json:
Perintah penyiapan
settings.setup berjalan pada mesin yang disewa setelah SSH siap dan sebelum OpenClaw dipasang. Perintah ini berjalan pada setiap upaya penyediaan (termasuk pemutaran ulang setelah pengiriman terinterupsi), sehingga harus idempoten — lindungi pemasangan dengan pemeriksaan command -v/test -x seperti dalam contoh. Jika penyiapan gagal, penyedia menghentikan penyewaan dan pengiriman gagal secara tertutup; tidak ada mesin setengah terkonfigurasi yang dibiarkan berjalan.
Saluran instalasi
bundlemengemasdistmilik Gateway yang sedang berjalan,package.jsonyang telah dipangkas, dan paket ruang kerja apa pun yang dirujuk build, semuanya tercakup oleh hash konten. Mesin memverifikasi bundel asli berdasarkan hash tersebut, lalu memasang dependensi npm produksi (skrip dinonaktifkan). Beginilah cara menjalankan build pengembangan pada worker.npmmembuktikan bahwa rilis tersedia di registry publik, mematok integritas SHA-512-nya, dan memasangopenclaw@<version>yang sama persis dengan Gateway.
Mengirim sesi
Di Control UI, buka Sesi Baru, pilih agen yang runtime terkonfigurasinya adalah OpenClaw, pilih target Cloud · profil yang telah dikonfigurasi dari menu Di mana, lalu mulai tugas. Pemilihan cloud mengaktifkan worktree terkelola yang diperlukan secara otomatis; Gateway membuat sesi, menyelesaikan pengiriman, dan baru kemudian mengirim giliran pertama. Lencana server di bilah sisi sesi menampilkan status penempatan persisten. Target cloud tidak ditawarkan untuk katalog sesi CLI eksternal. Alur RPC yang setara adalah: Buat sesi dengan worktree terkelola, lalu kirimkan sesi tersebut (RPC memerlukanoperator.admin dan hanya tersedia ketika profil dikonfigurasi):
Cloud worker menjalankan runtime agen OpenClaw. Pilih openai/* atau model lain yang diresolusikan ke runtime tersebut; sesi yang dikonfigurasi untuk runtime CLI eksternal seperti claude-cli tidak dapat dikirim.
sessions.dispatch menutup penerimaan giliran lokal, menuntaskan pekerjaan aktif, menyediakan penyewaan, menjalankan penyiapan, melakukan bootstrap OpenClaw, menyinkronkan ruang kerja, dan kembali setelah penempatan mencapai kepemilikan worker active. Alokasikan beberapa menit untuk pengiriman pertama; penyewaan dan instalasi disimpan dalam cache jika didukung oleh penyedia. Setelah itu, berinteraksilah dengan sesi seperti biasa — giliran dirutekan ke worker secara otomatis.
Giliran worker yang selesai merekonsiliasi file ruang kerja yang memenuhi syarat dan dibatasi ukurannya kembali ke worktree terkelola sesi sebelum klaim giliran dilepas. Peristiwa terminal worker membuat pagar hasil tertunda yang persisten sebelum diakui. Gateway kemudian melakukan staging hasil cloud lengkap sebagai ref Git di bawah refs/openclaw/worker-results/ sebelum menerapkannya, sehingga versi cloud tetap dapat dipulihkan meskipun Gateway berhenti selama penerapan. Hasil ruang kerja menggunakan semantik file Git: file biasa, bit executable, symlink, penambahan, perubahan, dan penghapusan dipertahankan, sedangkan direktori kosong dan mode direktori lainnya tidak. Perubahan file yang dihasilkan tetap berada dalam worktree terkelola untuk proses review dan commit normal.
Penerapan menggunakan manifes pada waktu pengiriman sebagai basis penggabungan. Perubahan khusus cloud diterapkan, perubahan khusus lokal tetap dipertahankan, dan jalur yang berubah di kedua sisi menggunakan kebijakan tiga arah yang mempertahankan versi lokal. Giliran yang berkonflik tetap selesai: transkrip melaporkan ringkasan jalur terbatas dan ref hasil yang telah di-stage, penempatan menampilkan konflik yang sama untuk Control UI, dan perubahan cloud yang tidak berkonflik tetap diterapkan. Pemberitahuan menyertakan git show <ref>:<path> untuk memeriksa file cloud yang ada dan perintah git checkout <ref> -- <path> dengan literal pathspec tingkat atas untuk mengambilnya dari direktori ruang kerja mana pun. Jalankan perintah dalam Bash atau zsh (Git Bash pada Windows). Jika pemeriksaan menyatakan jalur tidak ada, hasil cloud telah menghapusnya; verifikasi lalu hapus jalur lokal yang dipertahankan secara manual. Jika checkout melaporkan halangan file/direktori, pindahkan atau hapus jalur lokal yang menghalangi lalu coba lagi. Jika ref yang telah di-stage itu sendiri sudah tidak ada, anggap pemberitahuan telah kedaluwarsa dan jangan ubah jalur lokal. Ref yang telah di-stage dan berkonflik tetap tersedia setelah pagar giliran normal dilepas; hasil bersih berikutnya menghapus pemberitahuan dan menghentikan ref lama, sedangkan penghapusan pagar secara eksplisit menjadi batas pembersihan terakhir.
Selama hasil berpagar masih direkonsiliasi, giliran baru menunggu hingga 15 detik agar klaim sebelumnya dilepas. Jika masih sibuk, giliran gagal dengan pesan “hasil ruang kerja dari giliran cloud sebelumnya masih direkonsiliasi” yang dapat ditindaklanjuti dan dapat segera dicoba kembali. Saat dimulai ulang, pemulihan menemukan hasil tertunda dan hasil yang telah di-stage sebelum pembersihan klaim kedaluwarsa, menyelesaikan atau mencoba kembali penerapan lokalnya, dan mengambil kembali lingkungan yang mati hanya setelah hasil dipertahankan. Jurnal rollback SQLite terbatas membuat penerapan sistem file yang terinterupsi dapat dipulihkan tanpa memutar ulang mutasi yang sudah diterima.
Ketika pekerjaan selesai dan tidak ada giliran yang berjalan, buka menu sesi lalu pilih Hentikan cloud worker…. Gateway melakukan satu rekonsiliasi ruang kerja terakhir sebelum menghancurkan lingkungan. Penempatan yang sudah berada dalam draining atau reconciling sedang menyelesaikan penghentian; tunggu hingga lencananya menjadi reclaimed sebelum menghapus sesi.
Untuk worker terhubung yang rusak atau tidak terkendali, operator dapat memanggil environments.destroy dengan { "force": true } sebagai upaya terakhir. Penghentian paksa menandai penempatan sebagai gagal secara persisten dan mengabaikan hasil jarak jauh yang belum direkonsiliasi sebelum menghancurkan lingkungan.
RPC administratif yang setara adalah:
local → requested → provisioning → syncing → starting → active), sehingga Gateway yang dimulai ulang di tengah proses pengiriman akan melakukan rekonsiliasi alih-alih membiarkan mesin bocor. Giliran model yang gagal mempertahankan penempatan aktif agar tetap tersedia untuk dicoba kembali. Konflik jalur ruang kerja mempertahankan versi lokal, menerapkan bagian lain dari hasil cloud, dan menyimpan ref cloud yang telah disiapkan untuk diperiksa; kegagalan rekonsiliasi atau siklus hidup lainnya mempertahankan pagar pemulihan tahan lama dan bagian akhir diagnostiknya hingga pemulihan dapat mencoba kembali atau mengambil alih lingkungan dengan aman.
Model keamanan
- Ingress pekerja tertutup. Pekerja berkomunikasi menggunakan protokol khusus pada soket yang disalurkan melalui terowongan dengan daftar izin metode yang tertutup — pekerja tidak dapat memanggil RPC operator.
- Kredensial yang diterbitkan, di-hash saat disimpan. Setiap pengiriman menerbitkan kredensial pekerja; Gateway hanya menyimpan hash-nya. Rotasi kredensial dan pemagaran epoch pemilik menjamin bahwa paling banyak hanya ada satu pemilik aktif per sesi — pekerja usang yang terhubung kembali akan dipagari, tidak pernah digabungkan.
- Penyematan kunci host. Penyedia harus menyediakan kunci host SSH milik box saat penyediaan; bootstrap terhubung dengan penyematan ketat dan gagal secara tertutup jika kunci tersebut tidak tersedia.
- Tidak ada kredensial model, forge, atau cloud yang tersimpan permanen di box. Autentikasi model tetap berada di Gateway (inferensi dikirim melalui referensi
{provider, model}), commit git ruang kerja dibuat tanpa kredensial forge, dan metadata sewa AWS Crabbox diperiksa secara otoritatif untuk memastikan keberadaan peran instans sebelum penyiapan. Pastikan juga perintah penyiapan bebas dari kredensial. - Egress yang dimiliki penyedia. Terowongan balik menghilangkan kebutuhan OpenClaw untuk mengakses model secara langsung, tetapi OpenClaw tidak menulis ulang firewall penyedia. Batasi lalu lintas keluar di penyedia pekerja saat tugas mengharuskannya.
- Transkrip yang tahan lama dan tepat satu kali. Pekerja melakukan commit batch transkrip melalui protokol bandingkan-dan-tukar terhadap leaf sesi; basis usang akan menghentikan proses secara paksa alih-alih menduplikasi atau melakukan rebase pada keluaran berbayar.
Pemecahan masalah
sessions.dispatchadalah metode yang tidak dikenal — tidak adacloudWorkers.profilesyang dikonfigurasi, atau pemanggil tidak memilikioperator.admin.- “Giliran pekerja cloud memerlukan runtime OpenClaw” — pilih model dengan runtime yang dikonfigurasi sebagai OpenClaw. Runtime CLI eksternal seperti
claude-clitidak mendukung inferensi pekerja. - “Bootstrap pekerja memerlukan Node.js pada host yang disewa” — tambahkan instalasi Node ke
settings.setup(lihat di atas). - Atestasi peran instans AWS gagal — hapus
aws.instanceProfile(danCRABBOX_AWS_INSTANCE_PROFILE, jika ditetapkan). Instal Crabbox 0.38.1 atau yang lebih baru; biner lama tidak menyediakan kontrakproviderMetadata.instanceProfileAttachedotoritatif yang diperlukan untuk penerimaan AWS. - Pengiriman gagal dengan kesalahan penyedia — catatan penempatan dan
environments.listmenyimpan kesalahan terakhir, termasuk bagian akhir stderr penyiapan/bootstrap. Box dimusnahkan saat terjadi kegagalan, sehingga bagian akhir tersebut menjadi sumber forensik utama. - Waktu tunggu klien habis saat melakukan pengiriman —
openclaw gateway callsecara default memiliki batas waktu 10s; berikan--timeoutdengan nilai yang cukup besar (pengiriman tetap berjalan di sisi server dalam kedua kondisi tersebut, dan percobaan ulang selama penyediaan ditolak dengansession cannot dispatch from placement provisioning). - Pemberitahuan konflik ruang kerja cloud — giliran telah selesai dan mempertahankan versi lokal dari setiap jalur yang tercantum. Gunakan perintah ref yang telah disiapkan dalam pemberitahuan untuk memeriksa atau mengambil versi cloud; perubahan yang tidak berkonflik tidak perlu dicoba ulang karena sudah diterapkan.
- “Hasil ruang kerja dari giliran cloud sebelumnya masih direkonsiliasi” — Gateway menunggu sebentar hingga pagar tahan lama hasil sebelumnya tersedia dan tidak dapat memperoleh klaim sesi. Tunggu hingga rekonsiliasi selesai, lalu coba kembali giliran tersebut; memulai ulang Gateway aman karena pemulihan mempertahankan hasil yang telah disiapkan sebelum mengambil alih pekerja yang mati.
- Pemeliharaan sewa —
crabbox list --provider <backend>menampilkan sewa aktif;crabbox stop --provider <backend> --id <lease>melepaskan satu sewa secara manual. Sewa menganggur kedaluwarsa berdasarkanidleTimeoutmilik profil.
Terkait
- Sandboxing — mengurangi radius dampak untuk eksekusi alat lokal
- CLI sesi — memeriksa sesi yang tersimpan
- Referensi konfigurasi