
شنو كيدير big-arrow-on-the-screen
big-arrow-on-the-screen، اللي كيتسمّى حتى bigarrow، هو أداة لسطر الأوامر فـ macOS كترسم سهم ولافتة باينة بزاف فوق جميع النوافذ. تصمّمات لوكلاء الذكاء الاصطناعي اللي يقدرو يديرو أغلب مهام الحاسوب، ولكن خاصهم يرجّعو بعض القرارات للإنسان.
مثلاً، يقدر الوكيل يشير لزر Allow فـ System Settings، يحدّد نافذة المتصفح الصحيحة، ولا يوجّه شي واحد خلال مسار فيه بزاف ديال الخطوات. المستخدم كيبقى هو المتحكّم: bigarrow ما كيكليكاش، ما كيكتبش، وما كيلتاقطش الشاشة.
الطبقة الفوقية كتبان فوق النوافذ العادية، مربعات الحوار، التطبيقات فملء الشاشة، وSpaces، مع بقاء تركيز لوحة المفاتيح فالتطبيق اللي عندو التركيز أصلاً. الكليكات على الهدف كدوز للتطبيق اللي لتحت. والسهم كيتحيد بوحدو ملي كتسالي المدة ديالو ولا كتخرج العملية المالكة ديالو.
الوكيل ديالك يقدر يشرح شنو خاص يتدار، ومن بعد يحط صبع باين على نفس الكنترول اللي خاص الإنسان يستعمل.
فاش تستعملو
bigarrow مفيد فكل مرة كيحتاج فيها وكيل الذكاء الاصطناعي للإنسان باش ياخد قرار ولا يكمل شي إجراء. من الأمثلة المعتادة: طلبات الصلاحيات، شاشات الموافقة ديال OAuth، المصادقة الثنائية، اختبارات CAPTCHA، مفاتيح المرور، الأداءات، التوقيعات، والتأكيدات القانونية.
كيقدر حتى يوضّح التعليمات ملي كيبانو بزاف ديال النوافذ ولا الكنترولات المتشابهة. الوكيل يقدر يختار تطبيق معيّن، نافذة معيّنة، ولا تاب معيّن فالمتصفح، بلا ما يطلب من المستخدم يقلب وسط النوافذ المفتوحة الكثيرة.
ومن الاستعمالات الأخرى: تعليم شي واحد كيفاش يستعمل تطبيق، تقديم المساعدة عن بُعد، إبراز الكنترولات خلال تسجيل الشاشة، والتأكد واش الإحداثيات اللي رجّعاتها أداة أتمتة أخرى صحيحة.
التثبيت فـ macOS
المشروع كيدعم macOS 14 ولا أحدث. أسهل طريقة للتثبيت هي Homebrew:
brew install franzenzenhofer/tap/bigarrow
إلى بغيتي Claude Code وCodex يعرفو فوقاش وكيفاش يستعملو الأداة، ثبّت حتى مهارة الوكيل ديالها:
bigarrow install-skill
هاد الأمر كيثبّت المهارة ديال Claude Code فـ ~/.claude/skills وديال Codex فـ ~/.agents/skills. وتقدر حتى تشغّل bigarrow مباشرة من shell بلا ما تثبّت المهارة.
البناء من المصدر
إلى بغيتي تكمبايلي المشروع براسك، استعمل Xcode 16 ولا أحدث:
swift build -c release
الملف التنفيذي الناتج كاين فـ .build/release/bigarrow. التطبيق براسو مكتوب بـ Swift. ملفات shell وPython فـ scripts/ كتستعمل لالتقاط الصور والاختبارات.
أول أوامر الإشارة ديالك
كاينين ثلاثة ديال الأنماط الأساسية: الإشارة لعنصر ديال تسهيلات الاستخدام، الإشارة للإحداثيات، وخليان السهم باين حتى توقفو.
الإشارة لكونترول عندو تسمية
bigarrow point --element "Allow" --app "System Settings" --text "Franz, click Allow: Ghostty may control your Mac"
--element كيطابق الكونترول حسب التسمية ديالو، و--app كيحدّد التطبيق اللي فيه. واللافتة كشرح شنو مطلوب من المستخدم يدير.

