بدء استخدام Google Antigravity

1. مقدمة

في هذا الدرس العملي، ستتعرّف على Google Antigravity (يُشار إليه باسم Antigravity في بقية المستند)، وهي منصة تطوير قائمة على الوكلاء، وتطوّر بيئة التطوير المتكاملة (IDE) لتصبح متوافقة مع عصر الوكلاء.

على عكس مساعدي الترميز العاديين الذين يكملون الأسطر تلقائيًا، يوفّر Antigravity ميزة "مركز التحكّم" لإدارة البرامج المستقلة التي يمكنها التخطيط والترميز وحتى تصفّح الويب لمساعدتك في الإنشاء.

تم تصميم Antigravity كمنصة "تعتمد على الذكاء الاصطناعي". ويفترض ذلك أنّ الذكاء الاصطناعي ليس مجرد أداة لكتابة الرموز البرمجية، بل هو عامل مستقل قادر على التخطيط لمهام هندسية معقّدة وتنفيذها والتحقّق من صحتها وتكرارها بأقل قدر من التدخل البشري.

ما ستتعلمه

  1. تثبيت Antigravity وإعداده
  2. استكشاف المفاهيم الأساسية في Antigravity، مثل "إدارة الوكلاء" و"المحرّر" و"المتصفّح" وغيرها
  3. استكشاف بعض حالات الاستخدام مع Antigravity

المتطلبات

تتوفّر ميزة Antigravity حاليًا كإصدار أولي لحسابات Gmail الشخصية. يتضمّن حصة مجانية لاستخدام النماذج المميزة.

يجب تثبيت Antigravity على نظامك. يتوفّر المنتج على أجهزة Mac وWindows وبعض توزيعات Linux. بالإضافة إلى جهازك، ستحتاج إلى ما يلي:

  • متصفّح الويب Chrome
  • حساب Gmail (حساب Gmail شخصي)

تم تصميم هذا الدرس التطبيقي العملي للمستخدمين والمطوّرين من جميع المستويات (بما في ذلك المبتدئين).

2. تثبيت

سنبدأ بتثبيت Antigravity. يتوفّر المنتج حاليًا للمعاينة، ويمكنك استخدام حسابك الشخصي على Gmail لبدء استخدامه.

انتقِل إلى صفحة عمليات التنزيل وانقر على إصدار نظام التشغيل المناسب لحالتك. شغِّل مثبِّت التطبيق وثبِّت التطبيق نفسه على جهازك. بعد اكتمال عملية التثبيت، شغِّل تطبيق Antigravity. من المفترض أن تظهر شاشة مشابهة لما يلي:

29fada39721093c.png

يُرجى النقر على التالي في كل مرة. في ما يلي الخطوات الرئيسية بالتفصيل:

  • Choose setup flow: سيؤدي ذلك إلى ظهور خيار الاستيراد من إعدادات VS Code أو Cursor الحالية. سنبدأ من جديد.
  • Choose an Editor theme type. سنستخدم المظهر الداكن، ولكن يعود القرار إليك تمامًا حسب إعداداتك المفضّلة.
  • How do you want to use Antigravity agent:

cf89c9d16394914c.png

لنتعرّف على هذا الموضوع بتفصيل أكبر، وتذكَّر أنّ هذه الإعدادات ليست ثابتة ويمكن تغييرها في أي وقت، حتى أثناء التفاعل مع "الوكيل".

قبل أن نتناول الخيارات بالتفصيل، دعونا نلقي نظرة على سمتَين محدّدتين هنا (تظهران على يسار مربّع الحوار):

سياسة تنفيذ المحطة

يتعلّق هذا الأمر بمنح "الوكيل" القدرة على تنفيذ الأوامر (التطبيقات/الأدوات) في نافذة الأوامر. تتوفّر ثلاثة خيارات هنا.

  • Off: عدم التنفيذ التلقائي لأوامر الجهاز الطرفي (باستثناء تلك الواردة في قائمة السماح القابلة للضبط)
  • Auto: يقرّر الوكيل ما إذا كان سيتم تنفيذ أي أمر طرفي معيّن تلقائيًا. وفي حال الحاجة إلى الحصول على إذنك، سيتم اتخاذ القرار وطلب الإذن منك.
  • Turbo: تنفيذ أوامر الجهاز تلقائيًا دائمًا (باستثناء تلك الواردة في قائمة الرفض القابلة للضبط)

سياسة المراجعات

أثناء تنفيذ "الوكيل" لمهمته، ينشئ عناصر مختلفة (خطة المهمة، وخطة التنفيذ، وما إلى ذلك). يتم ضبط سياسة المراجعة بطريقة تتيح لك تحديد الجهة التي تقرّر ما إذا كان يجب مراجعة المحتوى. يجب أن تقرّر ما إذا كنت تريد مراجعتها دائمًا أو ترك الخيار للوكيل. وبناءً على ذلك، هناك ثلاثة خيارات هنا أيضًا.

  • Always Proceed: لا يطلب الموظّف منك أبدًا كتابة مراجعة
  • Agent Decides: يقرّر الموظف متى يطلب إجراء مراجعة
  • Request Review: يطلب موظّف الدعم دائمًا إجراء مراجعة

