التطبيق المرافق لنظام macOS
شريط القوائم
ما يتم عرضه
- نعرض حالة عمل الوكيل الحالية في أيقونة شريط القوائم وفي صف الحالة الأول في القائمة.
- يتم إخفاء حالة الصحة أثناء النشاط؛ وتعود عند خمول جميع الجلسات.
- يسرد قسم "العُقَد" (Nodes) في القائمة الأجهزة فقط (العُقَد المقترنة عبر
node.list)، وليس إدخالات العميل/الحضور. - يظهر قسم "الاستخدام" تحت السياق عند توفر لقطات استخدام الموفر.
نموذج الحالة
- الجلسات: تصل الأحداث مع
runId(لكل تشغيل) بالإضافة إلىsessionKeyفي حمولة البيانات. الجلسة "الرئيسية" هي المفتاحmain؛ إذا كانت غائبة، نعود إلى الجلسة الأحدث تحديثًا. - الأولوية: الرئيسية تفوز دائمًا. إذا كانت الرئيسية نشطة، يتم عرض حالتها فورًا. إذا كانت الرئيسية خاملة، يتم عرض الجلسة غير الرئيسية الأكثر نشاطًا مؤخرًا. لا نتبدل في منتصف النشاط؛ ننتقل فقط عندما تصبح الجلسة الحالية خاملة أو عندما تصبح الرئيسية نشطة.
- أنواع النشاط:
job: تنفيذ أمر عالي المستوى (state: started|streaming|done|error).tool:phase: start|resultمعtoolNameوmeta/args.
Iconstate enum (Swift)
idleworkingMain(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الاستيقاظ الصوتي