نشر مشروع عبر وكيل برمجة بالذكاء الاصطناعي
الأوامر الدقيقة التي يشغّلها وكيل برمجة لنشر مجلد مشروع على *.gheima.ma: خطوة تسجيل الدخول التي يقوم بها الشخص، وما يُفعل حين تفشل خطوة.
لوكيل برمجة طُلب منه «انشر هذا على gheima.ma». شغّل كل أمر من مجلد المشروع مع --json: يحمل stdout وثيقة JSON واحدة، ويصل الخطأ إلى stderr بالشكل {"error":{"code","message"}}. يقول رمز الخروج ما حدث: 0 نجاح، 2 خيار ناقص، 3 غير مسجَّل الدخول، 5 مرفوض، 7 انتهت المهلة، 8 لم يصبح النشر مباشرًا.
1. الحصول على الـCLI#
npx -y @gheima/cli@latest --version2. تسجيل الدخول: الخطوة الوحيدة للشخص#
gheima whoami --json
# exit 0: signed in already, go to step 3. Exit 3: sign in below.
gheima login --no-wait --json
gheima login --resume --timeout 110 --json- 1
سلّم الرابط
قل للشخص حرفيًا: «افتح <verificationUrl>، وسجّل الدخول أو أنشئ حسابًا، ثم وافق على الرمز <userCode>.» استعمل القيم التي طبعها login --no-wait.
- 2
انتظر
شغّل gheima login --resume --timeout 110 --json مرة واحدة. الخروج بـ 0 يعني تسجيل الدخول: انتقل إلى الخطوة 3. الخروج بالرمز 7 مع الشفرة login_pending يعني أن الشخص لم يوافق بعد: توقّف هنا، وقل إنك تنتظر موافقته، وأعد تشغيل login --resume حين يخبرك أنه وافق، بدل الاستعلام المتكرر حتى ينتهي الرمز. ينتهي الرمز بعد عشر دقائق؛ بعدها ابدأ من جديد بـ login --no-wait.
الحسابات الجديدة بدعوة خلال المرحلة التجريبية. حين تقول صفحة تسجيل الدخول إن دعوة مطلوبة، اطلب من الشخص أن يطلب واحدة من hello@gheima.ma، وتوقّف حتى يصبح لديه حساب.
3. النشر#
gheima deploy --yes --jsonينشئ أول نشر في مجلد خدمةً تحمل اسم package.json أو اسم المجلد (يحدّد --name اسمًا آخر)، ويربط المجلد في .gheima/. يصبح مجلد ملفات HTML بسيطة (ملف index.html ولا شيء يبني أو يشغّل خادمًا) موقعًا ثابتًا، تحسبه الخطط منفصلًا عن الخدمات (اختر النوع بنفسك بـ --type). تعيد عمليات النشر اللاحقة استعمال الخدمة. من أين تأتي الشيفرة:
- للمجلد مستودع git بعيد
- يبني Gheima المستودع البعيد على الفرع الحالي. ادفع أولًا: الإيداعات المحلية فقط لا تُنشر. يحتاج مستودع GitHub الخاص أيضًا تطبيق Gheima على GitHub (انظر أدناه).
- لا مستودع بعيد، أو ليس مستودع git
- يُرفع المجلد ثم يُبنى. داخل مستودع git يتبع الرفع ملف .gitignore؛ وتُستبعد ملفات .env ومجلد node_modules دائمًا. أضِف --upload للرفع حتى مع وجود مستودع بعيد.
حين تفشل خطوة#
- الخروج 8: لم يصبح النشر مباشرًا
- اقرأ سجل البناء بـ gheima logs --build، ثم رمز الخطأ الذي يذكره في https://gheima.ma/ar/docs/errors.md. أصلح التطبيق، وادفع (إلا في حالة الرفع)، وأعد تشغيل gheima deploy --json.
- الخروج 3: غير مسجَّل الدخول
- عُد إلى الخطوة 2.
- الخروج 2 مع ذكر --yes
- ينشئ أول نشر خدمةً ويسأل قبل ذلك. مرّر --yes بعد أن يطلب الشخص النشر.
- الخروج 5: الاسم مأخوذ
- مرّر --name آخر.
- الخروج 1 مع الرمز payload_too_large: الرفع كبير جدًا
- استبعد مخرجات البناء والملفات الكبيرة عبر .gitignore: يثبّت البناء التبعيات وينتج مخرجاته بنفسه.
- يقول سجل البناء إن المستودع غير موجود
- المستودع خاص ولا يستطيع Gheima قراءته. اطلب من الشخص تثبيت تطبيق Gheima على GitHub عليه من https://gheima.ma/api/github/install، ثم انشر مجددًا. أو انشر الملفات بـ --upload.
- الخروج 7: انتهت مهلة الانتظار
- يستمر النشر. تابعه بـ gheima services deployments <service> --json حتى يتوقّف: LIVE يعني أنه مباشر؛ وFAILED أو CANCELLED أو SKIPPED تحمل errorMessage يشرح السبب.
عبر MCP#
مع خادم MCP الخاص بـ Gheima متصلًا (https://gheima.ma/mcp): gheima_services_create مع name وrepoUrl، ثم gheima_services_deploy، ثم gheima_services_deployments حتى يتوقّف ذلك النشر (LIVE، أو FAILED أو CANCELLED أو SKIPPED مع errorMessage)، ثم gheima_services_get للحصول على الرابط. لمجلد بلا مستودع git بعيد، استدعِ gheima_services_create (مع name ودون repoUrl)، ثم gheima_services_create_upload، وشغّل في المجلد الأمر الذي يعيده: يرفع الملفات ويبدأ النشر؛ ثم تابع gheima_services_deployments بالطريقة نفسها.