# Memperkenalkan Widget Ruang Kerja (/docs/id/posts/announcing-workspace-widgets)



# Memperkenalkan Widget Ruang Kerja [#memperkenalkan-widget-ruang-kerja]

Hari ini kami merilis **Widget Ruang Kerja**, cara untuk menempatkan
aplikasi hidup dan interaktif langsung ke kanvas ruang kerja Robutler,
berdampingan dengan agen dan obrolan Anda.

<!-- more -->

## Apa yang berubah [#apa-yang-berubah]

Sampai hari ini ruang kerja adalah tempat yang bagus untuk berbicara
dengan agen Anda dan menyematkan konten untuk nanti. Dengan Widget,
ruang kerja menjadi desktop sungguhan yang Anda susun dari
kepingan-kepingan kecil yang bisa dikomposisikan:

* Sebuah **kernel Python** yang berjalan di tab Anda, dengan numpy +
  matplotlib sudah terpasang. Buat sebuah grafik dan grafik itu muncul
  sebagai widget bersebelahan di kanvas, bukan terkubur di panel
  terminal.
* Sebuah **shell lokal** yang menempel pada daemon di mesin Anda sendiri.
* Sebuah **widget SSH** untuk mesin produksi yang terus Anda kunjungi.
  Pengelolaan kunci + host sama seperti terminal lama, hanya lebih
  bersih.
* Sebuah **sematan peramban** untuk dasbor yang selalu Anda pakai.
* Sebuah editor **CodeMirror** untuk suntingan teks + kode yang cepat.
* **Catatan tempel**, **bentuk**, dan **konektor** untuk membuat sketsa
  rencana di kanvas (seperti Figjam, tetapi persis di samping agen Anda).
* Dan sejumlah gim bergaya arcade (Snake, Tetris, Space
  Invaders) karena ruang kerja seharusnya menyenangkan.

Munculkan satu dari tombol `+` → **Widget** → cari di
katalog.

## Yang baru bagi pembangun agen [#yang-baru-bagi-pembangun-agen]

Widget bukan hanya untuk manusia. Agen bisa:

* **Memunculkan widget ke kanvas** lewat keluarga alat `present.*`.
  `present.image`, `present.code`, `present.url`,
  `present.chart`, `present.note`, dan pembantu umum `present.widget`
  memungkinkan agen memposting artefak visual berdampingan dengan
  percakapan.
* **Mengendalikan kernel Python** lewat `workspace_widgets_invoke(id,
  'eval' | 'run', ...)`. Berlangganan peristiwa `stdout` / `stderr` / `display`
  dan gambar matplotlib mengalir langsung kembali ke kanvas
  secara real time.
* **Menjalankan perintah shell** pada widget daemon + SSH lewat alat
  `workspace_widgets_invoke(id, 'run', ...)` yang sama. Setiap perintah
  menulis notifikasi `widget.agent_command` yang teraudit sehingga Anda bisa
  melihat dengan tepat apa yang
  dijalankan.

Pabrik agen mengenali permukaan baru ini: ia bisa membangun
widget dari beberapa petunjuk prompt, menghubungkan `host.kv` untuk state, dan
memancarkan proyeksi DSL untuk aplikasi Robutler iOS / Android native.

## Kepercayaan secara bawaan, risiko harus dipilih sendiri [#kepercayaan-secara-bawaan-risiko-harus-dipilih-sendiri]

Membiarkan agen menjalankan perintah shell itu berbahaya kalau sakelarnya
selalu MENYALA. Jadi kami memilih setelan bawaan yang sebaliknya: setiap widget daemon + SSH
dimulai dengan **Izinkan agen menjalankan perintah** MATI. Nyalakan
per widget kalau Anda sudah siap, matikan lagi kalau sudah selesai.

Kernel Python menyala secara bawaan karena berjalan terisolasi di dalam
tab Anda: agen yang berperilaku sekacau apa pun tidak bisa lolos dari Pyodide.
Sakelarnya tetap ada kalau Anda ingin mengunci kernel untuk sesi
bersama.

Setiap perintah agen yang diterima DAN yang ditolak menulis satu baris audit.
Buka umpan notifikasi lalu cari `widget.agent_command`
untuk melihat riwayat mingguan Anda.

## Widget lintas platform [#widget-lintas-platform]

Widget bisa secara opsional menyertakan **proyeksi**, yaitu pohon
deklaratif kecil yang dikompilasi dari sebuah fungsi JS. Proyeksi menggerakkan tiga hal:

. Pratinjau ringan yang dirender di kanvas tanpa
  memuat iframe penuh (keuntungan besar untuk kinerja dengan puluhan
  widget tersemat).
. Render widget native di aplikasi Robutler iOS / Android
  yang akan datang akhir tahun ini. Aplikasi menengok proyeksi itu
  secara berkala dan merendernya sebagai kotak widget iOS / Android sungguhan.
. Proyeksi dok: sematkan widget ke dok dan
  proyeksinya mengambil alih sehingga Anda bisa membaca state sekilas tanpa
  membebani memori dengan iframe penuh.

Kalau Anda sedang menulis widget hari ini, mengembalikan proyeksi itu
opsional tetapi dianjurkan. Lihat
[panduan host SDK](/guides/widgets/host-sdk/) untuk
tata bahasa DSL-nya.

## Coba sendiri [#coba-sendiri]

Buka [ruang kerja](/workspace) Anda, ketuk tombol `+`, lalu pilih
**Widget**. Atau cukup minta agen Anda: "Tunjukkan grafik saham
NVDA" dan lihat kernel Python menyala, gambar matplotlib
muncul, dan agen memberi keterangan di sebelahnya.

Kami tidak sabar melihat apa yang akan Anda bangun.

Tim Robutler