الإشارة للإحداثيات
bigarrow point --at 760,500 --text "Franz, click HERE"
الإحداثيات كتستعمل النقط المنطقية العالمية انطلاقاً من الفوق واليسار، وهي نفس المساحة ديال الإحداثيات اللي كيرجعها macOS Accessibility وCGWindowList وPeekaboo. وتقدر حتى تشير لمستطيل:
bigarrow point --rect 600,400,240,80 --text "This is the area to review"
خلي السهم باين حتى للخطوة الجاية
bigarrow start --window "Safari:Inbox" --text "This window"
bigarrow stop
start كيرجع مباشرة وكيخلي السهم باين. استعمل stop باش تحيد السهم الحالي، ولا stop --all باش تحيد جميع الأسهم.
أمر point اللي كيتشغّل مرة وحدة كيدوم افتراضياً ثمانية ديال الثواني. بدّل هاد المدة باستعمال --duration؛ أما start فالمدة الافتراضية ديالو هي 300 ثانية. استعمل --duration 0 بلا حد زمني.
اختار الهدف المناسب
bigarrow كيدعم مصادر مختلفة للأهداف:
--at X,Yكيشير لإحداثيات.--rect X,Y,W,Hكيمَيّز منطقة مستطيلة.--mouseكيشير للمكان الحالي ديال الماوس.--window App[:title]كيشير لنافذة.--element Label --app Appكيلقى عنصر ديال تسهيلات الاستخدام.--peekaboo ID --snapshot see.jsonكيستعمل معرّف عنصر من مخرجاتsee --jsonديال Peekaboo.
باش تشوف الكنترولات اللي كيعرّضها شي تطبيق، شغّل:

bigarrow elements --app "System Settings"
مع شاشات متعددة، --display N كيخلي قيم الإحداثيات والمستطيل محسوبة بالنسبة لشاشة وحدة. الإحداثيات العالمية السالبة مدعومة للشاشات اللي كاينة على اليسار ولا الفوق ديال الشاشة الرئيسية.
استهدف النافذة ولا تاب المتصفح الصحيح
ملي كتوفّر --app App[:window or tab title] ولا --window، يقدر bigarrow يجيب التطبيق ولا النافذة ولا تاب Chrome/Safari المعني للواجهة قبل ما يرسم. هاد الشي كيمنع السهم، حتى إلا كان دقيق، يبان فوق نافذة ظاهرة غلط.
bigarrow point --app "Google Chrome:Pull request" --text "راجع طلب الدمج هادا"
استعمل --no-raise إلا بغيتي تخلي نوافذ المستخدم فبلاصتها بالضبط. إلا غطّى تطبيق آخر الهدف من بعد، السهم كيختافي حتى يولي الهدف باين من جديد.
خلّي السهام واضحة ومفيدة
تقدر تخصّص الشكل ديال السهم، الستايل، الحجم، الزوايا، الألوان، والسلوك ديالو:
--shape bend|straight|zigzag|spiralكيختار المسار ديال السهم.--style arrow|ring|boxكيختار سهم عادي، حلقة غير بالحدود، ولا مربع غير بالحدود.--size S|M|Lكيبدّل الحجم.--corners round|sharpكيتحكم فزوايا العلامة.--color red|orange|yellow|green|teal|blue|purple|pink|black|white|#RRGGBBكيحدّد اللون الرئيسي.--border shadow|white-black|blackكيبدّل شكل الحدود.--border-colorو--text-colorو--edge-colorكيخصّصو الألوان الفردية.--close-buttonكيزيد زر X قابل للنقر فالعلامة.
مثلاً، هاد الأمر كيرسم مربع أخضر بارز حدا الهدف:
bigarrow point --at 760,500 --style box --color green --text "راجع هاد التحكم"
زر الإغلاق ما كيتزادش حتى كتطلبو، وكيعطي للإنسان طريقة مباشرة باش يحيد الطبقة:

bigarrow start --element "Save" --app "TextEdit" --close-button --text "كليك على Save ملي تكون واجد"
خيارات مفيدة للتفاعل
كاينين بزاف ديال الخيارات اللي كيساعدو يربطو الطبقة بمسار إرشادي:
--followكيحرّك السهم مع النافذة ولا العنصر.--until-clickكيسالي السهم من بعد النقر على الهدف.--sayكيقرا العلامة بصوت مسموع، وهادشي مفيد إلا كان المستخدم ممكن ما كيشوفش الشاشة.--jsonكيعطي مخرجات قابلة للقراءة آلياً للوكلاء والسكربتات.
بالتالي، يقدر المسار الإرشادي يشير لتحكم واحد، يتسنى المستخدم يدير الإجراء، يوقف السهم، ومن بعد يشير للتحكم اللي من بعد. الأداة ما كتديرش النقر بوحدها.
فهم الصلاحيات
رسم طبقة فوق الشاشة ما كيحتاجش لصلاحية تسجيل الشاشة ولا صلاحية Accessibility فـ macOS. ولكن بعض الطرق ديال العثور على الهدف ولا تفعيلو كتحتاج الصلاحيات.
--atو--rectو--mouseو--window Appو--peekabooو--app Appما كيحتاجوش الصلاحية.--elementوelementsو--until-clickو--app App:titleكيحتاجو Accessibility.--window App:titleكيحتاج صلاحية تسجيل الشاشة باش يقرا عناوين النوافذ، وAccessibility باش يجيب النافذة للواجهة، إلا استعملتي--no-raise.
macOS كيعطي هاد الصلاحيات للتطبيق اللي شغّل bigarrow، بحال Terminal ولا iTerm2 ولا Ghostty ولا VS Code ولا Claude، وماشي للملف التنفيذي ديال bigarrow بوحدو.
شغّل الأمر التشخيصي باش تشوف الصلاحيات المعنية، التطبيق المالك ديالها، والشاشات المربوطة:
bigarrow doctor
إلا كانت شي صلاحية مطلوبة ناقصة، الأمر كيخرج برمز الحالة 4 وكيحدّد التطبيق ولوحة الإعدادات المعنية.

