---
read_when:
    - ساخت یا بازچینی زبانه‌ها و ابزارک‌های فضای کاری
    - اجازه دادن به یک عامل برای ساختن یک فضای کاری
    - بررسی مدل تأیید و محیط ایزولهٔ ویجت سفارشی
summary: فضاهای کاری قابل‌ترکیب توسط عامل در رابط کاربری کنترل
title: فضاهای کاری
x-i18n:
    generated_at: "2026-07-12T11:03:02Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 234baefc18be736599addeeb35f8404b617c1d8f07f058c4a02ec2615ca21aa0
    source_path: web/workspaces.md
    workflow: 16
---

زبانهٔ **فضاهای کاری** در [رابط کنترل](/fa/web/control-ui) محیطی است که شما و عامل‌هایتان با همکاری یکدیگر آن را سامان می‌دهید. زبانه‌ها، ابزارک‌ها، موقعیت آن‌ها روی یک شبکهٔ ۱۲ ستونی و اتصال‌های دادهٔ آن‌ها همگی در یک سند قرار دارند. هر چیزی که بتواند آن سند را ویرایش کند، می‌تواند فضای کاری را بسازد: شما، CLI با دستور `openclaw workspaces`، یا عاملی که ابزارهای `workspace_*` را فراخوانی می‌کند.

هر عملیات نوشتن از همان مسیر اعتبارسنجی‌شده عبور می‌کند؛ بنابراین چیدمان ایجادشده به‌دست انسان و چیدمان ایجادشده به‌دست عامل نمی‌توانند از یکدیگر واگرا شوند. هر عملیات نوشتن پذیرفته‌شده، نسخه را افزایش می‌دهد و `plugin.workspaces.changed` را پخش می‌کند؛ در نتیجه ویرایش عامل بدون نیاز به بارگیری مجدد، در مرورگری که از قبل باز است نمایش داده می‌شود.

## فعال‌سازی فضاهای کاری

Plugin همراهِ فضاهای کاری به‌طور پیش‌فرض غیرفعال است. در رابط کنترل، **افزونه‌ها** را باز کنید، **فضاهای کاری** را پیدا کنید و **فعال‌سازی** را انتخاب کنید. همچنین می‌توانید آن را از CLI فعال کنید:

```sh
openclaw plugins enable workspaces
```

فعال‌سازی Plugin، زبانهٔ **فضاهای کاری** را اضافه می‌کند و CLI با دستور `openclaw workspaces` و ابزارهای عامل `workspace_*` را در دسترس قرار می‌دهد. غیرفعال‌سازی آن، این بخش‌ها را بدون حذف پایگاه دادهٔ فضای کاری یا دارایی‌های ابزارک حذف می‌کند.

## فضای کاری پیش‌فرض

در نخستین بارگذاری، یک فضای کاری **نمای کلی** در اختیار دارید: کارت‌های هزینه و توکن، سلامت نمونه‌ها، نشست‌ها، وضعیت Cron و خوراک فعالیت. این محتوای عادی فضای کاری است — آن را بکشید، جمع کنید، پنهان کنید یا حذف کنید.

## ابزارک‌های داخلی

نه ابزارک مورداعتماد همراه Plugin عرضه می‌شوند و به‌صورت رابط کاربری بومی نمایش داده می‌شوند:

`stat-card`، `markdown`، `table`، `iframe-embed`، `sessions`، `usage`، `cron`،
`instances`، `activity`.

ابزارک‌ها داده را از طریق **اتصال‌ها** تعریف می‌کنند و هرگز خودشان داده‌ای واکشی نمی‌کنند:

| اتصال   | به این مورد تفکیک می‌شود                                                                                              |
| -------- | --------------------------------------------------------------------------------------------------------------------- |
| `static` | مقداری تحت‌اللفظی که در سند ذخیره شده است (حداکثر ۸ کیلوبایت).                                                        |
| `file`   | یک فایل JSON، Markdown یا CSV در مسیر `<stateDir>/workspaces/data/` که می‌توان آن را با یک اشاره‌گر JSON محدودتر کرد. |
| `rpc`    | یکی از روش‌های فقط‌خواندنی Gateway در یک فهرست مجاز ثابت که رابط کنترل مورداعتماد آن را تفکیک می‌کند.                 |

اتصال `file` ساده‌ترین راه برای قراردادن اعداد خودتان در یک فضای کاری است: یک فایل JSON در شاخهٔ داده بنویسید و یک `stat-card` را به آن متصل کنید.