بعد أن فهمنا ذلك، لا تمثّل الخيارات الأربعة سوى إعدادات مُسبقة محدّدة لسياسات التنفيذ والمراجعة في "الوحدة الطرفية" لثلاثة منها، بالإضافة إلى خيار رابع متاح يمكننا من خلاله التحكّم فيها بشكل مخصّص تمامًا. تتوفّر هذه الخيارات الأربعة لنتمكّن من تحديد مستوى الاستقلالية الذي تريد من "الوكيل" أن يتمتّع به لتنفيذ الأوامر في الوحدة الطرفية ومراجعة العناصر قبل المتابعة في تنفيذ المهمة.

هذه الخيارات الأربعة هي:

  • التطوير المستند إلى الوكيل
  • التطوير بمساعدة وكيل
  • التطوير المستند إلى المراجعات
  • إعدادات مخصّصة

خيار التطوير بمساعدة وكيل هو خيار متوازن وننصح به لأنّه يسمح للوكيل باتّخاذ قرار والعودة إلى المستخدم للحصول على الموافقة.

لذا، اختَر ما يناسبك، وننصحك حاليًا باتّباع الطريقة المقترَحة.

  • Configure your Editor: اختَر إعداداتك المفضّلة.
  • Sign in to Google: كما ذكرنا سابقًا، تتوفّر Antigravity في وضع المعاينة وهي مجانية إذا كان لديك حساب شخصي على Gmail. سجِّل الدخول الآن باستخدام حسابك. تأكَّد من السماح بإنشاء ملف شخصي جديد على Chrome لهذا الغرض. سيؤدي ذلك إلى فتح المتصفّح الذي يتيح لك تسجيل الدخول. عند نجاح عملية المصادقة، ستظهر لك رسالة مشابهة للرسالة أدناه، وستعيدك إلى تطبيق Antigravity. اتّبِع الخطوات.
  • Terms of Use: يمكنك اتّخاذ قرار بشأن الموافقة على هذا الخيار أو عدم الموافقة عليه، ثم النقر على التالي.

سيقودك ذلك إلى لحظة الحقيقة، حيث سيكون تطبيق Antigravity في انتظار التعاون معك. نحن جاهزون للبدء.

3- مدير موظّفي الدعم

تستند Antigravity إلى أساس Visual Studio Code (VS Code) المفتوح المصدر، ولكنّها تغيّر تجربة المستخدم بشكل جذري لإعطاء الأولوية لإدارة الوكلاء على تعديل النصوص. تنقسم الواجهة إلى نافذتَين أساسيتَين مختلفتَين: المحرّر وأداة إدارة العملاء. يعكس هذا الفصل بين المهام الفرق بين المساهمة الفردية وإدارة الهندسة.

"مدير الوكلاء": مركز التحكّم

عند تشغيل Antigravity، لا تظهر عادةً شجرة ملفات للمستخدم، بل يظهر "مدير الوكيل"، كما هو موضّح أدناه:

d5ae91fc746e1bba.png

تعمل هذه الواجهة كلوحة بيانات Mission Control. وهي مصمَّمة لتنفيذ عمليات التنسيق على مستوى عالٍ، ما يتيح للمطوّرين إنشاء العديد من البرامج الآلية ومراقبتها والتفاعل معها بشكل غير متزامن في مساحات عمل أو مهام مختلفة.

في طريقة العرض هذه، يعمل المطوّر كمهندس معماري. تحدّد هذه الأهداف أهدافًا رفيعة المستوى، ويمكن أن تشمل الأمثلة ما يلي:

  • إعادة تصميم وحدة المصادقة
  • تعديل شجرة التبعيات
  • إنشاء مجموعة اختبارات لواجهة برمجة التطبيقات Billing API

وكما يوضّح المخطّط أعلاه، يؤدي كل طلب من هذه الطلبات إلى إنشاء مثيل مخصّص للوكيل. توفّر واجهة المستخدم تمثيلاً مرئيًا لمهام العمل المتوازية هذه، وتعرض حالة كل وكيل والنتائج التي أنتجها (الخطط والنتائج والاختلافات) وأي طلبات معلّقة للحصول على موافقة بشرية.

تعالج هذه البنية مشكلة أساسية في بيئات التطوير المتكاملة السابقة التي كانت توفّر تجربة شبيهة بتجربة روبوت المحادثة، وكانت خطية ومتزامنة. في واجهة محادثة تقليدية، على المطوّر الانتظار إلى أن ينتهي الذكاء الاصطناعي من إنشاء الرمز البرمجي قبل طرح السؤال التالي. في "طريقة العرض الإدارية" في Antigravity، يمكن للمطوّر إرسال خمسة وكلاء مختلفين للعمل على خمسة أخطاء مختلفة في الوقت نفسه، ما يؤدي إلى مضاعفة إنتاجيته بشكل فعّال.

إذا نقرت على التالي أعلاه، سيتوفّر لك خيار فتح Workspace.

ec72712ea24bf6d5.png

فكر في Workspace كما عرفته من VS Code وستنتهي. يمكننا فتح مجلد محلي من خلال النقر على الزر ثم اختيار مجلد للبدء به. في حالتي، كان لديّ مجلد في مجلد المنزل باسم my-agy-projects واخترتُه. يمكنك استخدام مجلد مختلف تمامًا.

يمكنك تخطّي هذه الخطوة تمامًا إذا أردت، ويمكنك فتح مساحة Workspace في أي وقت لاحقًا أيضًا.

بعد إكمال هذه الخطوة، ستنتقل إلى نافذة "إدارة الوكلاء" (Agent Manager) الموضّحة أدناه:

