WKWebView, będący
lekką wizualną przestrzenią roboczą dla HTML/CSS/JS, A2UI oraz niewielkich
interaktywnych interfejsów użytkownika.
Lokalizacja Canvas
Stan Canvas jest przechowywany w katalogu 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, aplikacja wyświetla wbudowaną stronę szablonową.
Zachowanie panelu
- Panel bez obramowania, o zmiennym rozmiarze, zakotwiczony w pobliżu paska menu (lub kursora myszy).
- Zapamiętuje rozmiar i położenie dla każdej sesji.
- Automatycznie przeładowuje się po zmianie lokalnych plików Canvas.
- W danym momencie widoczny jest tylko jeden panel Canvas (w razie potrzeby następuje przełączenie sesji).
CANVAS_DISABLED.
Interfejs API agenta
Canvas jest udostępniany za pośrednictwem WebSocket Gateway, dzięki czemu agent może pokazywać i ukrywać panel, przechodzić do ścieżki lub adresu URL, wykonywać kod JavaScript oraz przechwytywać obraz migawki:canvas.navigate przyjmuje lokalne ścieżki Canvas, adresy URL http(s) oraz adresy URL file://.
Przekazanie "/" wyświetla lokalną stronę szablonową lub index.html.
Elementy docelowe hostowane przez Gateway pod /__openclaw__/canvas/ oraz
/__openclaw__/a2ui/ są rozpoznawane za pośrednictwem bieżącego adresu URL Canvas o ograniczonym zakresie dla sesji węzła.
Aplikacja odświeża to krótkotrwałe uprawnienie przed nawigacją;
nie trzeba samodzielnie tworzyć ani kopiować adresu URL uprawnienia.
A2UI w Canvas
A2UI jest hostowany przez hosta Canvas usługi Gateway i renderowany wewnątrz panelu Canvas. Gdy Gateway ogłasza hosta Canvas, aplikacja macOS przy pierwszym otwarciu automatycznie przechodzi do strony hosta A2UI. Ogłaszany adres URL ma zakres ograniczony przez uprawnienie, na przykładhttp://<gateway-host>:18789/__openclaw__/cap/<token>/__openclaw__/a2ui/?platform=macos.
Należy traktować go jako tymczasowe dane uwierzytelniające, a nie stały odnośnik.
Polecenia A2UI (v0.8)
Canvas przyjmuje komunikaty A2UI v0.8 wysyłane z serwera do klienta:beginRendering,
surfaceUpdate, dataModelUpdate, deleteSurface. createSurface (v0.9) nie jest
jeszcze obsługiwany.
Wyzwalanie uruchomień agenta z Canvas
Canvas może wyzwalać nowe uruchomienia agenta za pośrednictwem głębokich odnośnikówopenclaw://agent?...:
Aplikacja prosi o potwierdzenie, chyba że podano prawidłowy klucz. Odnośniki
bez klucza wyświetlają komunikat i adres URL przed zatwierdzeniem oraz ignorują pola
trasowania dostarczenia; odnośniki z kluczem korzystają ze standardowej ścieżki uruchamiania Gateway.
Uwagi dotyczące bezpieczeństwa
- Schemat Canvas blokuje przechodzenie między katalogami; pliki muszą znajdować się w katalogu głównym sesji.
- Lokalna zawartość Canvas korzysta z niestandardowego schematu (serwer pętli zwrotnej nie jest wymagany).
- Zewnętrzne adresy URL
http(s)są dozwolone tylko po jawnym przejściu do nich. - Zwykłe strony internetowe służą wyłącznie do renderowania. Działania agenta są przyjmowane tylko ze schematu Canvas należącego do aplikacji lub dokładnie tego dokumentu A2UI Gateway o zakresie ograniczonym uprawnieniem, który wybrała aplikacja; ramki podrzędne, przekierowania, nieaktualne uprawnienia i zmienione zapytania nie mogą wywoływać działań.