## منشأ

زبانه‌ها و ابزارک‌ها مهر `createdBy` دارند — `user`، `system` یا `agent:<id>` — که بر اساس ایجادکنندهٔ عملیات نوشتن تنظیم می‌شود. فراخوان نمی‌تواند آن را ارائه کند؛ بنابراین عامل نمی‌تواند کار خود را به نام شما برچسب بزند و نشان «هوش مصنوعی» روی ابزارکی که عامل ساخته است، همیشه معنای واقعی خود را دارد.

## ابزارک‌های سفارشی

عامل می‌تواند با `workspace_widget_scaffold` یک ابزارک واقعی HTML ایجاد کند (یا شما می‌توانید با `openclaw workspaces widget-scaffold <name>` این کار را انجام دهید). کدی که عامل می‌نویسد، خصمانه تلقی می‌شود:

- ابزارک ایجادشده با داربست با وضعیت **در انتظار** وارد رجیستری می‌شود. تا زمانی که اپراتور آن را تأیید نکند، هیچ iframeای ایجاد نمی‌شود و مسیر دارایی برای فایل‌های آن پاسخ ۴۰۴ می‌دهد.
- تأیید، تصمیمی جدا از ویرایش چیدمان است: `workspaces.widget.approve` به دامنهٔ `operator.approvals` نیاز دارد؛ همان دامنه‌ای که از تأییدهای اجرای دستور محافظت می‌کند.
- ابزارک تأییدشده در یک `<iframe sandbox="allow-scripts">` نمایش داده می‌شود — و هرگز از `allow-same-origin` استفاده نمی‌کند — بنابراین مبدأ آن مبهم است و نمی‌تواند به DOM، فضای ذخیره‌سازی یا کوکی‌های والد دسترسی پیدا کند.
- دارایی‌های آن با `connect-src 'none'` ارائه می‌شوند که ارتباط شبکه‌ای اسکریپت‌ها، مانند `fetch`، XHR و WebSocketها، را مسدود می‌کند. ابزارک هیچ اعتبارنامه‌ای در اختیار ندارد و هرگز با Gateway ارتباط برقرار نمی‌کند.
- داده فقط از طریق یک پل نسخه‌بندی‌شدهٔ `postMessage` به آن می‌رسد. کد سفارشی می‌تواند اتصال‌های `static` اعلام‌شده را دریافت کند؛ این اتصال‌ها همان مقادیر فضای کاری هستند که از قبل به‌دست عامل یا اپراتور ایجاد شده‌اند. اتصال‌های RPC و فایل در ابزارک‌های داخلی مورداعتماد باقی می‌مانند: مرورگرها به فرزندِ درون جعبهٔ شنی اجازه می‌دهند قاب خودش را پیمایش کند؛ بنابراین داده‌های دارای امتیاز هرگز به HTML ایجادشده به‌دست عامل ارسال نمی‌شوند.

ارسال یک پرامپت از ابزارک به گفت‌وگو، علاوه بر این، به یک قابلیت در مانیفست، تأیید جداگانه برای هر فراخوانی با نقل دقیق متن و رعایت محدودیت نرخ نیاز دارد.

## CLI

```sh
openclaw workspaces tabs list
openclaw workspaces tabs create --title Financials
openclaw workspaces widget-scaffold revenue-chart --title "Revenue Chart"
openclaw workspaces widget-approve revenue-chart
```

`widget-approve` به دستگاهی نیاز دارد که با دامنهٔ `operator.approvals` جفت شده باشد؛ تأیید از رابط کنترل به آن نیاز ندارد، زیرا مرورگر از قبل این دامنه را در اختیار دارد.

## ذخیره‌سازی

سند فضای کاری، رجیستری ابزارک‌های سفارشی و حلقهٔ واگرد ۲۰ ورودی در `<stateDir>/workspaces/workspaces.sqlite` قرار دارند. دارایی‌های ابزارک‌هایی که عامل ایجاد می‌کند، روی دیسک و در مسیر `<stateDir>/workspaces/widgets/<name>/` باقی می‌مانند و داده‌های اتصال فایل نیز در `<stateDir>/workspaces/data/` نگه‌داری می‌شوند، زیرا عامل آن‌ها را با ابزارهای عادی فایل ایجاد می‌کند و مسیر ابزارک بایت‌های آن‌ها را ارائه می‌دهد.