156224e223eeda36.png

ستلاحظ أنّ التطبيق موجّه على الفور لبدء محادثة جديدة في مجلد مساحة العمل (my-agy-projects) الذي تم اختياره. يُرجى العلم أنّه يمكنك الاستفادة من خبرتك الحالية في استخدام تطبيقات الذكاء الاصطناعي الأخرى (مثل Cursor وGemini CLI) واستخدام @ وطرق أخرى لتضمين سياق إضافي أثناء إدخال الطلب.

يُرجى الاطّلاع على القائمتَين المنسدلتَين Planning وModel Selection. تتيح لك القائمة المنسدلة "اختيار النموذج" الاختيار من بين النماذج المتاحة في الوقت الحالي ليستخدمها "الوكيل". تظهر القائمة أدناه:

fb0744dc43911365.png

وبالمثل، نجد أنّ "الوكيل" سيكون في وضع Planning تلقائي. ولكن يمكننا أيضًا استخدام الوضع Fast.

f403e40ad480efc9.png

لنلقِ نظرة على ما تقوله المستندات حول هذا الموضوع:

  • Planning: يمكن للوكيل التخطيط قبل تنفيذ المهام. يمكنك استخدامها لإجراء بحث معمّق أو إنجاز مهام معقّدة أو العمل بشكل تعاوني. في هذا الوضع، ينظّم "الوكيل" عمله في مجموعات مهام، وينتج "عناصر"، ويتّخذ خطوات أخرى لإجراء بحث شامل والتفكير والتخطيط لعمله من أجل تحقيق أفضل جودة. سيظهر لك هنا الكثير من النتائج.
  • Fast: ينفّذ الوكيل المهام مباشرةً. استخدِمها للمهام البسيطة التي يمكن إكمالها بشكل أسرع، مثل إعادة تسمية المتغيرات أو تنفيذ بعض أوامر bash أو غيرها من المهام الأصغر حجمًا والمحلية. يكون هذا الخيار مفيدًا عندما تكون السرعة عاملاً مهمًا، وتكون المهمة بسيطة بما يكفي لعدم القلق بشأن انخفاض الجودة.

إذا كنت على دراية بميزانية التفكير والمصطلحات المشابهة في "الوكلاء"، يمكنك اعتبار ذلك بمثابة القدرة على التحكّم في تفكير "الوكيل"، ما يؤثر بشكل مباشر في ميزانية التفكير. سنستخدم الإعدادات التلقائية في الوقت الحالي، ولكن يُرجى تذكُّر أنّه عند إطلاق النموذج، ستكون إمكانية الوصول إلى نموذج Gemini 3 Pro محدودة للجميع، لذا توقَّع تلقّي رسائل مناسبة تشير إلى ما إذا كنت قد استنفدت الحصص المجانية لاستخدام Gemini 3.

لنستغرق الآن بعض الوقت في "نافذة إدارة الوكيل" هنا ونفهم بعض الأمور، حتى تتضح لنا اللبنات الأساسية وكيفية التنقّل في Antigravity وغير ذلك. يتم إنشاء نافذة "إدارة الوكلاء" على النحو التالي:

22f6dcf7b3edc583.png

يُرجى الرجوع إلى الرسم البياني أعلاه الذي يتضمّن الأرقام التالية:

  1. Inbox: يمكنك اعتبار هذه الميزة طريقة لتتبُّع جميع محادثاتك في مكان واحد. عندما ترسل "برامج الدردشة الآلية" لإنجاز مهامها، ستظهر هذه المهام في "البريد الوارد"، ويمكنك النقر على "البريد الوارد" للحصول على قائمة بجميع المحادثات الحالية. سيؤدي النقر على أي من المحادثات إلى عرض جميع الرسائل التي تم تبادلها وحالة المهام وما أنتجه "الوكيل" أو حتى ما إذا كان ينتظر موافقة من جانبك على المهام. هذه طريقة رائعة للعودة لاحقًا إلى مهمة سابقة كنت تعمل عليها. إنّها ميزة مفيدة جدًا.
  2. Start Conversation: انقر على هذا الرمز لبدء محادثة جديدة. سينقلك هذا الإجراء مباشرةً إلى حقل الإدخال الذي يظهر فيه Ask anything.
  3. Workspaces: ذكرنا أنّه يمكنك العمل في أي مساحة عمل تريدها. يمكنك إضافة المزيد من مساحات العمل في أي وقت واختيار أي مساحة عمل عند بدء المحادثة.
  4. Playground: هذه طريقة رائعة يمكنك من خلالها بدء محادثة مع الموظف، ثم تحويلها إلى مساحة عمل إذا أردت، حيث يمكنك التحكّم بشكل أكبر في الملفات وما إلى ذلك. يمكنك اعتبارها مساحة تجريبية.
  5. Editor View: حتى الآن، نحن في طريقة عرض "إدارة الوكلاء". يمكنك التبديل إلى "عرض المحرّر" في أي وقت إذا أردت ذلك. سيؤدي ذلك إلى عرض مجلد مساحة العمل وأي ملفات تم إنشاؤها. يمكنك تعديل الملفات مباشرةً أو حتى تقديم إرشادات مضمّنة أو أوامر في المحرّر، ليتمكّن "الوكيل" من تنفيذ إجراء أو إجراء تغييرات وفقًا لاقتراحاتك أو تعليماتك المعدَّلة. سنتناول "طريقة عرض المحرّر" بالتفصيل في قسم لاحق.
  6. Browser: أخيرًا، نصل إلى إحدى الميزات الواضحة التي تجعل Antigravity قويًا جدًا، وهي التكامل الوثيق مع متصفّح Chrome. لنبدأ بإعداد المتصفّح في القسم التالي.

