Get started
بازطراحی فرایند راهاندازی اولیه
برنامه پیادهسازی بازطراحی راهاندازی اولیه
سند زنده. این صفحه بازطراحی راهاندازی اولیه متولی را در سطح پیادهسازی دنبال میکند و با نهاییشدن هر مرحله بهروزرسانی میشود. وقتی آخرین مرحله ادغام شود، این صفحه بهعنوان راهنمای کاربرمحور راهاندازی اولیه بازنویسی میشود و به پیمایش مستندات میپیوندد. تا آن زمان، عمداً در
docs.jsonقرار ندارد.
هدف نهایی
یک کاربر غیرفنی openclaw onboard را وارد میکند (یا برنامه را باز میکند) و با
یک حضور مکالمهای واحد روبهرو میشود — OpenClaw، متولی سیستم («متولی» فقط
نام داخلی است؛ کاربر همیشه «OpenClaw» را میبیند) — که هوش مصنوعی او را پیدا میکند،
همهچیز را با پیشفرضهای اعلامشده بهجای پرسش تنظیم میکند، عامل او را در قالب لحظهای
مشهود برای شکلگیری هویت متولد میکند و از آن پس برای همیشه بهعنوان
مراقب سیستم در دسترس میماند. بهطور پیشفرض جادویی، با یک مرز رضایت و بدون بنبست.
اصول طراحی (تصمیمگیری شدهاند؛ بیدلیل دوباره به بحث گذاشته نشوند):
- پیشفرضهای اعلامشده با امکان بازگردانی آسان جایگزین پرسشهای مسدودکننده میشوند. تنها الزام قطعی، استنتاجِ کارآمد است؛ هر چیز دیگر یک پیشنهاد است.
- پرسش صفر مرز رضایت است: «دسترسی کامل» (توصیهشده) یعنی کشف بیصدا و خودکار انجام میشود؛ «ابتدا بپرس» همه انواع کشف — اسکن هوش مصنوعی، اسکن برنامهها و اسکن منابع حافظه — را به یک تأیید صریح وابسته میکند و مسیری کاملاً دستی نیز فراهم است که هرگز اسکن نمیکند.
- مکالمه بهعنوان رابط کاربری با هوشمندی تدریجی: سطح متولی پیش از کارکردن هرگونه هوش مصنوعی وجود دارد (گفتوگوی اسکریپتشده)، بهمحض تأیید یک مسیر از مدل پشتیبانی میگیرد و این موضوع را آشکارا اعلام میکند. هرگز تظاهر به هوشمندی نمیکند: ورودی متنی آزاد پیش از تأیید مسیر، با پیام محترمانه «بگذارید ابتدا مغزم را راه بیندازم» پاسخ داده میشود.
- تولد یک آیین است: همان رشته، تعویض آواتار، عامل خودش را نامگذاری میکند و چهرهاش را خودش برمیگزیند. متولی سلسلهمراتب را یکبار آموزش میدهد: «درباره سیستم از من بپرسید، یا فقط از عامل خود بپرسید — او منتقل میکند.»
- اعتماد بر اساس منبع سطحبندی میشود: ورودیهای کاتالوگ رسمی ممکن است از پیش انتخاب شوند؛ Skills شخص ثالث ClawHub صرفنظر از رتبهبندی مدل هرگز از پیش انتخاب نمیشوند و برچسب آنها اعلام میکند که کد ناشر را نصب میکنند.
- نصبهای پیکربندیشده مقدساند: اجرای دوباره راهاندازی اولیه یک مرحله تأیید است. هرگز تنظیمات را دوباره اعمال نمیکند و سرویس Gateway را هرگز بازراهاندازی نمیکند.
- ترمینال مسیر جایگزین است، نه یک پرسش: وقتی Gateway در دسترس است، داشبورد مرورگر ترجیح داده میشود؛ هرگز پرسیده نمیشود «ترمینال یا مرورگر؟».
- مدلهای ضعیف سطحی مختصرشده دریافت میکنند (
localModelLeanخودکار)، که با واژههای ساده توضیح داده میشود — هرگز با اصطلاحات ابزارها، حالت کد یا پنجرههای زمینه بیان نمیشود.
جریان منتشرشده فعلی (پس از مراحل 1 تا 3)
openclaw onboard در یک نصب تازه macOS، در مسیر موفق — در مجموع چهار بار Enter:
- یادداشت امنیتی ← یک Enter برای تأیید (ذخیره میشود؛ دیگر هرگز پرسیده نمیشود).
- پرسش صفر: «چگونه همهچیز را تنظیم کنم؟» — دسترسی کامل (توصیهشده)
یا ابتدا بپرس. انتخاب در
wizard.accessModeذخیره میشود؛ در اجرای مجدد، انتخاب ذخیرهشده پیشفرض است. حالت محافظتشده + «پیکربندی دستی» بدون هیچگونه اسکن به انتخابگر ارائهدهنده میرسد و اسکن منابع حافظه را نیز رد میکند. - نمایش کشف: CLIهای کدنویسی، کلیدهای محیطی و زمانهای اجرای محلی را شناسایی میکند؛ هنگام یافتن عاملهای کدنویسی توضیحی کوتاه میدهد؛ نامزدها را بهترتیب بهصورت زنده آزمایش میکند و شکستها را بیسروصدا در یک خط خلاصه گردآوری میکند (جزئیات پشت «مشاهده گزینههای دیگر»). نخستین مسیر کارآمد بهعنوان پیشفرض اعلام میشود و مسیری تککلیدی به انتخابگر کامل وجود دارد؛ کاوش و ردکردن، مسیر کارآمد را حفظ میکند.
- پیشنهاد واردکردن حافظه (Claude Code / Codex / Hermes)، که در صورت ردشدن کشف از آن صرفنظر میشود.
- فقط نصبهای تازه: برنامه استاندارد تنظیمات بهطور خودکار اعمال میشود (فضای کاری، سرویس Gateway، نشستها — همان برنامهای که «بله» مکالمهای اجرا میکند). نصبهای پیکربندیشده پیام «از قبل تنظیم شده است» را نمایش میدهند و هرگز به سرویس دست نمیزنند.
- توصیههای برنامه: برنامههای نصبشده که مدل تأییدشده
با کاتالوگهای رسمی + ClawHub تطبیق داده است؛ Pluginهای رسمی کانال
از پیش علامتخوردهاند و Skills شخص ثالث با برچسب هشدار نیازمند انتخاباند. قابل ردکردن؛
کلید قطع
wizard.appRecommendations. - تولد: وقتی Gateway در دسترس باشد، تحویل به مرورگر باز میشود (GUI) یا
نشانی URL داشبورد نمایش داده میشود (بدون رابط گرافیکی/SSH) و تا اتصال Control UI
منتظر میماند — «داشبورد متصل شد — ادامه در مرورگر.» در غیر این صورت، یا
با
--tui، TUI ترمینال با پیام تولد آغازین اولیه باز میشود و عامل خودش را معرفی میکند.
راهاندازی اولیه Gateway راهدور، تحویل مکالمهای قدیمی خود را حفظ میکند
(handoffMode: "chat")؛ تنظیمات باید روی Gateway راهدور اعمال شوند.
مراحل
| # | مرحله | سطح | وضعیت |
|---|---|---|---|
| 1 | توصیههای Plugin بر اساس برنامههای نصبشده (اسکن، نامزدها، تطبیقدهنده هوش مصنوعی، مرحله جادوگر، فرمان Node device.apps) |
CLI کلاسیک + هدایتشده | ادغامشده (#109668) |
| 2 | ستون فقرات متولی CLI (پرسش صفر، نمایش کشف، اعمال خودکار + تولد) | CLI هدایتشده | ادغامشده (a83ed13204f1) |
| 3 | تحویل با اولویت مرورگر (تشخیص نشست GUI، انتظار برای اتصال داشبورد، TUI بهعنوان مسیر جایگزین) | CLI ← وب | ادغامشده (#110054) |
| 4 | سطح وب متولی (کارتهای گزینه، فیلد نوعدار question در openclaw.chat، بازتاب مراحل جادوگر، تحویل اجرای نخست) |
Control UI | ادغامشده (#110141، #110242) |
| 5 | تولد و راهاندازی اولیه (ذخیره توصیهها با معنای یکبار اجرا، توالی تولد با نامگذاری خودکار، تحویل خودکار تولد پس از تنظیم تازه؛ نردبان آواتار به تعویق افتاده) | راهاندازی عامل | ادغامشده (#110173، #110331) |
| 6 | حضور متولی PR1 (ورودی سنجاقشده نوار کناری، «از OpenClaw بپرسید» در تنظیمات، خوشامدگویی مراقب با ظاهر عادی؛ توضیح رویداد و فراخوانی کانال در PR2) | وب + کانالها | ادغامشده (#110269) |
| 7 | تابآوری (دسترسی به متولی هنگام خرابی پیکربندی، بازیابی سطح جزئی، پزشک خودکار) | Gateway | پیگیری |
یادداشتهای پیادهسازی هر مرحله
مرحله 1 — توصیههای برنامه (PR #109668)
- اسکنر:
src/infra/installed-apps.ts(شمارش macOS بدون نیاز به TCC؛ بستههای پیوند نمادین.appرا دنبال میکند). - نامزدها: کاتالوگهای رسمی + جستوجوی ClawHub، بودجه کلی 20s، کاهش کارکرد
آفلاین بهصورت تدریجی تا نامزدهای صرفاً کاتالوگی. ورودیهای کاتالوگ، مانیفستهای بسته
بدون
idدر سطح بالا هستند — نامزدها با شناسه Plugin حلشده کلیدگذاری میشوند (در برابر کاتالوگهای بستهبندیشده واقعی آزمون رگرسیون شده است؛ کلیدگذاری باentry.idزمانی کل کاتالوگ را به یک مورد فروکاست و همه توصیههای رسمی را حذف کرد). - تطبیقدهنده هوش مصنوعی: یک تکمیل در مسیر تأییدشده
(
src/system-agent/setup-app-recommendations.ts)؛ بدون نگاشت دستچینشده شناسه بسته — مدل همپوشانیهای تصادفی نام را رد میکند. خروجی به بودجهmaxTokensخود مدل حلشده محدود میشود (لایه جریان وقتی سقف صریحی ارسال نشده باشد آن را اعمال میکند). - محافظ زنجیره تأمین: متن فهرست ClawHub تحت کنترل ناشر است و به اعلان تطبیقدهنده میرسد، بنابراین یک فهرست میتواند خود را «توصیهشده» معرفی کند. فقط ورودیهای کاتالوگ رسمی ممکن است از پیش انتخاب شوند؛ Skills متعلق به ClawHub همیشه به علامتزدن صریح نیاز دارند و با عبارت «Skill شخص ثالث ClawHub؛ کد ناشر خود را نصب میکند» برچسبگذاری میشوند.
- فرمان Node
device.apps(میزبان Node مبتنی بر TS، همترازی پاکت Android)، اشتراکگذاری بهطور پیشفرض خاموش است؛ کلید قطع Gateway wizard.appRecommendations. - ارائه در جادوگر کلاسیک و جریان متولی هدایتشده انجام میشود
(
src/wizard/setup.app-recommendations.ts)؛ انتقال هدف به انتهای راهاندازی اولیه همچنان برای مرحله 5 باقی میماند (سرویس از قبل یک منبع موجودی تزریقپذیر میپذیرد). معنای یکبار اجرا (پیشنهاد فقط تا زمان پذیرش، اسکن ذخیرهشده) نیز همراه با مخزن مرحله 5 ارائه میشود؛ در حال حاضر اجرای مجدد دوباره پیشنهاد میدهد. - همچنین اصلاح شد: اعلانهای سفارشی
completeSetupInferenceدیگر سقف خروجی 32 توکنیِ کاوشگر تأیید را به ارث نمیبرند (SETUP_INFERENCE_TEST_MAX_TOKENSفقط برای کاوشگر «با OK پاسخ بده» اعمال میشود).
مرحله 2 — ستون فقرات متولی CLI (PR #109841)
- بازطراحی جریان در
src/commands/onboard-guided.ts؛ راهاندازی اولیه Gateway راهدور تحویل گفتوگوی قدیمی خود را از طریقhandoffMode: "chat"حفظ میکند. - پرسش صفر
wizard.accessMode("full" | "guarded") را ذخیره میکند؛ اجرای مجدد بهطور پیشفرض از انتخاب ذخیرهشده استفاده میکند (پذیرش پیشفرض هرگز نمیتواند حالت محافظتشده را بیصدا به دسترسی کامل تنزل دهد). حالت محافظتشده + دستی ازlistManualSetupInferenceOptionsاستفاده میکند (فقط پیکربندی/مانیفستها، بدون کاوش) و اسکن منابع حافظه را رد میکند. - کشف: گردآوری بیصدای شکستها (یک خط خلاصه؛ جزئیات پشت «مشاهده گزینههای دیگر»)، توضیح کوتاه عامل کدنویسی، پیشفرض مسیر اعلامشده. شمار نشستها در این توضیح تا زمان وجود یک درز کمهزینه برای شمارش نشست به تعویق افتاده است (فعلاً فقط کیفی).
- نصبهای تازه:
applySystemAgentSetup(«بله» مکالمهای قطعی)، سپس تولد از طریقlaunchTuiCliکه با پیام راهاندازی اولیه مقداردهی شده است. نصبهای پیکربندیشده (پیکربندی از پیش موجود مدل یا Gateway — مُهرهای زمانی جادوگر چیزی را ثابت نمیکنند، زیرا با configure/doctor مشترکاند): فقط تأیید — بدون اعمال و بدون بازراهاندازی سرویس Gateway. شکست در اعمال به گفتوگوی مکالمهای بازمیگردد.
مرحله 3 — تحویل با اولویت مرورگر (PR #110054، ادغامشده)
src/commands/onboard-browser-handoff.tsمسئول تشخیص صرفِ نشست گرافیکی است (SSH_CONNECTION/SSH_TTY؛DISPLAY/WAYLAND_DISPLAYدر Linux) و انتظار 60ثانیهای GUI / 300ثانیهای SSH را مدیریت میکند. راهاندازی هدایتشده درحالحاضر واگذاری را فقط در macOS فعال میکند؛--tuiو سایر پلتفرمها مسیر خروجی ترمینال را حفظ میکنند. فعالسازی Linux/Windows در پیگیری بعدی انجام میشود.- پیوندهای داشبورد از همان تابعهای کمکی
resolveAdvertisedControlUiLinks،resolveLocalControlUiProbeLinksوbuildOnboardingControlUiUrlنهاییسازی کلاسیک استفاده میکنند. راهاندازی مرورگر از تابع کمکی مشترکopenUrlاستفاده میکند. - آمادگی، RPC موجود
system-presenceرا بهصورت یک کلاینت loopback در حالت CLI که راز مشترک پیکربندیشده را ارائه میکند پایش میکند — همان مسیر مورداعتمادی که همهٔ فرمانهایopenclawاستفاده میکنند. یک کلاینت Control UI با احراز هویت مشترک خام در Gatewayهای SecretRef با پیام «هویت دستگاه الزامی است» رد میشود. پیشبررسی دسترسپذیری همان مقصد (و راز) حلقهٔ انتظار را برطرف میکند، بنابراین دروازه و انتظار هرگز نمیتوانند دربارهٔ احراز هویت اختلاف داشته باشند. واگذاری تنها زمانی کامل میشود که یک ردیف حضور متصلopenclaw-control-ui/webchatنسبت به خط مبنای پیش از راهاندازی جدید باشد (داشبوردی که از قبل باز است نمیتواند آن را کامل کند). gateway.controlUi.enabled: falseپیش از نمایش هر URL مسیر را کوتاه میکند.- بهصورت سرتاسری در برابر یک Gateway ایزوله با همان پیکربندی اثبات شد: چاپ URL ← اتصال واقعی مرورگر ← «داشبورد متصل شد — در مرورگر خود ادامه دهید» ← بدون مسیر خروجی ترمینال. توقف پیشین بر اثر «عدم تطابق توکن» یک مصنوع مهار آزمون بود — راهنمای آزمون زیر را ببینید.
فاز 4 — سطح متولی وب (ادغامشده: #110141، #110242)
- صفحهٔ
/custodianرویopenclaw.chatبا مؤلفهٔ کارت گزینه (2-4 کارت، حداکثر یک مورد پیشنهادی، همیشه قابل رد کردن)؛ پوستهٔ راهاندازی از طریق?onboarding=1؛ تکمیل اجرای نخست تنظیم مدل، کار را به آن واگذار میکند. - پرسشهای ساختاریافته یک فیلد افزایشی نوعدار
questionرویSystemAgentChatResultهستند (متنreplyبرای هر گزینه؛ نثر برای برنامهٔ macOS/TUI همیشه مستقل میماند). تولیدکنندگان: هر دو گونهٔ خوشامدگویی راهاندازی و مراحل انتخاب/تأیید ویزارد میزبانیشده با 2-4 گزینهٔ بسته — ویزاردهای واقعی کانال بهشکل کارت رندر میشوند. راهحل موقت نشانگر رشتهای PR1 حذف شد. - مالکیت نشست به URL دروازه + تمام اعتبارنامههای ارائهشده محدود میشود (توکن، گذرواژه، توکن bootstrap، توکن ذخیرهشدهٔ دستگاه — در افتهای گذرای hello پایدار میماند)؛ نوبتهای ناموفق کاربر هرگز قابل بازپخش نیستند؛ ورودی حساس عیناً ارسال و در رونوشت پوشانده میشود.
فاز 5 — خروج و bootstrap (ادغامشده: #110173، #110331)
- متولی یک عامل بینام ایجاد میکند (فراخوانی ابزار)؛ bootstrap عامل با
نامگذاری خود آغاز میشود. PR1 این آیین را به سه ضرب محدود میکند (نام ← خط
روح ← پرسش Skills) و نردبان آواتار خودترسیمشده/تولید تصویر
(نامزدهای تولیدشده توسط مدل ← نشانهای ازپیشتنظیمشده ← حفظ لوگو) را به پیگیری بعدی
موکول میکند. همان رشته، تعویض آواتار؛ نشان چنگال برای متولی محفوظ میماند. هویت
موردتوافق دو بار ماندگار میشود: در
IDENTITY.md/SOUL.md(آنچه عامل میخواند) و از طریقopenclaw agents set-identity(آنچه کانالها و UI نمایش میدهند). - پیشنهادها (سرویس فاز 1، پویش ذخیرهشده با معنای یکبار اجرا) بهعنوان
آخرین گام bootstrap پیش از حذف فایل bootstrap ارائه میشوند: «مجموعهٔ حداقلی
یا حداکثر راحتی؟» bootstrap پیشنهاد ذخیرهشده را از طریق
openclaw onboard recommendations --jsonمیخواند (فقط شناسههای نصب مات) و پس از رسیدگی به انتخاب، دریافت آن را تأیید میکند تا هرگز دوباره نپرسد. دکمههای اتصال کانال برای هر کانال راهنمای تنظیم دارند؛ عامل اعتبارنامهها را محاورهای جمعآوری میکند و نوشتن پیکربندی را به متولی میسپارد («در حال پرسیدن از OpenClaw…» عبارت معیار است). - خودآموزی پرسیده میشود، نه اعلام، و همزمان رضایت برای کارگاه Skills نیز محسوب میشود؛ اعتماد انتشار، پویش، راستیآزمایی و بررسیهای یکپارچگی ClawHub را همراه با هشدار کد ناشر توضیح دهید — هرگز القا نکنید که همهٔ انتشارها امضا شدهاند.
- خروج خودکار عرضه شد: اعمال تنظیمات نصب تازه، خروج را اعلام میکند و
واگذار میکند (TUI ترمینال /
open-agentبرای کلاینتهای Gateway)؛ صفحهٔ وب با پیشنویس ازپیشپرشدهٔ «بیدار شو، دوست من!» وارد گفتوگوی عامل میشود. واگذاری فقط پس از راستیآزمایی پاکِ پس از نوشتن فعال میشود. ارائهٔ پیشنهاد در صورت صفر بودن عاملها پس از حذف (بهجای خودکارسازی) همچنان پرداخت نهایی پیگیری بعدی است.
فاز 6 — حضور متولی (PR1 ادغامشده: #110269؛ توضیحات/فراخوانی در PR2 هستند)
- عرضهشده در PR1: ورودی نوار کناری «OpenClaw» که بهطور پیشفرض سنجاق شده است (پروفایلهای تازه؛
کاربران موجود سنجاقهای ذخیرهشده را نگه میدارند و از طریق سفارشیسازی/More به آن دسترسی دارند)، «از
OpenClaw بپرسید» بهعنوان نخستین ورودی تنظیمات، و بازدیدهای
/custodianبا پوستهٔ عادی که درخواست خوشامدگویی سرپرست را میدهند (بدون گونهٔ خوشامدگویی راهاندازی)، و «خروج از تنظیمات» فقط در حالت راهاندازی رندر میشود. یک پنل درونخطی و متصل تنظیمات به استخراج مشترک نمای مکالمه نیاز دارد (پیگیری بعدی). - توضیحات واکنشی به رویداد با حفاظهای ضد Clippy: فقط تغییرات مهم یا ناموفق، حداکثر یکبار در هر بازدید تنظیمات مگر اینکه درخواست شود. همان درز رویداد، متولی را بعداً به صدای احراز هویت تنزلیافته یا کانالهای خراب تبدیل میکند.
- کانالها: در استفادهٔ روزمره نامرئی (عامل واسطه میشود)؛ با فراخوانی صریح و در رویدادهای ازکارافتادن عامل در همان رشته قابل دسترسی است، با نام و آواتار چنگال خود در جاهایی که پلتفرم اجازه میدهد.
- مدل ضعیف هنگام تنظیم شناسایی شد:
localModelLeanبهطور خودکار تنظیم میشود و متولی آن را با کلمات ساده همراه با پیشنهاد ارتقا بیان میکند. - متولی نام مستعار داخلی خود را میداند («بعضیها من را متولی صدا میزنند — OpenClaw هم خوب است») و همیشه عامل را با نام خطاب میکند.
فاز 7 — تابآوری (پیش از ساخت به تصمیم مالک نیاز دارد)
طرح اولیه — «متولی باید فارغ از میزان خرابی پیکربندی قابل دسترسی باشد» — با خطمشی امنیتی مخزن در تضاد است: راهنمای ریشه بیان میکند که Gateway وقتی پیکربندی از نظر ساختاری نامعتبر باشد از راهاندازی خودداری میکند و فقط خرابیهای مالک SecretRef به قابلیتهای پیکربندیشده اما دردسترسنبودنی تنزل مییابند. ارائهٔ هر سطحی از یک پیکربندی نامعتبر یک تغییر خطمشی است، نه جزئیات پیادهسازی. دو دامنه وجود دارد، یکی را انتخاب کنید:
- گزینهٔ A (پیشنهادی، منطبق با خطمشی): doctor خودکار در سمت CLI. وقتی
راهاندازی Gateway یا CLI بهدلیل یک پیکربندی نامعتبر با شکل شناختهشده شکست میخورد، CLI اجرای
openclaw doctor --fixرا پیشنهاد میدهد (یا با رضایت اجرا میکند)، سپس یکبار دوباره تلاش میکند و بهروشنی گزارش میدهد. رفتار Gateway تغییر نمیکند؛ متولی از طریق مسیر موجود SecretRef تنزلیافته و ترمینال قابل دسترسی میماند. - گزینهٔ B (نیازمند تأیید صریح مالک + بازبینی امنیتی): حالت سطح حداقلی Gateway. در پیکربندی از نظر ساختاری نامعتبر، سطحی قفلشده راهاندازی کنید که فقط مکالمهٔ متولی و کنشهای doctor را ارائه دهد. این کار قرارداد راهاندازی شکستبسته را بازنویسی میکند و باید پیش از هرگونه کدنویسی، سازوکار محافظت ورودی خود را تعریف کند.
پیگیریهای باقیمانده از فازهای 4-6 (ردیابیشده، بدون زمانبندی): نردبان آواتار/تولید تصویر
برای خروج؛ رندر فیلد نوعدار question در برنامهٔ macOS؛ یک
پنل درونخطی و متصل تنظیمات برای متولی (نیازمند استخراج مشترک نمای مکالمه)؛
توضیحات واکنشی به رویداد و فراخوانی کانال/بازیابی هنگام ازکارافتادن عامل
(PR2 فاز 6)؛ localModelLean خودکار برای مدلهای ضعیف؛ اینکه آیا
سنجاقهای ذخیرهشدهٔ نوار کناری کاربران موجود باید ورودی OpenClaw را بپذیرند.
راهنمای آزمون و ادغام (بهسختی بهدستآمده؛ پیش از فازهای 4-6 بخوانید)
-
OPENCLAW_STATE_DIRسرویس Gateway را ایزوله نمیکند. برچسب LaunchAgent (ai.openclaw.gateway) در سطح ماشین سراسری است: آزمون راهاندازی نصب تازه با دایرکتوری وضعیت ایزوله، سرویس واقعی ماشین را بازنویسی و بازراهاندازی خواهد کرد (اسکریپتهای پوششی درون دایرکتوری ایزوله قرار میگیرند؛ راهاندازی بعدی سرویس پس از پاکسازی آن دایرکتوری خراب میشود). پس از هر آزمون نصب تازه، باopenclaw gateway install --force && openclaw gateway restartاز محیط واقعی بازیابی کنید و plist را راستیآزمایی کنید. پیگیری محصول: برچسبهای سرویس محدود به دایرکتوری وضعیت، یا تشخیص سرویس بیگانه توسط راهاندازی. -
مهار سرتاسری ایمن: پیکربندی ایزوله را از قبل با یک بخش
gatewayپر کنید (تا راهاندازی مسیر نصب پیکربندیشده را طی کند و هرگز سرویس را لمس نکند) وopenclaw gateway runرا بهصورت فرایند سادهٔ پیشزمینه روی یک درگاه آزاد با توکن ساده اجرا کنید. آن مهار، حلقهٔ فاز 3 را از جمله اتصال واقعی مرورگر اثبات کرد. -
مسیرهای احراز هویت بر اساس هویت کلاینت متفاوتاند، نه فقط اعتبارنامهها. حضور و سایر خواندنهای اپراتور از یک کلاینت loopback در حالت CLI با اعتبارنامههای همان پیکربندی استفاده میکنند. Gatewayهای دارای احراز هویت توکنی به راز مشترک نیاز دارند؛ Gatewayهای SecretRef/none میتوانند بدون توکن به احراز هویت loopback مورداعتماد برگردند. یک کلاینت مرورگر با هویت Control UI به هویت دستگاه یا مجوز loopback در زمینهٔ امن نیاز دارد. کاوشگری که در برابر Gateway ارائهدهندهٔ یک پیکربندی متفاوت احراز هویت میکند (دام LaunchAgent را ببینید) با «عدم تطابق توکن» شکست میخورد — آن مصنوع برای مدتی فاز 3 را متوقف کرد.
-
کاوشگرهای تکمیل:
runSetupInferenceTestکاوشگر راستیآزمایی را به 32 توکن خروجی محدود میکند؛ promptهای سفارشی این محدودیت را دور میزنند و باmaxTokensخود مدل محدود میشوند. مدلهای استدلالی ابتدا آن بودجه را با استدلال پنهان مصرف میکنند — نوبت با متن خالی معمولاً یعنی بودجه همانجا تمام شده است. -
ادغام عامل به CI میزبانیشدهٔ exact-head نیاز دارد. گردشکار سنگین
CIممکن است هنگام بار سازمان روی pushها در صف قرار نگیرد؛ راهحل جایگزین نگهدارنده، dispatch دروازهٔ انتشار روی شاخهٔ PR است:bash gh workflow run ci.yml --ref <branch> -f target_ref=<head-sha> -f release_gate=true -f pull_request_number=<pr>اجرا باید روی مرجع شاخه باشد تا
head_shaتطابق داشته باشد، و عنوان بهCI release gate <sha>تبدیل شود کهscripts/verify-pr-hosted-gates.mjsآن را میپذیرد. سپسscripts/prرا طبق معمول آماده/ادغام کنید. -
دروازههایی که CI فراتر از آزمونهای متمرکز اعمال میکند: نگاشت مستندات (
pnpm docs:map:genپس از افزودن هر صفحهٔ مستندات)، oxlint (no-map-spread،max-lines— فایلها را تقسیم کنید، هرگز سرکوب نکنید)،check:test-types، کد مردهٔ knip (فقط آنچه تولید مصرف میکند صادر کنید؛ آزمونها را از APIهای عمومی عبور دهید)، و طبقهبند شارد آزمون زنده (test/scripts/test-live-shard.test.tsباید هر*.live.test.tsجدید را فهرست کند).
گزارش تصمیمها
- اسکن جادویی با کلید توقف، نه با رویکرد اولرضایت (مرحله 1؛ خروجی پایدار پیش از اسکن، استفاده از مدل و ClawHub را افشا میکند و یادداشت نتایج نیز آن را تکرار میکند).
- مسیر عمودی کامل شامل فرمان Node
device.apps(مرحله 1). - Skills شخص ثالث ClawHub هرگز از پیش انتخاب نمیشوند و با برچسب نصب کد ناشر مشخص میشوند؛ ورودیهای رسمی ممکن است از پیش علامتخورده باشند (مرحله 1، وضعیت امنیتی عرضهشده).
- دو کارت دسترسی، نه سه کارت؛ رضایت از ابتدا در انتخاب گنجانده شده است (مرحله 2).
- بازشدن خودکار همراه با اعلان، نه یک دکمه مسدودکننده (مراحل 2/5).
- اول مرورگر: بازشدن در ترمینال گزینه جایگزین است و هرگز پرسش «ترمینال یا مرورگر؟» مطرح نمیشود (مرحله 3).
- متولی در کانال حضور دارد (فراخوانی + بازیابی)، نه اینکه فقط در وب/CLI در دسترس باشد (مرحله 6).
- بازشدن در همان رشته و با تعویض آواتار رخ میدهد؛ پس از تکمیل، برنامه به رابط کاربری معمول منتقل میشود (مرحله 5).
- بخش تنظیمات نام «تنظیمات» را حفظ میکند؛ متولی بهجای جایگزینکردن آن، در همانجا (و در نوار کناری) قرار میگیرد (مرحله 6).
- کارتهای گزینه محدودند: 2-4 گزینه، دقیقاً یکی توصیهشده و همواره قابل ردکردن؛ همان مؤلفه هم برای راهاندازی اولیه و هم برای ابزار پرسش عامل بهکار میرود (مرحله 4).
- «در حال پرسیدن از OpenClaw…» اصطلاح متعارف واگذاری است؛ شخصیتها میتوانند رنگوبویی بیفزایند، اما روایت ابزار ساده میماند (مرحله 5).
- متن روبهکاربر هنگام توضیح کوتاهسازی برای مدل ضعیف، هرگز از عبارتهای «حالت کد»، «ابزارها» یا «پنجره زمینه» استفاده نمیکند (مرحله 6).
شکافهای شناختهشده و پیگیریها
- برچسب LaunchAgent به دایرکتوری وضعیت محدود نیست (مشکل آزمایشی بالا؛ همچنین یک شکاف واقعی محصول در حالت چندنمونهای).
- اجرای فقطیکباره توصیهها و اسکن ذخیرهشده (مرحله 5)؛ اجرای مجدد در حال حاضر آنها را دوباره پیشنهاد میکند.
- واگذاری به مرورگر فقط در macOS انجام میشود؛ فعالسازی Linux/Windows در انتظار است.
- شوخی مربوط به تعداد نشستها کیفی است؛ شمارشها به یک رابط کمهزینه برای شمارش نشست نیاز دارند.
- واگذاری به مرورگر به داشبورد معمولی میرسد؛ پیوند عمیق متولی در حالت راهاندازی اولیه با مرحله 4 ارائه میشود.