التطبيق المرافق لنظام macOS

شريط القوائم

ما يتم عرضه

  • نعرض حالة عمل الوكيل الحالية في أيقونة شريط القوائم وفي صف الحالة الأول في القائمة.
  • يتم إخفاء حالة الصحة أثناء النشاط؛ وتعود عند خمول جميع الجلسات.
  • يسرد قسم "العُقَد" (Nodes) في القائمة الأجهزة فقط (العُقَد المقترنة عبر node.list)، وليس إدخالات العميل/الحضور.
  • يظهر قسم "الاستخدام" تحت السياق عند توفر لقطات استخدام الموفر.

نموذج الحالة

  • الجلسات: تصل الأحداث مع runId (لكل تشغيل) بالإضافة إلى sessionKey في حمولة البيانات. الجلسة "الرئيسية" هي المفتاح main؛ إذا كانت غائبة، نعود إلى الجلسة الأحدث تحديثًا.
  • الأولوية: الرئيسية تفوز دائمًا. إذا كانت الرئيسية نشطة، يتم عرض حالتها فورًا. إذا كانت الرئيسية خاملة، يتم عرض الجلسة غير الرئيسية الأكثر نشاطًا مؤخرًا. لا نتبدل في منتصف النشاط؛ ننتقل فقط عندما تصبح الجلسة الحالية خاملة أو عندما تصبح الرئيسية نشطة.
  • أنواع النشاط:
    • job: تنفيذ أمر عالي المستوى (state: started|streaming|done|error).
    • tool: phase: start|result مع toolName و meta/args.

Iconstate enum (Swift)

  • idle
  • workingMain(ActivityKind)
  • workingOther(ActivityKind)
  • overridden(ActivityKind) (تجاوز التصحيح)

ActivityKind → رمز

  • exec → 💻
  • read → 📄
  • write → ✍️
  • edit → 📝
  • attach → 📎
  • الافتراضي → 🛠️

التعيين البصري

  • idle: الرمز الأساسي العادي.
  • workingMain: شارة مع رمز، تلوين كامل، حركة "عمل" للساق.
  • workingOther: شارة مع رمز، تلوين خافت، بدون حركة سريعة.
  • overridden: يستخدم الرمز/التلوين المختار بغض النظر عن النشاط.

نص صف الحالة (القائمة)

  • أثناء النشاط: <دور الجلسة> · <تسمية النشاط>
    • أمثلة: Main · exec: pnpm test, Other · read: apps/macos/Sources/OpenClaw/AppState.swift.
  • عند الخمول: يعود إلى ملخص الصحة.

استيعاب الأحداث

  • المصدر: أحداث agent في قناة التحكم (ControlChannel.handleAgentEvent).
  • الحقول المُحلَّلة:
    • stream: "job" مع data.state للبدء/التوقف.
    • stream: "tool" مع data.phase, name, اختياريًا meta/args.
  • التسميات:
    • exec: السطر الأول من args.command.
    • read/write: مسار مختصر.
    • edit: مسار بالإضافة إلى نوع التغيير المُستنتج من meta/عدد الاختلافات.
    • الاحتياطي: اسم الأداة.

تجاوز التصحيح

  • الإعدادات ▸ التصحيح ▸ منتقي "تجاوز الأيقونة":
    • System (auto) (الافتراضي)
    • Working: main (لكل نوع أداة)
    • Working: other (لكل نوع أداة)
    • Idle
  • يتم التخزين عبر @AppStorage("iconOverride")؛ ويتم تعيينه إلى IconState.overridden.

قائمة التحقق للاختبار

  • تشغيل مهمة للجلسة الرئيسية: التحقق من تبديل الأيقونة فورًا وعرض صف الحالة لتسمية الرئيسية.
  • تشغيل مهمة لجلسة غير رئيسية أثناء خمول الرئيسية: عرض الأيقونة/الحالة للجلسة غير الرئيسية؛ تبقى مستقرة حتى تنتهي.
  • بدء الجلسة الرئيسية أثناء نشاط أخرى: تتبدل الأيقونة إلى الرئيسية على الفور.
  • دفعات سريعة للأدوات: التأكد من عدم وميض الشارة (فترة سماح TTL لنتائج الأداة).
  • عودة صف الصحة بمجرد خمول جميع الجلسات.

إعداد تطوير macOSالاستيقاظ الصوتي