4. إعداد متصفّح Antigravity

وفقًا للمستندات، عندما يريد الوكيل التفاعل مع المتصفّح، يستدعي وكيلاً فرعيًا للمتصفّح للتعامل مع المهمة الحالية. يشغّل الوكيل الفرعي للمتصفّح نموذجًا متخصصًا للعمل على الصفحات المفتوحة في المتصفّح الذي تديره Antigravity، وهو يختلف عن النموذج الذي اخترته للوكيل الرئيسي.

يتمتع هذا الوكيل الفرعي بإمكانية الوصول إلى مجموعة متنوعة من الأدوات اللازمة للتحكّم في متصفّحك، بما في ذلك النقر والتمرير والكتابة وقراءة سجلّات وحدة التحكّم وغير ذلك. يمكنه أيضًا قراءة صفحاتك المفتوحة من خلال التقاط DOM أو لقطات الشاشة أو تحليل الترميز، بالإضافة إلى تسجيل الفيديوهات.

وهذا يعني أنّه علينا تشغيل إضافة Antigravity للمتصفّح وتثبيتها. لنبدأ محادثة في Playground ونستعرض الخطوات.

انقر على Playground وقدِّم المهمة التالية go to antigravity.google إلى "الوكيل" كما هو موضّح أدناه:

51a373d3da23db56.png

إرسال المهمة سيظهر لك الوكيل وهو يحلّل المهمة، ويمكنك الاطّلاع على عملية التفكير. في مرحلة ما، سيتم المتابعة بشكل صحيح وسيُذكر أنّه يجب إعداد وكيل المتصفّح كما هو موضّح أدناه. انقر على الإعداد.

e7119f40e093afd2.png

سيؤدي ذلك إلى فتح المتصفّح وعرض رسالة لتثبيت الإضافة كما هو موضّح أدناه:

9a5a43c17980e46c.png

انتقِل إلى إضافة Chrome التي يمكنك تثبيتها.

f3468f0e5f3bb075.png

بعد تثبيت الإضافة بنجاح، سيبدأ تطبيق Antigravity Agent عمله ويشير إلى أنّه ينتظر منك السماح له بإكمال مهمته. من المفترض أن ترى بعض النشاط في نافذة المتصفّح التي تم فتحها:

7f0367e00ac36d5a.png

بدِّل طريقة العرض إلى "إدارة الوكلاء"، ومن المفترض أن يظهر لك ما يلي:

b9d89e1ebefcfd76.png

هذا هو بالضبط ما توقّعنا حدوثه لأنّنا طلبنا من "الوكيل" الانتقال إلى الموقع الإلكتروني antigravity.google. امنح التطبيق الإذن وستلاحظ أنّه تم الانتقال إلى الموقع الإلكتروني بأمان، كما هو موضّح أدناه:

77fcc38b5fb4ca7c.png

فحص العناصر

الآن، ننتقل إلى الجزء المثير للاهتمام. بعد أن ينتهي الوكيل من عمله، من المفترض أن تتمكّن من رؤية عمله بالكامل. ويشمل ذلك المستندات، وهي الأساس الذي تبني عليه ثقتك في ما خطّطت لإنجازه من عمل، وما أنجزته حتى الآن، وكيف تحقّقت من ذلك.

تساعد القطع الأثرية في حل "فجوة الثقة". عندما يدّعي أحد الوكلاء "لقد أصلحتُ الخطأ"، كان على المطوّر في السابق قراءة الرمز للتأكّد من ذلك. في Antigravity، ينتج الوكيل قطعة أثرية لإثبات ذلك.

يركّز تطبيق Antigravity على إنشاء عناصر أساسية حسب المهمة. ويمكن أن يتراوح ذلك بين خطة المهام وخطة التنفيذ وأخيرًا خطة الشرح (مع التحقّق). في هذه الخطط، يجب أن تأخذ في الاعتبار تضمين ما يلي:

  • Task Lists & Plans: قبل كتابة الرمز، ينشئ الوكيل خطة منظَّمة. يمكن للمستخدم مراجعة هذه الخطة وتعديلها والموافقة عليها.
  • Code Diffs: طرق عرض موحّدة للاختلافات الناتجة عن التغييرات تعرض بالضبط الأسطر التي سيتم تغييرها.
  • Screenshots: يسجّل الوكيل حالة واجهة المستخدم قبل التغيير وبعده.
  • Browser Recordings: للتفاعلات الديناميكية (مثل "انقر على زر تسجيل الدخول، وانتظِر ظهور عجلة التحميل، وتأكَّد من تحميل لوحة البيانات")، يسجّل البرنامج فيديو لجلسة التصفّح. يمكن للمطوّر مشاهدة هذا الفيديو للتحقّق من استيفاء متطلبات الوظيفة بدون تشغيل التطبيق بنفسه.
  • Test Results: سجلّات منظَّمة لاختبارات ناجحة/فاشلة أنشأها ونفّذها الوكيل.

