Skip to main content
Aplikacja macOS osadza sterowany przez agenta panel Canvas przy użyciu 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>/...
Panel Canvas udostępnia te pliki za pośrednictwem niestandardowego schematu URL openclaw-canvas://<session>/<path>:
  • openclaw-canvas://main/ -> <canvasRoot>/main/index.html
  • openclaw-canvas://main/assets/app.css -> <canvasRoot>/main/assets/app.css
  • openclaw-canvas://main/widgets/todo/ -> <canvasRoot>/main/widgets/todo/index.html
Jeśli w katalogu głównym nie istnieje 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 można wyłączyć w Settings -> Allow Canvas. Po wyłączeniu polecenia węzła Canvas zwracają 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ład http://<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.
Szybki test kontrolny:

Wyzwalanie uruchomień agenta z Canvas

Canvas może wyzwalać nowe uruchomienia agenta za pośrednictwem głębokich odnośników openclaw://agent?...:
Obsługiwane parametry zapytania: 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ń.

Powiązane