الأمان والخصوصية
ما الذي يستطيع الوكيل لمسه عندما يتحكم بسطح مكتبك، وكيف توقفه وتقيّده، وما الذي يُسجَّل، وما الذي يغادر جهازك.
عندما يتحكم تطبيق ذكاء اصطناعي بسطح مكتبك عبر ScreenPilot، يستطيع أن يفعل ما تفعله أنت بالماوس ولوحة المفاتيح: ينقر ويكتب ويضغط الاختصارات ويفتح التطبيقات. تشرح هذه الصفحة كيف توقفه وكيف تقيّده، وما الذي يُسجَّل، وما الذي يغادر جهازك.
تسجيل شاشتك بنفسك وتحرير الفيديو لا علاقة لهما بكل هذا. هذه الضوابط تهمّك عندما يتحكم الوكيل بسطح المكتب.
الوكيل يستخدم الماوس ولوحة المفاتيح الحقيقيين#
لا يوجد sandbox ولا شاشة افتراضية. النقرات والضغطات تذهب إلى النافذة التي في المقدمة كما لو أنك أنت من فعلها. إذا نقر الوكيل الزر الخطأ في تطبيق البريد، فتطبيق البريد هو من يستقبل النقرة.
- قبل أول إجراء تحكّم، تعرض أسطح مكتب Wayland (مثل KDE وGNOME) نافذة موافقة على التحكم عن بعد. وافق عليها مرة واحدة. يُحفظ رمز الموافقة في
state.jsonداخل مجلد الإعدادات (انظر سجل التدقيق لمعرفة مكانه)، فتكون التشغيلات التالية صامتة. احذف الملف ليطلب ScreenPilot الموافقة من جديد. - على macOS يحتاج تطبيق الذكاء الاصطناعي إلى إذن Accessibility. وعلى X11 وWindows لا توجد نافذة موافقة.
- إذا كان شخص جالساً أمام الجهاز، اطلب منه أن يبعد يده عن الماوس أثناء الـ take.
حرّك الماوس لإيقافه#
يراقب ScreenPilot المؤشر أثناء التحكم. إذا ابتعد المؤشر أكثر من 40 بكسل تقريباً عن المكان الذي وضعه فيه ScreenPilot للتو، يفترض أن شخصاً تولّى الأمر ويتوقف.
- التحكم المباشر (أدوات مثل
clickوtype_text): يفشل الإجراء برسالة تقول إن شخصاً آخر حرّك المؤشر. لا يُنفَّذ شيء بعدها حتى يستدعي الوكيلresumeليكمل من حيث المؤشر الآن، أوabortليتوقف. على الوكيل أن يلتقط لقطة شاشة جديدة بعدresumeلأن الشاشة قد تكون تغيّرت. - الـ take (
perform): يتوقف الـ take عند تلك الخطوة، ويحتفظ بما سُجّل، ويذكر الخطوة الفاشلة. عالج السبب ونفّذه من جديد. لا يمكن استئناف take.
يُجرى الفحص قبل كل إجراء وقبل كل حرف يُكتب. وهو يتفاعل مع الماوس فقط: الضغط على لوحة مفاتيحك أنت لا يوقف شيئاً.
abort أو Ctrl+C بدلاً من ذلك. ويعرض screenpilot doctor سطر تسجيل المؤشر لسطح مكتبك.الإيقاف بـ abort#
يعمل abort دائماً، على كل أسطح المكتب.
- من تطبيق الذكاء الاصطناعي: الأداة
abortتوقفperformالجاري وتغلق المشغّل المباشر. لكن الوكيل هو من يجب أن يستدعيها، فإذا أردت إيقافه فوراً فأوقفه أيضاً من تطبيق الذكاء الاصطناعي نفسه. - من سطر الأوامر: اضغط Ctrl+C أثناء تشغيل
screenpilot perform. - إغلاق تطبيق الذكاء الاصطناعي يغلق خادم ScreenPilot، فيوقف أي take جارٍ ويحرّر الماوس.
بعد abort تفتح أداة التحكم التالية مشغّلاً جديداً. وabort لا يتراجع عن أي شيء فعله الوكيل بالفعل.
التشغيل دون مراقبة#
إذا لم يكن أحد جالساً أمام الجهاز، قد يعطّل فحص المؤشر العمل: أي برنامج آخر يحرّك المؤشر سيوقف الوكيل. لهذه الحالة أوقف الفحص:
SCREENPILOT_INTERRUPT=off
مع هذا المتغير يتجاهل ScreenPilot حركة المؤشر من أي طرف آخر. لا يوقف الوكيلَ إلا abort (أو مهلة زمنية، انظر أدناه).
SCREENPILOT_INTERRUPT=off لا يوقف تحريك الماوس أي شيء. إذا جلست أمام الجهاز يستمر الوكيل في النقر والكتابة داخل النافذة التي عليها التركيز، وقد تقع نقراتك أنت وسط عمله. استخدمه فقط على جهاز لا يستعمله أحد، واجمعه مع SCREENPILOT_ALLOW_APPS وSCREENPILOT_PERFORM_TIMEOUT.ضبط متغيرات البيئة#
كل القيود التالية متغيرات بيئة لخادم ScreenPilot، فيجب ضبطها حيث يشغّله تطبيق الذكاء الاصطناعي: في env الخاص بإدخال screenpilot في إعدادات MCP للتطبيق.
"env": {
"SCREENPILOT_INTERRUPT": "off",
"SCREENPILOT_ALLOW_APPS": "firefox,notepad",
"SCREENPILOT_PERFORM_TIMEOUT": "180"
}
في Claude Code يمكنك إضافتها عند تسجيل الخادم:
claude mcp add --scope user screenpilot \
-e SCREENPILOT_ALLOW_APPS=firefox,notepad \
-e SCREENPILOT_PERFORM_TIMEOUT=180 \
-- node /abs/path/to/dist/mcp.js
أعد تشغيل تطبيق الذكاء الاصطناعي بعد أي تغيير. وتشغيل مثبّت ScreenPilot من جديد يعيد كتابة إدخاله، فتحقق من متغيراتك بعد ذلك. الأمر screenpilot setup --print يعرض الإدخال الذي يكتبه المثبّت، وراجع صفحة التثبيت.
لا يوجد أي من هذه القيود مفعّلاً افتراضياً.
تحديد التطبيقات التي تستقبل الإدخال#
المتغير SCREENPILOT_ALLOW_APPS قائمة أسماء تطبيقات مفصولة بفواصل. قبل كل نقر أو سحب أو تمرير أو ضغط مفتاح أو كتابة، يفحص ScreenPilot أي نافذة عليها التركيز. إذا لم يحتوِ صنفها أو عنوانها على أحد الأسماء (لا فرق بين الأحرف الكبيرة والصغيرة)، يفشل الإجراء ويطلب من الوكيل أن يركّز على تطبيق مسموح أولاً.
SCREENPILOT_ALLOW_APPS=firefox,notepad
حدود هذا الفحص:
- يحتاج التحكم بالنوافذ. على أسطح المكتب التي لا تعرف أي نافذة عليها التركيز (GNOME على Wayland) يفشل كل إجراء محروس برسالة تقول ذلك. لا تضبطه هناك.
- يسري على أدوات التحكم في MCP. الأداتان
focus_windowوpointer_moveمستثناتان، فيستطيع الوكيل تحريك المؤشر وتركيز نافذة قبل أن يُجرى الفحص. - لا يسري على الـ takes التي تُنفَّذ بـ
perform، ولا علىscreenpilot performوscreenpilot driveفي سطر الأوامر. الـ take ملف تستطيع قراءته قبل تشغيله. - يفحص النافذة التي عليها التركيز، لا ما تحت المؤشر. هو شبكة أمان وليس حداً أمنياً.
تحديد الأسرار التي يمكن كتابتها#
يستطيع الوكيل كتابة قيمة متغير بيئة دون أن يراها: الأداة type_text مع { "env": "NAME" }. والمتغير SCREENPILOT_ALLOW_ENV قائمة مفصولة بفواصل بالأسماء المسموح استخدامها. أي اسم آخر يُرفض.
SCREENPILOT_ALLOW_ENV=DEMO_PASSWORD,DEMO_EMAIL
بدونه يستطيع الوكيل كتابة أي متغير في بيئة الخادم، ومنها كل ما مرّره له تطبيق الذكاء الاصطناعي. القائمة تفحصها الأداة type_text فقط، ولا تفحصها خطوات { "type": { "env": ... } } داخل الـ take.
مهلة زمنية للـ takes#
المتغير SCREENPILOT_PERFORM_TIMEOUT عدد من الثواني. إذا استمر استدعاء perform أطول من ذلك يوقفه ScreenPilot، فلا يحتجز take معلّق الماوسَ إلى الأبد.
SCREENPILOT_PERFORM_TIMEOUT=180
اجعله أطول قليلاً من مدة الـ take. وهو يقيّد perform عبر خادم MCP فقط، ولا يقيّد أدوات التحكم المباشر ولا perform في سطر الأوامر.
سجل التدقيق#
كل إجراء تحكّم ينفّذه الوكيل عبر أدوات MCP يُضاف إلى ملف، سطر JSON لكل إجراء:
{"at":"2026-10-28T09:14:03.221Z","tool":"type_text","args":{"text":{"chars":18}}}
الملف هو audit.jsonl في مجلد إعدادات ScreenPilot:
| النظام | مجلد الإعدادات |
|---|---|
| Linux وmacOS | ~/.config/screenpilot (أو $XDG_CONFIG_HOME/screenpilot إذا ضبطته) |
| Windows | %APPDATA%\screenpilot |
ما يُسجَّل: الوقت واسم الأداة ووسائطها للأدوات focus_window وpointer_move وclick وdrag وscroll وkey وtype_text. اختصارات المفاتيح تُسجَّل. والإجراءات التي يرفضها قيد التطبيقات تُسجَّل أيضاً، لأن السجل يُكتب أولاً.
ما لا يُسجَّل:
- النص المكتوب. يُسجَّل طوله بالأحرف فقط. والسر المعطى بصيغة
{ "env": "NAME" }يُسجَّل منه اسم المتغير لا قيمته. - الخطوات داخل الـ take. استدعاء
performلا يُفصَّل إلى نقراته. ملف الـ take والتسجيل هما أثر ما حدث. - لقطات الشاشة والتسجيلات والنتائج. تُسجَّل الإجراءات فقط.
- الاستخدام من سطر الأوامر. الأمران
screenpilot driveوscreenpilot performلا يكتبان في السجل.
يبقى السجل على جهازك ولا يقصّه ScreenPilot أبداً. احذفه عندما لا تحتاجه. وفشل الكتابة فيه لا يوقف أي take.
الأسرار#
- لا تضع كلمة مرور أو رمزاً داخل
take.jsonكنص صريح. الملف يبقى على القرص ومن السهل مشاركته بالخطأ. - استخدم
{ "type": { "env": "NAME" } }في الـ take، أو{ "env": "NAME" }فيtype_text. تُقرأ القيمة من البيئة عند تنفيذ الإجراء. لا تُسجَّل ولا تُرجَع إلى الوكيل. - يظل التسجيل يُظهر ما على الشاشة. كلمة المرور في حقل يعرض النص صريحاً ستظهر في الفيديو وفي لقطات الشاشة التي يراها تطبيق الذكاء الاصطناعي. استخدم حقولاً تخفي ما يُكتب.
setup --allow-tools (لـ Claude Code)#
افتراضياً يسألك Claude Code قبل كل استدعاء لأداة من ScreenPilot. هذا السؤال فرملة على كل نقرة. وإذا فضّلت تخطّيه فيستطيع المثبّت السماح بكل أدوات ScreenPilot دفعة واحدة:
screenpilot setup --allow-tools
ما الذي يغيّره: يضيف mcp__screenpilot إلى permissions.allow في الملف ~/.claude/settings.json. هذه القاعدة الواحدة تغطي كل أدوات ScreenPilot، ومنها click وtype_text وkey وperform. تبقى بقية إدخالاتك وتعليقاتك كما هي، ويُنسخ الملف أولاً إلى settings.json.screenpilot-backup.
للتراجع، احذف السطر mcp__screenpilot من الملف، أو شغّل:
screenpilot setup --remove --clients claude-code
هذا يزيل القاعدة، ويزيل أيضاً ScreenPilot ومهارته (skill) من Claude Code. شغّل screenpilot setup بعدها لإضافته من جديد دون القاعدة.
--allow-tools، واسمح بنفسك في Claude Code بالأدوات التي تقرأ فقط مثل mcp__screenpilot__screenshot وmcp__screenpilot__windows. تبقى النقرات والكتابة تسأل قبل التنفيذ.الخصوصية: ما الذي يبقى على جهازك#
لا يحتاج ScreenPilot إلى حساب ولا إلى مفتاح API. التسجيل والتحليل والتحرير والتصدير تعمل كلها على جهازك. تُحفظ الملفات في مجلد ScreenPilot داخل Videos (وفي ماك Movies)، أو في sessions عند الاستخدام من سطر الأوامر.
ما الذي يمرّ عبر الشبكة:
- الصوت. الأصوات الافتراضية (
edge) خدمة على الإنترنت: يُرسَل إليها نص أسطر التعليق ويعود الصوت، وعرض قائمة أصوات Edge يستخدمها أيضاً. الأصوات المحلية (local) تعمل على جهازك ولا ترسل شيئاً. وصوتcommandيشغّل برنامجاً أعددته أنت فيvoices.json؛ ولا يستطيع الـ storyboard إضافته، فلا يستطيع storyboard من شخص آخر تشغيل برامج. راجع الأصوات. - تطبيق الذكاء الاصطناعي. يرى الوكيل ما تعيده أدواته: لقطات شاشاتك، وإطارات من تسجيلاتك، وعناوين النوافذ، ونص صفحة المتصفح التجريبي. ويرسل تطبيقك ذلك إلى مزوّد النموذج وفق سياسة الخصوصية الخاصة به. لا تدع الوكيل ينظر إلى شاشات لا تريد أن يراها ذلك المزوّد.
- التنزيلات لمرة واحدة. أول تصدير ينزّل مُصيّر الفيديو (نحو 100 ميغابايت). والصفحات في المتصفح التجريبي تحمّل المواقع التي توجّهه إليها، والـ storyboard الذي يطلب خطوط Google يحمّلها وقت التصدير.
يعطّل ScreenPilot القياس عن بعد (telemetry) في مُصيّر HyperFrames الذي يستخدمه.
قبل أن تترك وكيلاً يعمل وحده#
- جرّب بـ dry run وشاهده مرة واحدة.
- أغلق التطبيقات والتبويبات التي لا تريد أن تُلمس.
- اضبط
SCREENPILOT_ALLOW_APPSوSCREENPILOT_ALLOW_ENVوSCREENPILOT_PERFORM_TIMEOUT. - اترك الأسرار في متغيرات البيئة.
- اعرف كيف توقفه:
abortمن تطبيق الذكاء الاصطناعي، أو Ctrl+C في سطر الأوامر. - افحص
audit.jsonlبعد انتهائه.