في أعلى يسار الصفحة، بجانب "مراجعة التغييرات" في "طريقة عرض مدير الوكيل"، من المفترض أن يظهر لك زر لتفعيل القطع الأثرية أو إيقافها. إذا كان الزر مفعّلاً، يمكنك الاطّلاع على قائمة القطع الأثرية التي تم إنشاؤها:

5320f447471c43eb.png

من المفترض أن تظهر لك طريقة عرض "العناصر" كما هو موضّح أدناه. في حالتنا هنا، طلبنا من "الوكيل" الانتقال إلى صفحة antigravity.google، وبالتالي التقط لقطة شاشة وأنشأ فيديو عن الصفحة وما إلى ذلك.

19d9738bb3c7c0c9.png

يمكن للمطوّرين التفاعل مع هذه العناصر باستخدام "التعليقات بأسلوب مستندات Google". يمكنك اختيار إجراء أو مهمة معيّنة، وتقديم طلب بالطريقة التي تريدها، ثم إرسال الطلب إلى "الوكيل". بعد ذلك، سيستوعب "الوكيل" هذه الملاحظات ويُجري التعديلات اللازمة. يمكنك استخدام "مستندات Google" التفاعلية، حيث تقدّم ملاحظاتك إلى المؤلّف ثم يعيد المؤلّف صياغة المحتوى بناءً على هذه الملاحظات.

5- الرجوع إلى "البريد الوارد"

إذا بدأت بعض المحادثات مع الوكلاء، عليك الآن إلقاء نظرة على "البريد الوارد" في نافذة "إدارة الوكلاء". سيؤدي ذلك إلى عرض جميع المحادثات. انقر على أي من المحادثات للاطّلاع على سجلّها والعناصر التي تم إنتاجها والمزيد. في حالتنا، بعد إجراء المحادثة الأولى، يعرض "البريد الوارد" المحادثة المُدرَجة، كما هو موضّح أدناه:

1a2a1bbdd4464ecf.png

سيؤدي النقر على هذه المحادثة إلى عرض التفاصيل التالية:

b7e493765cfb1b1a.png

يمكنك أيضًا مواصلة المحادثة من هنا.

6. The Editor

تحتفظ "أداة التعديل" بميزات VS Code المألوفة، ما يضمن احترام خبرة المطوّرين المتمرّسين. يتضمّن مستكشف الملفات العادي وتمييز بناء الجملة والنظام الشامل للإضافات.

يمكنك النقر على الزر فتح المحرّر في أعلى يسار "أداة إدارة الوكلاء" للانتقال إلى المحرّر.

91f3c96b81d993b9.png

تمت إضافة ميزة "إدراك الوكيل" إلى "المحرّر".

  • Inline Command: يتيح المحرّر البرمجة الوصفية والتعليمات المضمّنة، حيث يمكن للمستخدمين تمييز الرمز البرمجي وإصدار تعليمات للوكيل لتنفيذ "Make this more efficient" أو "Add comments explaining this logic".
  • Agent Side Panel : استخدِم اللوحة على يسار المحرّر للتواصل مباشرةً مع الوكيل. يمكنك بدء محادثات جديدة من هنا أو تقديم تعليمات لتغيير الرمز.

أثناء استعراض بعض حالات الاستخدام المتعلقة بتطوير الويب، حيث ينشئ "الوكيل" ملفات رموز متعدّدة، يمكننا بعد ذلك إلقاء نظرة على "المحرّر" للاطّلاع على الملفات وإجراء تغييرات والتفاعل مباشرةً مع "الوكيل" من هنا.

7. التبديل بين "المحرّر" و"إدارة الوكلاء"

يُرجى العِلم أنّ Antigravity يفرض رأيه في أنّ كلّاً من "أداة التحرير" و"إدارة الوكلاء" هما نافذتان منفصلتان، وهناك حاجة واضحة إلى كلتيهما. يمكنك التبديل من أحدهما إلى الآخر، إما من خلال الزر فتح "إدارة الوكلاء" في أعلى يسار الصفحة عندما تكون في "المحرّر" أو من خلال النقر على الزر فتح "المحرّر" في أعلى يسار الصفحة عندما تكون في "إدارة الوكلاء".

بدلاً من ذلك، يمكنك أيضًا استخدام اختصار لوحة المفاتيح التالي للتبديل بين الوضعين: Cmd + E

8. حالات الاستخدام

بعد أن تعرّفنا على المنتج بشكل أساسي، لنتناول بعض حالات الاستخدام لنرى كيف يعمل. يُرجى العِلم أنّ Antigravity هي منصة تستند إلى "الوكيل" أولاً. وهذا يعني أنّه في معظم الحالات، نتلقّى ببساطة تعليمات من "الوكيل"، ثم ينفّذ "الوكيل" مهمته بمفرده ويطلب الأذونات إذا لزم الأمر وينتج النتائج ثم يرسل إلينا إشعارًا عند اكتمال المهمة. نتيجةً لذلك، لا يمكننا تقديم كل مخرجات محادثة "الوكيل الافتراضي" في كل من حالات الاستخدام التالية. سنشارك التعليمات وبعض لقطات الشاشة اللازمة للنتائج المتوقّعة، ولكن قد تختلف نتائجك قليلاً.

تتراوح حالات الاستخدام التي سنتناولها بين التشغيل الآلي لبعض المهام مع مواقع إلكترونية خارجية، وإنشاء حالات اختبار الوحدات والتحقّق منها لأحد المشاريع، وتطوير موقع إلكتروني كامل. لنذهب

أبرز الأخبار