استعمل التنظيف التلقائي بأمان
السهام مصمّمين باش ما يبقاوش من بعد ما يسالي الوكيل. أمر point المؤقّت كيحيد راسو بوحدو. والسهم كيسالي حتى ملي كتخرج العملية ديال الوكيل اللي أنشاتو، باستعمال CLAUDE_PID ولا BIGARROW_OWNER_PID إلا كانو متوفرين.
فمسارات Claude Code، تقدر تستعمل bigarrow stop --hook كـ hook ديال UserPromptSubmit باش تمسح سهام داك السيشن ملي يجاوب الإنسان. أوامر التنظيف الصريحة هي:
bigarrow stop
bigarrow stop --all
هاد الاحتياطات مفيدة للوكلاء اللي ممكن يتوقفو ولا يتبدلو قبل ما يوصلو لخطوة التنظيف العادية ديالهم.
استعمل JSON ورموز الخروج فمسارات الوكلاء
كل أمر كيقبل --json، وهادشي كيخلّي فحص النتائج آلياً أسهل. رموز الخروج الموثّقة هي:
0: الأمر تسالى بنجاح.2: الإدخال غير صالح.3: الهدف ما تلقاش.4: الصلاحية المطلوبة ناقصة.
يقدر الوكيل يستعمل هاد النتائج باش يقرّر واش يعاود المحاولة بطريقة أخرى للعثور على الهدف، ولا يطلب الصلاحية من المستخدم، ولا يشرح بلي ما قدرش يلقى التحكم المطلوب.
تصحيح متقدم للأهداف
إلا ما كنتيش متأكد واش الإحداثيات الجاية من Accessibility ولا Peekaboo ولا أداة أخرى صحيحة، استعمل تشغيل تجريبي:
bigarrow point --at 760,500 --dry-run --json
هاد الأمر كيبيّن فين غادي تشير الأداة بلا ما ترسم الطبقة. وكيعاون فالتأكد من تحويل الإحداثيات، اختيار الشاشة، ونتائج الأتمتة قبل ما يبان أي شيء للمستخدم.
يقدر Peekaboo يوفّر مصدر آخر للهدف. خد لقطة JSON من Peekaboo، ومن بعد مرّر معرّف العنصر المطابق:
bigarrow point --peekaboo ELEMENT_ID --snapshot see.json --text "Review this element"
فـ Chrome، عناصر الصفحة يقدرو يحتاجو الخيار --force-renderer-accessibility ديال Chrome ولا VoiceOver. شريط الأدوات ديال Chrome كيبقى متاح بالطريقة العادية ديال الولوج الميسّر. إلا ما بانش محتوى الصفحة، استعمل الإحداثيات بلاصتو.
كيفاش خاص الوكلاء يستعملو المهارة
المهارة المرفقة كتدعم Claude Code وCodex بجوج عبر ملف واحد متوافق مع Agent Skills سميتو SKILL.md، ومعاه ميتاداتا ديال Codex فـ agents/openai.yaml. كتعلم الوكيل فوقاش يشير، كيفاش يختار الهدف، كيفاش يكتب جملة كاملة فاللافتة، فوقاش يستعمل --say، وفوقاش يوقف من بعد ما يدير المستخدم الإجراء.
التسلسل العملي ديال الوكيل كيكون هكا:
- حدّد الإجراء اللي كيحتاج تأكيد ولا مساعدة من الإنسان.
- اختار تسمية، نافذة، تبويب، إحداثيات، مستطيل، ولا هدف ديال Peekaboo.
- كتب لافتة كتقول بالضبط شنو خاص المستخدم يدير وعلاش.
- طلّع التطبيق المستهدف للواجهة إلا كان الحفاظ على التخطيط الحالي مهم.
- تسنّى حتى يدير الإنسان الإجراء ولا يجاوب.
- حبس السهم قبل ما تكمل للخطوة الموالية.
شنو الأداة ما كتديرش
bigarrow محدودة عن قصد. ماشي أداة لتعليق العلامات على الشاشة للناس، وماشي بوت ديال النقر، وماشي أداة ديال لقطات الشاشة. ما كتضغطش، ما كتكتبش، وما كتصوّرش الشاشة نهائيا. الهدف ديالها هو تخلي تعليمة البرنامج باينة، مع بقاء القرار والفعل عند الإنسان.
أنماط الحلقة والمربع كيتستعملو الخطوط الخارجية باش يبقى الهدف باين. اللافتة كتتحط بعيدة على الهدف إلا كانت المساحة كافية، وزر الإغلاق، إلا كان مفعّل، كيخلي الإنسان يحيد السهم. هاد الاختيارات فالتصميم كتخلي الأداة مناسبة لإجراءات حساسة بحال الأذونات، والمصادقة، والأداءات، وعمليات النشر.
الخلاصة
bigarrow كتعطي لوكلاء الذكاء الاصطناعي اللي خدامين على macOS طريقة بسيطة باش يرجعو التحكم للإنسان بلا ما يلجؤو لرسائل غامضة فـ الطرفية. ثبّتها بـ Homebrew، وزيد مهارة Claude Code ولا Codex إلا احتجتيها، ومن بعد استعمل point للتوجيهات القصيرة ولا start وstop لسيرورات العمل الموجّهة.
بفضل الأهداف بالتسمية، والنافذة، والإحداثيات، والمستطيل، والفأرة، وPeekaboo، ومع الأنماط القابلة للتخصيص، والنطق، وإخراج JSON، والتنقية التلقائية، ودعم شاشات متعددة، كتبدّل الأداة عبارة «عافاك كليكي هنا» لتوجيه دقيق باين على الشاشة، مع بقاء الفعل النهائي تحت تحكم الإنسان.
