openclaw workspaces или агент, вызывающий инструменты workspace_*.
Каждая запись проходит по одному и тому же проверяемому пути, поэтому макеты, созданные человеком и агентом,
не могут разойтись. Каждая принятая запись увеличивает версию и отправляет широковещательное событие
plugin.workspaces.changed, поэтому изменение агента появляется в уже открытом браузере без
перезагрузки.
Включение рабочих пространств
Встроенный плагин рабочих пространств по умолчанию отключён. В интерфейсе управления откройте Плагины, найдите Рабочие пространства и выберите Включить. Его также можно включить из CLI:openclaw workspaces и инструменты агента workspace_*. Отключение удаляет эти поверхности, не
удаляя базу данных рабочих пространств или ресурсы виджетов.
Рабочее пространство по умолчанию
При первой загрузке вы получаете рабочее пространство Обзор: карточки затрат и токенов, состояние экземпляра, сеансы, состояние Cron и ленту активности. Это обычное содержимое рабочего пространства — перетаскивайте его, сворачивайте, скрывайте или удаляйте.Встроенные виджеты
С плагином поставляются девять доверенных виджетов, которые отображаются как собственный интерфейс:stat-card, markdown, table, iframe-embed, sessions, usage, cron,
instances, activity.
Виджеты объявляют данные через привязки и никогда не загружают их самостоятельно:
| Привязка | Разрешается в |
|---|---|
static | Литеральное значение, хранящееся в документе (не более 8 КБ). |
file | Файл JSON, Markdown или CSV в каталоге <stateDir>/workspaces/data/, при необходимости ограниченный указателем JSON. |
rpc | Один из фиксированного списка разрешённых методов Gateway только для чтения, разрешаемый доверенным интерфейсом управления. |
file — самый простой способ добавить собственные числовые данные в рабочее пространство: запишите
файл JSON в каталог данных и укажите на него в stat-card.
Происхождение
Вкладки и виджеты содержат отметкуcreatedBy — user, system или agent:<id>, — установленную на основании
того, кто выполнил запись. Вызывающая сторона не может задать её, поэтому агент не может выдать свою
работу за вашу, а метка «ИИ» на созданном агентом виджете всегда соответствует действительности.
Пользовательские виджеты
Агент может создать настоящий HTML-виджет с помощьюworkspace_widget_scaffold (как и вы — с помощью
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 и WebSockets. У него нет учётных данных, и он никогда не обращается к Gateway. - Данные поступают в него только через версионированный мост
postMessage. Пользовательский код может получать объявленные привязкиstatic, которые уже являются значениями рабочего пространства, созданными агентом или оператором. Привязки RPC и файлов остаются в доверенных встроенных виджетах: браузеры позволяют дочернему элементу в песочнице переходить внутри собственного фрейма, поэтому привилегированные данные никогда не передаются в созданный агентом HTML.
CLI
widget-approve требуется сопряжённое устройство с областью доступа operator.approvals; при одобрении из
интерфейса управления это не требуется, поскольку браузер уже располагает ею.
Хранение
Документ рабочего пространства, реестр пользовательских виджетов и кольцевой буфер отмены на 20 записей хранятся в<stateDir>/workspaces/workspaces.sqlite. Ресурсы созданных агентом виджетов остаются на диске в каталоге
<stateDir>/workspaces/widgets/<name>/, а данные файловых привязок — в
<stateDir>/workspaces/data/, поскольку агент создаёт их с помощью обычных файловых инструментов,
а маршрут виджета отдаёт их байты.