Canvas (macOS app)
macOS アプリは、WKWebView を使ってエージェント制御の Canvas パネルを埋め込みます。これは
HTML/CSS/JS、A2UI、および小規模なインタラクティブ
UI サーフェス向けの軽量なビジュアルワークスペースです。
Canvas の配置場所
Canvas の状態は 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 が存在しない場合、アプリは組み込みの scaffold ページを表示します。
パネルの動作
- メニューバー(またはマウスカーソル)の近くに固定される、境界線なし・リサイズ可能なパネル。
- セッションごとにサイズ/位置を記憶します。
- ローカルの canvas ファイルが変更されると自動リロードします。
- 一度に表示される Canvas パネルは 1 つだけです(必要に応じてセッションを切り替えます)。
CANVAS_DISABLED を返します。
エージェント API サーフェス
Canvas は Gateway WebSocket 経由で公開されるため、エージェントは次のことができます:- パネルを表示/非表示にする
- パスまたは URL へ移動する
- JavaScript を評価する
- スナップショット画像を取得する
canvas.navigateは、ローカル canvas パス、http(s)URL、file://URL を受け付けます。"/"を渡した場合、Canvas はローカルの scaffold またはindex.htmlを表示します。
Canvas 内の A2UI
A2UI は Gateway canvas host によってホストされ、Canvas パネル内でレンダリングされます。 Gateway が Canvas host を通知すると、macOS アプリは最初に開いたときに A2UI host ページへ自動で移動します。 デフォルトの A2UI host URL:A2UI コマンド(v0.8)
Canvas は現在、A2UI v0.8 の server→client メッセージを受け付けます:beginRenderingsurfaceUpdatedataModelUpdatedeleteSurface
createSurface(v0.9)はサポートされていません。
CLI の例:
Canvas からエージェント実行をトリガーする
Canvas は、ディープリンク経由で新しいエージェント実行をトリガーできます:openclaw://agent?...
セキュリティに関する注意
- Canvas スキームはディレクトリトラバーサルをブロックします。ファイルはセッションルート配下に存在する必要があります。
- ローカル Canvas コンテンツはカスタムスキームを使います(loopback server は不要です)。
- 外部の
http(s)URL は、明示的に移動した場合にのみ許可されます。