Skip to main content
De macOS-app bevat een door een agent aangestuurd Canvas-paneel met WKWebView, een lichte visuele werkruimte voor HTML/CSS/JS, A2UI en kleine interactieve UI-oppervlakken.

Waar Canvas zich bevindt

De Canvas-status wordt opgeslagen onder Application Support:
  • ~/Library/Application Support/OpenClaw/canvas/<session>/...
Het Canvas-paneel biedt deze bestanden aan via een aangepast URL-schema, 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
Als er geen index.html in de hoofdmap bestaat, toont de app een ingebouwde basispagina.

Gedrag van het paneel

  • Randloos paneel waarvan het formaat kan worden gewijzigd, verankerd bij de menubalk (of muiscursor).
  • Canvas weergeven wisselt niet van app en neemt de toetsenbordfocus niet over.
  • Onthoudt formaat en positie per sessie.
  • Wordt automatisch opnieuw geladen wanneer lokale Canvas-bestanden veranderen.
  • Er is slechts één Canvas-paneel tegelijk zichtbaar (er wordt indien nodig van sessie gewisseld).
Canvas kan worden uitgeschakeld via Settings -> Allow Canvas. Als Canvas is uitgeschakeld, retourneren Canvas-nodeopdrachten CANVAS_DISABLED.

API-oppervlak voor agents

Canvas is beschikbaar via de Gateway-WebSocket, zodat de agent het paneel kan weergeven of verbergen, naar een pad of URL kan navigeren, JavaScript kan evalueren en een momentopname kan maken:
eval en a2ui.* werken de inhoud bij zonder het paneel te openen of zichtbaar te maken. Alleen present, navigate of een gebruikersactie toont het; nadat het paneel is verborgen, blijven inhoudsupdates van toepassing op het verborgen paneel. snapshot vereist een zichtbaar paneel en retourneert anders CANVAS_HIDDEN; voer eerst present uit. canvas.navigate accepteert lokale Canvas-paden, http(s)-URL’s en file://- URL’s. Als je "/" doorgeeft, wordt de lokale basispagina of index.html weergegeven. Door de Gateway gehoste doelen onder /__openclaw__/canvas/ en /__openclaw__/a2ui/ worden omgezet via de huidige Canvas-URL met beperkt bereik van de nodesessie. De app vernieuwt deze kortlevende bevoegdheid vóór de navigatie; je hoeft niet zelf een bevoegdheids-URL samen te stellen of te kopiëren.

A2UI in Canvas

A2UI wordt gehost door de Canvas-host van de Gateway en weergegeven in het Canvas-paneel. Wanneer de Gateway een Canvas-host aankondigt, navigeert de macOS-app bij de eerste opening automatisch naar de A2UI-hostpagina. De aangekondigde URL heeft een bevoegdheidsbeperkt bereik, bijvoorbeeld http://<gateway-host>:18789/__openclaw__/cap/<token>/__openclaw__/a2ui/?platform=macos. Behandel deze als tijdelijke aanmeldgegevens, niet als een permanente link.

A2UI-opdrachten (v0.8)

Canvas accepteert A2UI v0.8-berichten van server naar client: beginRendering, surfaceUpdate, dataModelUpdate, deleteSurface. createSurface (v0.9) wordt nog niet ondersteund.
Snelle rooktest:

Agentruns activeren vanuit Canvas

Canvas kan nieuwe agentruns activeren via openclaw://agent?...-deeplinks:
Ondersteunde queryparameters: De app vraagt om bevestiging, tenzij een geldige sleutel wordt verstrekt. Links zonder sleutel tonen vóór goedkeuring het bericht en de URL en negeren velden voor afleverroutering; links met een sleutel gebruiken het normale runpad van de Gateway.

Beveiligingsopmerkingen

  • Het Canvas-schema blokkeert directorytraversal; bestanden moeten zich onder de sessiehoofdmap bevinden.
  • Lokale Canvas-inhoud gebruikt een aangepast schema (geen loopbackserver vereist).
  • Externe http(s)-URL’s zijn alleen toegestaan wanneer er expliciet naartoe wordt genavigeerd.
  • Gewone webpagina’s kunnen alleen worden weergegeven. Agentacties worden alleen geaccepteerd vanuit het Canvas-schema dat eigendom is van de app of vanuit het exacte, door een bevoegdheid beperkte Gateway A2UI-document dat door de app is geselecteerd; subframes, omleidingen, verlopen bevoegdheden en gewijzigde query’s kunnen geen acties verzenden.

Gerelateerd