Web interfaces
رابط کاربری کنترل
رابط کاربری کنترل، یک برنامه تکصفحهای کوچک مبتنی بر Vite + Lit است که توسط Gateway ارائه میشود:
- پیشفرض:
http://<host>:18789/ - پیشوند اختیاری:
gateway.controlUi.basePathرا تنظیم کنید (برای مثال/openclaw)
این برنامه در همان پورت، مستقیماً با WebSocket مربوط به Gateway ارتباط برقرار میکند.
هنگام مشاهده یک نشست در حال اجرا، Gateway میتواند با استفاده از مدل کاربردی آن عامل، خلاصه وضعیت فشردهای تولید کند. گپ آن را بهصورت نشانگر وضعیت تکخطی نمایش میدهد که به کارتی شامل ارزیابی، پیشرفت برنامه، Pull requestها و زمان سپریشده گسترش مییابد. وقتی اجرا گیر کند یا به ورودی نیاز داشته باشد، کارت میتواند یکبار گسترش یابد؛ گپ کناری /btw بر کارت گسترشیافته اولویت دارد.
کارت گسترشیافته همچنین پرسشهای کوتاه درباره اجرا را میپذیرد. پاسخها فقط از خلاصه فعلی ناظر و یادداشتهای پاکسازیشده و محدود استفاده میکنند، برای همان نشست در مرورگر باقی میمانند و هرگز وارد اجرای عامل اصلی نمیشوند یا آن را مختل نمیکنند. اگر مشاهدات حاوی پاسخ نباشند، ناظر اعلام میکند که نمیتواند از آن مطلع باشد.
پس از رسیدن نخستین خلاصه، بهجای فعالیت زنده اکتشافی، زیرعنوان نوار کناری آن اجرا را در اختیار میگیرد. خلاصه نهایی موفقیت یا شکست تا زمانی که نشست خواندهنشده است قابل مشاهده میماند، سپس ردیف به زیرعنوان عادی کار خود بازمیگردد.
مشاهده نشست بهطور پیشفرض فعال است. در Settings > Appearance > Sidebar میتوانید آن را در کل Gateway غیرفعال کنید، مدل کوچک نهایی و منشأ آن را بررسی کنید، مسیریابی خودکار را انتخاب کنید، وظایف کاربردی را غیرفعال کنید یا یک agents.defaults.utilityModel صریح برگزینید. کنترلهای پیکربندی معادل عبارتاند از gateway.controlUi.sessionObserver: false و agents.defaults.utilityModel: "".
بازکردن سریع (محلی)
اگر Gateway روی همان رایانه اجرا میشود، http://127.0.0.1:18789/ (یا http://localhost:18789/) را باز کنید.
اگر صفحه بارگیری نشد، ابتدا Gateway را راهاندازی کنید: openclaw gateway.
احراز هویت هنگام دستدهی WebSocket از طریق موارد زیر ارائه میشود:
connect.params.auth.tokenconnect.params.auth.password- سرآیندهای هویت Tailscale Serve هنگام
gateway.auth.allowTailscale: true - سرآیندهای هویت پراکسی مورداعتماد هنگام
gateway.auth.mode: "trusted-proxy"
احراز هویت Gateway پیش از جفتسازی دستگاه انجام میشود. اتصال مستقیم loopback، احراز هویت با توکن یا گذرواژه را دور نمیزند. پنل تنظیمات داشبورد، توکن را برای نشست زبانه فعلی مرورگر و URL انتخابشده Gateway نگه میدارد؛ گذرواژهها ماندگار نمیشوند. پس از جفتسازی، مرورگر میتواند در اتصالهای بعدی از توکن ذخیرهشده مخصوص هر دستگاه استفاده کند.
راهاندازی اولیه معمولاً یک توکن Gateway را برای احراز هویت با راز مشترک پیکربندی میکند. اگر Gateway در حالت توکن و بدون توکن پیکربندیشده راهاندازی شود، در عوض یک توکن موقت زمان اجرا برای همان فرایند تولید میکند. توکن زمان اجرا در پیکربندی نوشته نمیشود، بنابراین openclaw config get gateway.auth.token نمیتواند آن را بازیابی کند و مرورگر loopback بدون آن توکن رد میشود. openclaw doctor --generate-gateway-token را اجرا کنید، Gateway را دوباره راهاندازی کنید و سپس توکن پیکربندیشده را در تنظیمات رابط کاربری کنترل جایگذاری کنید. وقتی gateway.auth.mode برابر "password" باشد، میتوان بهجای آن از احراز هویت با گذرواژه استفاده کرد.
جفتسازی دستگاه (نخستین اتصال)
پس از موفقیت احراز هویت Gateway، اتصال از مرورگر یا دستگاهی جدید معمولاً به تأیید یکباره جفتسازی نیاز دارد که بهصورت disconnected (1008): pairing required نمایش داده میشود.
فهرستکردن درخواستهای در انتظار
openclaw devices listتأیید با شناسه درخواست
openclaw devices approve <requestId>اگر مرورگر جفتسازی را با جزئیات احراز هویت تغییریافته (نقش/دامنهها/کلید عمومی) دوباره امتحان کند، درخواست قبلی در انتظار جایگزین میشود و یک requestId جدید ایجاد میشود؛ پیش از تأیید، openclaw devices list را دوباره اجرا کنید.
تغییر مرورگر راه دورِ ازپیشجفتشده از دسترسی خواندن به دسترسی نوشتن/مدیریت، بهعنوان ارتقای تأیید تلقی میشود، نه اتصال مجدد بیسروصدا: OpenClaw تأیید قدیمی را فعال نگه میدارد، اتصال مجدد با دسترسی گستردهتر را مسدود میکند و از شما میخواهد مجموعه دامنه جدید را صریحاً تأیید کنید. اتصال واجد شرایط و مستقیم loopback رابط کاربری کنترل میتواند پس از احراز هویت، ارتقا را بیسروصدا تأیید کند.
پس از تأیید، دستگاه به خاطر سپرده میشود و تا زمانی که با openclaw devices revoke --device <id> --role <role> دسترسی آن را لغو نکنید، نیازی به تأیید دوباره ندارد. برای چرخش توکن، لغو دسترسی و جریان تأیید نخستین اجرای Paperclip / openclaw_gateway به CLI دستگاهها مراجعه کنید.
جفتکردن دستگاه همراه
مدیری که از قبل جفت شده است میتواند بدون بازکردن ترمینال، کد QR اتصال iOS/Android را ایجاد کند:
بازکردن جفتسازی همراه
Devices را انتخاب کنید، سپس در کارت Devices روی Pair mobile device کلیک کنید.
اتصال تلفن
در برنامه همراه OpenClaw، Settings → Gateway را باز کنید و کد QR را اسکن کنید. بهجای آن میتوانید کد راهاندازی را کپی و جایگذاری کنید.
تأیید اتصال
برنامه رسمی iOS/Android بهطور خودکار متصل میشود. اگر Pending approval درخواستی را نمایش داد، پیش از تأیید، نقش و دامنههای آن را بررسی کنید.
ایجاد کد راهاندازی به operator.admin نیاز دارد؛ این دکمه برای نشستهای فاقد آن غیرفعال است. کد راهاندازی حاوی یک اعتبارنامه راهاندازی اولیه کوتاهعمر است، بنابراین تا زمانی که معتبرند، با کد QR و کد کپیشده مانند گذرواژه رفتار کنید. برای جفتسازی راه دور، Gateway باید به wss:// منتهی شود (برای مثال از طریق Tailscale Serve/Funnel)؛ ws:// ساده به loopback و نشانیهای LAN خصوصی محدود است. برای جزئیات کامل امنیت و مسیر جایگزین، به جفتسازی مراجعه کنید.
هویت شخصی (محلی مرورگر)
رابط کاربری کنترل از هویت شخصی مخصوص هر مرورگر (نام نمایشی و آواتار) پشتیبانی میکند که برای مشخصشدن فرستنده در نشستهای مشترک، به پیامهای خروجی پیوست میشود. این هویت در فضای ذخیرهسازی مرورگر و محدود به نمایه فعلی مرورگر نگهداری میشود، با دستگاههای دیگر همگام نمیشود و جز فراداده عادی نویسندگی رونوشت در پیامهایی که میفرستید، در سمت سرور ماندگار نمیشود. پاککردن دادههای سایت یا تغییر مرورگر، آن را به حالت خالی بازنشانی میکند.
بازنویسی آواتار دستیار از همان الگوی محلی مرورگر پیروی میکند: بازنویسیهای بارگذاریشده، هویت نهاییشده توسط Gateway را بهصورت محلی میپوشانند و هرگز از طریق config.patch رفتوبرگشت نمیکنند. فیلد پیکربندی مشترک ui.assistant.avatar همچنان برای کلاینتهای غیررابط کاربری که فیلد را مستقیماً مینویسند در دسترس است.
نقطه پایانی پیکربندی زمان اجرا
رابط کاربری کنترل تنظیمات زمان اجرای خود را از /control-ui-config.json دریافت میکند که نسبت به مسیر پایه رابط کاربری کنترل Gateway تعیین میشود (برای مثال /__openclaw__/control-ui-config.json زیر مسیر پایه /__openclaw__/). این نقطه پایانی با همان احراز هویت Gateway که برای سایر بخشهای سطح HTTP به کار میرود محافظت میشود: مرورگرهای احراز هویتنشده نمیتوانند آن را دریافت کنند و دریافت موفق به توکن/گذرواژه معتبر Gateway، هویت Tailscale Serve یا هویت پراکسی مورداعتماد نیاز دارد.
وضعیت میزبان Gateway
برای مشاهده کارت Gateway Host شامل دستگاه Gateway، نشانی LAN، سیستمعامل، زمان اجرا، زمان فعالیت، بار CPU، حافظه و فضای دیسک جلد وضعیت، Settings → General را باز کنید. این کارت هنگام قابلمشاهدهبودن، هر 10 ثانیه از طریق RPC مربوط به system.info در Gateway تازهسازی میشود که به دامنه operator.read نیاز دارد. Gatewayهای قدیمیتر و اتصالهای فاقد این دامنه، کارت را نمایش نمیدهند.
پشتیبانی از زبانها
رابط کاربری کنترل در نخستین بارگیری، بر اساس منطقه زبانی مرورگر بومیسازی میشود. برای تغییر آن در آینده، Settings -> General -> Language را باز کنید (انتخابگر در صفحه General قرار دارد، نه در بخش Appearance).
- زبانهای پشتیبانیشده:
en،ar،de،es،fa،fr،hi،id،it،ja-JP،ko،nl،pl،pt-BR،ru،th،tr،uk،vi،zh-CN،zh-TW - ترجمههای غیرانگلیسی بهصورت تنبل در مرورگر بارگیری میشوند.
- زبان انتخابشده در فضای ذخیرهسازی مرورگر ذخیره میشود و در بازدیدهای آینده دوباره استفاده میشود.
- کلیدهای ترجمه موجودنباشند، به انگلیسی بازمیگردند.
ترجمههای مستندات برای همان مجموعه زبانهای غیرانگلیسی تولید میشوند، اما انتخابگر زبان داخلی Mintlify در سایت مستندات فقط کدهای زبانی را فهرست میکند که Mintlify میپذیرد. مستندات تایلندی (th) و فارسی (fa) همچنان در مخزن انتشار تولید میشوند؛ ممکن است تا زمانی که Mintlify از آن کدها پشتیبانی نکند، در آن انتخابگر ظاهر نشوند.
پوستههای ظاهری
پنل Appearance پوستههای داخلی Claw، Knot و Dash را دارد (Claw پیشفرض است)، بهعلاوه یک جایگاه واردکردن tweakcn که بهصورت محلی در مرورگر نگهداری میشود. برای واردکردن یک پوسته، ویرایشگر tweakcn را باز کنید، پوستهای را انتخاب یا ایجاد کنید، روی Share کلیک کنید و پیوند کپیشده را در Appearance جایگذاری کنید. واردکننده همچنین URLهای رجیستری https://tweakcn.com/r/themes/<id>، URLهای ویرایشگر مانند https://tweakcn.com/editor/theme?theme=amethyst-haze، مسیرهای نسبی /themes/<id>، شناسههای خام پوسته و نام پوستههای پیشفرض مانند amethyst-haze را میپذیرد.
پوستههای واردشده فقط در نمایه فعلی مرورگر ذخیره میشوند؛ در پیکربندی Gateway نوشته نمیشوند و میان دستگاهها همگام نمیشوند. جایگزینکردن پوسته واردشده، همان یک جایگاه محلی را بهروزرسانی میکند؛ اگر پوسته واردشده فعال باشد، پاککردن آن پوسته را به Claw بازمیگرداند.
Appearance همچنین تنظیم اندازه متن دارد. این تنظیم روی متن گپ، متن کادر نوشتن، کارتهای ابزار و نوارهای کناری گپ اعمال میشود و اندازه ورودیهای متنی را دستکم 16px نگه میدارد تا Safari در دستگاه همراه هنگام فوکوس بهطور خودکار بزرگنمایی نکند.
ترجیحات پوسته، حالت پوسته، اندازه متن، زبان و نمایش گفتوگو از طریق پیکربندی Gateway (ui.prefs) همگام میشوند؛ بنابراین در دستگاههای مختلف همراه شما هستند و عاملها میتوانند آنها را از طریق درگاه تأیید تغییر دهند — کلاینتهای متصل تغییرات را با اعلان config.changed از Gateway بهصورت زنده اعمال میکنند. هر مرورگر برای راهاندازی فوری یک نسخه محلی نگه میدارد؛ کلاینتهایی که نمیتوانند پیکربندی را بنویسند (دامنه دسترسی مشاهدهگر، حالت آفلاین)، تغییرات را فقط روی همان دستگاه نگه میدارند. مرجع پیکربندی را ببینید.
نگهداری سیستم OpenClaw
برای گفتوگو با عامل راهاندازی و تعمیر سیستم، تنظیمات ← پرسش از OpenClaw را باز کنید. خارج از فرایند راهاندازی اولیه، این صفحه در هر بازدید حداکثر میتواند یک تراشه رویداد قابل ردکردن نمایش دهد. برای ترافیک عادی Gateway ساکت میماند و فقط به نماهای فوری سلامت واکنش نشان میدهد که بارگذار مجدد پیکربندی غیرفعال، قطع یا افت کیفیت یک کانال پیکربندیشده، ناموفقبودن کاوش کانال یا دردسترسنبودن اعتبارنامههای کانال را گزارش کنند. رویداد جدیدتر تنها زمانی جایگزین تراشه در انتظار میشود که شدیدتر باشد؛ ردکردن یا استفاده از تراشه، اعلانهای رویداد را برای همان بازدید خاموش میکند. کلیک روی تراشه، پرسش تشخیصی آن را بهعنوان یک پیام واقعی openclaw.chat ارسال میکند تا رونوشت درخواست را ثبت کند و OpenClaw تشخیص را انجام دهد. در فرایند راهاندازی اولیه هرگز این تراشههای رویداد نمایش داده نمیشوند.
مدیریت Pluginها
در نوار کناری Pluginها را باز کنید، یا نسبت به مسیر پایه پیکربندیشده Control UI از /settings/plugins استفاده کنید تا بدون خروج از Control UI، Pluginها را مرور و مدیریت کنید. برای مثال، مسیر پایه /openclaw از /openclaw/settings/plugins استفاده میکند. این صفحه همیشه دردسترس است، حتی زمانی که همه Pluginهای اختیاری غیرفعال باشند.
Pluginها مرکزی با چهار زبانه است: نصبشده و کشف کد Plugin را در /settings/plugins مدیریت میکنند، Skills میزبان مدیر مهارت مختص هر عامل در /skills است و کارگاه میزبان بازبینی پیشنهادهای کارگاه Skill در /skills/workshop است. هر زبانه URL مخصوص خود را حفظ میکند و نوار کناری برای همه آنها یک ورودی واحد Pluginها را نمایش میدهد.
زبانه نصبشده موجودی کامل محلی را بهتفکیک دسته، همراه با تعدادهای کلی، نمایش میدهد. هر ردیف نمای جزئیات را باز میکند؛ منوی سرریز (…) آن، Plugin را فعال یا غیرفعال میکند و برای Pluginهای نصبشده از منابع خارجی گزینه حذف را ارائه میدهد. همچنین سرورهای MCP پیکربندیشده را فهرست میکند و افزودن، غیرفعالکردن و حذف درجا را پشتیبانی میکند. همین کنترلهای سرور در تنظیمات ← MCP نیز موجودند. زبانه کشف فروشگاه است: Pluginهای ویژه همراه OpenClaw، Pluginهای خارجی رسمی و رابطهای MCP تککلیکی برای سرویسهای محبوب. تایپکردن در کادر جستوجو، ClawHub را بهصورت درجا جستوجو میکند و بخشی با عنوان از ClawHub، شامل تعداد دانلودها و نشانهای تأیید منبع، میافزاید. پیوندهای عمیق میتوانند با /settings/plugins?tab=discover مستقیماً فروشگاه را هدف بگیرند.
زبانه Skills گزارش وضعیت مهارت، کلیدهای فعال/غیرفعال، ورودی کلید API و جستوجوی درجای Skill در ClawHub را با دامنه عامل انتخابشده نگه میدارد. زبانه کارگاه تابلوی کارگاه Skill و جریان بازبینی امروز را برای پیشنهادهای Skill نگه میدارد. یافتن ایدههای Skill بازهای محدود از نشستهای مهم را از جدیدترین به قدیمیترین بازبینی میکند و هر نتیجهای را بهعنوان پیشنهاد در انتظار باقی میگذارد. پنل پوشش تجمعی را نشان میدهد؛ اسکن کارهای قدیمیتر از مکاننمای پایدارشده ادامه میدهد و پس از پایان تاریخچه قدیمیتر به اسکن کارهای جدید تبدیل میشود. بازبینی دستی تاریخچه در زمان غیرفعالبودن خودآموزی مستقل کار میکند و از مدل پیکربندیشده عامل انتخابشده استفاده میکند.
Pluginهای همراه از قبل روی Gateway موجودند و بهجای نصب، فعالکردن یا غیرفعالکردن را نمایش میدهند. برای مثال، Workboard همراه OpenClaw است اما بهطور پیشفرض غیرفعال است، بنابراین کنش آن فعالکردن است. Pluginهای بستهبندیشده را نمیتوان حذف کرد و فقط میتوان آنها را غیرفعال کرد.
خواندن کاتالوگ و جستوجوی ClawHub به operator.read نیاز دارند. نصب، فعالکردن، غیرفعالکردن یا حذف یک Plugin و تغییر سرورهای MCP به operator.admin نیاز دارند؛ این کنشها برای اپراتورهای فقطخواندنی غیرفعال میمانند.
نصبهای ClawHub از طریق Gateway اجرا میشوند و همان بررسیهای اعتماد، یکپارچگی و سیاست نصب Plugin را مانند دیگر نصبهای واسطهگریشده توسط Gateway حفظ میکنند. نصب یا حذف کد Plugin به راهاندازی مجدد Gateway نیاز دارد. فعال یا غیرفعالکردن یک Plugin نصبشده، هنگامی که Plugin و محیط اجرای فعلی Gateway از آن پشتیبانی کنند، میتواند بدون راهاندازی مجدد اعمال شود؛ در غیر این صورت UI گزارش میدهد که راهاندازی مجدد لازم است. رابطهای MCP مبتنی بر OAuth پس از افزودهشدن، به یکبار اجرای openclaw mcp login <name> از CLI نیاز دارند.
این صفحه عمداً بر موجودی، کشف، نصب، فعالسازی و حذف تمرکز دارد. برای منابع دلخواه npm، git یا مسیر محلی، بهروزرسانیها و پیکربندی پیشرفته Plugin از openclaw plugins استفاده کنید.
برنامهها و افزونهها
از منوی بیشتر در نوار کناری، پالت فرمان یا منوی عامل نوار کناری (دریافت برنامهها) گزینه برنامهها را باز کنید، یا نسبت به مسیر پایه پیکربندیشده Control UI از /apps استفاده کنید. این صفحه پیوندهای نصب همه سطوح همراه OpenClaw را گردآوری میکند: برنامههای iOS و Android، همراههای Apple Watch و Wear OS که با آنها بستهبندی شدهاند، برنامههای دسکتاپ macOS، Windows و Linux، افزونه Chrome، مرکز درونبرنامهای Pluginها با ClawHub، و انجمن Discord و مستندات.
پیمایش نوار کناری
نوار کناری همهچیز را پیرامون عامل سازماندهی میکند. ردیف هویت در بالا عامل فعال است؛ زیر آن، بخش صفحهها با خانه آغاز میشود — نشست اصلی جاری عامل که وضعیت خواندهنشده یا درحالاجرای آن با نشان مشخص شده است — و سپس مقصدهای سنجاقشده (خودکارسازیها و Pluginها بهطور پیشفرض) قرار دارند. کنترل سفارشیسازی در سربرگ صفحهها منویی را با همه مقصدهای دیگر، از جمله مصرف و زبانههای ارائهشده توسط Plugin، بههمراه ویرایش موارد سنجاقشده باز میکند؛ راستکلیک روی ناحیه پیمایش، ویرایشگر سنجاق را مستقیماً باز میکند. فهرست نشستهای زیر آن به ناحیههایی تقسیم میشود: رشتهها برای نشستهای گفتوگوی عامل (نشست اصلی پشت خانه باقی میماند؛ نشستهایی که ایجاد کرده است در اینجا بهصورت رشتههای سطحبالا ظاهر میشوند و رشتههای نامگذاریشده بدون پیشوند نوع نمایش داده میشوند)، گروهها برای گفتوگوهای گروهی و اتاقها، و کدنویسی برای نشستهای متصل به یک worktree مدیریتشده یا exec node (ردیفها یک خط repo ⎇ branch بههمراه میزبان Node را نشان میدهند)، نشستهای محیط آزمون مبتنی بر ACP و کاتالوگهای Codex/Claude CLI. کدنویسی در اولین اجرا بهصورت جمعشده آغاز میشود و انتخاب شما را به خاطر میسپارد؛ سربرگ جمعشده آن تعداد واقعی را حفظ میکند و هنگام کار نشستهای درون آن، نشانگر اجرا را نمایش میدهد. گروههای سفارشی (category نشست) و ردیفهای سنجاقشده بالای رشتهها قرار میگیرند و اختصاصدادن نشست به یک گروه سفارشی همیشه بر دستهبندی خودکار ناحیه اولویت دارد. سربرگ رشتهها کنترل مرتبسازی (ایجادشده یا آخرین بهروزرسانی، گروهبندی براساس، و پالایه پایدار وضعیت برای فعال، بایگانیشده یا همه) و علامت + را دارد که صفحه نشست جدید را باز میکند. ردیفهای بایگانیشده بهصورت درجا باقی میمانند، کمرنگ و با نماد بایگانی؛ در وضعیت خواندهنشده یا نیازمند توجه سهمی ندارند و خارج از ارتقای تبار باقی میمانند. بازکردن یک نشست، برجستگی انتخاب را بدون تغییر ترتیب ردیفها جابهجا میکند. نشستهای والد با اجرای فرزند اخیر، کنترل بازشدن و تعداد فرزندان را نشان میدهند؛ آن را باز کنید تا نشستهای فرزند تودرتو، وضعیت زنده یا نهایی و محیط اجرا را بدون خروج از نوار کناری بررسی کنید. انتخاب یک فرزند، گفتوگوی آن را باز میکند و مسیر نیاکانش را بهطور خودکار نمایان میسازد. ردیفهای فرزند خارج از گروهبندی ریشه، سنجاقکردن، کشیدن، انتخاب چندگانه و صفحهبندی باقی میمانند؛ ناحیههای جمعشده از ظرفیت صفحه قابلمشاهده مصرف نمیکنند. نشستهایی که از آخرین بار خواندهشدن فعالیت جدیدی داشتهاند، نقطه خواندهنشده نشان میدهند و بازکردن آنها، وضعیتشان را خواندهشده میکند. یک عامل همچنین میتواند یک خط وضعیت کوتاه و منقضیشونده منتشر کند و در صورت تمایل با یک نماد کهربایی گزینششده درخواست توجه کند؛ این اعلامیه با بازکردن نشست، ارسال پیام بعدی، پاککردن صریح آن یا پایان TTL پاک میشود. وضعیتهای چرخه عمر کارگر ابری از نشان کره زمین استفاده میکنند؛ نشستهای محلی و بازپسگرفتهشده نشان جایگذاری ندارند، زیرا اجرای محلی پیشفرض است. هر ردیف نشست ریشه یک منوی زمینهای (دکمه سهنقطه یا راستکلیک) با گزینههای سنجاقکردن/برداشتن سنجاق، علامتگذاری بهعنوان خواندهنشده/خواندهشده، تغییر نام، Fork، انتقال به گروه (شامل گروه جدید و حذف از گروه)، بایگانی یا خارجکردن از بایگانی و حذف دارد؛ چیدمانهای لمسی کنترل مستقیم سنجاق و منو را قابلمشاهده نگه میدارند. کلیک با Cmd/Ctrl ردیفهای ریشه را به انتخاب چندگانه اضافه یا از آن حذف میکند و کلیک با Shift انتخاب را در ترتیب قابلمشاهده گسترش میدهد؛ سپس بازکردن منو روی یک ردیف انتخابشده، کنشهای دستهای (علامتگذاری N مورد بهعنوان خواندهنشده/خواندهشده، انتقال N مورد به گروه، بایگانی N مورد، حذف N مورد) را ارائه میدهد که بر همه نشستهای انتخابشده اعمال میشوند و حذف دستهای فقط یک تأیید میگیرد. یک نشست ریشه را روی سنجاقشده بکشید تا سنجاق شود، یا روی یک گروه سفارشی بکشید تا منتقل شود. سربرگ گروههای سفارشی را میتوان جمع، باز یا برای تغییر ترتیبشان جابهجا کرد؛ نام گروهها و ترتیب آنها در Gateway (sessions.groups.*) نگهداری میشود تا در مرورگرهای مختلف همراه شما باشد، درحالیکه وضعیت جمعشدگی در نمایه مرورگر باقی میماند. سربرگ گروهها همچنین منویی (دکمه سهنقطه یا راستکلیک) با گزینههای تغییر نام گروه، گروه جدید و حذف گروه دارد؛ تغییر نام یا حذف یک گروه، همه نشستهای عضو را در سمت سرور، از جمله موارد بایگانیشده، بهروزرسانی میکند و حذف گروه نشستهای آن را حفظ کرده و به رشتهها بازمیگرداند.
صفحه نشست جدید
علامت + در سربرگ فهرست نشست نوار کناری، یک پیشنویس تمامصفحه در /new باز میکند: تا زمانی که اولین پیام را ارسال نکنید، چیزی ایجاد نمیشود. انتخابگر یکپارچه مکان پوشه کاری و، برای اپراتورهای مدیر، مقصد اجرا را انتخاب میکند: Gateway · محلی، یک Node جفتشده که system.run را ارائه میدهد، یا یک نمایه ابری دردسترس. پوشه بهطور پیشفرض فضای کاری عامل است؛ مسیر مطلق دیگری در Gateway به operator.admin نیاز دارد، اما میتواند بدون checkout بودن Git مستقیماً اجرا شود. وقتی پوشه انتخابشده Gateway یک checkout از Git باشد، همان انتخابگر جداسازی اختیاری Worktree را با انتخابگر شاخه پایه مبتنی بر worktrees.branches (بدون fetch) و نام اختیاری worktree ارائه میدهد (شاخه به openclaw/<name> تبدیل میشود). کارگرهای ابری به آن مسیر worktree مدیریتشده نیاز دارند؛ Nodeهای جفتشده هرگز آن را ارائه نمیدهند. پابرگ کادر نوشتن، مدل و سطح استدلال نشست جدید را انتخاب میکند. کلید ناشناس آن یک رشته فقطوب ایجاد میکند که ورودی نشست، رونوشت و وضعیت Compaction آن تا راهاندازی مجدد Gateway در حافظه باقی میمانند؛ OpenClaw همچنین تخلیه خودکار حافظه آن را نادیده میگیرد. عامل ابزارهای عادی خود را حفظ میکند، بنابراین درخواست صریح ذخیره یا نوشتن فایل از طریق ابزار همچنان میتواند دادهها را پایدار کند. ارائهدهنده مدل همچنان پیامها را پردازش میکند و فراداده ممیزی بدون محتوا نیز همچنان ثبت میشود. شروعهای ابری، انتخاب مدل و سطح استدلال خود را پیش از اعزام نشست به کارگر آن پایدار میکنند.
در Gatewayهای چندکاربره، فقط اتصالهای دارای دامنه مدیر میتوانند رشتههای ناشناس را ایجاد یا مشاهده کنند و نشستهای دیگر نمیتوانند از طریق ابزارهای نشست عامل یا جستوجوی رونوشت به آنها دسترسی پیدا کنند. حالت ناشناس در برابر ذخیرهسازی و دیگر کاربران واسطهگریشده توسط Gateway محافظت میکند، نه در برابر مالک Gateway یا اپراتور فرایند که همیشه میتواند نشستهای زنده را مشاهده کند.
مرور پوشهها مرورگر پوشه درجای انتخابگر مکان را باز میکند که مبتنی بر روش ویژه مدیر fs.listDir است و دامنه آن به Gateway یا Node انتخابشده محدود میشود. Gateway و Nodeهایی که قابلیت مرور دارند، سامانه فایل خود را فهرست میکنند؛ یک Node دارای قابلیت اجرا بدون fs.listDir همچنان مسیر مطلق تایپشده را میپذیرد. مکانهای اخیر میتوانند یک پوشه و Node مالک آن را با هم بازیابی کنند، بدون آنکه مسیرها را بین میزبانها منتقل کنند. ارسال فرم، sessions.create را با اولین پیام فراخوانی میکند تا اجرا در همان رفتوبرگشت آغاز شود و UI به گفتوگوی نشست جدید برود. اگر Gateway نشست را ایجاد کند اما اولین ارسال را رد کند، گفتوگو متن درخواست و خطا را در بارگذاریهای مجدد حفظ میکند؛ تلاش دوباره آن را از طریق نشست ازپیشایجادشده میفرستد، بهجای آنکه نشست دیگری ایجاد کند.
درون تنظیمات، نوار کناری اختصاصی شامل پرسش از OpenClaw است و با فیلد جستوجوی تنظیمات برای یافتن سریع بخشهای تنظیمات آغاز میشود.
در وب دسکتاپ، یک خوشهٔ کنترل ثابت در گوشهٔ بالا-چپ ناحیهٔ محتوا — همتای وبی نوار عنوان macOS — کلید جمعکردن نوار کناری (⌘B) و دکمهٔ جستوجوی پالت فرمان (⌘K) را در خود جای میدهد. کلیک روی ردیف هویت عامل در بالای نوار کناری، منوی عامل را باز میکند؛ خانه نشست اصلی را باز میکند. وقتی چیزی نیازمند اقدام باشد — کارهای Cron ناموفق یا عقبافتاده، احراز هویت مدل در آستانهٔ انقضا یا منقضیشده — تراشههای توجه فشردهای بالای پاورقی نوار کناری ظاهر میشوند که با کلیک، صفحهٔ مالک آن مورد را باز میکنند. ردیف هویت، آواتار عامل (تصویر هویت یا ایموجی)، نام، نقطهٔ اتصال و زیرعنوان زنده را نشان میدهد. منوی مختص عامل آن شامل تعویضکنندهٔ درونخطی عامل (در پیکربندیهای چندعاملی)، عامل جدید، «این عامل چه کارهایی میتواند انجام دهد؟» و تنظیمات عامل است. فهرستهای بیش از ده عامل یک فیلد فیلتر دارند و ابتدا عاملهای سنجاقشده را نمایش میدهند؛ عاملها را از صفحهٔ تنظیمات عاملها سنجاق یا از سنجاق خارج کنید؛ مجموعهٔ سنجاقشده در نمایهٔ مرورگر ذخیره میشود. انتخاب یک عامل، محدودهٔ گفتگو بههمراه مصرف، خودکارسازیها، وظایف، تابلوی کار و نشستها را به همان عامل محدود میکند. هر صفحهٔ محدودشده یک کنترل عامل با گزینهٔ همهٔ عاملها برای خروج از این محدوده ارائه میدهد؛ این گزینه محدودهٔ صفحهٔ مشترک را گسترش میدهد، بدون آنکه عامل مشخص گفتگو را تغییر دهد، و پیوندهای مستقیم نشست همچنان مقصد خود را باز میکنند. صفحهٔ تنظیمات عاملها انتخاب مستقل ?agent= خود را حفظ میکند و از محدودهٔ صفحهٔ مشترک پیروی نمیکند. پاورقی یک کارت هویت تمامعرض است که در حالت آفلاین نیز در دسترس میماند و زیر آخرین نام شناختهشدهٔ حساب، در حال اتصال مجدد… را نشان میدهد. این کارت منوی برنامه/حساب را باز میکند که پس از سرآیند هویت نمایه، شامل تنظیمات، مصرف، جفتسازی موبایل، دریافت برنامهها، راهنما (راهنما، Discord، مستندات و گزارش تغییرات)، اقدام تلاش مجدد در حالت آفلاین در صورت نیاز، تراشهٔ نسخه/ساخت و کلید حالت رنگ است. تراشهٔ ساخت صفحهٔ درباره را باز میکند. وقتی Gateway از یک نسخهٔ دریافتشدهٔ کد منبع روی شاخهای غیر از main اجرا شود، پاورقی نام آن شاخه را نیز با رنگ قرمز نشان میدهد تا غیرانتشاریبودن Gateway در یک نگاه مشخص باشد (نصبهای انتشار هرگز آن را نشان نمیدهند). در پلتفرمهای Apple، Shift-Command-Comma و در سایر پلتفرمها Ctrl-Shift-Comma، تنظیمات را بدون بازنویسی میانبر سادهٔ Command-Comma مرورگر باز میکند. جمعکردن نوار کناری (با ⌘B یا کلید خوشه) آن را کاملاً پنهان میکند تا فضای کاری تمامعرض شود؛ هنگام جمعبودن، خوشهٔ بالا-چپ کلید بازکردن و جستوجو را نگه میدارد و یک دکمهٔ رشتهٔ جدید نیز به آن افزوده میشود — مشابه چیزی که برنامهٔ macOS بهصورت بومی در نوار عنوان خود میزبانی میکند. نوار کناری تنها قاب پیمایش در دسکتاپ است و نوار بالایی وجود ندارد. در نماهای باریک، نوار کناری با یک کشوی روکششونده پشت ردیف سرآیند فشردهای جایگزین میشود که کلید کشو، نشان تجاری و جستوجوی پالت فرمان را در خود دارد؛ در تلفنها، گفتگو آن ردیف پیمایش را در نوار عنوان خود ادغام میکند و کنترلهای منو و جستوجو کنار عنوان نشست قرار میگیرند. در برنامهٔ macOS، ردیف سرآیند جداگانه فضای آزاد نوار عنوان را در یک نوار فشرده کنار کنترلهای پنجره ادغام میکند. پیمایش از تاریخچهٔ معمول مرورگر استفاده میکند، بنابراین دکمههای عقب/جلو مرورگر در آن جابهجا میشوند؛ برنامهٔ macOS یک کلید بومی نوار کناری در کنار کنترلهای پنجره و حرکتهای کشیدنی ترکپد نیز اضافه میکند؛ وقتی نوار کناری باز است، دکمههای عقب/جلو در لبهٔ راست آن قرار دارند و وقتی جمع است، دکمههای جستوجوی بومی (پالت فرمان) و نشست جدید نمایش داده میشوند.
تأییدهای در انتظار نیز یک تراشهٔ توجه بالای پاورقی نوار کناری اضافه میکنند؛ برای بازکردن صفحهٔ تأییدهای مالک آن، تراشه را انتخاب کنید.
کارهایی که میتواند انجام دهد (امروز)
گفتگو و مکالمه
- از طریق Gateway WS با مدل گفتگو کنید (
chat.history،chat.send،chat.abort،chat.inject). در نشستهای بایگانیشده، نوشتارگر غیرفعال میماند و پیش از آنکه گفتگو بتواند ادامه یابد، نواری با اقدام خروج از بایگانی نمایش داده میشود. - بازخوانی تاریخچهٔ گفتگو، پنجرهٔ اخیر و محدودی را با سقف متن برای هر پیام درخواست میکند تا نشستهای بزرگ، مرورگر را مجبور نکنند پیش از قابلاستفادهشدن گفتگو، کل بار رونوشت را رندر کند.
- قرارگرفتن نشانگر ماوس یا تمرکز صفحهکلید روی پیوند عمومی یک مسئله یا Pull request در GitHub، وضعیت، عنوان، نویسنده، فعالیت اخیر، نظرها و آمار تغییرات آن را نشان میدهد. Gateway متصل، فرادادهٔ عمومی را بدون تغییر مقصد پیوند دریافت و ذخیرهٔ موقت میکند؛ حتی وقتی رابط کاربری از یک Gateway راهدور استفاده میکند. Gateway پس از تأیید عمومیبودن مخزن، در صورت دسترسبودن از
GH_TOKENیاGITHUB_TOKENاستفاده میکند؛ در غیر این صورت، API ناشناس GitHub را با ذخیرهٔ موقت طولانیتر بهکار میگیرد. - از طریق نشستهای بیدرنگ مرورگر مکالمه کنید. OpenAI از WebRTC مستقیم استفاده میکند، Google Live از یک توکن مرورگر محدود و یکبارمصرف روی WebSocket بهره میبرد و Pluginهای صوتی بیدرنگِ مختص بکاند از انتقال رلهٔ Gateway استفاده میکنند. نشستهای مرورگر دارای قابلیت ویدئو میتوانند در تنظیمات یک دوربین محلی دستگاه را انتخاب کنند یا از پیشنمایش زنده بین دوربینها جابهجا شوند؛ مرورگر فریمهای JPEG را برای ارائهدهندهٔ بیدرنگ ثبت میکند، بدون آنکه ویدئوی دوربین را از طریق Gateway پخش جریانی کند. نشستهای تحت مالکیت کارخواه با
talk.client.createآغاز میشوند؛ نشستهای رلهٔ Gateway باtalk.session.createشروع میشوند. رله، اعتبارنامههای ارائهدهنده را روی Gateway نگه میدارد؛ همزمان مرورگر PCM میکروفون را از طریقtalk.session.appendAudioپخش جریانی میکند، فراخوانیهای ابزار ارائهدهندهٔopenclaw_agent_consultرا برای اعمال خطمشی Gateway و مدل بزرگتر پیکربندیشدهٔ OpenClaw از طریقtalk.client.toolCallهدایت میکند و هدایت صوتی اجرای فعال را از طریقtalk.client.steerیاtalk.session.steerمسیریابی میکند. - فراخوانیهای ابزار و کارتهای زندهٔ خروجی ابزار را در گفتگو پخش جریانی کنید (رویدادهای عامل). فعالیت ابزار بهصورت ردیفهای متناسب با نوع رندر میشود: فرمانهای پوسته، فرمان برجستهشده از نظر نحو را همراه با خروجی بهسبک پایانه نشان میدهند؛ فراخوانیهای ویرایش و نوشتن پشتیبانیشده، تفاوتهای درونخطی محدود، شمارهٔ خطوط در صورت دسترسبودن و آمار
+added -removedرا نمایش میدهند؛ و فراخوانیهای متوالی در خلاصهای مانند «13 فرمان اجرا شد، 6 فایل خوانده شد، 9 فایل ویرایش شد» جمع میشوند. هنگام اجرای زنده، نام جدیدترین فراخوانی در حال اجرا در سرآیند گروه نمایش داده میشود. برای بررسی آرگومانهای باقیمانده و خروجی خام، ردیف را باز کنید. - عنوانهای اختیاری مبتنی بر هوش مصنوعی برای هدف فراخوانیهای پیچیدهٔ ابزار (فرمانهای طولانی پوسته و ابزارهای Plugin با آرگومانهای فراوان)، با
gateway.controlUi.toolTitles: trueفعال میشوند (بهطور پیشفرض غیرفعال). عنوانها از متد دستهایchat.toolTitlesو از طریق مسیریابی استاندارد مدل کاربردی میآیند — یکutilityModelصریح (ارائهدهندهٔ انتخابشده توسط اپراتور، مشابه سایر وظایف کاربردی)، یا در غیر این صورت پیشفرض مدل کوچک اعلامشدهٔ ارائهدهندهٔ نشست — و بهازای هر عامل در سمت Gateway ذخیرهٔ موقت میشوند. وقتی این قابلیت اختیاری غیرفعال باشد یا هیچ مدل کمهزینهای قابلاستفاده نباشد، ردیفها برچسبهای قطعی خود را حفظ میکنند و هیچ فراخوانی مدلی انجام نمیشود. - وظایف پیگیری موقت پیشنهادی مدل را آغاز یا رد کنید؛ پیشنهادهای پذیرفتهشده، یک نشست تازهٔ درختکاری مدیریتشده را با درخواست پیشنهادی باز میکنند.
- زبانهٔ فعالیت شامل خلاصههای محلی مرورگر با اولویت حذف اطلاعات حساس از فعالیت زندهٔ ابزار است که از تحویل موجود
session.tool/ رویداد ابزار دریافت میشوند.
کانالها، نشستها، حافظه
- کانالها: وضعیت کانالهای داخلی و کانالهای Plugin همراه/خارجی، ورود با QR و پیکربندی هر کانال (
channels.status،web.login.*،config.patch). - بازخوانی کاوش کانال، تصویر لحظهای قبلی را تا پایان بررسیهای کند ارائهدهنده قابلمشاهده نگه میدارد و وقتی کاوش یا ممیزی از بودجهٔ رابط کاربری خود فراتر رود، تصویرهای لحظهای ناقص را برچسبگذاری میکند.
- رشتهها (یک صفحهٔ فضای کاری در
/sessionsکه زبانهٔ درختکاریها نیز کنار آن قرار دارد): بهطور پیشفرض نشستهای عامل پیکربندیشده را فهرست کنید، نشستهای پرکاربرد را سنجاق کنید، نامشان را تغییر دهید، نشستهای غیرفعال را بایگانی یا بازیابی کنید، در صورت وجود کلیدهای قدیمی نشست عامل پیکربندینشده از آنها صرفنظر کنید و بازنویسیهای مدل/تفکر/سریع/پرمطلب/ردیابی/استدلال را برای هر نشست اعمال کنید (sessions.list،sessions.patch). فیلتر سهحالتهٔ فعال / بایگانیشده / همه هم این صفحه و هم نوار کناری را کنترل میکند؛ «همه» ردیفهای بایگانیشده را کمرنگ و صریحاً برچسبگذاری میکند. نشستهای بایگانیشده رونوشتهای خود را حفظ میکنند، هرگز خودکار پاک نمیشوند و تا زمانی که صریحاً از بایگانی خارج یا حذف نشوند، کنار گذاشته میمانند. ردیفهای نشستهای فعال که از آخرین خواندن فعالیت داشتهاند، نقطهٔ خواندهنشده و اقدامهای علامتگذاری بهعنوان خواندهنشده/خواندهشده (sessions.patch { unread }) را نمایش میدهند؛ همچنین یک اقدام انشعاب دارند که رونوشت را به نشستی جدید منشعب میکند (sessions.create { parentSessionKey, fork: true }). کاشیهای نمای کلی بالای جدول، فهرست بارگذاریشده را خلاصه میکنند (تعداد نشستها، اجراهای زنده، نشستهای خواندهنشده، مجموع توکنها و در صورت دسترسبودن تعداد بایگانیشدهها)؛ هر ردیف یک نماد نوع همراه با نقطهٔ اجرای زنده دارد، وضعیت بهصورت یک نقطهٔ ساده همراه با برچسب رندر میشود و ستون توکنها، وقتی نشست اندازهٔ توکن و زمینه را گزارش کند، سنجهٔ مصرف پنجرهٔ زمینه را نشان میدهد. اقدامهای مدیریت ردیف در منوی مختص همان ردیف (دکمهٔ سهنقطه یا کلیک راست) قرار دارند و مشابه منوی نشست در نوار کناری هستند؛ کشوی ردیف نیز زمان اجرای عامل و مدت اجرا را در کنار سایر جزئیات نشست نمایش میدهد. - فهرستهای بومی Claude و Codex در نوار کناری، هر بار از یک میزبان پخش جریانی میشوند و سپس پس از تغییر اتصال Node، هنگام تمرکز صفحه و حداکثر هر 30 ثانیه در زمان قابلمشاهدهبودن، تطبیق داده میشوند. تغییرات فهرست یک گذر پیگیری سریعتر را فعال میکنند تا نشستهای ایجادشده در ابزارهای بومی بدون بارگذاری مجدد رابط کنترل ظاهر شوند. ردیفهای Claude Desktop نیز در صورت وجود، برچسب گروه سفارشی محلی خود را حفظ میکنند؛ OpenClaw این نگاشت را از مخزن محلی Desktop میخواند و هرگز در آن نمینویسد.
- گروهبندی نشست: کنترل گروهبندی بر اساس، جدول نشستها را بر پایهٔ گروههای سفارشی، کانال، نوع، عامل یا تاریخ به بخشهایی سازماندهی میکند. گروههای سفارشی برای هر نشست از طریق
sessions.patch(category) ماندگار میشوند، بنابراین نشستهای آغازشده از کانالهای پیام (Discord، Telegram، WhatsApp، ...) نیز قابل دستهبندی هستند؛ گروهها را با کشیدن ردیفها روی یک بخش یا با انتخابگر گروه هر ردیف اختصاص دهید و با اقدام گروه جدید، گروه بسازید. - حافظه (زبانهای در صفحهٔ عاملها که به عامل انتخابشده محدود است): وضعیت Dreaming، کلید فعال/غیرفعالسازی و خوانندهٔ دفترچهٔ رؤیا (
doctor.memory.status،doctor.memory.dreamDiary،config.patch). - درونریزی حافظه (
/memory-import، قابلدسترسی از زبانهٔ حافظه در صفحهٔ عاملها): پیشنمایش و کپی حافظهٔ خودکار محلی Claude Code، حافظهٔ یکپارچهٔ Codex یا فایلهای حافظهٔ Hermes به فضای کاری عامل انتخابشده (migrations.memory.plan،migrations.memory.apply). - پیشنهاد حافظه در راهاندازی اولیه: وقتی رابط کنترل در حالت راهاندازی اولیه باز شود (
?onboarding=1، که برنامهٔ همراه Linux پس از نصب اجرای نخست خود از آن استفاده میکند)، یک گفتوگوی تکصفحهای پیشنهاد میدهد حافظههای شناساییشده با همان روند برنامهریزی/اعمال درونریزی شوند؛ ردکردن این مرحله، صفحهٔ تنظیمات را بهعنوان نقطهٔ ورود بعدی باقی میگذارد.
Cron، وظایف، Pluginها، Skills، دستگاهها، تأییدیههای اجرا
- خودکارسازیها (کارهای Cron): کارتهای آماری (تعداد خودکارسازیها، تعداد موارد ناموفق، وضعیت زمانبند، بیدارباش بعدی) بالای کلید جابهجایی میان زبانههای خودکارسازیها/تاریخچه اجرا؛ زبانه خودکارسازیها کارها را در جدولی قابل فیلتر نمایش میدهد (همه/فعال/متوقفشده، جستوجو، فیلترهای زمانبندی و آخرین اجرا، منوی عملیات هر ردیف) و پیشنهادهای آغازین در زیر آن قرار دارند؛ زبانه تاریخچه اجرا نیز اجراهای اخیر همه خودکارسازیها را نشان میدهد (
cron.*). - وظایف: دفتر ثبت زنده وظایف پسزمینه فعال و اخیر، همراه با نشستهای پیوندخورده و امکان لغو (
tasks.*). نوار وظایف پسزمینه در گفتوگو، کارهای در حال اجرا و پایانیافته را گروهبندی میکند؛ برای بررسی اعلان محدودشده و خروجی یا خلاصه خطای آن، یک ردیف را انتخاب کنید. - Pluginها: موجودی نصبشده و فروشگاه گزینششده را مرور کنید، در ClawHub جستوجو کنید، کد Plugin را نصب و حذف کنید و Pluginهای نصبشده را فعال یا غیرفعال کنید (
plugins.*)؛ ردیفهای سرور MCP،mcp.serversرا از طریق روشهای پیکربندی ویرایش میکنند. - Skills: وضعیت، فعالسازی/غیرفعالسازی، نصب و بهروزرسانی کلید API (
skills.*). - دستگاهها: یک موجودی واحد، رکوردهای دستگاههای جفتشده، کاتالوگ Node و حضور زنده را یکجا گرد میآورد (
device.pair.list،node.list،system-presence). میزبان Gateway در ابتدای فهرست ثابت میشود؛ کلاینتهای جفتشده وضعیت اتصال، نقشها، توکنها، قابلیتها و فرمانها را نشان میدهند. جفتسازیهای تکراری در یک گروه بازشونده جمع میشوند و پاکسازی N مورد قدیمی، موارد تکراری آفلاینی را که مدیر تأیید کرده و بهطور خودکار تأیید شدهاند (محلی بیصدا، CIDR مورد اعتماد یا تأییدشده با SSH) یا مربوط به پیش از ثبت منشأ تأیید هستند، بهصورت گروهی حذف میکند. ورودیها قابل حذف هستند (node.pair.remove،device.pair.remove)؛ جفتسازی دستگاه و تأیید مجدد Node نیز بهصورت درونخطی انجام میشود (device.pair.*،node.pair.approve/reject) و کدهای راهاندازی موبایل از همان کارت ساخته میشوند. - تأییدیههای اجرا: فهرستهای مجاز Gateway یا Node و خطمشی پرسش برای
exec host=gateway/nodeرا ویرایش کنید (exec.approvals.*).
پیکربندی
- مشاهده/ویرایش
~/.openclaw/openclaw.json(config.get،config.set). - پیمایش تنظیمات با «از OpenClaw بپرسید» آغاز میشود و سپس صفحهها را بر اساس میزان توجه موردنیاز گروهبندی میکند: عمومی، ظاهر و اعلانها در بالا؛ اتصالات (اتصال، کانالها، ارتباطات، دستگاهها)؛ عاملها و ابزارها (عاملها، هوش مصنوعی و عاملها، ارائهدهندگان مدل، MCP، خودکارسازی، آزمایشگاهها)؛ حریم خصوصی و امنیت (امنیت، تأییدیهها)؛ و سیستم (زیرساخت، پیشرفته، اشکالزدایی، گزارشها، درباره). عمومی یک مرکز جمعوجور شامل پیشفرضهای مدل، زبان و آمار میزبان Gateway است؛ هر تنظیم دیگر دقیقاً در یک صفحه قرار دارد.
- حریم خصوصی و امنیت: ردیفهای گزینششده برای احراز هویت Gateway، خطمشی اجرا، فعالسازی مرورگر، نمایه ابزار، احراز هویت دستگاه و جفتسازی موبایل، بالای بخشهای مبتنی بر طرحواره
security/approvals. - تأییدیهها شامل تاریخچه 30روزه، با ترتیب جدیدترین در ابتدا، برای درخواستهای رسیدگیشده اجرا، Plugin و عامل سیستمی است. بر اساس نوع فیلتر کنید یا میان صفحههای ردیفهای قدیمیتر جابهجا شوید تا تصمیم، دلیل، نشست مبدأ و مشخصات رسیدگیکننده ثبتشده توسط Gateway را بررسی کنید.
- آزمایشگاهها کلیدهای آزمایشی منتشرشده را در دسترس قرار میدهد. «حالت کد» و «ازدحام» موارد فعلی هستند و
tools.codeMode.enabledوtools.swarm.enabledرا بیدرنگ ذخیره میکنند؛ آزمایشهای منتشرنشده نمایش داده نمیشوند و کلیدهای پیکربندی فرضی نمینویسند. - اعلانها: وضعیت اعلان پوش وب مرورگر، اشتراک/لغو اشتراک و ارسال آزمایشی.
- پیشرفته: همه بخشهای پیکربندی فاقد صفحه اختصاصی گزینششده، بههمراه ویرایشگر خام JSON5 (که پیشتر حالت پیشرفته صفحه عمومی بود).
- راهاندازی مدل (
/settings/model-setup) زیرصفحهای از ارائهدهندگان مدل است که از سربرگ آن باز میشود. - عاملها: صفحه تنظیمات (تنظیمات → عاملها،
/settings/agents) با زبانههای مختص هر عامل (نمای کلی، فایلها، ابزارها، Skills، کانالها، خودکارسازیها، حافظه). زبانه نمای کلی هویت عامل را ویرایش میکند—نام نمایشی، ایموجی و تصویر آواتاری که پیش ازagents.updateدر مرورگر کوچک و از نظر اندازه محدود میشود. ذخیرهسازی، فیلدهای هویت پیکربندیشده را نگه میدارد و آنها را درIDENTITY.mdفضای کاری منعکس میکند؛ مقادیر پیکربندیشده بر ویرایشهای دستی همان فیلدها در فایل اولویت دارند. - نمایه: صفحه تنظیماتی که هویت عامل پیشفرض را همراه با آمار استفاده تماموقت نشان میدهد—توکنهای طول عمر، روز اوج، طولانیترین نشست، زنجیرههای فعالیت، نقشه حرارتی توکن یکساله، ابزارهای برتر و نکات برجسته کانالها (
usage.cost،sessions.usage). - MCP صفحه تنظیمات اختصاصی با ردیفهای سرور (انتقال، وضعیت فعالسازی، خلاصههای OAuth/فیلتر/پردازش موازی)، کنترلهای مستقیم افزودن/فعالسازی/غیرفعالسازی/حذف، فرمانهای رایج اپراتور و ویرایشگر پیکربندی محدود به دامنه
mcpدارد. صفحه Pluginها همچنان محل اصلی اتصالدهندههای تککلیکی و کشف است. - ارائهدهندگان مدل: صفحه تنظیماتی که هر ارائهدهنده مدل پیکربندیشده را همراه با نماد برند، وضعیت احراز هویت (
models.authStatus)، دسترسپذیری مدل (models.list)، دادههای زنده طرح/سهمیه/صورتحساب در صورت گزارش ارائهدهنده (usage.status) و هزینه نشست محلی در 30 روز گذشته (sessions.usage) فهرست میکند. عملیات بازخوانی، وضعیت اعتبارنامهها و میزان استفاده ارائهدهنده را دوباره میخواند. - اتصال: صفحه تنظیماتی (زیر اتصالات) که پیوند Gateway خود داشبورد را مدیریت میکند—نشانی WebSocket، توکن Gateway، گذرواژه و کلید نشست پیشفرض—بههمراه آخرین نمای لحظهای دستدهی (وضعیت، زمان کارکرد، فاصله تیک، آخرین بازخوانی کانالها). دروازه ورود آفلاین حالت قطع اتصال را مدیریت میکند؛ این صفحه هنگام اتصال، خود اتصال را ویرایش میکند.
- اعمال و راهاندازی مجدد همراه با اعتبارسنجی (
config.apply)، سپس بیدار کردن آخرین نشست فعال. - نوشتنها برای جلوگیری از بازنویسی ویرایشهای همزمان، شامل محافظ هش پایه هستند.
- نوشتنها (
config.set/config.apply/config.patch) پیش از اجرا، رفع SecretRef فعال را برای ارجاعهای موجود در بار پیکربندی ارسالی بررسی میکنند؛ ارجاعهای فعال و رفعنشده ارسالی پیش از نوشتن رد میشوند. - ذخیره فرم، جاینگهدارهای منقضی و پوشاندهشدهای را که از پیکربندی ذخیرهشده قابل بازیابی نیستند کنار میگذارد و در عین حال مقادیر پوشاندهشدهای را که هنوز به اسرار ذخیرهشده نگاشت میشوند حفظ میکند.
- طرحواره و رندر فرم از
config.schema/config.schema.lookupمیآیند و شاملtitle/descriptionفیلد، راهنمای رابط کاربری منطبق، خلاصه فوری فرزندان، فراداده مستندات روی گرههای شیء تودرتو/عام/آرایه/ترکیب و نیز طرحوارههای Plugin و کانال در صورت دسترسبودن هستند. ویرایشگر خام JSON فقط زمانی در دسترس است که نمای لحظهای قابلیت رفتوبرگشت خام امن داشته باشد؛ در غیر این صورت رابط کاربری کنترل، حالت فرم را اجباری میکند. - گزینه «بازنشانی به نسخه ذخیرهشده» در ویرایشگر خام JSON، بهجای رندر مجدد یک نمای لحظهای تختشده، ساختار تألیفشده خام (قالببندی، دیدگاهها، چیدمان
$include) را حفظ میکند؛ بنابراین وقتی نمای لحظهای بتواند رفتوبرگشت امن داشته باشد، ویرایشهای خارجی پس از بازنشانی باقی میمانند. - مقادیر شیء ساختاریافته SecretRef در ورودیهای متنی فرم فقطخواندنی رندر میشوند تا از خرابشدن تصادفی تبدیل شیء به رشته جلوگیری شود.
استفاده
- تحلیل توکن و هزینه تخمینی برگرفته از نشست، جدا از صورتحساب ارائهدهنده باقی میماند.
- کارتهای ارائهدهنده
usage.statusرا فراخوانی میکنند و نام طرحهای زنده، بازههای سهمیه، موجودیها، هزینهها و بودجههای گزارششده توسط Pluginهای پیکربندیشده ارائهدهنده را نشان میدهند. - خرابی دریافت میزان استفاده ارائهدهنده، داشبورد نشست/هزینه را مسدود نمیکند؛ کارتهای ارائهدهنده ناموجود وضعیت خطای خود را نشان میدهند.
اشکالزدایی، گزارشها، بهروزرسانی
- اشکالزدایی: نماهای لحظهای وضعیت/سلامت/مدلها، گزارش رویداد و فراخوانیهای دستی RPC (
status،health،models.list). - گزارش رویداد شامل زمانبندی بازخوانی/RPC رابط کاربری کنترل، زمانبندی رندرهای کند گفتوگو/پیکربندی و ورودیهای پاسخگویی مرورگر برای فریمهای پویانمایی طولانی یا وظایف طولانی است، مشروط بر اینکه مرورگر آن نوع ورودیهای PerformanceObserver را ارائه دهد.
- گزارشها: دنباله زنده گزارشهای فایل Gateway همراه با فیلتر/برونبری (
logs.tail). - بهروزرسانی: اجرای بهروزرسانی بسته/git و راهاندازی مجدد (
update.run) همراه با گزارش راهاندازی مجدد، سپس نظرسنجیupdate.statusپس از اتصال مجدد برای تأیید نسخه Gateway در حال اجرا.
نکات پنل خودکارسازیها
- انتخاب یک ردیف، نمای جزئیات تمامصفحهای را باز میکند که در سربرگ آن کلید فعال/متوقفشده و «اکنون اجرا کن» قرار دارد (اجرای در صورت سررسید، شبیهسازی و حذف در منوی آن)؛ زبانه تنظیمات، خودکارسازی را بهصورت درونخطی ویرایش میکند (اعلان، جزئیات، تناوب، بازنویسیهای پیشرفته) و زبانه تاریخچه اجرا، اجراهای همان خودکارسازی را نشان میدهد.
- خودکارسازیهای آغازین زیر جدول، فرم ایجاد را با اعلان و زمانبندی قابل ویرایش از پیش پر میکنند.
- برای وظایف ایزوله، تحویل بهطور پیشفرض روی اعلام خلاصه تنظیم میشود؛ برای اجراهای صرفاً داخلی آن را به «هیچکدام» تغییر دهید.
- فیلدهای کانال/هدف هنگام انتخاب اعلام نمایش داده میشوند.
- حالت Webhook از
delivery.mode = "webhook"استفاده میکند وdelivery.toباید روی یک نشانی معتبر Webhook از نوع HTTP(S) تنظیم شود. - برای وظایف نشست اصلی، حالتهای تحویل Webhook و هیچکدام در دسترس هستند.
- کنترلهای ویرایش پیشرفته شامل حذف پس از اجرا، پاککردن بازنویسی عامل، گزینههای دقیق/پراکنده Cron، بازنویسی مدل/تفکر عامل و کلیدهای تحویل با بیشترین تلاش هستند.
- اعتبارسنجی فرم همراه با خطاهای سطح فیلد بهصورت درونخطی انجام میشود؛ مقادیر نامعتبر تا زمان اصلاح، دکمه ذخیره را غیرفعال میکنند.
- برای ارسال یک توکن حامل اختصاصی،
cron.webhookTokenرا تنظیم کنید؛ اگر حذف شود، Webhook بدون سربرگ احراز هویت ارسال میشود. cron.webhookیک جایگزین قدیمی بازنشسته است که اعتبارسنجی پیکربندی فعلی آن را رد میکند.openclaw doctor --fixرا اجرا کنید تا کارهای ذخیرهشدهای که هنوز ازnotify: trueاستفاده میکنند به Webhook صریح مختص هر کار یا تحویل تکمیل منتقل شوند و کلید قدیمی حذف شود.
واردکردن حافظه دستیار
برای واردکردن حافظه محلی Codex یا Claude Code به یک عامل OpenClaw، Settings → Import Memory را باز کنید. Gateway حافظه محلی پشتیبانیشده را روی میزبان خود بهطور خودکار کشف میکند؛ بنابراین رابط کاربری کنترل راه دور، دادهها را از رایانه Gateway وارد میکند، نه رایانه مرورگر.
- عامل مقصد را انتخاب کنید.
- مجموعههای مبدأ شناساییشده و نام فایلهای Markdown را بررسی کنید. محتوای فایلها در پاسخ طرح ارسال یا در صفحه نمایش داده نمیشود.
- مجموعههای موردنظر برای واردکردن را انتخاب و تأیید کنید. اعمال، پیش از نوشتن طرح را دوباره میسازد تا انتخابهای منقضی با ایمنی رد شوند.
- اگر فایلها از قبل وجود دارند، Replace existing imports را فعال کنید، پیشنمایش را بازخوانی و جایگزینی را تأیید کنید.
Codex فقط MEMORY.md و memory_summary.md یکپارچه خود را وارد میکند. Claude
Code فایلهای Markdown را از پوشههای حافظه خودکار پروژه و یک
autoMemoryDirectory پیکربندیشده وارد میکند؛ نشستها، تنظیمات، دستورالعملها یا
اعتبارنامهها از طریق این صفحه وارد نمیشوند. فایلها در زیر memory/imports/ در
فضای کاری انتخابشده کپی میشوند تا Plugin حافظه فعال بتواند آنها را نمایهسازی کند. منابع
هرگز تغییر نمیکنند.
طرحریزی و اعمال به operator.admin نیاز دارند. هر بار اعمال، در صورت وجود وضعیت، یک پشتیبان تأییدشده
OpenClaw ایجاد میکند، یک گزارش مهاجرت پوشاندهشده مینویسد و پیش از جایگزینی فایلهای مقصد موجود،
پشتیبانهای سطح آیتم را نگه میدارد. برای مسیرها و
رفتار بازیابی، نمای کلی حافظه را ببینید.
صفحه MCP
صفحه اختصاصی MCP یک نمای اپراتوری برای سرورهای MCP مدیریتشده توسط OpenClaw در mcp.servers است. این صفحه انتقالهای MCP را بهتنهایی راهاندازی نمیکند؛ از آن برای بررسی و ویرایش پیکربندی ذخیرهشده استفاده کنید و سپس هرگاه به اثبات زنده سرور نیاز داشتید، از openclaw mcp doctor --probe استفاده کنید.
گردشکار معمول:
- MCP را از نوار کناری باز کنید.
- کارتهای خلاصه را برای تعداد کل، فعال، OAuth و سرورهای فیلترشده بررسی کنید.
- هر ردیف سرور را از نظر انتقال، فعالسازی، احراز هویت، فیلترها، مهلتهای زمانی و راهنمای فرمانها بررسی کنید.
- سرورها را مستقیماً در صفحه MCP اضافه، فعال، غیرفعال یا حذف کنید. Streamable HTTP، SSE یا stdio را صریحاً انتخاب کنید؛ خطوط فرمان stdio آرگومانهای نقلقولشده، مانند مسیرهای دارای فاصله، را میپذیرند. برای اتصالدهندههای تککلیکی و کشف از صفحه Pluginها استفاده کنید.
- بخش پیکربندی محدودهدار
mcpرا برای فیلدهای پیشرفته سرور مانند متغیرهای محیطی، پوشههای کاری، سرآیندها، مسیرهای TLS/mTLS، فراداده OAuth، فیلترهای ابزار و فراداده نگاشت Codex ویرایش کنید. - برای نوشتن پیکربندی از ذخیره، یا وقتی Gateway در حال اجرا باید پیکربندی تغییریافته را اعمال کند از ذخیره و انتشار استفاده کنید.
- برای عیبیابی ایستا، اثبات زنده یا دورریزی زماناجرای ذخیرهشده،
openclaw mcp status --verbose،openclaw mcp doctor --probeیاopenclaw mcp reloadرا از ترمینال اجرا کنید.
این صفحه پیش از رندر، مقادیر شبهURL حاوی اطلاعات اعتبارسنجی را پنهان میکند و نام سرورها را در قطعهفرمانها داخل نقلقول میگذارد تا فرمانهای کپیشده همچنان با فاصلهها یا نویسههای ویژه پوسته کار کنند. مرجع کامل CLI و پیکربندی: MCP.
زبانه فعالیت
زبانه فعالیت در تنظیمات › سیستم، کنار گزارشها و اشکالزدایی قرار دارد. این زبانه یک ناظر موقتی و محلیِ مرورگر برای فعالیت زنده ابزار است که از همان جریان رویداد session.tool / ابزار Gateway که کارتهای ابزار گفتوگو را تأمین میکند، مشتق میشود. این قابلیت خانواده رویداد، نقطه پایانی، مخزن پایدار فعالیت، خوراک معیارها یا جریان ناظر خارجی دیگری به Gateway اضافه نمیکند.
ورودیهای فعالیت فقط خلاصههای پاکسازیشده و پیشنمایشهای خروجیِ پنهانسازیشده و کوتاهشده را نگه میدارند. مقادیر آرگومانهای ابزار در وضعیت فعالیت ذخیره نمیشوند؛ رابط کاربری نشان میدهد آرگومانها پنهان هستند و فقط تعداد فیلدهای آرگومان را ثبت میکند. فهرست درونحافظهای از زبانه فعلی مرورگر پیروی میکند، هنگام پیمایش در Control UI باقی میماند و با بارگذاری مجدد صفحه، تغییر نشست یا پاککردن بازنشانی میشود.
ترمینال اپراتور
ترمینال اپراتورِ قابل اتصال بهطور پیشفرض غیرفعال است. برای فعالکردن آن، gateway.terminal.enabled: true را تنظیم و Gateway را دوباره راهاندازی کنید. ترمینال به اتصال operator.admin نیاز دارد و یک PTY میزبان را در فضای کاری عامل فعال باز میکند. زبانههای جدید از عامل گفتوگوی انتخابشده فعلی پیروی میکنند.
برای نمایش یا پنهانکردن بخش اتصال از Ctrl + backtick استفاده کنید. چیدمان از اتصال در پایین و راست پشتیبانی میکند، با نمای مرورگر تغییر اندازه میدهد و چندین زبانه پوسته را نگه میدارد. برای gateway.terminal.enabled و بازنویسی اختیاری gateway.terminal.shell به پیکربندی Gateway مراجعه کنید.
عاملهای بدون سندباکس و مجازشده توسط مالک میتوانند برای کارهای طولانی یا تعاملی که اپراتور باید مشاهده کند، از ابزار terminal استفاده کنند. هر فراخوانی ابزار میتواند PTYهای Gateway متعلق به همان عامل را باز کند، بخواند، بنویسد، تغییر اندازه دهد، ببندد یا فهرست کند. نشستهای جدید بهطور پیشفرض یک زبانه Control UI هممتصل باز میکنند تا عامل و اپراتور خروجی را مشترکاً ببینند و هرکدام بتوانند تایپ یا تغییر اندازه دهند. دسترسی عامل دقیقاً به همان نشست محدود است: عامل نمیتواند ترمینالهای ایجادشده توسط اپراتور یا ترمینالهای بازشده توسط نشست عامل دیگری را بخواند یا کنترل کند.
یک یا چند فایل را روی ترمینال فعال بکشید، یا برای انتخاب فایلها از دکمه گیره کاغذ استفاده کنید. OpenClaw هر فایل را روی دستگاه مالک PTY آماده میکند و مسیرهای مطلقِ نقلقولشده برای پوسته را در مکاننما جایگذاری میکند؛ هرگز Enter را فشار نمیدهد یا ورودی را اجرا نمیکند. یک نشانگر فشرده دستهای، فایل فعلی و تعداد تکمیلشده را نشان میدهد. لغو، ادامه دسته را بدون جایگذاری مسیرها متوقف میکند؛ انتقال ناموفق قابلمشاهده باقی میماند تا بدون بارگذاری مجدد فایلهای تکمیلشده، از همان فایل دوباره تلاش کنید. تصاویر، PDFها، بایگانیها و دیگر انواع فایل تا سقف 16 MiB برای هر فایل پذیرفته میشوند. فایلهای آمادهشده در میزبانهای POSIX از یک پوشه خصوصی و موقت سیستم (حالت پوشه 0700، حالت فایل 0600) یا در Windows از پوشهای زیر مرز ACL نمایه کاربر، بههمراه زمانسنج پاکسازی 24 ساعته استفاده میکنند؛ بنابراین هر چیزی را که باید نگه دارید جابهجا یا کپی کنید.
درج مسیر از PowerShell، cmd.exe و پوستههای POSIX شناختهشده (sh، Bash، Dash، Ash، Ksh، Zsh و Fish)، از جمله Git Bash در Windows، پشتیبانی میکند. دیگر بازنویسیهای پوسته پذیرفته نمیشوند، زیرا قواعد نقلقول آنها را نمیتوان با ایمنی استنباط کرد؛ برای داشتن ترمینال بومی WSL و مسیرهای بارگذاری Linux، Gateway را داخل WSL اجرا کنید. مسیرهای cmd.exe که شامل % یا ! باشند نیز پذیرفته نمیشوند، زیرا آن پوسته این نویسهها را حتی داخل نقلقولهای دوتایی بسط میدهد.
نشستهای Codex و Claude Code که در نوار کناری نشستها کشف میشوند، میتوانند در CLI بومی خود داخل همان پنل ترمینال باز شوند. در تنظیمات › گفتوگو، گزینه بازکردن رشتههای Codex/Claude در را روی ترمینال تنظیم کنید تا کلیک معمولی روی ردیف، codex resume یا claude --resume را باز کند؛ نمایشگر فقطخواندنی OpenClaw همچنان پیشفرض است. منوی راستکلیک یا سهنقطه هر ردیف همیشه هر دو انتخاب را ارائه میدهد و وقتی نشست واجد شرایط باشد، سرآیند نمایشگر شامل بازکردن در ترمینال است.
واجد شرایط بودن برای هر نشست و هر میزبان جداگانه تعیین میشود. نشستهای محلی Gateway، فرمان ادامه متعلق به ارائهدهنده را روی میزبان Gateway آغاز میکنند. نشستهای Node جفتشده، یک فرمان ارائهدهنده از فهرست مجاز را روی Node مالک آغاز میکنند و فقط خروجی، ورودی و رویدادهای تغییر اندازه همان PTY را بازپخش میکنند؛ این کار یک پوسته عمومی Node را افشا نمیکند و فرمانهای تأمینشده توسط مرورگر را نمیپذیرد. بارگذاری فایل از فرمان جداگانه و دارای محدودیت اندازه terminal.upload در Node استفاده میکند و همچنان به نشست ترمینال ازپیشبازشده مقید میماند. وقتی آن فرمان برای نخستین بار ظاهر میشود، ارتقای جفتسازی Node را تأیید کنید. Nodeهایی که فرمان منطبقِ ادامه ترمینال را اعلام نمیکنند، از جمله پلهای worker تعبیهشده بدون پخش دوطرفه، نمایشگر را در دسترس نگه میدارند و بازکردن ترمینال را ناموجود نشان میدهند؛ Nodeهای قدیمیتر همچنان میتوانند ترمینال را اجرا کنند، اما نمیتوانند فایلهای کشیدهشده را دریافت کنند.
نشستهای متعلق به اتصال پس از قطع اتصال باقی میمانند: بارگذاری مجدد صفحه، خواب لپتاپ یا اختلال شبکه، بهجای کشتن نشست، آن را در Gateway جدا میکند و همان زبانه مرورگر هنگام اتصال مجدد دوباره به آن متصل میشود و خروجی اخیر بازپخش میشود. نشستهای جداشده متعلق به اتصال پس از gateway.terminal.detachedSessionTimeoutSeconds کشته میشوند (پیشفرض 300 ثانیه؛ 0 کشتن هنگام قطع اتصال را بازمیگرداند). اتصال به یکی از این نشستها همچنان بهصورت تصاحب به سبک tmux انجام میشود.
نشستهای متعلق به عامل به اتصال مرورگر مقید نیستند. terminal.attach هر مرورگر را بدون تصاحب مالکیت بهعنوان نمایشگر اضافه میکند و بستن زبانه نمایشگر فقط همان مرورگر را جدا میکند. PTY تا زمانی باقی میماند که عامل مالک آن را ببندد، فرایندش خارج شود، خطمشی آن را غیرفعال کند یا Gateway خاموش شود. terminal.list هر ورودی را بهعنوان متعلق به اتصال یا عامل مشخص میکند و terminal.text به اتصال مدیر اجازه میدهد بدون اتصال به نشست، خروجی متنی ساده اخیر را بخواند.
ترمینال همچنین بهصورت یک سند تمامصفحه و صرفاً ترمینال در /?view=terminal در دسترس است. برنامههای iOS و Android این صفحه را در نماهای ترمینال خود جاسازی میکنند و از اطلاعات اعتبارسنجی ذخیرهشده Gateway دوباره استفاده میکنند؛ دسترسپذیری از همان دروازه gateway.terminal.enabled و operator.admin پیروی میکند و وقتی Gateway متصل ترمینال را ارائه نکند، صفحه یک اعلان نشان میدهد.
پنل مرورگر
Control UI یک پنل مرورگر قابل اتصال ارائه میکند که مرورگر تحت کنترل Gateway (همان مرورگری که عاملها از طریق ابزار مرورگر هدایت میکنند) را در هر مرورگر وب معمولی رندر میکند؛ نیازی به webview بومی نیست. این پنل هنگامی ظاهر میشود که Gateway متصل، browser.request را به یک اتصال operator.admin اعلام کند؛ دکمه کره زمین در نوار فضای کاری رشته، آن را نمایش یا پنهان میکند. پنل یک تصویر زنده از صفحه را همراه با زبانهها، نوار URL قابلویرایش، عقب/جلو/بارگذاری مجدد و بازکردن در مرورگر شما نمایش میدهد، در راست یا پایین متصل میشود و کلیکها، پیمایش چرخ ماوس و تایپ پایه را به صفحه راهدور منتقل میکند.
دو حالت ثبت، زمینه صفحه را برای عامل بستهبندی میکنند:
- حاشیهنویسی (مداد): نشانهگذاری آزاد روی صفحه بکشید. ارسال به گفتوگو خطها را با تصویر صفحه ترکیب میکند، تصویر را به کادر نگارش گفتوگوی فعال پیوست میکند و پیامی شامل URL و عنوان صفحه و شرح هر ناحیه علامتگذاریشده را از پیش وارد میکند تا عامل دقیقاً بداند چه چیزی را دایره کشیدهاید.
- بازرسی (اشارهگر): نشانگر را نگه دارید تا عنصر زیر مکاننما (انتخابگر، نام دسترسپذیر، نقش، اندازه) را ببینید؛ کلیک کنید تا جزئیات آن عنصر بههمراه تصویر صفحه برجستهشده از طریق همان جریان کادر نگارش ارسال شود. بازرسی، پیمایش چرخ ماوس و عقب/جلو به
browser.evaluateEnabledنیاز دارند (بهطور پیشفرض روشن است).
برنامه macOS نوار کناری بومی مرورگر پیوند خود را برای پیوندهایی که در داشبورد کلیک میشوند نگه میدارد؛ پنل مرورگر نیز در آنجا کار میکند و در هر پلتفرم دیگری راه حاشیهنویسی صفحهها است.
رفتار گفتوگو
Send and history semantics
chat.sendغیرمسدودکننده است: بلافاصله با{ runId, status: "started" }تأیید میکند و پاسخ از طریق رویدادهایchatبهصورت جریانی ارسال میشود. کلاینتهای مورداعتماد رابط کاربری کنترل ممکن است برای عیبیابی محلی، فرادادهٔ اختیاری زمانبندی تأیید را نیز دریافت کنند.- بارگذاریهای چت، تصاویر و فایلهای غیر ویدیویی را میپذیرند. تصاویر مسیر بومی تصویر را حفظ میکنند؛ فایلهای دیگر بهصورت رسانهٔ مدیریتشده ذخیره و در تاریخچه بهشکل پیوندهای پیوست نمایش داده میشوند.
- ارسال مجدد با همان
idempotencyKey، هنگام اجرا{ status: "in_flight" }و پس از تکمیل{ status: "ok" }را برمیگرداند. - اندازهٔ پاسخهای
chat.historyبرای ایمنی رابط کاربری محدود است. وقتی ورودیهای رونوشت بیشازحد بزرگ باشند، Gateway ممکن است فیلدهای متنی طولانی را کوتاه کند، بلوکهای سنگین فراداده را کنار بگذارد و پیامهای بیشازحد بزرگ را با یک جاینگهدار ([chat.history omitted: message too large]) جایگزین کند. - وقتی یک پیام قابلمشاهدهٔ دستیار در
chat.historyکوتاه شده باشد، خوانشگر کناری میتواند در صورت نیاز، ورودی کامل رونوشت با نمایش نرمالشده را از طریقchat.message.getو با استفاده ازsessionKey،agentIdفعال در صورت نیاز وmessageIdرونوشت واکشی کند. اگر Gateway همچنان نتواند محتوای بیشتری برگرداند، خوانشگر بهجای تکرار بیسروصدای پیشنمایش کوتاهشده، وضعیت صریحِ دردسترسنبودن را نشان میدهد. - تصاویر دستیار/تولیدشده بهصورت ارجاعهای رسانهای مدیریتشده ماندگار میشوند و از طریق نشانیهای رسانهای احراز هویتشدهٔ Gateway بازگردانده میشوند؛ بنابراین بارگذاری مجدد به باقیماندن بارهای خام تصویر base64 در پاسخ تاریخچهٔ چت وابسته نیست.
- هنگام رندر کردن
chat.history، رابط کاربری کنترل، تگهای دستورالعمل درونخطیِ صرفاً نمایشی را از متن قابلمشاهدهٔ دستیار حذف میکند (برای مثال[[reply_to_*]]و[[audio_as_voice]])؛ همچنین بارهای XML فراخوانی ابزار بهصورت متن ساده (از جمله<tool_call>...</tool_call>،<function_call>...</function_call>،<tool_calls>...</tool_calls>،<function_calls>...</function_calls>و بلوکهای کوتاهشدهٔ فراخوانی ابزار) و توکنهای کنترلی ASCII/تمامعرض مدل که نشت کردهاند را حذف میکند. ورودیهای دستیار که تمام متن قابلمشاهدهشان فقط توکن دقیق سکوتNO_REPLY/no_replyیا توکن تأیید Heartbeat یعنیHEARTBEAT_OKباشد، کنار گذاشته میشوند. - در طول یک ارسال فعال و تازهسازی نهایی تاریخچه، اگر
chat.historyبرای مدتی کوتاه یک تصویر لحظهای قدیمیتر برگرداند، نمای چت پیامهای خوشبینانهٔ محلی کاربر/دستیار را قابلمشاهده نگه میدارد؛ پس از همگامشدن تاریخچهٔ Gateway، رونوشت مرجع جای آن پیامهای محلی را میگیرد. - رویدادهای زندهٔ
chatوضعیت تحویل هستند، درحالیکهchat.historyاز رونوشت ماندگار نشست بازسازی میشود. پس از رویدادهای نهایی ابزار، رابط کاربری کنترل تاریخچه را دوباره بارگذاری میکند و فقط یک دنبالهٔ خوشبینانهٔ کوچک را ادغام میکند؛ مرز رونوشت در WebChat مستند شده است. chat.injectیک یادداشت دستیار را به رونوشت نشست میافزاید و رویدادchatرا برای بهروزرسانیهای صرفاً رابط کاربری پخش میکند (بدون اجرای عامل و بدون تحویل کانال).- نوار کناری همهٔ نشستهای فعال بارگذاریشده را بر اساس بخش عامل و سطلهای سنجاقشده/کانال/کار/سفارشی/چتها فهرست میکند و یک اقدام واحد «نشست جدید» دارد که کادر گفتوگوی پیشنویس را باز میکند. بازکردن یک ردیف قابلمشاهده فقط برجستهسازی را جابهجا میکند. میتوان نشستها را برای سنجاقکردن روی «سنجاقشده» رها کرد یا برای جابهجایی روی یک گروه سفارشی یا «چتها» انداخت؛ گروههای سفارشی جمعشدنی هستند و میتوان ترتیبشان را با کشیدن تغییر داد، نام و ترتیب گروهها از طریق Gateway همگام میشود و وضعیت جمعشده در مرورگر باقی میماند. یک نشست جدید داشبورد، بهصورت ناهمگام از نخستین پیام غیردستوری خود یک عنوان کوتاه تولیدشده دریافت میکند؛ نامهای صریح و هویت فرستندهٔ احراز هویتشده جدا باقی میمانند، بنابراین نام حسابها هرگز بهعنوان عنوان تولیدشده استفاده نمیشوند. برای هدایت این فراخوانی جداگانهٔ مدل به یک مدل کمهزینهتر،
agents.defaults.utilityModel(یاagents.entries.*.utilityModel) را تنظیم کنید؛ اگر آن مدل مجزا شکست بخورد، تولید عنوان یکبار با مدل اصلی دوباره تلاش میشود. گسترش بخش عامل دیگری، نشستهای آن عامل را بدون ترک چت باز مرور میکند. - جستوجوی رشته در پالت فرمان قرار دارد (⌘K یا دکمهٔ جستوجو در خوشهٔ کنترل بالا-چپ): با تایپ یک پرسوجو، تعداد محدودی از صفحههای منطبق در میان عاملها پیمایش میشود، ردیفهای داخلی فرزند/Cron فیلتر میشوند و موارد منطبق قابلمشاهده در کنار فرمانهای پیمایش فهرست میشوند. صفحهٔ رشتهها، فهرست جامع و قابلجستوجو را همراه با فیلترها نگه میدارد.
- هر ردیف نوار کناری، دسترسی مستقیم به سنجاقکردن و نیز یک منوی زمینهٔ کامل برای وضعیت خواندهنشده، تغییر نام، انشعاب، گروهبندی، بایگانی و حذف دارد. ردیفهای چندانتخابی (Cmd/Ctrl-click و Shift-click برای بازهها) یک منوی دستهای برای وضعیت خواندهنشده، گروهبندی، بایگانی و حذف دریافت میکنند؛ بایگانی/حذف دستهای غیرفعال میماند، مگر اینکه همهٔ نشستهای انتخابشده قابلبایگانی باشند. اجرای فعال و نشست اصلی یک عامل را نمیتوان بایگانی کرد. بایگانی یا حذف نشست انتخابشدهٔ فعلی، چت را به نشست اصلی همان عامل بازمیگرداند.
- در برنامهٔ macOS، نشان OpenClaw بهجای اشغال یک ردیف نوار کناری، از نوار بومی و در حالت عادی خالیِ عنوان در کنار کنترلهای پنجره استفاده میکند.
- در عرضهای دسکتاپ، کنترلهای چت در یک ردیف فشرده باقی میمانند و هنگام پیمایش رو به پایین رونوشت جمع میشوند؛ پیمایش رو به بالا، بازگشت به ابتدای صفحه یا رسیدن به انتها، کنترلها را بازمیگرداند.
- وقتی افراد دیگری همان نشست را مشاهده میکنند، سربرگ نشست یک مجموعهٔ کوچک از چهرهها را کنار تراشهٔ فضای کاری نشان میدهد؛ این مجموعه حداکثر چهار آواتار بیننده را همراه با شمار اضافهها فهرست میکند و وقتی تنها باشید ناپدید میشود.
- پیامهای متوالی و تکراریِ صرفاً متنی بهصورت یک حباب با نشان شمارش رندر میشوند. پیامهای دارای تصویر، پیوست، خروجی ابزار یا پیشنمایش Canvas بدون جمعشدن باقی میمانند.
- حبابهای پیام کاربر، اقدامهای رونوشت را در خود دارند: یک دکمهٔ بازگردانی هنگام نگهداشتن نشانگر روی آن (پنجرهٔ تأیید با گزینهٔ "Don't ask again") بهعلاوهٔ بازگردانی تا اینجا و انشعاب از اینجا با راستکلیک. بازگردانی، نشست را به وضعیت درست پیش از آن پیام هدایت میکند و متن آن را برای ویرایش و ارسال مجدد به ویرایشگر پیام بازمیگرداند (
sessions.rewind،operator.admin)؛ انشعاب، از پیشوند مسیر فعال پیش از پیام یک نشست جدید میسازد، آن را باز میکند و همان متن را در ویرایشگر پیام آن قرار میدهد (sessions.fork،operator.write). هر دو اقدام هنگام کارکردن عامل با یک راهنمای توضیحی غیرفعال میشوند، فقط برای پیامهای ماندگارشدهٔ کاربر اعمال میشوند و برای نشستهایی که گفتوگویشان در مالکیت یک مهار اجرای عامل خارجی است، رد میشوند. بازگردانی فقط زمینهٔ چت را جابهجا میکند — فایلها و دیگر اثرات جانبی ابزار برگردانده نمیشوند — و رونوشت پیش از بازگردانی در مخزن نشستِ فقطافزودنی حفظ میشود. وقتی آن مخزن چندین شاخهٔ رونوشت داشته باشد، نوار عنوان چت یک منوی شاخه با آخرین پیام، شمار پیامها و تازگی هر شاخه نشان میدهد؛ انتخاب یک شاخهٔ غیرفعال، نشست فعلی را به آن مسیر حفظشده بازمیگرداند (sessions.branches.list،operator.read؛sessions.branches.switch،operator.admin). تغییر شاخه نیز هنگام کارکردن عامل دردسترس نیست و انتخاب شاخهٔ ازپیشفعال در مرز RPC یک خطای بیعملیاتِ نوعدار است. اقدام جداگانهٔ پنهانکردن روی حبابهای کاربر، پیام را فقط در مرورگر فعلی پنهان میکند؛ پیام در رونوشت باقی میماند و عامل همچنان آن را میبیند. - وقتی وارسی نشست روی شاخهای غیرپیشفرض از یک مخزن GitHub قرار دارد، نمای چت تراشههای Pull request را بالای ویرایشگر پیام سنجاق میکند: شمارهٔ PR، مخزن، شاخه، شمار تغییرات، یک نشان CI و وضعیت پیشنویس/ادغامشده/بستهشده که هرکدام به PR پیوند دارند. این ردیف حداکثر دو تراشه را نشان میدهد — ابتدا PRهای زنده (باز/پیشنویس) — و دکمهٔ "Show more" تاریخچهٔ جمعشدهٔ ادغامشده/بستهشده را آشکار میکند. نشان CI یک پنجرهٔ کوچک پایش CI را با شمار بررسیهای موفق/ناموفق/درحالاجرا/ردشده و پیوندی به صفحهٔ بررسیهای PR باز میکند. تشخیص در سمت سرور از طریق
controlUi.sessionPullRequestsاجرا میشود که در صورت تنظیمبودن، ازGH_TOKEN/GITHUB_TOKENمربوط به Gateway دوباره استفاده میکند. وقتی محدودیت نرخ API GitHub فرا برسد، تراشهها آخرین وضعیت شناختهشده را حفظ میکنند و هشداری نشان میدهند که ممکن است وضعیت بهروز نباشد؛ بستن یک تراشه، آن را برای آن نشست در نمایهٔ فعلی مرورگر پنهان میکند. پیش از وجود هر PR، ردیف خود شاخه را نشان میدهد — مخزن، نام شاخه و اندازهٔ +/− تفاوت با مبنای ادغام شاخهٔ پیشفرض (کارهای ثبتشده و ثبتنشده). وقتی شاخهٔ ارسالشده دارای commitهایی برای مقایسه باشد، ردیف دکمهٔ Create PR را اضافه میکند که صفحهٔ Pull request جدید GitHub را باز میکند؛ پیش از آن نیز نشستی با فایلهای تغییرکرده (ثبتشده، ثبتنشده یا ردیابینشده) همچنان ردیف را بدون دکمه دریافت میکند. هنگام وجود یک PR باز یا پیشنویس، ردیف خود را پنهان میکند. ردیف شاخه فقط از git محلی میآید، بنابراین هنگام محدودیت نرخ GitHub دردسترس میماند و همان هشدار وضعیت کهنه را نمایش میدهد، زیرا تا بازنشانی محدودیت نمیتوان به «هیچ PRی یافت نشد» اعتماد کرد. - پنل تفاوت نشست نشان میدهد که وارسی نشست واقعاً چه چیزی را تغییر داده است: دکمهٔ شاخه در ریل فضای کاری یا نوار عنوان چت، پنل جزئیات را با تفاوت هر فایل از کار شاخه، ثبتنشده و ردیابینشده نسبت به مبنای ادغام شاخهٔ پیشفرض وارسی باز میکند — نقطهٔ وضعیت، پیکان تغییر نام، شمار +/− هر فایل، فایلهای جمعشدنی و نشانگرهای "N unmodified lines" میان قطعهها. تفاوتها در سمت سرور از طریق متد Gateway یعنی
sessions.diff(با دامنهٔoperator.read) محاسبه میشوند؛ فایلهای دودویی و بیشازحد بزرگ به ورودیهای فقطآمار تنزل مییابند و دکمه تنها زمانی ظاهر میشود که Gateway متصل،sessions.diffرا اعلام کند. - هر پنل چت یک نوار عنوان دارد. برای تغییر نام نشست، روی عنوان آن کلیک کنید؛ تراشهٔ فضای کاری مسیر وارسی یا شاخه را کپی میکند و میتواند فضاهای کاری محلی Gateway را در مدیر فایل میزبان آشکار کند. نشستهای راهدور و گرهٔ اجرا، اقدامهای کپی را حفظ میکنند اما آشکارسازی را پنهان میکنند.
- ریل فضای کاری رشته در هر پنل چت، فایلهای رشته، فایلهای پروژه و مصنوعات را فهرست میکند. بهطور پیشفرض به لبهٔ راست پنل متصل است؛ سربرگ آن را بکشید (یا از دکمهٔ اتصال استفاده کنید) تا به پایین منتقل شود و انتخاب در نمایهٔ فعلی مرورگر ذخیره میشود. ریل جمعشده هیچ فضایی اشغال نمیکند: آن را با ⇧⌘B یا کلید تغییر وضعیت فایلها در نوار عنوان دوباره باز کنید؛ این کلید نشان شمار فایلهای تغییرکرده را دارد. پنل جداگانهٔ جزئیات فایل، ابزار و Canvas تحتتأثیر قرار نمیگیرد.
- کلیک روی یک ارجاع فایل در چت، مسیر فایل در کارت گسترشیافتهٔ ابزار خواندن/ویرایش/نوشتن یا ردیف فایل در ریل فضای کاری، پنل جزئیات فایل را باز میکند: یک نمای کد مبتنی بر CodeMirror با برجستهسازی نحو، شمارهٔ خطوط، پرش به خط، جستوجوی درونفایل، اقدامهای کپی و منوی بازکردن در ویرایشگر خارجی. وقتی Gateway در یک اتصال
operator.admin، قابلیتsessions.files.setرا اعلام کند، پنل یک حالت ویرایش با ردیابی تغییرات ذخیرهنشده و ذخیره با Cmd/Ctrl-S اضافه میکند؛ پیشنویسهای ذخیرهنشده در برگهٔ فعلی مرورگر هنگام پیمایش میان فایل، پنل و نشست باقی میمانند تا صریحاً ذخیره یا کنار گذاشته شوند. ذخیرهها بهصورت مقایسهوتعویض بر اساس هش محتوای برگرداندهشده توسطsessions.files.getانجام میشوند: اگر فایل پس از بارگذاری روی دیسک تغییر کرده باشد (برای مثال چون عامل به کار ادامه داده است)، پنل یک اعلان تعارض با اقدامهای Reload (گرفتن جدیدترین محتوا) و Overwrite (حفظ ویرایش محلی) نشان میدهد. نوشتنها از همان محافظهای فضای کاری ایمن برای سامانهٔ فایل که خواندنها استفاده میکنند عبور میکنند — محصوربودن مسیر، رد پیوند نمادین/سخت و سقف 256 KB برای UTF-8 — و فقط فایلهای موجود را بازنویسی میکنند؛ ویرایشگر هرگز آنها را ایجاد یا حذف نمیکند. - ریل وظایف پسزمینه در هر پنل چت، وظایف پسزمینه و زیرعاملهای عامل فعلی را فهرست میکند (
tasks.listبا دامنهبندی بر اساس عامل و زنده نگهداشتهشده با رویدادهایtask): کار درحالاجرا یک زمانسنج زندهٔ سپریشده، شمار استفاده از ابزار، ابزار درحالاستفاده و یک کنترل توقف را نشان میدهد؛ بخش جمعشدنی پایانیافته، مدت اجراها را اضافه میکند؛ و پیوند مشاهدهٔ رونوشت، نشست فرزند وظیفه را در پنل باز میکند. آن را با کلید تغییر وضعیت فعالیت در نوار عنوان باز کنید؛ تصویر لحظهای وظیفه پیشاپیش بارگذاری میشود، بنابراین بدون بازکردن قبلی ریل نیز نشان شمار درحالاجرا را دارد. صفحهٔ وظایف همچنان دفتر کل کامل میانعاملی باقی میماند. - نوار فضای کاری، نوار وظایف پسزمینه و پنل جزئیات، بهجای پنجره، با عرض خود هر قاب سازگار میشوند: در یک قاب باریک یا پنجره فشرده، هر دو نوار بهصورت نوارهایی در پایین نمایش داده میشوند (کنترلهای اتصال جانبی تا زمانی که قاب عریضتر شود پنهان میمانند؛ وقتی فقط یک ستون جا میشود، نوار فضای کاری برای جایگاه کناری اولویت دارد) و پنل جزئیات بهجای قرارگرفتن در ردیفی مشترک با رشته، همراه با یک دستگیره افقی تغییر اندازه در زیر رشته چیده میشود. در نماهای هماندازه تلفن، پنل جزئیات همچنان بهصورت تمامصفحه باز میشود.
- انتخابگرهای مدل و تفکر در سربرگ گفتوگو، نشست فعال را بلافاصله از طریق
sessions.patchوصله میکنند؛ آنها بازنویسیهای پایدار نشست هستند، نه گزینههای ارسال مختص فقط یک نوبت. - نمای تقسیمشده: آن را از نوار عنوان گفتوگو (کنار کلیدهای تغییر وضعیت تفاوتهای رشته، وظایف پسزمینه و فایلهای رشته) باز کنید، سپس قاب فعال را به راست یا پایین تقسیم کنید تا هر تعداد قاب که جا میشود ایجاد شود. هر قاب رشته، رونوشت، ویرایشگر پیام و جریان ابزار مختص خود را دارد.
- عاملهای دارای ابزار
screenمیتوانند هنگامی که یک رابط کاربری کنترلِ توانمند متصل است، همان تغییرات قاب، نوار کناری، پایانه، مرورگر، تمرکز و پیمایش را درخواست کنند. پروتکل v1 فرمان را روی همه رابطهای کاربری کنترلِ توانمند و متصل اعمال میکند؛ به صفحهنمایش مراجعه کنید. - یک نشست را از نوار کناری به داخل گفتوگو بکشید تا در یک قاب باز شود. پیشنمایش متحرک رهاسازی بین ناحیهها حرکت میکند و نتیجه را برچسب میزند — «تقسیم» روی دقیقاً همان نیمهای که قاب جدید اشغال خواهد کرد، «اینجا باز شود» روی کل قاب — و رهاسازی از حالت تکقابی نیز کار میکند.
- قاب تقسیمشده فعال، انتخاب نوار کناری و URL را تعیین میکند. نوار عنوان آن کنترلهای تقسیم و بستن را اضافه میکند؛ جداکنندهها اندازه ستونها و قابهای رویهمچیده را تغییر میدهند و مرورگر چیدمان را بهصورت محلی برای بارگذاریهای مجدد ذخیره میکند.
- در صفحههای باریک، نمای تقسیمشده چیدمان را حفظ میکند، اما فقط قاب فعال را، شامل سربرگ آن با کنترل بستن، نمایش میدهد.
- اگر درحالیکه تغییر انتخابگر مدل برای همان نشست هنوز در حال ذخیرهشدن است پیامی ارسال کنید، ویرایشگر پیام پیش از فراخوانی
chat.sendمنتظر وصله آن نشست میماند تا ارسال از مدل انتخابشده استفاده کند. - تایپ
/newهمان نشست تازه داشبوردی را ایجاد میکند و به آن میرود که «گفتوگوی جدید» ایجاد میکند، مگر زمانی کهsession.dmScope: "main"پیکربندی شده باشد و والد فعلی نشست اصلی عامل باشد؛ در آن صورت، نشست اصلی را درجا بازنشانی میکند. تایپ/resetبازنشانی صریح و درجای Gateway را برای نشست فعلی حفظ میکند. - انتخابگر مدل گفتوگو، نمای مدل پیکربندیشده Gateway را درخواست میکند. اگر
agents.defaults.modelPolicy.allowخالی نباشد، آن سیاست انتخابگر را هدایت میکند، از جمله ورودیهایprovider/*که کاتالوگهای محدود به ارائهدهنده را پویا نگه میدارند. در غیر این صورت، انتخابگر ورودیهای پیکربندیشده بههمراه ارائهدهندگانی با احراز هویت قابلاستفاده را نشان میدهد؛ نامهای مستعار و تنظیمات زیرagents.defaults.modelsآن را محدود نمیکنند. کاتالوگ کامل از طریق RPC اشکالزداییmodels.listباview: "all"در دسترس میماند. - وقتی گزارشهای تازه مصرف نشست Gateway شامل توکنهای زمینه فعلی باشند، نوار ابزار ویرایشگر پیام گفتوگو یک حلقه کوچک مصرف زمینه را همراه با درصد استفادهشده نشان میدهد. حلقه را باز کنید تا پنجره زمینه فعلی، تعداد توکنهای آخرین اجرا و هزینه کل تخمینی، هویت ارائهدهنده/مدل و، در صورت گزارش، تفکیک هزینه ورودی/خروجی/حافظه نهانِ آخرین پاسخ ارائهدهنده را ببینید. حلقه در فشار بالای زمینه به سبک هشدار تغییر میکند و در سطوح توصیهشده Compaction، دکمه فشردهای نشان میدهد که مسیر عادی Compaction نشست را اجرا میکند. تصویرهای لحظهای قدیمی توکن تا زمانی که Gateway دوباره مصرف تازه را گزارش کند پنهان میشوند.
حالت مکالمه (بلادرنگ در مرورگر)
حالت مکالمه از یک ارائهدهنده ثبتشده صدای بلادرنگ استفاده میکند. OpenAI را با talk.realtime.provider: "openai" بههمراه یک پروفایل کلید API از نوع openai، یا talk.realtime.providers.openai.apiKey، یا OPENAI_API_KEY پیکربندی کنید. OpenAI Realtime از Platform API عمومی استفاده میکند و به یک کلید Platform API نیاز دارد؛ ورود OAuth مربوط به Codex این نیاز را برآورده نمیکند. Google را با talk.realtime.provider: "google" بههمراه talk.realtime.providers.google.apiKey پیکربندی کنید. مرورگر هرگز کلید API استاندارد ارائهدهنده را دریافت نمیکند: OpenAI برای WebRTC یک رمز محرمانه موقت کلاینت Realtime دریافت میکند و Google Live برای یک نشست WebSocket مرورگر، توکن احراز هویت یکبارمصرف و محدودشده Live API را دریافت میکند که دستورالعملها و اعلانهای ابزار توسط Gateway درون آن قفل شدهاند. ارائهدهندگانی که فقط یک پل بلادرنگ سمت بکاند ارائه میکنند، از انتقال رله Gateway عبور میکنند؛ بنابراین اعتبارنامهها و سوکتهای فروشنده در سمت سرور باقی میمانند، درحالیکه صدای مرورگر از طریق RPCهای احرازهویتشده Gateway جابهجا میشود. پرامپت نشست Realtime توسط Gateway ساخته میشود؛ talk.client.create بازنویسی دستورالعملهای ارائهشده از سوی فراخوان را نمیپذیرد.
پیشفرضهای ماندگار ارائهدهنده، مدل، صدا، انتقال، میزان تلاش استدلال، آستانه دقیق VAD، مدت سکوت و فاصلهگذاری پیشوند در تنظیمات → ارتباطات → مکالمه قرار دارند؛ تغییر آنها به دسترسی operator.admin نیاز دارد. پیکربندی رله Gateway مسیر رله بکاند را اجباری میکند؛ پیکربندی WebRTC مالکیت نشست را در اختیار کلاینت نگه میدارد و اگر ارائهدهنده نتواند یک نشست مرورگر ایجاد کند، بهجای بازگشت بیسروصدا به رله با خطا متوقف میشود.
کنترل مکالمه همان دکمه میکروفون در نوار ابزار کادر نوشتن است. نشانگر کشویی آن پیشفرض سیستم و همه میکروفونهایی را که مرورگر در دسترس قرار میدهد، از جمله ورودیهای USB، Bluetooth و مجازی، فهرست میکند. شناسه دستگاه انتخابشده فقط در مرورگر باقی میماند و هرگز به Gateway ارسال نمیشود؛ اگر دقیقاً همان دستگاه ناپدید شود، مکالمه بهجای ضبط بیسروصدا از میکروفونی دیگر، از شما میخواهد ورودی دیگری انتخاب کنید. هنگامیکه مکالمه فعال است، دکمه میکروفون به یک کپسول شامل نمایشگر زنده سطح ورودی تبدیل میشود؛ کلیک روی آن ورودی صوتی را متوقف میکند و نگهداشتن نشانگر روی آن، نماد توقف را نمایان میسازد. هنگامیکه یک فراخوانی بلادرنگ ابزار از طریق talk.client.toolCall با مدل بزرگتر پیکربندیشده مشورت میکند، صفحهخوانها Connecting voice input...، Listening... یا Asking OpenClaw... را اعلام میکنند. توقف پاسخ در حال اجرای عامل، همچنان یک کنترل مربعی جداگانه توقف در کنار کپسول است.
مکالمه ویدیویی برای نشستهای مرورگری OpenAI Realtime WebRTC و Google Live در دسترس است. روی دکمه دوربین کلیک کنید، اجازه دسترسی به دوربین و میکروفون را بدهید و پیشنمایش محلی را تأیید کنید. هنگامیکه describe_view زمینه بصری درخواست میکند، OpenAI یک فریم JPEG محدود را از طریق کانال داده مرورگر خود ارسال میکند. Google Live فریمهای JPEG محدود را مستقیماً با حداکثر نرخ پشتیبانیشده یک فریم در ثانیه از مرورگر به ارائهدهنده میفرستد و به فراخوانیهای تابع describe_view با وضعیت جریان دوربین پاسخ میدهد. فریمهای دوربین هرگز از Gateway عبور نمیکنند. توقف مکالمه پیشنمایش را میبندد و هر دو ترک رسانه را آزاد میکند. برای قراردادهای ارتباطی ارائهدهنده، به قابلیتهای Live API و راهنمای فراخوانی تابع Google مراجعه کنید.
آزمون دود زنده نگهدارنده: OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts پل WebSocket بکاند OpenAI، تبادل SDP مرورگر OpenAI WebRTC، راهاندازی مرورگر Google Live با توکن محدودشده همراه یک فریم JPEG و رفتوبرگشت تابع describe_view، و سازگارکننده رله مرورگر Gateway با رسانه میکروفون جعلی را تأیید میکند. این فرمان فقط وضعیت ارائهدهنده را چاپ میکند و رمزهای محرمانه را ثبت نمیکند.
توقف و لغو
- روی توقف کلیک کنید. اجراهایی که شناسه دقیق اجرای محلی دارند،
chat.abortرا فراخوانی میکنند؛ هنگامیکه وضعیت نشست انتخابشده وجود کار فعال را گزارش میدهد اما Control UI شناسه اجرای محلی ندارد، در عوضsessions.abortرا فراخوانی میکند. برای نشستهای غیرسراسری، مسیر نشست انتخابشده همچنین پیگیریهای در صف را کنار میگذارد تا نتوانند پس از توقف دوباره کار را آغاز کنند. - هنگامیکه یک اجرا فعال است، پیگیریهای عادی از حالت مؤثر
messages.queueدر Gateway استفاده میکنند.steerپیام را به نوبت در حال اجرا تزریق میکند؛ حالتهای دیگر تحویل ماندگار در صف مرورگر را حفظ میکنند. رد هدایت نیز به همان صف بازمیگردد. برای تزریق دستی یک پیام در صف، روی هدایت کلیک کنید. - تنظیمات → ظاهر → گپ → پیگیریها هنگام کار عامل میتواند پیشفرض سرور را برای مرورگر فعلی بازنویسی کند. صفحه بازنویسی را بهصراحت مشخص میکند و گزینه بازنشانی به پیشفرض سرور را ارائه میدهد.
Steer into the active runپیگیریها را بیدرنگ ارسال میکند، درحالیکهQueue until the run endsآنها را تا پایان اجرا نگه میدارد. - برای لغو خارج از باند،
/stop(یا عبارتهای مستقل لغو مانندstop،stop action،stop run،stop openclaw،please stop) را تایپ کنید. chat.abortاز{ sessionKey }(بدونrunId) پشتیبانی میکند تا همه اجراهای فعال آن نشست لغو شوند. هنگامیکه Control UI شناسه اجرای محلی ندارد، ازsessions.abortاستفاده میکند.
نگهداری بخش ناقص پس از لغو
- هنگامیکه یک اجرا لغو میشود، متن ناقص دستیار همچنان میتواند در رابط کاربری نمایش داده شود.
- اگر خروجی بافرشدهای وجود داشته باشد، Gateway متن ناقص و لغوشده دستیار را در تاریخچه رونوشت ماندگار میکند.
- ورودیهای ماندگارشده شامل فراداده لغو هستند تا مصرفکنندگان رونوشت بتوانند بخشهای ناقص ناشی از لغو را از خروجی تکمیل عادی تشخیص دهند.
قطع اتصال و اتصال مجدد
پس از برقراری نشست، قطع اتصال Gateway باعث خروج شما نمیشود. داشبورد همچنان قابل مشاهده میماند و یک کپسول شناور کهربایی با متن «اتصال Gateway قطع شد — در حال اتصال مجدد…» زیر نوار بالایی نمایش داده میشود، درحالیکه کلاینت با وقفه فزاینده (از 800 ms تا 15 s) بهطور خودکار دوباره تلاش میکند. بهروزرسانیهای زنده و کنشهای بلادرنگ/نشست تا بازگشت اتصال متوقف میشوند؛ اکنون دوباره تلاش کن در کپسول، تلاش فوری را اجباری میکند. گپ همچنان قابل ویرایش است: ارسالهای متنی عادی و پیوستها در ذخیرهسازی مرورگرِ محدود به Gateway/نشستِ برگه فعلی نگه داشته میشوند، در انتظار اتصال مجدد نمایش داده میشوند و با بازگشت Gateway بهطور خودکار ارسال میشوند. کنترلهای زنده و فرمانهای اسلش هنگام آفلاین بودن در دسترس نیستند، جز اینکه توقف میتواند یک شناسه دقیق اجرای محلی را برای بازپخش در صف قرار دهد. توقفی که فقط مختص نشست است بازپخش نمیشود، زیرا ممکن است پیش از بازگشت اتصال، کار جدیدتری در آن نشست آغاز شود.
هنگامیکه این مرورگر از قبل اعتبارنامهها را نگه میدارد (یک توکن/گذرواژه پیکربندیشده یا توکن دستگاه تأییدشده)، در نخستین بازشدنها و بارگذاریهای مجدد، بهجای چشمکزدن دروازه ورود، یک نشان متحرک کوچک OpenClaw هنگام برقراری اتصال نمایش داده میشود. دروازه ورود فقط زمانی ظاهر میشود که هنوز هیچ اعتبارنامهای ذخیره نشده باشد یا Gateway فعالانه آنها را رد کند (توکن/گذرواژه نادرست، جفتسازی لغوشده) — وضعیتهایی که بهجای انتظار به ورودی شما نیاز دارند.
نصب PWA و پوش وب
Control UI همراه با یک manifest.webmanifest و یک سرویسورکر ارائه میشود، بنابراین مرورگرهای مدرن میتوانند آن را بهعنوان یک PWA مستقل نصب کنند. پوش وب به Gateway اجازه میدهد حتی هنگامیکه برگه یا پنجره مرورگر باز نیست، PWA نصبشده را با اعلانها بیدار کند.
درون برنامه macOS، صفحه تنظیمات اعلانها بهجای پوش مرورگر، مجوز اعلان بومی برنامه را نمایش میدهد، زیرا برنامه اعلانها را بهصورت بومی تحویل میدهد.
اگر صفحه بلافاصله پس از بهروزرسانی OpenClaw عبارت عدم تطابق پروتکل را نشان داد، ابتدا داشبورد را با openclaw dashboard دوباره باز و بازآوری سخت کنید. اگر همچنان ناموفق بود، دادههای سایت مبدأ داشبورد را پاک کنید یا در یک پنجره خصوصی مرورگر آزمایش کنید؛ یک برگه قدیمی یا حافظه نهان سرویسورکر مرورگر ممکن است بسته Control UI مربوط به پیش از بهروزرسانی را در برابر Gateway جدیدتر همچنان اجرا کند.
| سطح | کاری که انجام میدهد |
|---|---|
ui/public/manifest.webmanifest |
مانیفست PWA. مرورگرها پس از دردسترسبودن آن، گزینه «Install app» را ارائه میکنند. |
ui/public/sw.js |
سرویسورکری که رویدادهای push و کلیکهای اعلان را مدیریت میکند. |
state/openclaw.sqlite → web_push_vapid_keys |
جفتکلید VAPID تولیدشده بهصورت خودکار که برای امضای محمولههای پوش وب استفاده میشود. |
state/openclaw.sqlite → web_push_subscriptions |
نقاط پایانی اشتراک مرورگر، کلیدها و مُهرهای زمانی ثبتنامِ ماندگارشده. |
ارتقاها از مخزنهای بازنشسته push/vapid-keys.json و push/web-push-subscriptions.json توسط openclaw doctor --fix وارد میشوند. پیش از اجرای این تعمیر، Gateway را متوقف کنید تا یک فرایند قدیمی نتواند هنگام واردسازی، وضعیت بازنشسته را دوباره ایجاد کند. پس از ارتقا و پیش از استفاده از پوش وب، تعمیر را اجرا کنید؛ تا زمانیکه یکی از منابع بازنشسته یا یک ادعای ناتمام Doctor باقی مانده باشد، ثبتنام، تحویل، حذف و تفکیک کلید از ادامه کار خودداری میکنند. زمان اجرای Gateway فقط SQLite را میخواند و مینویسد.
هنگامیکه میخواهید کلیدها را ثابت نگه دارید (استقرارهای چندمیزبانه، چرخش رمزهای محرمانه یا آزمایشها)، جفتکلید VAPID را از طریق متغیرهای محیطی فرایند Gateway بازنویسی کنید:
OPENCLAW_VAPID_PUBLIC_KEYOPENCLAW_VAPID_PRIVATE_KEYOPENCLAW_VAPID_SUBJECT(مقدار پیشفرضhttps://openclaw.aiاست)
Control UI برای ثبت و آزمایش اشتراکهای مرورگر از این متدهای Gateway با دسترسی محدود به دامنه استفاده میکند:
push.web.vapidPublicKeyکلید عمومی فعال VAPID را دریافت میکند.push.web.subscribeیکendpointرا بههمراهkeys.p256dh/keys.authثبت میکند.push.web.unsubscribeیک نقطه پایانی ثبتشده را حذف میکند.push.web.testیک اعلان آزمایشی به اشتراک فراخواننده ارسال میکند.
جاسازیهای میزبانیشده
پیامهای دستیار میتوانند محتوای وب میزبانیشده را با کد کوتاه [embed ...] بهصورت درونخطی رندر کنند. سیاست sandbox مربوط به iframe توسط gateway.controlUi.embedSandbox کنترل میشود:
ابزار اصلی show_widget یک SVG یا HTML خودبسنده را مستقیماً از یک فراخوانی ابزار رندر میکند. مرورگر و کلاینتهای گپ بومی پشتیبانیشده قابلیت inline-widgets مربوط به Gateway را اعلام میکنند و سند Canvas حاصل پس از بارگذاری مجدد تاریخچه گپ همچنان در دسترس میماند. Discord Activities همین نام ابزار را در Discord ارائه میدهد؛ اجراهایی که از کانالهای دیگر آغاز شدهاند، آن را دریافت نمیکنند.
سختگیرانه
اجرای اسکریپت را درون جاسازیهای میزبانیشده غیرفعال میکند.
اسکریپتها (پیشفرض)
ضمن حفظ جداسازی مبدأ، جاسازیهای تعاملی را مجاز میکند؛ معمولاً برای بازیها/ویجتهای خودبسنده مرورگر کافی است.
مورد اعتماد
برای اسناد همسایتی که عمداً به امتیازات قویتری نیاز دارند، allow-same-origin را افزون بر allow-scripts اضافه میکند.
{ gateway: { controlUi: { embedSandbox: "scripts", }, },}نشانیهای اینترنتی مطلق و خارجی جاسازی http(s) بهطور پیشفرض مسدود باقی میمانند. برای اینکه [embed url="https://..."] بتواند صفحههای شخص ثالث را بارگیری کند، gateway.controlUi.allowExternalEmbedUrls: true را تنظیم کنید.
چیدمان رونوشت گپ
رونوشت گفتوگو از یک قاب خوانای وسطچین و همراستا با کادر نوشتن پیام استفاده میکند. خروجی دستیار و ابزار در سمت چپ باقی میماند، درحالیکه پیامهای خودتان درون آن قاب راستچین میشوند. در نشستهای چندکاربره (برای مثال، گفتوگوی گروهی که از یک Plugin کانال بازپخش میشود)، پیامهای سایر شرکتکنندگان منتسبشده در سمت چپ همراه با آواتار و نام نویسنده و رنگی ثابت برای هر هویت نمایش داده میشوند تا فقط پیامهای بیننده واردشده بهعنوان «پیامهای من» دیده شوند. وقتی دو یا چند شرکتکننده منتسبشده حضور دارند، پاسخهای دستیار نشانگر کوچکی با متن «پاسخ به نام» دارند که نام شرکتکنندهای را نشان میدهد که پیامش نوبت را آغاز کرده است. ورودیهای سیستمی، مانند خروجی محلی فرمانهای اسلش، بهشکل ردیفهای اعلان وسطچین و بدون آواتار نمایش داده میشوند.
عرض پیام گفتوگو
کاربران نمایشگرهای عریض میتوانند عرض رونوشت را در تنظیمات ← گفتوگو ←
عرض پیام تغییر دهند. این ترجیح در حافظه محلی همان مرورگر باقی میماند. قالبهای
پشتیبانیشده شامل طولها و درصدهای ساده مانند 960px یا 82% و نیز
عبارتهای عرض محدودشده min(...)، max(...)، clamp(...)، calc(...) و
fit-content(...) هستند.
دسترسی Tailnet (توصیهشده)
Tailscale Serve یکپارچه (ترجیحی)
Gateway را روی loopback نگه دارید و اجازه دهید Tailscale Serve آن را با HTTPS پروکسی کند:
openclaw gateway --tailscale servehttps://<magicdns>/ (یا gateway.controlUi.basePath پیکربندیشده خود) را باز کنید.
بهطور پیشفرض، درخواستهای Serve مربوط به رابط کنترل/WebSocket میتوانند با سرآیندهای هویت Tailscale (tailscale-user-login) احراز هویت شوند، مشروط بر اینکه gateway.auth.allowTailscale برابر با true باشد. OpenClaw با تفکیک نشانی x-forwarded-for از طریق tailscale whois و تطبیق آن با سرآیند، هویت را تأیید میکند و تنها زمانی این موارد را میپذیرد که درخواست با سرآیندهای x-forwarded-* متعلق به Tailscale به loopback رسیده باشد. برای نشستهای اپراتور رابط کنترل که دارای هویت دستگاه مرورگر هستند، این مسیر تأییدشده Serve همچنین رفتوبرگشت جفتسازی دستگاه را رد میکند؛ مرورگرهای بدون دستگاه و اتصالهای دارای نقش Node همچنان بررسیهای معمول دستگاه را دنبال میکنند. اگر میخواهید حتی برای ترافیک Serve نیز اعتبارنامههای صریحِ راز مشترک الزامی باشند، gateway.auth.allowTailscale: false را تنظیم کنید و سپس از gateway.auth.mode: "token" یا "password" استفاده کنید.
برای این مسیر ناهمگام هویت Serve، تلاشهای ناموفق احراز هویت برای یک IP کلاینت و محدوده احراز هویت یکسان، پیش از نوشتن محدودیت نرخ بهصورت ترتیبی اجرا میشوند. بنابراین، تلاشهای مجدد نادرست و همزمان از همان مرورگر ممکن است در درخواست دوم بهجای دو عدمتطابق ساده که بهطور موازی رقابت میکنند، retry later را نشان دهند.
اتصال به Tailnet + توکن
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"http://<tailscale-ip>:18789/ (یا gateway.controlUi.basePath پیکربندیشده خود) را باز کنید.
راز مشترک متناظر را در تنظیمات رابط کاربری جایگذاری کنید (بهصورت connect.params.auth.token یا connect.params.auth.password ارسال میشود).
HTTP ناامن
اگر داشبورد را از طریق HTTP ساده (http://<lan-ip> یا http://<tailscale-ip>) باز کنید، مرورگر در یک بافت ناامن اجرا میشود و WebCrypto را مسدود میکند. OpenClaw بهطور پیشفرض اتصالهای رابط کنترل بدون هویت دستگاه را مسدود میکند.
استثنای پشتیبانیشده برای حالت بدون دستگاه، احراز هویت موفق اپراتور رابط کنترل
از طریق gateway.auth.mode: "trusted-proxy" است. هیچ کلید پیکربندی
ماندگاری برای غیرفعالکردن هویت دستگاه وجود ندارد.
راهحل توصیهشده: از HTTPS (Tailscale Serve) استفاده کنید یا رابط کاربری را بهصورت محلی در https://<magicdns>/ (Serve) یا http://127.0.0.1:18789/ (روی میزبان Gateway) باز کنید.
نکته پروکسی قابلاعتماد
- احراز هویت موفق پروکسی قابلاعتماد میتواند نشستهای اپراتور رابط کنترل را بدون هویت دستگاه بپذیرد.
- این مورد به نشستهای رابط کنترل با نقش Node تسری نمییابد.
- پروکسیهای معکوس loopback روی همان میزبان همچنان شرایط احراز هویت پروکسی قابلاعتماد را برآورده نمیکنند؛ احراز هویت پروکسی قابلاعتماد را ببینید.
برای راهنمای راهاندازی HTTPS، به Tailscale مراجعه کنید.
سیاست امنیت محتوا
رابط کنترل با یک سیاست سختگیرانه img-src عرضه میشود: فقط داراییهای هممبدأ، نشانیهای data: و نشانیهای blob: تولیدشده بهصورت محلی مجاز هستند. نشانیهای راهدور http(s) و نشانیهای تصویر وابسته به پروتکل توسط مرورگر رد میشوند و هرگز درخواست شبکهای ایجاد نمیکنند.
در عمل:
- آواتارها و تصاویری که در مسیرهای نسبی ارائه میشوند (برای مثال
/avatars/<id>) همچنان نمایش داده میشوند؛ ازجمله مسیرهای آواتار احرازهویتشده که رابط کاربری دریافت و به نشانیهای محلیblob:تبدیل میکند. - نشانیهای درونخطی
data:image/...همچنان نمایش داده میشوند. - نشانیهای محلی
blob:که رابط کنترل ایجاد میکند همچنان نمایش داده میشوند. - آواتارهای پیشنمایش پیوند GitHub توسط Gateway از میزبان ثابت آواتار GitHub دریافت و بهصورت نشانیهای محدودشده
data:بازگردانده میشوند؛ مرورگر اپراتور هرگز با میزبان راهدور آواتار تماس نمیگیرد. - نشانیهای راهدور آواتار که فراداده کانال تولید میکند در کمککنندههای آواتار رابط کنترل حذف و با نشانواره/نشان داخلی جایگزین میشوند؛ بنابراین یک کانال در معرض نفوذ یا مخرب نمیتواند مرورگر اپراتور را وادار به دریافت تصاویر دلخواه از راه دور کند.
این قابلیت همیشه فعال است و قابلپیکربندی نیست.
احراز هویت مسیر آواتار
وقتی احراز هویت Gateway پیکربندی شده باشد، نقطه پایانی آواتار رابط کنترل به همان توکن Gateway مورد استفاده در سایر بخشهای API نیاز دارد:
GET /avatar/<agentId>تصویر آواتار را فقط به فراخوانندگان احرازهویتشده برمیگرداند.GET /avatar/<agentId>?meta=1نیز فراداده آواتار را طبق همین قاعده برمیگرداند.- درخواستهای احراز هویتنشده به هر دو مسیر رد میشوند (مطابق مسیر رسانه دستیار همرده)، بنابراین مسیر آواتار نمیتواند هویت عامل را روی میزبانهایی که در سایر بخشها محافظت شدهاند افشا کند.
- رابط کنترل هنگام دریافت آواتارها، توکن Gateway را بهصورت سرآیند bearer ارسال میکند و از نشانیهای blob احرازهویتشده استفاده میکند تا تصویر همچنان در داشبوردها نمایش داده شود.
اگر احراز هویت Gateway را غیرفعال کنید (در میزبانهای مشترک توصیه نمیشود)، مسیر آواتار نیز همانند سایر بخشهای Gateway بدون احراز هویت میشود.
احراز هویت مسیر رسانه دستیار
وقتی احراز هویت Gateway پیکربندی شده باشد، پیشنمایشهای رسانه محلی دستیار از یک مسیر دومرحلهای استفاده میکنند:
GET /__openclaw__/assistant-media?meta=1&source=<path>به احراز هویت معمول اپراتور رابط کنترل نیاز دارد؛ مرورگر هنگام بررسی دسترسپذیری، توکن Gateway را بهصورت سرآیند bearer ارسال میکند.- پاسخهای موفق فراداده شامل یک
mediaTicketکوتاهعمر و محدود به همان مسیر مبدأ دقیق هستند. - نشانیهای تصویر، صدا، ویدئو و سندی که مرورگر نمایش میدهد، بهجای توکن یا گذرواژه فعال Gateway از
mediaTicket=<ticket>استفاده میکنند. مجوز بهسرعت منقضی میشود و نمیتواند مبدأ دیگری را مجاز کند.
این کار نمایش رسانه را با عناصر رسانه بومی مرورگر سازگار نگه میدارد، بدون آنکه اعتبارنامههای قابلاستفاده مجدد Gateway در نشانیهای قابلمشاهده رسانه قرار گیرند.
پیوندهای تأیید
اعلانهای تأیید اپراتور میتوانند به سند تأیید مستقلی که در فضای نام رزروشده ${controlUiBasePath}/approve/{approvalId} ارائه میشود پیوند عمیق داشته باشند (برای مثال /approve/<approvalId>، یا /openclaw/approve/<approvalId> با یک مسیر پایه پیکربندیشده). نشانی در طول عمر تأیید ثابت است و میتوان آن را با خیال آسوده میان دستگاههای خودتان ارسال کرد: این نشانی تأیید را شناسایی میکند و هرگز آن را مجاز نمیکند.
- فضای نام تکبخشی
/approve/<approvalId>پیش از مسیرهای HTTP مربوط به Plugin برای همه روشهای HTTP توسط Gateway رزرو میشود؛ بنابراین یک مسیر Plugin هرگز نمیتواند روی سند تأیید سایه بیندازد یا آن را رهگیری کند. - بازکردن سند تأیید به همان احراز هویت Gateway مورد استفاده در سایر بخشهای رابط کنترل نیاز دارد (توکن/گذرواژه، هویت Tailscale Serve یا هویت پروکسی قابلاعتماد)؛ اعتبارنامهها هرگز بخشی از نشانی تأیید نیستند.
- وقتی ارائه رابط کنترل غیرفعال باشد، درخواستهای این فضای نام بهجای عبور به کنترلکنندههای Plugin،
404را برمیگردانند. - ورود به سیستم در یک سند تأیید فقط برای همان صفحه و موقتی است: انتخاب Gateway یا تنظیماتی را که رابط کنترل کامل در همان مرورگر ذخیره کرده است بازنویسی نمیکند.
Gateway فایلهای ایستا را از dist/control-ui ارائه میکند:
pnpm ui:buildپایه مطلق اختیاری (نشانیهای ثابت دارایی):
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:buildتوسعه محلی (سرور توسعه جداگانه):
pnpm ui:devسپس رابط کاربری را به نشانی WS مربوط به Gateway خود هدایت کنید (برای مثال ws://127.0.0.1:18789).
صفحه خالی رابط کنترل
اگر مرورگر یک داشبورد خالی بارگذاری میکند و DevTools خطای مفیدی نشان نمیدهد، ممکن است یک افزونه یا اسکریپت محتوای زودهنگام مانع ارزیابی برنامه ماژول JavaScript شده باشد. صفحه ایستا شامل یک پنل بازیابی HTML ساده است که اگر <openclaw-app> پس از راهاندازی ثبت نشده باشد ظاهر میشود.
پس از تغییر محیط مرورگر، از عمل Try again در پنل استفاده کنید یا بعد از بررسی موارد زیر صفحه را بهصورت دستی دوباره بارگذاری کنید:
- افزونههایی را که به همه صفحهها کد تزریق میکنند غیرفعال کنید، بهویژه افزونههایی با اسکریپتهای محتوای
<all_urls>. - یک پنجره خصوصی، نمایه مرورگر پاک یا مرورگری دیگر را امتحان کنید.
- Gateway را در حال اجرا نگه دارید و پس از تغییر مرورگر، همان نشانی داشبورد را بررسی کنید.
اشکالزدایی/آزمایش: سرور توسعه + Gateway راهدور
رابط کنترل از فایلهای ایستا تشکیل شده است؛ مقصد WebSocket قابلپیکربندی است و میتواند با مبدأ HTTP متفاوت باشد. این قابلیت زمانی مفید است که بخواهید سرور توسعه Vite را بهصورت محلی اجرا کنید اما Gateway در جای دیگری اجرا شود.
راهاندازی سرور توسعه رابط کاربری
pnpm ui:devبازکردن با gatewayUrl
http://localhost:5173/?gatewayUrl=ws%3A%2F%2F<gateway-host>%3A18789احراز هویت یکباره اختیاری (در صورت نیاز):
http://localhost:5173/?gatewayUrl=wss%3A%2F%2F<gateway-host>%3A18789#token=<gateway-token>نکتهها
gatewayUrlپس از بارگذاری در localStorage ذخیره و از نشانی حذف میشود.- اگر یک نقطه پایانی کامل
ws://یاwss://را از طریقgatewayUrlارسال میکنید، مقدار را بهشکل URL کدگذاری کنید تا مرورگر رشته پرسوجو را بهدرستی تجزیه کند. - در صورت امکان،
tokenباید از طریق قطعه نشانی (#token=...) ارسال شود. قطعهها به سرور ارسال نمیشوند و درنتیجه از نشت در گزارش درخواست و Referer جلوگیری میشود. پارامترهای قدیمی پرسوجوی?token=همچنان برای سازگاری یکبار وارد میشوند، اما فقط بهعنوان مسیر جایگزین، و بلافاصله پس از راهاندازی حذف میشوند. passwordفقط در حافظه نگهداری میشود.- وقتی
gatewayUrlتنظیم شده باشد، رابط کاربری به اعتبارنامههای پیکربندی یا محیط بازنمیگردد.token(یاpassword) را صریحاً ارائه کنید؛ نبود اعتبارنامههای صریح یک خطا است. - وقتی Gateway پشت TLS قرار دارد (Tailscale Serve، پروکسی HTTPS و غیره)، از
wss://استفاده کنید. gatewayUrlفقط در یک پنجره سطحبالا پذیرفته میشود (نه بهصورت تعبیهشده) تا از کلیکربایی جلوگیری شود.- استقرارهای عمومی و غیر-loopback رابط کنترل باید
gateway.controlUi.allowedOriginsرا صریحاً تنظیم کنند (مبدأهای کامل). بارگذاریهای خصوصی هممبدأ LAN/Tailnet از loopback، RFC1918/link-local، .local، .ts.netیا میزبانهای Tailscale CGNAT بدون فعالکردن مسیر جایگزین سرآیند Host پذیرفته میشوند. - راهاندازی Gateway ممکن است مبدأهای محلی مانند
http://localhost:<port>وhttp://127.0.0.1:<port>را براساس اتصال و درگاه مؤثر زمان اجرا مقداردهی اولیه کند، اما مبدأهای مرورگر راهدور همچنان به ورودیهای صریح نیاز دارند. - بهجز برای آزمایش محلی کاملاً کنترلشده، از
gateway.controlUi.allowedOrigins: ["*"]استفاده نکنید؛ معنای آن اجازهدادن به هر مبدأ مرورگر است، نه «تطبیق با هر میزبانی که استفاده میکنم». gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueحالت مسیر جایگزین مبدأ براساس سرآیند Host را فعال میکند، اما این یک حالت امنیتی خطرناک است.
{ gateway: { controlUi: { allowedOrigins: ["http://localhost:5173"], }, },}جزئیات راهاندازی دسترسی از راه دور: دسترسی از راه دور.
مرتبط
- داشبورد — داشبورد Gateway
- بررسیهای سلامت — پایش سلامت Gateway
- TUI — رابط کاربری ترمینال
- WebChat — رابط گفتوگوی مبتنی بر مرورگر