هذه حالة استخدام بسيطة، ولكن يمكن أن تكون الأساس الذي يمكنك من خلاله استخدام متصفّح الويب لزيارة المواقع الإلكترونية واستخراج المعلومات وتنفيذ بعض الإجراءات ثم إعادة البيانات إلى المستخدم.

في هذه الحالة، سننتقل إلى موقع "أخبار Google" الإلكتروني ونستخرج بعض المعلومات منه. ولكن يمكنك بسهولة تجربة موقع إلكتروني من اختيارك ومعرفة النتيجة.

تأكَّد من أنّك في Agent Manager وأنّك اخترت Playground، كما هو موضّح أدناه:

cffa12c98a68cb6c.png

بعد ذلك، أعطِ الأمر التالي:

8513d489eea0b014.png

سيؤدي ذلك إلى بدء عملية "الوكيل"، وسيحدّد الوكيل أنّه بحاجة إلى تشغيل المتصفّح وما إلى ذلك. عليك الانتباه جيدًا إلى "عملية التفكير" ومعرفة كيف ينفّذ الوكيل عمله. إذا سارت الأمور على ما يرام، من المفترض أن يتم تشغيل متصفّح Antigravity والانتقال إلى الموقع الإلكتروني كما هو موضّح أدناه. يشير الحدّ الأزرق حول الموقع الإلكتروني إلى أنّ "الوكيل" يتحكّم الآن في المتصفّح ويتنقّل في الموقع الإلكتروني للحصول على المعلومات.

9d594588f2ffe6bc.png

بعد انتهاء عملية الإنشاء، من المفترض أن تظهر لك أيضًا الأدوات التي تم إنشاؤها، كما هو موضّح أدناه:

dc6cf4e7d8425df8.png

في ما يلي مثال على تنفيذ الوكيل:

fb7397cd2cce0682.png

لاحظ أنّه على اليمين، لدينا "عملية التفكير"، ويمكنك أيضًا الانتقال بين النقاط وعرض التشغيل والبيانات الأخرى.

إجراءات يمكنك تجربتها

  • بعد فهم ذلك، اختَر موقعًا إلكترونيًا متاحًا تريد أن ينتقل إليه "الوكيل" ويحصل منه على بعض البيانات أو يلخّصها. فكِّر في بعض المواقع الإلكترونية التي تعرف أنّها تتضمّن لوحات بيانات ورسومًا بيانية، واطلب منها اختيار بعض القيم.
  • جرِّب الطلب التالي: Visit https://docs.cloud.google.com/release-notes and get me a summary of the release notes, categorized by product.

إنشاء موقع إلكتروني ديناميكي باستخدام Python وFlask

لننتقل الآن إلى إنشاء تطبيق ويب كامل. تطبيق الويب الذي سننشئه هو موقع إلكتروني يقدّم معلومات عن فعالية فنية لمدة يوم واحد، وتتضمّن هذه الفعالية جلسات يقدّمها متحدثون متعدّدون على مدار اليوم.

تأكَّد مرة أخرى من أنّك في Agent Manager وأنّك اخترت Playground.

أدخِل الطلب التالي:

I would like to generate a website that is a 1-day technical conference informational site.

The website should have the following functionality:
        1. A home page that shows the current date, location, schedule and time table.
        2. The 1-day event is a list of 8 talks in total.
        3. Each talk has 1 or 2 max. speakers. 
        4. A talk has an ID, Title, Speakers, Category (1 or 2), Description and time of the talk.
        5. Each speaker has a First Name, Last Name and LinkedIn url.
        6. Allow for users to search by category, speaker, title.
        7. Give a lunch break of 60 minutes.
        8. Use dummy data for events and speakers, come up with a schedule, the event is about Google Cloud Technologies.
        9. Tech Stack: Python and Flask framework on server side. Front-end is basic HTML, CSS and JavaScript. 
        10. Test out the site on your own for all functionality and provide a detailed README on how to setup, run and make any further changes. 
11. Launch the web application for me to review. 

يمكنك بدء المحادثة من خلال تقديم الطلب أعلاه:

أثناء تنفيذ "الوكيل" لمهمته، سيواصل إنشاء العناصر التالية:

  • عنصر المهمة
  • عنصر التنفيذ
  • Walkthrough Artifact

كانت مهمة Task Artifact الموضّحة أدناه هي التسلسل الأوّلي للمهام التي حدّدها "الوكيل" على أنّه يجب تنفيذها استنادًا إلى المهمة المحدّدة له. في ما يلي لقطة شاشة نموذجية من عملية التنفيذ:

c95d82e1c040698f.png

يمكنك بعد ذلك النقر على عنصر خطة التنفيذ. في ما يلي نموذج للقطة شاشة:

632169a236bc62cc.png

وأخيرًا، لديك عنصر التجربة الإرشادية. يتضمّن هذا السجلّ كل ما فعله الوكيل كما هو موضّح أدناه:

e3f6152d6f54d4f9.png

لاحظ أنّه بدأ تشغيل الخادم وقدّم لي عنوان URL، والذي أنقر عليه وأحصل على التطبيق، ويظهر أدناه لقطة شاشة نموذجية:

abf879f2ce53d055.png

إذا انتقلت إلى المحرّر، ستلاحظ في الشاشة أنّه يحتوي على المجلد الذي تم فيه إنشاء تطبيق Python Flask. ستلاحظ أيضًا أنّ Agent mode تمّت الإشارة إليه على اليسار ويمكنك مواصلة المحادثة هناك أيضًا.

