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

IPC لنظام macOS

النموذج الحالي: يربط مقبس Unix محلي خدمة مضيف Node بتطبيق macOS لموافقات التنفيذ و system.run. يوجد واجهة سطر أوامر openclaw-mac للتشخيص والفحص؛ تتدفق إجراءات الوكيل عبر WebSocket للبوابة و node.invoke. تستخدم أتمتة واجهة المستخدم PeekabooBridge.

الأهداف

  • مثيل واحد لتطبيق واجهة المستخدم الرسومية يمتلك كل العمل الموجه لـ TCC (الإشعارات، تسجيل الشاشة، الميكروفون، الكلام، AppleScript).
  • مساحة صغيرة للأتمتة: البوابة + أوامر node، بالإضافة إلى PeekabooBridge لأتمتة واجهة المستخدم.
  • أذونات متوقعة: نفس معرف الحزمة الموقعة دائمًا، يتم تشغيله بواسطة launchd، بحيث تبقى منح TCC ثابتة.

آلية العمل

نقل البوابة + node

  • يقوم التطبيق بتشغيل البوابة (الوضع المحلي) ويتصل بها كـ node.
  • يتم تنفيذ إجراءات الوكيل عبر node.invoke (مثل system.run، system.notify، canvas.*).

خدمة Node + اتصال بين العمليات للتطبيق

  • تتصل خدمة مضيف node بدون واجهة رسومية بـ WebSocket الخاص بالبوابة.
  • يتم تمرير طلبات system.run إلى تطبيق macOS عبر مقبس Unix محلي.
  • ينفذ التطبيق الأمر في سياق واجهة المستخدم، ويطلب الإذن إذا لزم الأمر، ويعيد الناتج.

مخطط (SCI):

الوكيل -> البوابة -> خدمة Node (WS)
                      |  اتصال بين العمليات (UDS + رمز + HMAC + TTL)
                      v
                  تطبيق Mac (واجهة المستخدم + TCC + system.run)

PeekabooBridge (أتمتة واجهة المستخدم)

  • تستخدم أتمتة واجهة المستخدم مقبس Unix منفصلًا باسم bridge.sock وبروتوكول JSON الخاص بـ PeekabooBridge.
  • ترتيب تفضيل المضيف (من جانب العميل): Peekaboo.app → Claude.app → OpenClaw.app → التنفيذ المحلي.
  • الأمان: تتطلب مضيفات الجسر معرف فريق مسموحًا به؛ فتحة الهروب DEBUG-only لنفس UID محمية بواسطة PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (اتفاقية Peekaboo).
  • انظر: استخدام PeekabooBridge للحصول على التفاصيل.

التدفقات التشغيلية

  • إعادة التشغيل/إعادة البناء: SIGN_IDENTITY="Apple Development: <Developer Name> (<TEAMID>)" scripts/restart-mac.sh
    • ينهي المثيلات الحالية
    • بناء Swift + حزمة
    • يكتب/يجهز/يبدأ LaunchAgent
  • مثيل واحد: يخرج التطبيق مبكرًا إذا كان هناك مثيل آخر بنفس معرف الحزمة قيد التشغيل.

ملاحظات التعزيز

  • يُفضل اشتراط مطابقة معرف الفريق لجميع الأسطح المميزة.
  • PeekabooBridge: PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (لـ DEBUG فقط) قد تسمح للمتصلين بنفس UID للتطوير المحلي.
  • يبقى كل الاتصال محليًا فقط؛ لا يتم تعريض مقابس الشبكة.
  • تنشأ مطالبات TCC فقط من حزمة تطبيق واجهة المستخدم الرسومية؛ حافظ على ثبات معرف الحزمة الموقعة عبر عمليات إعادة البناء.
  • تعزيز اتصال بين العمليات: وضع المقبس 0600، رمز، فحوصات UID للنظير، تحدي/استجابة HMAC، TTL قصير.

البوابة على macOSالمهارات