تطبيق 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 قصير.