b0fea8aa65c3a1c5.png

لنفترض الآن أنّنا نريد إضافة المزيد من المحاضرات إلى الفعالية. يمكننا البقاء في "المحرّر" وفي لوحة "الوكيل"، وإعطاء تعليمات مثل Add two more talks to the schedule.

سيؤدي ذلك إلى تحليل الوكيل للمتطلبات وتعديل "المهمة" و"خطة التنفيذ"، ثم التحقّق من الوظيفة المعدَّلة أيضًا. في ما يلي نموذج لمحادثة:

ba8455e6f68973e9.png

يمكنك العودة إلى "إدارة الوكلاء" إذا أردت ذلك. من المفترض أن تساعدك هذه العملية في فهم الخطوات اللازمة للانتقال من "مدير وكالة" إلى "محرّر"، وإجراء التغييرات وفقًا لذلك، وما إلى ذلك.

ملاحظة: أثناء تنفيذ هذه المهمة، حاول "الوكيل" بدء خادم Flask على المنفذ 5000، الذي كان قيد الاستخدام على الجهاز الحالي. ظلّ يحاول استخدام المنفذ المجاني التالي إلى أن قرّر استخدام المنفذ 8080 وتمكّن من بدء تشغيل الخادم.

إجراءات يمكنك تجربتها

  • أضِف وظائف إضافية تريدها في التطبيق. قدِّم التفاصيل إلى "الوكيل" ولاحظ كيف ينفّذ مهمته من خلال تعديل قائمة المهام أولاً، ثم خطة التنفيذ وما إلى ذلك.
  • اطلب من Agent إنشاء ملف README أو المزيد من المستندات للتطبيق.

إنشاء تطبيق بسيط لتعزيز الإنتاجية

سننشئ الآن تطبيق ويب بسيطًا لمؤقت Pomodoro.

تأكَّد من أنّك في Agent Manager وأنّك اخترت Playground. أدخِل الطلب التالي:

Create a productivity app that features a Pomodoro timer. Give a calm and aesthetic look to the application.

لاحظ كيف يتم إنشاء قائمة المهام وخطة التنفيذ، ثم يتم تنفيذها. واصِل الانتباه إلى سير العمل، فقد تظهر لك نافذة تطلب منك إرسال مراجعتك. في ما يلي مثال على عملية التنفيذ.

5be0a668e5a67d85.png

في هذه الحالة، يجب أن يتم أيضًا تشغيل متصفّح Antigravity، وإجراء الاختبارات الخاصة به، ثم تأكيد نجاح الاختبارات. أحد العناصر التي تم إنشاؤها هو عنصر وسائط يحتوي على فيديو عملية التحقّق. هذه طريقة رائعة لمعرفة ما تم اختباره. اقترحتُ أيضًا بعض التغييرات في الأسلوب لأنّها لم تُطبَّق، وتمكّن من إجراء ذلك.

بدا التطبيق النهائي كما هو موضّح أدناه، ويبدو جيدًا جدًا.

c9ab6bca97a51a8c.png

ما رأيك في إضافة صورة مؤقت لطيفة إلى التطبيق؟ كل ما علينا فعله هو إصدار تعليمات متابعة كما هو موضّح أدناه:

Add an image to the application that displays a timer.

نتيجةً لذلك، أضاف الموظّف مهمة جديدة إلى عنصر Task:

498dd946d4e9ae55.png

بعد ذلك، أنشأ صورة أثناء تنفيذ المهمة:

c291da9bdb37ff96.png

أخيرًا، حصل التطبيق على الصورة كما طلبنا:

de8f418ba8e4600d.png

إجراءات يمكنك تجربتها

  • لاحظ أنّ خلفية رمز الساعة الرملية في التطبيق ليست شفافة. جرِّب أن تطلب من الوكيل أن يوضّح ذلك.
  • جرِّب بعض الصيغ المختلفة لأي تطبيق تريد إنشاؤه. جرِّب الأنماط والصور واطلب إجراء تغييرات وما إلى ذلك.

إنشاء اختبارات الوحدات ورموز الاختبارات الوهمية والتحقّق من صحة الاختبارات

حالة الاستخدام الأخيرة التي سنحاولها هنا هي إنشاء اختبارات الوحدة لملف رمز معيّن لدينا، وتنفيذ الاختبارات والتحقّق من صحتها أيضًا من خلال "الوكيل".

لذلك، سننشئ مساحة عمل تحتوي على ملف Python واحد كما هو موضّح أدناه:

from typing import Dict

# --- Custom Exceptions ---
class InventoryShortageError(Exception):
    """Raised when there is not enough item stock."""
    pass

class PaymentFailedError(Exception):
    """Raised when the payment gateway rejects the transaction."""
    pass

class InvalidOrderError(Exception):
    """Raised when the order violates business rules."""
    pass

# --- External Service Interfaces (To be Mocked) ---
class InventoryService:
    def get_stock(self, product_id: str) -> int:
        """Connects to DB to check stock."""
        raise NotImplementedError("Real connection required")

    def decrement_stock(self, product_id: str, quantity: int):
        """Connects to DB to reduce stock."""
        raise NotImplementedError("Real connection required")

class PaymentGateway:
    def charge(self, amount: float, currency: str) -> bool:
        """Connects to Stripe/PayPal."""
        raise NotImplementedError("Real connection required")

