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 が存在しない場合は、アプリが 組み込みのスキャフォールド ページ を表示します。
パネルの挙動
- メニューバー付近、またはマウスカーソル付近に表示される、枠なしでリサイズ可能なパネルです。
- サイズと位置はセッションごとに記憶されます。
- ローカルの Canvas ファイルが変更されると自動で再読み込みされます。
- 同時に表示できる Canvas パネルは 1 つだけで、必要に応じてセッションが切り替わります。
CANVAS_DISABLED を返します。
エージェント API
Canvas は ゲートウェイ WebSocket 経由で公開されるため、エージェントは次の操作を実行できます。- パネルの表示と非表示
- パスまたは URL への移動
- JavaScript の評価
- スナップショット画像の取得
canvas.navigateは ローカル Canvas パス、http(s)URL、file://URL を受け付けます。"/"を渡すと、Canvas にはローカルのスキャフォールド、またはindex.htmlが表示されます。
Canvas 上の A2UI
A2UI はゲートウェイの Canvas host によって配信され、Canvas パネル内に描画されます。ゲートウェイが Canvas host を通知している場合、macOS アプリは最初に Canvas を開いたとき、自動的に A2UI host ページへ移動します。 デフォルトの A2UI host URL:A2UI コマンド(v0.8)
Canvas は現在、A2UI v0.8 の server-to-client メッセージを受け付けます。beginRenderingsurfaceUpdatedataModelUpdatedeleteSurface
createSurface(v0.9)はサポートされていません。
CLI の例:
Canvas からエージェント実行を開始する
Canvas はディープリンク経由で新しいエージェント実行を開始できます。openclaw://agent?...
セキュリティに関する注意事項
- Canvas スキームではディレクトリ トラバーサルを防止しており、ファイルは必ずセッション ルート配下に置く必要があります。
- ローカル Canvas コンテンツはカスタム スキームで提供されるため、ループバック サーバーは不要です。
- 外部
http(s)URL は、明示的にナビゲートされた場合にのみ許可されます。