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>/...
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 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_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, bijvoorbeeldhttp://<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.
Agentruns activeren vanuit Canvas
Canvas kan nieuwe agentruns activeren viaopenclaw://agent?...-deeplinks:
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.