macOS companion app
نوار منو
چه چیزی نمایش داده میشود
- وضعیت فعلی کار عامل در نماد نوار منو و نخستین ردیف وضعیت منو نمایش داده میشود.
- هنگام فعال بودن کار، وضعیت سلامت پنهان است؛ پس از بیکار شدن همهٔ نشستها دوباره نمایش داده میشود.
- یک مورد ریشهای با عنوان «زمینه» بهجای گسترش نشستهای اخیر در منوی ریشه، زیرمنویی شامل آنها باز میکند.
- یک بخش «گرهها» در منوی ریشه فقط دستگاههای جفتشده (از
node.list) را فهرست میکند، نه ورودیهای کلاینت/حضور را. - هنگامی که نماهای لحظهای مصرف ارائهدهنده در دسترس باشند، بخشی ریشهای با عنوان «مصرف» زیر «زمینه» ظاهر میشود و در صورت موجود بودن، جزئیات هزینه پس از آن نمایش داده میشود.
مدل وضعیت
- منبع:
WorkActivityStore(apps/macos/Sources/OpenClaw/WorkActivityStore.swift). - رویدادها بهشکل
ControlAgentEventهمراه با یکrunIdمیرسند؛ کنترلگر (ControlChannel.routeWorkActivity) مقدارsessionKeyرا از بار دادهٔ رویداد میخواند و اگر وجود نداشته باشد، مقدار پیشفرض"main"را بهکار میبرد. - اولویت: نشست اصلی (بهطور پیشفرض
sessionKey == "main") همیشه اولویت دارد. اگر نشست اصلی فعال باشد، وضعیت آن بلافاصله نمایش داده میشود. اگر نشست اصلی بیکار باشد، بهجای آن آخرین نشست غیر اصلیِ فعال نمایش داده میشود. مخزن هنگام فعالیت وضعیت را تغییر نمیدهد؛ تنها زمانی جابهجا میشود که نشست فعلی بیکار شود یا نشست اصلی فعال گردد. - انواع فعالیت:
job: اجرای دستور سطحبالا (state: started|streaming|done|error|...).tool: مقدارphase: start|resultهمراه باnameوmeta/argsاختیاری.
شمارش IconState (Swift)
idleworkingMain(ActivityKind)workingOther(ActivityKind)overridden(ActivityKind)(بازنویسی اشکالزدایی)
ActivityKind ← نماد نشان
ActivityKind یک ToolKind (bash، read، write، edit، attach، other) یا یک job مستقل را دربر میگیرد. هرکدام به یک نماد SF نگاشت میشوند که روی نماد جانورک ترسیم میشود (IconState.badgeSymbolName):
| نوع | نماد |
|---|---|
bash |
chevron.left.slash.chevron.right |
read |
doc |
write |
pencil |
edit |
pencil.tip |
attach |
paperclip |
other / job |
gearshape.fill |
نگاشت بصری
idle: جانورک عادی، بدون نشان.workingMain: نشان همراه با نماد، تهرنگ کامل (برجستگی.primary)، پویانمایی «کار کردن» پاها.workingOther: نشان همراه با نماد، تهرنگ ملایم (برجستگی.secondary)، بدون حرکت سریع.overridden: صرفنظر از فعالیت واقعی، از نماد/تهرنگ انتخابشده استفاده میکند.
زیرمنوی زمینه
- منوی اصلی یک ردیف «زمینه» با تعداد/وضعیت نشستها نشان میدهد؛ این ردیف یک زیرمنو (
MenuSessionsInjector) را باز میکند. - سرآیند زیرمنو تعداد نشستهای فعال در ۲۴ ساعت گذشته را نشان میدهد.
- هر ردیف نشست، نوار توکن، سن، پیشنمایش، کلید تغییر حالت تفکر/مشروح، و کنشهای بازنشانی، فشردهسازی و حذف خود را حفظ میکند.
- پیامهای بارگذاری، قطع اتصال و خطای بارگذاری نشست درون زیرمنوی زمینه نمایش داده میشوند.
- بخشهای مصرف و هزینه در سطح اصلی و زیر زمینه باقی میمانند تا بدون باز کردن زیرمنو با یک نگاه قابل مشاهده باشند.
متن ردیف وضعیت (منو)
- هنگام فعال بودن کار:
<Session role> · <activity label>("\(roleLabel) · \(activity.label)"درMenuContentView)؛ برچسب نقشMainیاOtherاست. - در حالت بیکاری: به خلاصهٔ سلامت بازمیگردد.
دریافت رویدادها
- منبع: رویدادهای
agentدر کانال کنترل که توسطControlChannel.routeWorkActivity(from:)مسیریابی میشوند. - فیلدهای تجزیهشده:
stream: "job"بههمراهdata.stateبرای شروع/توقف.stream: "tool"بههمراهdata.phase،data.nameو در صورت وجودdata.meta/data.args.
- برچسب ابزارها از
ToolDisplayRegistry.resolve(name:args:meta:)بهدست میآیند؛ برای نامهای حلنشده، از نام خام ابزار استفاده میشود.
بازنویسی اشکالزدایی
- Settings > Debug > انتخابگر "Icon override":
System (auto)(پیشفرض)Working: main/Working: other(برای هر نوع ابزار: bash، خواندن، نوشتن، ویرایش، سایر)Idle
- در کلید
openclaw.iconOverrideازUserDefaultsذخیره و بهIconState.overriddenنگاشت میشود.
فهرست بررسی آزمایش
- کار نشست اصلی را فعال کنید: نماد فوراً تغییر میکند و ردیف وضعیت برچسب اصلی را نشان میدهد.
- هنگامی که نشست اصلی بیکار است، کار نشست غیراصلی را فعال کنید: نماد/وضعیت نشست غیراصلی را نشان میدهد و تا پایان آن ثابت میماند.
- هنگامی که نشست دیگری فعال است، نشست اصلی را شروع کنید: نماد فوراً به حالت اصلی تغییر میکند.
- فورانهای سریع ابزار: نشان چشمک نمیزند (مهلت ۲ ثانیهای پیش از پاککردن ابزار پایانیافته،
WorkActivityStore.toolResultGrace). - پس از بیکارشدن همهٔ نشستها، ردیف سلامت دوباره ظاهر میشود.
مرتبط
Was this useful?