# --- Main Business Logic ---
class Order:
    def __init__(self, 
                 inventory_service: InventoryService, 
                 payment_gateway: PaymentGateway,
                 customer_email: str,
                 is_vip: bool = False):
        
        self.inventory = inventory_service
        self.payment = payment_gateway
        self.customer_email = customer_email
        self.is_vip = is_vip
        self.items: Dict[str, Dict] = {} # {product_id: {'price': float, 'qty': int}}
        self.is_paid = False
        self.status = "DRAFT"

    def add_item(self, product_id: str, price: float, quantity: int = 1):
        """Adds items to the cart. Rejects invalid prices or quantities."""
        if price < 0:
            raise ValueError("Price cannot be negative")
        if quantity <= 0:
            raise ValueError("Quantity must be greater than zero")

        if product_id in self.items:
            self.items[product_id]['qty'] += quantity
        else:
            self.items[product_id] = {'price': price, 'qty': quantity}

    def remove_item(self, product_id: str):
        """Removes an item entirely from the cart."""
        if product_id in self.items:
            del self.items[product_id]

    @property
    def total_price(self) -> float:
        """Calculates raw total before discounts."""
        return sum(item['price'] * item['qty'] for item in self.items.values())

    def apply_discount(self) -> float:
        """
        Applies business logic:
        1. VIPs get flat 20% off.
        2. Regulars get 10% off if total > 100.
        3. No discount otherwise.
        """
        total = self.total_price
        
        if self.is_vip:
            return round(total * 0.8, 2)
        elif total > 100:
            return round(total * 0.9, 2)
        
        return round(total, 2)

    def checkout(self):
        """
        Orchestrates the checkout process:
        1. Validates cart is not empty.
        2. Checks stock for all items.
        3. Calculates final price.
        4. Charges payment.
        5. Updates inventory.
        """
        if not self.items:
            raise InvalidOrderError("Cannot checkout an empty cart")

        # 1. Check Inventory Logic
        for product_id, data in self.items.items():
            available_stock = self.inventory.get_stock(product_id)
            if available_stock < data['qty']:
                raise InventoryShortageError(f"Not enough stock for {product_id}")

        # 2. Calculate Final Price
        final_amount = self.apply_discount()

        # 3. Process Payment
        try:
            success = self.payment.charge(final_amount, "USD")
            if not success:
                raise PaymentFailedError("Transaction declined by gateway")
        except Exception as e:
            # Catching generic network errors from the gateway
            raise PaymentFailedError(f"Payment gateway error: {str(e)}")

        # 4. Decrement Stock (Only occurs if payment succeeded)
        for product_id, data in self.items.items():
            self.inventory.decrement_stock(product_id, data['qty'])

        self.is_paid = True
        self.status = "COMPLETED"
        
        return {"status": "success", "charged_amount": final_amount}

تأكَّد من أنّ ملف Python أعلاه متوفّر محليًا في مجلد وأنّك تحمّله كـ مساحة عمل في Antigravity.

هذه خدمة طلب بسيطة تتضمّن الوظائف الأساسية التالية في الدالة checkout:

  1. للتحقّق من أنّ سلة التسوّق ليست فارغة
  2. التحقّق من توفّر جميع السلع
  3. تحسب هذه السمة السعر النهائي.
  4. دفع الرسوم
  5. تعديل بيانات المستودع

سنكلّف "الوكيل" بمهمة إنشاء حالات اختبار الوحدات وتقديم عمليات تنفيذ وهمية وتنفيذ الاختبارات للتأكّد من نجاحها.

سنفتح مجلد مساحة العمل المحدّد وستلاحظ أنّه يمكننا الآن استخدام الرمز @ أيضًا للإشارة إلى الملف. على سبيل المثال، يمكننا إجراء ما يلي:

8368856e51a7561a.png

يظهر هذا الملف مع بعض التوضيحات حول محتواه:

b69c217d3372d802.png

يمكننا أن نطلب منه إنشاء تصور أفضل من خلال الطلب التالي:

Can you visually show this class for better understanding

da5bd701323818d4.png

خطوتي التالية هي إنشاء اختبارات الوحدة وطلب أن يجرّبها الوكيل. أقدّم الطلب التالي:

generate unit tests for this module and test it out with mock implementations.

أنشأ العنصر التالي من نوع "مهمة" وبدأ في تنفيذ مهمته.

21425379db336dc6.png

يمكنك أيضًا الاطّلاع على تفاصيل الاختبارات التي أجراها:

48f3320cd76b5cd8.png

كان أحد الملفات التي أنشأها هو ملف الاختبار أيضًا. في ما يلي لقطة شاشة توضّح ذلك:

8ee68905942825d.png

إجراءات يمكنك تجربتها

يمكنك استخدام الرموز البرمجية الخاصة بك ومعرفة ما يمكنك أن تطلبه من "الوكيل"، بدءًا من إضافة المزيد من الوظائف إلى إعادة تصميم أجزاء من الرموز البرمجية.

9- تهانينا

تهانينا، لقد تمكّنت من تثبيت منصة تطوير Antigravity التي تعتمد على الوكيل وفهم كيفية استخدامها. من المفترض أنّ تساعدك حالات الاستخدام المختلفة التي جرّبناها في تحديد متطلباتك واستكشاف كيف يمكن لـ Antigravity التعاون معك لإكمالها.

المستندات المرجعية