Web interfaces
ワークスペース
ワークスペースタブは、コントロール UIであなたとエージェントが共同で構成する画面です。タブ、ウィジェット、12 列グリッド上の配置、およびデータバインディングは、すべて 1 つのドキュメントに格納されます。そのドキュメントを編集できるものなら、あなた、openclaw workspaces CLI、または workspace_* ツールを呼び出すエージェントのいずれでもワークスペースを構成できます。
すべての書き込みは同じ検証済みの経路を通るため、人間が作成したレイアウトとエージェントが作成したレイアウトが食い違うことはありません。受け付けられた書き込みごとにバージョンが更新され、plugin.workspaces.changed がブロードキャストされるため、エージェントによる編集は、すでに開いているブラウザーにも再読み込みなしで反映されます。
ワークスペースを有効にする
同梱のワークスペース Plugin はデフォルトで無効になっています。コントロール UI で Plugin を開き、ワークスペースを見つけて 有効化を選択します。CLI から有効にすることもできます。
openclaw plugins enable workspacesPlugin を有効にすると、ワークスペースタブが追加され、openclaw workspaces CLI と workspace_* エージェントツールが利用可能になります。無効にすると、ワークスペースのデータベースやウィジェットのアセットを削除することなく、これらの機能が取り除かれます。
デフォルトのワークスペース
初回読み込み時には、コストとトークンのカード、インスタンスの稼働状態、セッション、Cron の状態、アクティビティフィードを備えた概要ワークスペースが表示されます。これは通常のワークスペースコンテンツであり、ドラッグ、折りたたみ、非表示、削除が可能です。
組み込みウィジェット
Plugin には 9 種類の信頼済みウィジェットが同梱され、ファーストパーティ UI としてレンダリングされます。
stat-card、markdown、table、iframe-embed、sessions、usage、cron、
instances、activity。
ウィジェットはバインディングを通じてデータを宣言し、独自に取得することはありません。
| バインディング | 解決先 |
|---|---|
static |
ドキュメントに保存されたリテラル値(最大 8 KB)。 |
file |
<stateDir>/workspaces/data/ 配下の JSON、Markdown、または CSV ファイル。必要に応じて JSON ポインターで範囲を限定できます。 |
rpc |
読み取り専用 Gateway メソッドの固定許可リストに含まれるいずれかのメソッド。信頼済みのコントロール UI によって解決されます。 |
file バインディングは、独自の数値をワークスペースに表示する最も簡単な方法です。データディレクトリに JSON ファイルを書き込み、stat-card から参照します。
来歴
タブとウィジェットには、書き込みを行った主体に基づいて user、system、または agent:<id> の createdBy スタンプが付与されます。この値を呼び出し元が指定することはできないため、エージェントが自身の作業をあなたの作業として表示することはできません。また、エージェントが作成したウィジェットの「AI」チップは、常に表示どおりの意味を持ちます。
カスタムウィジェット
エージェントは workspace_widget_scaffold を使用して実際の HTML ウィジェットを作成できます(あなた自身も openclaw workspaces widget-scaffold <name> で作成できます)。エージェントが作成したコードは悪意のあるものとして扱われます。
- スキャフォールドされたウィジェットは保留中としてレジストリに登録されます。オペレーターが承認するまでは iframe は作成されず、アセットルートはそのファイルに対して 404 を返します。
- 承認はレイアウト編集とは別の判断です。
workspaces.widget.approveには、実行承認を保護するものと同じoperator.approvalsスコープが必要です。 - 承認済みのウィジェットは
<iframe sandbox="allow-scripts">内でレンダリングされ、allow-same-originは決して使用されません。そのためオリジンは不透明になり、親の DOM、ストレージ、Cookie にはアクセスできません。 - アセットは
connect-src 'none'を指定して配信され、fetch、XHR、WebSocket などのスクリプトによるネットワーク通信がブロックされます。資格情報は保持せず、Gateway と通信することもありません。 - データは、バージョン管理された
postMessageブリッジを通じてのみ渡されます。カスタムコードは、宣言済みのstaticバインディングを受信できます。これらは、エージェントまたはオペレーターがすでに作成したワークスペース値です。RPC とファイルのバインディングは、信頼済みの組み込みウィジェット内に留まります。ブラウザーではサンドボックス化された子フレームが自身のフレーム内を移動できるため、特権データがエージェント作成の HTML に送信されることはありません。
ウィジェットからチャットにプロンプトを送信するには、さらにマニフェストのケイパビリティ、正確なテキストを引用する呼び出しごとの確認が必要で、レート制限も適用されます。
CLI
openclaw workspaces tabs listopenclaw workspaces tabs create --title Financialsopenclaw workspaces widget-scaffold revenue-chart --title "Revenue Chart"openclaw workspaces widget-approve revenue-chartwidget-approve には operator.approvals スコープでペアリングされたデバイスが必要です。コントロール UI から承認する場合、ブラウザーがすでにそのスコープを保持しているため、デバイスは必要ありません。
ストレージ
ワークスペースドキュメント、カスタムウィジェットレジストリ、および 20 件分の取り消しリングは、<stateDir>/workspaces/workspaces.sqlite に格納されます。エージェントが作成したウィジェットのアセットは <stateDir>/workspaces/widgets/<name>/ 配下に、ファイルバインディングのデータは <stateDir>/workspaces/data/ 配下に、それぞれディスク上で保持されます。これは、エージェントが通常のファイルツールでこれらを作成し、ウィジェットルートがそのバイト列を配信するためです。