macOS companion app

نوار منو

چه چیزی نمایش داده می‌شود

  • وضعیت فعلی کار عامل در آیکون نوار منو و نخستین ردیف وضعیت منو نمایش داده می‌شود.
  • هنگام فعال بودن کار، وضعیت سلامت پنهان است؛ پس از بیکار شدن همه نشست‌ها دوباره نمایش داده می‌شود.
  • یک مورد ریشه‌ای «زمینه» به‌جای گسترش نشست‌های اخیر در منوی ریشه، زیرمنویی را با آن‌ها باز می‌کند.
  • بلوک «Nodeها» در منوی ریشه فقط دستگاه‌های جفت‌شده را (از 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)

  • idle
  • workingMain(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).
  • سربرگ زیرمنو تعداد نشست‌های فعال در 24 ساعت گذشته را نشان می‌دهد.
  • هر ردیف نشست، نوار توکن، سن، پیش‌نمایش، کلید تغییر حالت تفکر/پرحرفی و کنش‌های بازنشانی، فشرده‌سازی و حذف خود را حفظ می‌کند.
  • پیام‌های بارگذاری، قطع اتصال و خطای بارگذاری نشست درون زیرمنوی زمینه نمایش داده می‌شوند.
  • بخش‌های مصرف و هزینه در سطح ریشه و زیر زمینه باقی می‌مانند تا بدون باز کردن زیرمنو بتوان با نگاهی سریع آن‌ها را دید.

متن ردیف وضعیت (منو)

  • هنگام فعال بودن کار: &lt;Session role&gt; · <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، read، write، edit، other)
    • Idle
  • در کلید openclaw.iconOverride زیر UserDefaults ذخیره می‌شود؛ به IconState.overridden نگاشت می‌شود.

فهرست بررسی آزمایش

  • کار نشست اصلی را فعال کنید: آیکون بلافاصله تغییر می‌کند و ردیف وضعیت برچسب نشست اصلی را نشان می‌دهد.
  • هنگامی که نشست اصلی بیکار است، کار نشست غیر اصلی را فعال کنید: آیکون/وضعیت نشست غیر اصلی را نشان می‌دهد و تا پایان آن ثابت می‌ماند.
  • درحالی‌که نشست دیگری فعال است، نشست اصلی را آغاز کنید: آیکون فوراً به نشست اصلی تغییر می‌کند.
  • رگبارهای سریع ابزار: نشان سوسو نمی‌زند (مهلت 2 ثانیه‌ای پیش از پاک کردن ابزار پایان‌یافته، WorkActivityStore.toolResultGrace).
  • پس از بیکار شدن همه نشست‌ها، ردیف سلامت دوباره ظاهر می‌شود.

مرتبط

Was this useful?
On this page

On this page