Web interfaces
فضاهای کاری
زبانهٔ فضاهای کاری در رابط کنترل محیطی است که شما و عاملهایتان با همکاری یکدیگر آن را سامان میدهید. زبانهها، ابزارکها، موقعیت آنها روی یک شبکهٔ ۱۲ ستونی و اتصالهای دادهٔ آنها همگی در یک سند قرار دارند. هر چیزی که بتواند آن سند را ویرایش کند، میتواند فضای کاری را بسازد: شما، CLI با دستور openclaw workspaces، یا عاملی که ابزارهای workspace_* را فراخوانی میکند.
هر عملیات نوشتن از همان مسیر اعتبارسنجیشده عبور میکند؛ بنابراین چیدمان ایجادشده بهدست انسان و چیدمان ایجادشده بهدست عامل نمیتوانند از یکدیگر واگرا شوند. هر عملیات نوشتن پذیرفتهشده، نسخه را افزایش میدهد و plugin.workspaces.changed را پخش میکند؛ در نتیجه ویرایش عامل بدون نیاز به بارگیری مجدد، در مرورگری که از قبل باز است نمایش داده میشود.
فعالسازی فضاهای کاری
Plugin همراهِ فضاهای کاری بهطور پیشفرض غیرفعال است. در رابط کنترل، افزونهها را باز کنید، فضاهای کاری را پیدا کنید و فعالسازی را انتخاب کنید. همچنین میتوانید آن را از CLI فعال کنید:
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
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 جفت شده باشد؛ تأیید از رابط کنترل به آن نیاز ندارد، زیرا مرورگر از قبل این دامنه را در اختیار دارد.
ذخیرهسازی
سند فضای کاری، رجیستری ابزارکهای سفارشی و حلقهٔ واگرد ۲۰ ورودی در <stateDir>/workspaces/workspaces.sqlite قرار دارند. داراییهای ابزارکهایی که عامل ایجاد میکند، روی دیسک و در مسیر <stateDir>/workspaces/widgets/<name>/ باقی میمانند و دادههای اتصال فایل نیز در <stateDir>/workspaces/data/ نگهداری میشوند، زیرا عامل آنها را با ابزارهای عادی فایل ایجاد میکند و مسیر ابزارک بایتهای آنها را ارائه میدهد.