عندما يفشل اختبار الواجهة لأن التطبيق غيّر زرّاً واحداً
قد ينجح اختبارك على المحاكي، ثم يتعطل في جهاز آخر لأن زر تسجيل الدخول تحرك أو لأن نافذة صلاحية ظهرت في توقيت مختلف. كتابة سكربت ثابت لكل مسار مفيدة، لكنها لا تكفي دائماً للاستكشاف السريع أو إعادة إنتاج عطل غامض. هنا يأتي Google Artemis: تعطيه هدفاً مكتوباً بلغة طبيعية، فيشاهد واجهة Android وينفذ تفاعلات على جهاز حقيقي أو محاكي، ثم يتيح لك فحص ما جرى.
المشروع مفتوح المصدر وموجّه لأتمتة Android، لا لفحص الثغرات ولا لتوليد تطبيقات. يضم واجهة سطر أوامر، وواجهة ويب محلية، وخادماً يتكامل عبر Model Context Protocol (MCP، بروتوكول سياق النماذج) مع مساعدين برمجيين، إضافة إلى عميل Python SDK (حزمة تطوير Python). المتطلبات الأساسية وفق ملفات المشروع: Python 3.12 أو أحدث، وبيئة Android متاحة من خلال Android Debug Bridge (ADB، جسر تصحيح Android). المستودع الرسمي ملف إعداد المشروع
📌 ملاحظة: الأوامر أدناه مبنية على تعليمات المستودع التي راجعتها بتاريخ 27 أكتوبر 2026. المشروع سريع التغير؛ راجع README قبل التنفيذ لأن أسماء الخيارات ومتطلبات الإعداد قد تتبدل.
ما هو Google Artemis؟

