Op deze pagina
Op deze pagina
macOS companion app
Canvas
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.htmlopenclaw-canvas://main/assets/app.css-><canvasRoot>/main/assets/app.cssopenclaw-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:
| Parameter | Betekenis |
|---|---|
message |
Vooraf ingevulde agentprompt. |
sessionKey |
Stabiele sessie-id. |
thinking |
Optioneel denkprofiel. |
deliver, to, channel |
Afleverdoel. |
timeoutSeconds |
Optionele time-out voor de run. |
key |
Door de app gegenereerd beveiligingstoken voor vertrouwde lokale aanroepers. |
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.