WKWebView, sebuah
ruang kerja visual ringan untuk HTML/CSS/JS, A2UI, dan permukaan UI
interaktif kecil.
Lokasi Canvas
Status Canvas disimpan di bawah Application Support:~/Library/Application Support/OpenClaw/canvas/<session>/...
openclaw-canvas://<session>/<path>:
openclaw-canvas://main/-><canvasRoot>/main/index.htmlopenclaw-canvas://main/assets/app.css-><canvasRoot>/main/assets/app.cssopenclaw-canvas://main/widgets/todo/-><canvasRoot>/main/widgets/todo/index.html
index.html di direktori akar, aplikasi menampilkan halaman kerangka bawaan.
Perilaku panel
- Panel tanpa bingkai yang dapat diubah ukurannya dan ditambatkan di dekat bilah menu (atau kursor tetikus).
- Menampilkan Canvas tidak beralih aplikasi atau mengambil fokus papan ketik.
- Mengingat ukuran/posisi per sesi.
- Memuat ulang secara otomatis saat file Canvas lokal berubah.
- Hanya satu panel Canvas yang terlihat pada satu waktu (beralih sesi sesuai kebutuhan).
CANVAS_DISABLED.
Permukaan API agen
Canvas diekspos melalui WebSocket Gateway, sehingga agen dapat menampilkan/menyembunyikan panel, menavigasi ke jalur atau URL, mengevaluasi JavaScript, dan mengambil gambar cuplikan:eval dan a2ui.* memperbarui konten tanpa membuka atau menampilkan panel. Hanya
present, navigate, atau tindakan pengguna yang menampilkannya; setelah disembunyikan, pembaruan konten
tetap diterapkan pada panel tersembunyi. snapshot memerlukan panel yang terlihat dan
akan mengembalikan CANVAS_HIDDEN jika tidak; jalankan present terlebih dahulu.
canvas.navigate menerima jalur Canvas lokal, URL http(s), dan URL file://.
Meneruskan "/" akan menampilkan kerangka lokal atau index.html.
Target yang dihosting Gateway di bawah /__openclaw__/canvas/ dan
/__openclaw__/a2ui/ diuraikan melalui URL Canvas terbatas saat ini milik sesi
node. Aplikasi memperbarui kapabilitas berumur pendek tersebut sebelum navigasi;
Anda tidak perlu membuat atau menyalin sendiri URL kapabilitas.
A2UI di Canvas
A2UI dihosting oleh host Canvas Gateway dan dirender di dalam panel Canvas. Saat Gateway mengumumkan host Canvas, aplikasi macOS secara otomatis menavigasi ke halaman host A2UI ketika pertama kali dibuka. URL yang diumumkan dibatasi berdasarkan kapabilitas, misalnyahttp://<gateway-host>:18789/__openclaw__/cap/<token>/__openclaw__/a2ui/?platform=macos.
Perlakukan URL tersebut sebagai kredensial sementara, bukan tautan stabil.
Perintah A2UI (v0.8)
Canvas menerima pesan server-ke-klien A2UI v0.8:beginRendering,
surfaceUpdate, dataModelUpdate, deleteSurface. createSurface (v0.9)
belum didukung.
Memicu eksekusi agen dari Canvas
Canvas dapat memicu eksekusi agen baru melalui tautan dalamopenclaw://agent?...:
Aplikasi meminta konfirmasi kecuali kunci yang valid diberikan. Tautan tanpa kunci
menampilkan pesan dan URL sebelum persetujuan, serta mengabaikan bidang perutean
pengiriman; tautan berkunci menggunakan jalur eksekusi Gateway normal.
Catatan keamanan
- Skema Canvas memblokir penelusuran direktori; file harus berada di bawah direktori akar sesi.
- Konten Canvas lokal menggunakan skema khusus (tidak memerlukan server loopback).
- URL
http(s)eksternal hanya diizinkan saat dinavigasi secara eksplisit. - Halaman web biasa hanya dapat dirender. Tindakan agen hanya diterima dari skema Canvas milik aplikasi atau dokumen A2UI Gateway dengan cakupan kapabilitas persis yang dipilih oleh aplikasi; subframe, pengalihan, kapabilitas kedaluwarsa, dan kueri yang berubah tidak dapat mengirim tindakan.