Google Artemis وكيل لأتمتة تطبيقات Android. ترسل له مهمة مثل «افتح الإعدادات، اعرض نسبة البطارية، وتحقق من عدم ظهور رسالة انهيار»، وهو يراقب الشاشة ويحدد عناصر الواجهة ثم ينفذ الخطوات ويعيد نتيجة قابلة للفحص. يمكنه الاستهداف بمؤشرات عناصر الواجهة عند توفرها، مع بدائل تعتمد على OCR (التعرف البصري على الحروف) ومواقع العناصر والصورة في الواجهات المخصصة.
عملياً، لا يقتصر دوره على تشغيل مجموعة نقرات محفوظة. يستطيع استكشاف المسار وتلخيص النتائج، كما يمكن توصيله بمساعدك البرمجي كي يطلب من الهاتف تنفيذ اختبار، يجمع لقطات الشاشة والسجلات، ثم يستخدمها أثناء تصحيح التطبيق. تتوزع أدوات MCP الموثقة بين تشغيل المهمة وإدارة حالتها وقراءة حالة الجهاز وفحص آثار التنفيذ وتشخيص البيئة. توثيق MCP في المستودع
💡 نصيحة للمحترفين (Pro Tip): استخدم Artemis لاكتشاف مسار واجهة أو إعادة إنتاج مشكلة، ثم حوّل السيناريو المستقر إلى اختبار حتمي بأداة الاختبار المعتادة في مشروعك. لا تجعل الوكيل اللغوي هو الاختبار الوحيد الذي يحرس إصداراً إنتاجياً.
لماذا يهمك Google Artemis كمطور Android؟
تظهر قيمة Google Artemis حين تكون الخطوات مفهومة للمطور لكن تفاصيل الواجهة متغيرة. بدلاً من كتابة عدة سكربتات تجريبية لاستكشاف شاشة جديدة، تستطيع وصف المطلوب وتشغيله على جهاز متصل. يفيد ذلك في اختبار قبول مبكر، أو التحقق من مسار بين تطبيقات، أو جمع أدلة أولية عن عطل لا يظهر في كل مرة.
وعندما تربطه بمساعد برمجي عبر MCP، يصبح الهاتف جزءاً من سياق التطوير. يمكن للمساعد أن يطلب تشغيل التطبيق على الجهاز، ويقرأ حالة التنفيذ والآثار، ثم يعود إلى الكود ليقترح إصلاحاً. هذا لا يلغي مراجعة المطور؛ بل يقلل الوقت بين تعديل التطبيق ورؤية سلوكه على Android فعلي.
يدعم المشروع ملفت تشغيل مختلفتين. Flash مصمم لدورة سريعة تعتمد المراقبة ثم الفعل، ويذكر README أن الخطوة تستغرق عادةً نحو 3 إلى 5 ثوانٍ. Pro يضيف تخطيطاً ونقاط تحقق ومراجعة للنتيجة، وتذكر الوثائق نطاقاً تقريبيّاً من 15 إلى 40 ثانية للخطوة. هذه أرقام يوردها المشروع نفسه، وليست ضماناً لسرعة كل جهاز أو نموذج أو شبكة. شرح ملفات التشغيل في README
| الخيار | متى تستخدمه؟ | ما الذي تحصل عليه؟ | ما الذي ينبغي الانتباه له؟ |
|---|---|---|---|
| Flash | فحص سريع أو مهمة واجهة قصيرة ومباشرة | حلقة استجابة ومراقبة سريعة | أقل تخطيطاً وتحققاً من Pro؛ مناسب للاستكشاف لا كضمان وحيد للاختبار |
| Pro | مسار متعدد الخطوات أو يحتاج نقاط تحقق وتشخيصاً | تخطيط ومراجعة وتحقق أعمق | أبطأ عادةً ويعتمد على النموذج والبيئة |
| اختبار UI حتمي مثل Espresso أو Appium | اختبار انحدار ثابت ضمن CI | شروط ونتائج قابلة للتكرار ومهيكلة | يحتاج إلى صيانة محددات الاختبار عند تغير الواجهة |
متطلبات التشغيل قبل البدء
قبل تشغيل Google Artemis، جهّز جهاز Android حقيقياً مع تفعيل USB debugging (تصحيح USB)، أو محاكي Android Studio. يجب أن يظهر الجهاز بحالة مصرح بها عند تنفيذ adb devices -l. إن لم يظهر، فلن يتمكن الوكيل من بدء التفاعل مهما كانت صياغة المهمة دقيقة.
جهّز كذلك Python 3.12 أو أحدث، وأداة uv بحسب تعليمات البدء بالمستودع، واختر موفر نموذج لغوي واضبط بيانات اعتماده بالطريقة التي توثقها نسخة المشروع. سكربت التشغيل الأولي يستطيع إعداد أدوات نظام مساندة مثل ADB وscrcpy وFFmpeg وفق README، لكن راجع ما سيُثبّت ولا تمنح الجهاز أو مفتاح API صلاحيات أوسع مما يحتاجه الاختبار. Artemis موجّه حالياً إلى Android؛ لا تفترض أن أوامر الهاتف ستعمل على iOS.
كيف تبدأ مع Google Artemis؟
1. نزّل المستودع وشغّل إعداد البداية
على Linux أو macOS، استخدم:
git clone https://github.com/google/artemis.git
cd artemis
./start.sh
وعلى Windows PowerShell:
git clone https://github.com/google/artemis.git
cd artemis
.\start.bat
يعرض README أن التشغيل الأول يهيئ الأدوات اللازمة ويفتح واجهة محلية على http://localhost:8000، حيث يمكنك التحقق من اتصال الجهاز وتجربة المهام ومراجعة التنفيذ. إذا واجهت مشكلة اتصال، ابدأ بفحص adb devices -l وموافقة RSA على الهاتف قبل تعديل إعدادات Artemis. خطوات التشغيل الرسمية
2. نفّذ مهمة قصيرة على الجهاز
بعد تجهيز الجهاز وموفر النموذج، جرّب طلباً محدوداً لا يغيّر بيانات حساسة:
uv run artemis run \
"افتح الإعدادات، انتقل إلى البطارية، وأخبرني بالنسبة الظاهرة وتحقق من عدم وجود نافذة انهيار" \
--profile flash
المثال يرسل وصف المهمة إلى ملف Flash. ابدأ بتطبيق تجريبي أو حساب اختبار، وشاهد التنفيذ على الهاتف. تجنب أول تجربة بإرسال رسالة حقيقية أو حذف محتوى أو تنفيذ عملية لا يمكن التراجع عنها؛ الوكيل ينفذ أفعالاً على واجهة فعلية، وصياغة طبيعية لا تجعل النتيجة حتمية.
3. اختر Pro للمهمة التي تحتاج تدقيقاً
استخدم ملف Pro عندما يهمك التحقق من نقاط وسيطة أو فهم سبب فشل المسار:
uv run artemis run \
"افتح التطبيق التجريبي، تحقق من ظهور شاشة تسجيل الدخول، ثم افتح صفحة الحساب وتأكد من وجود عنوان البريد" \
--profile pro
كلما زاد طول المهمة، اكتب شروط نجاح يمكن ملاحظتها مباشرة. بدلاً من «اختبر التطبيق جيداً»، قل «افتح الشاشة الرئيسية، اضغط الحساب، تحقق من ظهور البريد التجريبي، وتوقف إذا ظهرت رسالة خطأ». هذا يساعدك في التمييز بين نجاح حقيقي واستنتاج لغوي لا تدعمه الشاشة.
4. اربط Artemis بمساعدك البرمجي عبر MCP
لإضافة خادم MCP وملفات تعليمات الاختبار إلى عملاء IDE المدعومين، يوفّر المشروع أمراً للتثبيت التلقائي:
uv run artemis mcp --install all
يمكنك أيضاً اختيار عميل واحد، مثل claude أو cursor، أو توليد إعداد يدوي باستخدام uv run artemis mcp --generate-config <client>. بعد تعديل إعداد MCP، أعد تحميل المساعد كي يقرأ الخادم والأدوات. أدوات مثل mobile_run_task وmobile_get_device_state وmobile_inspect_trace تتيح تشغيل المهمة ومراجعة الحالة وآثار التنفيذ؛ لا تخلط بينها وبين واجهة تحكم مستقلة عن أذونات الجهاز. دليل خادم MCP
5. أدرج التشغيل في سكربت Python
إذا أردت استدعاء الخدمة من أداة اختبار داخلية، يشرح README حزمة artemis-client. المثال التالي يتطلب تشغيل Artemis على مضيف يمكن الوصول إليه، واتصال المحاكي أو الهاتف بذلك المضيف:
uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"
import asyncio
from artemis_client import ArtemisClient
async def main() -> None:
# استبدل المضيف والرقم التسلسلي بقيم بيئة الاختبار لديك.
client = ArtemisClient(
"http://127.0.0.1:8000",
device_serial="emulator-5554",
default_profile="flash",
)
result = await client.run(
"افتح إعدادات النظام وتحقق من ظهور صفحة البطارية"
)
# لا تعتبر المهمة ناجحة إذا أعاد العميل حالة فشل.
if not result.succeeded:
raise RuntimeError(result.error or result.status)
print(f"نجحت المهمة؛ trace_id={result.trace_id}")
if __name__ == "__main__":
asyncio.run(main())
الفائدة هنا هي تمرير نتيجة منظمة إلى كودك بدلاً من الاعتماد على قراءة مخرجات الطرفية يدوياً. مع ذلك، لا تجعل result.succeeded وحده معيار قبول تجارياً؛ أضف فحوصاً مستقلة على المخرجات، وسجّل رقم الجهاز وإصدار التطبيق ومعرّف التتبع لتسهيل إعادة التحقيق. مثال Python SDK في README
أخطاء شائعة وكيفية تصحيحها
الجهاز لا يظهر في Artemis
ابدأ بـ adb devices -l. إذا ظهرت الحالة unauthorized، افتح الهاتف واقبل رسالة تصحيح USB. إذا لم يظهر الجهاز إطلاقاً، بدّل الكابل أو المنفذ، وتحقق من تعريفات USB وسياسة جهاز العمل. في المحاكي، تأكد أن الجهاز اكتمل إقلاعه قبل إرسال المهمة.
النقر على إحداثيات غير ثابتة
قد تتغير إحداثيات العنصر مع دقة الشاشة أو اتجاه الهاتف أو نافذة منبثقة. يذكر المشروع استخدام شجرة الواجهة والمؤشرات النصية عند توفرها مع الرجوع إلى الرؤية والإحداثيات لبعض الواجهات. اجعل خطواتك بسيطة، وحدد التطبيق والشاشة المطلوبة صراحةً، واختبر على أكثر من حجم شاشة قبل اعتماد المسار.
المهمة تتوقف عند تسجيل الدخول أو الصلاحيات
لا تضع بيانات دخول إنتاجية داخل المطالبة أو سجل الاختبار. أنشئ حساباً مخصصاً للاختبار وجهّز الصلاحيات مسبقاً حيث يمكن ذلك. إذا تطلب السيناريو خطوة بشرية أو تحققاً متعدد العوامل، تعامل معها كحد واضح للأتمتة بدلاً من محاولة تجاوز حماية الحساب.
نتائج متباينة بين التشغيلات
النموذج قد يختار مساراً مختلفاً، وقد تتغير حالة التطبيق أو الشبكة. استخدم Pro مع نقاط تحقق عندما تحتاج تفسيراً أفضل، وقلل المهمة إلى خطوات مستقلة. أما اختبارات الانحدار التي يجب أن تعطي النتيجة نفسها في كل تشغيل، فاحتفظ بها ضمن إطار حتمي واستخدم Artemis لتوليد سيناريوهات إضافية أو تشخيص العطل.
⚠️ تحذير / فخ برمجي (Gotcha): أداة تستطيع قراءة الشاشة والنقر والكتابة قد تصل إلى رسائل أو بيانات حسابات مفتوحة على الجهاز. استخدم محاكياً أو جهازاً مخصصاً وبيانات اصطناعية، وأزل مفاتيح API والرموز من السجلات التي تشاركها. لا تربطها بهاتفك الشخصي في أول تجربة.
الأداء والادعاءات: كيف تقرأ رقم 99%؟
يعلن README أن Google Artemis تجاوز 99% من إكمال المهام على AndroidWorld. لكن هذا الرقم ينبغي قراءته على أنه ادعاء منشور من المشروع، لا نتيجة تدقيق خارجي مستقل. مستودع AndroidWorld نفسه يعرّف المعيار بأنه مجموعة من 116 مهمة عبر 20 تطبيقاً، مع تنويعات للمدخلات. لذلك لا يعني الرقم أن Artemis سينجح في 99% من تطبيقاتك أو على كل هاتف أو مع كل مهمة حرة. وصف AndroidWorld ادعاء المشروع في README
قبل استخدام نتيجة معيارية لاتخاذ قرار شراء أو اعتماد تقني، اسأل: ما إصدار Artemis والنموذج المستخدم؟ هل شملت النتيجة كل المهام أم مجموعة فرعية؟ هل احتُسب النجاح من نتيجة نهائية أم من نقاط تحقق؟ وهل أعيد الاختبار على أجهزة ونماذج مختلفة؟ إن لم ينشر المشروع بروتوكولاً كاملاً للنتيجة التي تنقلها، اذكرها بصفتها ادعاء المشروع فقط.
تنبيه بشأن ترخيص وإسناد الشيفرة
يوضح المستودع أن الترخيص الأساسي هو Apache License 2.0، وأن بعض الشيفرات في مجلد third_party/ تأتي من مشاريع أخرى؛ ويذكر README الحالي أن أجزاء من mobile-use تعود إلى Minitap, Inc. وبترخيص Apache 2.0. وفي المقابل، يعرض النقاش المفتوح في issue #40 اعتراض فريق mobile-use بشأن الإسناد وتاريخ بعض الملفات. من الأدق وصف ذلك بأنه نقاش علني حول مصدر الشيفرة والإسناد، لا تقديم اتهام قانوني على أنه حقيقة محسومة.
إذا كنت ستعيد توزيع نسخة معدلة أو تدمج أجزاء من المستودع في منتجك، راجع الترخيص وملفات الإشعارات وبيانات third_party في النسخة التي تستخدمها، واحتفظ بإشعارات الحقوق المطلوبة. هذه مراجعة عملية للمصدر المفتوح وليست استشارة قانونية. ترخيص Artemis وبياناته المشروع السابق mobile-use
رأي عملي: هل يستحق Google Artemis الاستخدام في الإنتاج؟
نعم، يستحق Google Artemis تجربة محدودة إذا كان فريقك يختبر تطبيق Android ويحتاج استكشاف واجهة أو إعادة إنتاج مشكلة على جهاز فعلي، خصوصاً إذا كان يعمل بالفعل مع MCP أو يحتاج إلى جمع آثار تنفيذ بسرعة. كما أن وجود CLI وSDK يعطيك أكثر من نقطة دمج، بدلاً من حصر كل شيء في واجهة محادثة.
لكنني لا أوصي بأن تستبدل به اختبارات الانحدار الحرجة أو أن تمنحه جهازاً عليه بيانات حقيقية دون ضوابط. الوكيل اللغوي قد يتأثر بتغير السياق والشاشة والنموذج، وتشغيل كل خطوة يمر عبر ملاحظة واستدلال، ما يضيف زمناً وتكلفة نموذج محتملة. كذلك، صيغة «نفّذ هذا على الهاتف» تحتاج إلى ضوابط وصول وسجلات مناسبة مثل أي أداة أتمتة قادرة على التفاعل مع حسابات.
التقسيم العملي الأفضل: Artemis للاستكشاف والتشخيص ومسارات تجربة محدودة؛ وEspresso أو Appium أو أداة الاختبار المعتمدة لديك للفحوص الحتمية المتكررة ضمن CI. ابدأ بمحاكي نظيف وتطبيق داخلي، قارن سجل التنفيذ بنتيجة متوقعة، ثم قرر إن كان إدخاله يستحق كلفة الصيانة والاستدلال في فريقك.
استنسخ المستودع على بيئة اختبار، وصّل محاكياً فارغاً، ثم نفّذ مهمة قراءة بسيطة مثل التحقق من نص ظاهر في الإعدادات. راجع لقطة الشاشة والسجل ومعرّف التتبع، وبعدها جرّب سيناريو تطبيقك التجريبي. إذا تعثرت الخطوة الأولى، افحص اتصال ADB قبل تغيير المطالبة أو إعدادات النموذج.
الأسئلة الشائعة
هل Google Artemis يعمل على iPhone؟
لا. المستودع الحالي موجّه لأجهزة Android ومحاكياتها عبر ADB، لذلك لا تفترض دعم iOS في النسخة الحالية.
ما إصدار Python المطلوب لتشغيل Google Artemis؟
ملف pyproject.toml يحدد Python 3.12 أو أحدث للمشروع الأساسي. راجع README قبل التثبيت لأن المتطلبات قد تتغير مع التحديثات.
هل نسبة 99% التي يذكرها المشروع مضمونة في تطبيقي؟
لا. هي نتيجة يعلنها المستودع على معيار AndroidWorld، ولا تضمن نسبة نجاح مماثلة على تطبيقاتك أو أجهزتك. اختبر حالاتك بنفسك، واحتفظ بفحوص حتمية للمسارات الحرجة.
هل يمكن ربط Google Artemis بـ Claude Code أو Cursor؟
نعم، يتضمن المشروع خادم MCP وإجراءات إعداد لعدة عملاء مساعدين برمجيين. يجب تثبيت الإعداد وفق وثائق العميل ثم إعادة تحميله، مع تجهيز جهاز Android وموفر النموذج.




