دوز مباشرة للمحتوى الرئيسي
دروس فالذكاء الاصطناعي

شغّل وتحقّق من وكيل Astra وJEV ديال Minecraft

تعلّم كيفاش تثبّت، تهيّأ، تطلق، تجرّب، تسجّل وتتحقّق من وكيل Astra وJEV ديال Minecraft Java 1.16.5. هاد الدليل كيشرح بنية التخطيط والتنفيذ، وتدبير بيانات الدخول، وإعداد عالم جديد، وطريقة الخدمة بالعميل الأصلي، وملفات الإثبات، واعتبارات متقدمة فالقتال والتسجيل.

شغّل وتحقّق من وكيل Astra وJEV ديال Minecraft

شنو كيدير المشروع

وكيل Astra وJEV ديال Minecraft كيكمل مسار محدد مسبقاً فـ Minecraft Java 1.16.5 باستعمال ملاحظات منظمة على اللعبة وأفعال محدودة ديال اللاعب. GPT-6 Astra، أو اختيارياً GPT-5.6 Sol، كيخطط للأهداف، والأغراض المطلوبة، ونقط المرور فالسفر. من بعد JEV كيختار فعلاً متاحاً، بينما Mineflayer كيتكلف بالحركة، وإيجاد المسار، والتفاعلات العادية مع بروتوكول اللعبة.

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

آخر تشغيل تم التحقق منو، nether-final-08، سالا فـ 8 دقايق و43.300 ثانية. بدا بمخزون خاوي فعالم Survival جديد وبالصعوبة Peaceful، وداز من الـ Nether، وقتل Ender Dragon بستة انفجارات ديال الأسرّة فأول هبوط ليه، ودخل لبوابة الخروج بصحة كاملة وبلا حتى موت. التشغيل استعمل 131 قرار ديال JEV و35 نداء ديال Astra.

المشروع كيستعمل السيرفر الرسمي vanilla وكيرسل الأفعال المختارة عبر بروتوكول اللاعب العادي. مستشعر التنين Java ديالو للقراءة فقط: كيعطي الموقع الدقيق ديال راس التنين، ولكن ما كيعطيش أغراض، وما كيحرّكش الكيانات، وما كيبدلش الصحة، وما كيغيّرش قواعد اللعبة.

الخصائص الرئيسية

  • أدوار منفصلة للنماذج: Astra أو Sol كيخطط للهدف الحالي، بينما JEV كيختار فعلاً واحداً محدوداً من الملاحظة الحالية.
  • تفاعلات Minecraft العادية: Mineflayer كيتكلف بالحركة، وإيجاد المسار، والتفاعل مع البلوكات، والصناعة، وعمليات المخزون، والتواصل عبر البروتوكول.
  • مسار مساعد بالـ Nether: المسار الثابت كيستعمل الـ Nether كاختصار للسفر قبل القتال فـ End.
  • مراقبة التنين للقراءة فقط: مستشعر Java محلي كيعطي موقع راس التنين باش يضبط توقيت الأسرّة بدقة بلا ما يبدل حالة الكيان.
  • تسجيل أصلي: عميل Minecraft Java 1.16.5 رسمي مخفي كيرندر الموديلات الأصلية، والخامات، والتحريكات، وشاشات المخزون، والصحة، والجوع، والهواء، وحالة الشريط السريع، والأغراض المحمولة، وصحة التنين.
  • حركة مضبوطة للكاميرا: دورات الكاميرا محدودة فـ 240 درجة فالثانية لكل محور، مع تسارع قدره 960 درجة فالثانية المربعة.
  • أدلة منظمة: سجلات أحداث JSONL، وملفات الحالة، وأدلة الفوز، وبيانات الفيديو، وفحوصات حالة العالم كيدعمو التحقق من بعد.
  • اختبارات آلية: المستودع فيه فحوصات لأحداث الإكمال، والحزم الأصلية، وسياسة الأفعال، وإلغاء أداة إيجاد المسار.

البنية وإعدادات النماذج

النموذج الافتراضي للتخطيط هو openai/gpt-6-astra، وكيتستدعى عبر /api/v1/chat/completions. تقدر تختار openai/gpt-5.6-sol عبر متغير البيئة PLANNER_MODEL. JEV كيستعمل typesafe/jev-1.13 عبر /api/alpha/decisions.

المخطط ما كينفذش مباشرة سلاسل عشوائية ديال الأفعال. كيثبت الهدف الحالي، والأغراض المطلوبة، ونقطة المرور. JEV كيفحص الملاحظة المنظمة الحالية وكيختار فعلاً مسموحاً به. هاد الفصل كيخلي كل قرار محدود، مع السماح للتشغيل الكامل يتبع خطة أطول.

المتطلبات والقيود المهمة

سكريبتات التشغيل والرندر الأصلي تطورات على macOS. فشي نظام تشغيل آخر، خاصك تكيّف مسارات التشغيل، ومواقع Java، وإعدادات السيرفر المحلي. سكريبت التشغيل الأصلي المرفق كيستعمل runtime محلي ديالو بـ Java 17.

خاصك Node.js وnpm، وPython 3 لسكريبتات العميل الأصلي، وruntime متوافق مع Java، وGoogle Application Default Credentials، والولوج لسر فـ Google Secret Manager فيه مفتاح OpenRouter، ورصيد كافي فـ OpenRouter. ملفات Minecraft الثنائية، وruntime المحمّلة، والعوالم المحفوظة، والتسجيلات، وبيانات الاعتماد مستثناة عمداً من Git.

إعدادات اللعبة الموثقة هي:

  • Seed: 8398967436125155523
  • النمط: Survival
  • الصعوبة المستعملة فالتسجيل المتحقق منو: Peaceful
  • مركز بوابة End النشطة: -1130, 34, 856
  • السيرفر الرئيسي: 127.0.0.1:25576
  • نقطة الحالة: http://127.0.0.1:3078
  • نقطة مستشعر التنين المحلي اللي كيستعملها الوكيل: http://127.0.0.1:3093
  • منفذ مرآة البروتوكول الأصلي: 25578

الـ seed فيه قرية، وثلاثة صناديق ديال المؤونة فيهم 21 obsidian، وبوابة End مفعّلة بشكل طبيعي. المسار الموثق ما كيحتاجش blaze rods. الإحداثيات تراجعات فعالم اختبار منفصل، ولكن الحركة وعمليات الوضع فالتشغيل النهائي كيتدارو بتفاعلات اللاعب العادية.

الخطوة 1: تثبيت تبعيات Node.js

من جذر المستودع، ثبّت حزم المشروع:

npm install

هاد الأمر كيثبت تبعيات JavaScript اللي كيستعملها الوكيل، ووسيط النماذج، ومنطق المسار، وأدوات الأدلة، والاختبارات.

الخطوة 2: إعداد الولوج الآمن للنماذج

الوكيل كيتجاهل عمداً متغير البيئة العام OPENROUTER_API_KEY. عوض من ذلك، نداءات النماذج كتحمّل المفتاح من Google Secret Manager وكتخليه غير فذاكرة العملية. المفتاح ما خاصوش يبان فملفات المصدر ولا فسجلات التشغيل.

  1. حلّ model-relay.mjs و models.mjs.
  2. بدّل مراجع مشروع Google Cloud والسرّ ديال النشر الأصلي بمراجع المشروع ديالك.
  3. دير المصادقة محلياً باستعمال بيانات اعتماد Google الافتراضية للتطبيق.
  4. عطي للهوية المصادق عليها الصلاحية باش توصل للسرّ المختار.
  5. شغّل ترحيل النموذج حسب إعداد الترحيل ديال المستودع.
  6. عيّن رابط الترحيل ملي كتطلق الوكيل:
MODEL_RELAY=http://127.0.0.1:3099

ما تلصقش مفتاح OpenRouter فالكود المصدري، ولا سكريبتات الصدفة، ولا سجلات الأحداث، ولا بيانات وصف التشغيل. المشروع مصمّم باش يجيب المفتاح من Secret Manager ويخليه فذاكرة العملية.

الخطوة 3: وجّد الخادم ومراقب التنين

حطّ ملف JAR المتوافق ديال خادم Minecraft Java 1.16.5 vanilla فـ server/server.jar. كيشير README بلّي بيئة تشغيل Minecraft Java المثبّتة تقدر تشغّل هاد الخادم.

مراقب التنين مبرمج فـ observer/DragonObserver.java. بنِيه بهاد الأمر:

./build-observer.sh

شغّل الخادم الرئيسي والحسّاس ديالو اللي غير للقراءة بهاد الأمر:

./start-server.sh

المراقب كيزيد استدعاء ملاحظة محلي فقط لدورة التنين فـ الخادم. خاصّو يبقى غير للقراءة؛ ما كيبدّلش الذكاء الاصطناعي ديال التنين ولا الحالة ديال أي لاعب أو كيان.

صايب عالماً جديداً بصح

مجلد تشغيل جديد ما كيرجّعش عالم Minecraft للصفر. قبل تسجيل جديد، حبّس الخادم واختار قيمة ما مستعملةش لـ level-name فـ server/server.properties. خلّي البذرة المهيّأة كيف ما هي، ومن بعد عاود شغّل الخادم.

استعمل نفس الاسم الجديد لمجلد سجلات التشغيل. حافظ على العوالم السابقة إلا كانت داخلة فالدليل ديال التشغيلات السابقة.

الخطوة 4: ثبّت وبنِ العميل الأصلي

العميل الأصلي المخفي كيوفّر التصيير الرسمي ديال Minecraft المستعمل فالتسجيلات الجديدة. ثبّت التبعيات ديالو الخاصة بـ Python وبنِ محوّل العرض والالتقاط:

python3 native-client/install.py
./native-client/build.sh

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

الخطوة 5: جمّد إعدادات التشغيل

اختار معرّفاً فريداً، مبيّن هنا بـ NEW_RUN. جمّد التشغيل قبل ما تطلق الوكيل:

node optimization/nether/freeze-run.mjs NEW_RUN

المسار النهائي محدّد فـ optimization/nether/config.json. تجميد التشغيل كيساعد يحافظ على الإعدادات المرتابطة بالسجلات والتسجيل الناتجين عليه.

الخطوة 6: شغّل الوكيل

طلق الوكيل من جذر المستودع. الأمر التالي كيختار Astra، كيفعّل العرض الأصلي والمسجّل، كيتسنى العميل الأصلي، وكيتاصل بحسّاس التنين:

PLANNER_MODEL=openai/gpt-6-astra RUN_ID=NEW_RUN \
NATIVE_VIEW=1 WAIT_NATIVE=1 NATIVE_RECORD=1 \
DRAGON_SENSOR_URL=http://127.0.0.1:3093 node nether-agent.mjs

إلا ما كانش رابط الترحيل موجود من قبل فبيئة العملية، زيدو حتى هو:

MODEL_RELAY=http://127.0.0.1:3099 \
PLANNER_MODEL=openai/gpt-6-astra RUN_ID=NEW_RUN \
NATIVE_VIEW=1 WAIT_NATIVE=1 NATIVE_RECORD=1 \
DRAGON_SENSOR_URL=http://127.0.0.1:3093 node nether-agent.mjs

باش تستعمل Sol كمخطّط، بدّل قيمة النموذج:

PLANNER_MODEL=openai/gpt-5.6-sol

الخطوة 7: طلّق عميل Minecraft المخفي

تسنى حتى يبدا المرآة البروتوكولية المحلية كتصنت فالبورت 25578. من بعد حلّ ترمينال آخر وشغّل:

python3 native-client/launch.py

حيت WAIT_NATIVE=1 مفعّل، الوكيل كيتسنى العميل المخفي والمسجّل قبل ما يدير أول إجراء. المسجّل كيتحبس من بعد حدث بوابة الخروج.

الالتقاط الناتج مهيّأ لدقة 960 × 540 وبـ 20 إطار فالثانية بلا صوت. يقدر يبيّن الصحة، الجوع، الشريط السريع، الأدوات المحمولة، شاشات المخزون والصناعة، الحركات الأصلية، وصحة التنين.

مراقبة التشغيل وإيقافه بأمان

الحالة الحالية متوفرة من نقطة الحالة المحلية:

http://127.0.0.1:3078

التقدّم الحالي كيتكتب حتى هو فـ status.json. باش تطلب التوقيف فحدّ فاصل بين الإجراءات، صايب الملف التالي:

runs/NEW_RUN/stop

ما توقفش العميل الأصلي مباشرة من بعد ما يسالي التشغيل. تسنى حتى تظهر علامة اكتمال التسجيل:

runs/NEW_RUN/full-playthrough.mp4.finished.json

هاد الشي كيساعد يتفادى قطع الالتقاط النهائي أو إفسادو.

فهم الدليل الناتج

كل تشغيل كيخزّن الدليل ديالو تحت runs/<run>. أهم الملفات هي:

  • events.jsonl: الطلبات، أجوبة النموذج، الإجراءات المختارة، نتائج اللعبة، وأحداث الاكتمال.
  • status.json: آخر تقدّم ديال التشغيل.
  • victory.json: كيتولّد غير ملي كيكون دليل موت التنين وبوابة الخروج المطلوبين موجوداً.
  • full-playthrough.mp4: التسجيل الأصلي ملي كيكون التسجيل مفعّلاً.
  • full-playthrough.mp4.finished.json: تأكيد بلّي إنهاء التسجيل كمل.

دليل موت التنين يقدر يكون إنجاز القتل أو صحة صفر مبلّغ عليها من الخادم، مجموعين مع مرحلة موت التنين. هاد الفرق مهم حيت القتل بالسرير يقدر ما يولّـدش إنجاز القتل. فـ Java 1.16.5، حدث الخروج كيستعمل السبب الرقمي 4.

المراجعة النهائية الصحيحة ما خاصهاش تعتمد على victory.json بوحدو. خاصها حتى تفحص حالة DragonFight ديال العالم والفيديو.

شغّل الفحوصات الآلية

ستعمل مجموعة الاختبارات ديال Node فالمستودع باش تتحقق من أحداث الإكمال، وحزم المرآة الأصلية، وسياسة الأفعال، وإلغاء تحديد المسار:

node --test evidence.test.mjs native-mirror.test.mjs optimization/*.test.mjs optimization/pass-2/policy.test.mjs optimization/nether/*.test.mjs

هاد الاختبارات ما كتعوضش التحقق المباشر. الحركة، والصناعة، والقتال، والدمج مع الخادم، والتسجيل، خاصها ما زال اختبارات ضد خادم Minecraft خدام.

كيفاش كيخدم القتال فـ End

تنفيذ القتال فـ end-combat.mjs كيكشف هجوم واحد محدود باستعمال السرير باش يختارو JEV. الفعل كيحط سرير واحد، وكيوجّه ليه، وكيتسنى حتى يدخل راس التنين اللي تلاحظ فنافذة الهجوم المضبوطة، ومن بعد كيرسل أمر استعمال واحد.

الفعل كيتوقف إلا فقد اللاعب التغطية ديالو أو دخل نفس التنين لمنطقة التغطية. حسب README، الضبط المحلي حسّن الضرر من 11 حتى لـ 46 لكل سرير، بفضل التوجيه قبل الاستعمال وتضييق نافذة الهجوم.

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

استعمل مختبر القتال بالطريقة الصحيحة

المجلد combat-lab هو بيئة اختبار مستقلة. يقدر يستعمل مواقع، ومخزونات، وتغييرات اختبار أخرى محضّرة مسبقاً. السائق الثابت ديالو، combat-probe.mjs، كيستعمل المنفذ 25577 وما كينادي حتى نموذج.

ما تقدّمش نتيجة combat-lab على أنها تشغيل كامل فـ Survival متحكم فيه بالنموذج. نتائج المختبر كتحقق من سلوك قتال معزول، ماشي من المسار كامل انطلاقاً من مخزون خاوي.

نصائح متقدمة للتسجيل والتحقق

زِد طبقة معلومات وتحقق منها

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

باش تنشئ وتتحقق من الطبقة فمثال التشغيل الموثق، استعمل:

node overlay.mjs nether-final-02
node verify-run.mjs nether-final-02 nether-final-02 full-playthrough-overlay.mp4

وبالنسبة لتسجيل Prismarine Viewer الأقدم، الأوامر الموثقة هي:

node assemble-video.mjs recorded-06
node verify-run.mjs recorded-06

سير العمل الأقدم ديال recorded-06 كان كيستعمل Prismarine Viewer وواجهة HUD مخصصة. التسجيلات الجديدة كتستعمل عميل Minecraft Java 1.16.5 الرسمي عبر مرآة البروتوكول للقراءة فقط.

حافظ على التوقفات وتاريخ تحديث الكود

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

تجنب استراتيجيات الدخول غير الآمنة للبوابة

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

خلي الانتصار نهائي

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

خلي الملفات المحلية خارج Git

التسجيلات وأدلة الإثبات المولدة كيبقاو محلياً عن قصد. المسار الموثق لأحدث فيديو هو runs/nether-final-08/full-playthrough-banner.mp4، والتحقق ديالو، ومقارنة التوقيت، وسجل الأفعال كاينين فنفس مجلد التشغيل. ما تدفعش للتخزين التسجيلات، أو أوقات التشغيل المنزلة، أو ملفات الخادم الثنائية، أو العوالم، أو بيانات الدخول.

لائحة التحقق من المشاكل

  • الوكيل ما كيبداش: تأكد أن المرآة كتستمع فالمنفذ 25578 وأن العميل الأصلي اتصل. مع WAIT_NATIVE=1، الانتظار متوقع.
  • طلبات النموذج كتفشل: تحقق من Google Application Default Credentials، وصلاحيات Secret Manager، ومراجع المشروع والسر فـ model-relay.mjs وmodels.mjs، وتوفر المرحّل فالمنفذ 3099، ورصيد OpenRouter.
  • التشغيل كيبدا فعالم قديم: وقف الخادم وعيّن level-name ما تستعملش فعلاً. إنشاء مجلد تشغيل جديد بوحدو ما كافيش.
  • ملاحظات التنين ما متوفراش: بنِ المراقب، وبدا الخادم بالحساس ديالو، وتأكد أن الوكيل كيستعمل DRAGON_SENSOR_URL=http://127.0.0.1:3093.
  • ما كيبانش مؤشر التسجيل المكتمل: خلي العميل الأصلي خدام حتى يتكتب full-playthrough.mp4.finished.json.
  • مسار خاص بمنصة معينة كيفشل: عدّل مسارات Java وMinecraft runtime والعميل الأصلي والخادم، حيث السكريبتات المرفقة تطورت على macOS.

الخلاصة

مشروع Astra وJEV كيبيّن وكيلاً منظماً ديال Minecraft مبنياً على الأدلة، ماشي بوت لعبة بلا قيود. Astra أو Sol كيخطط للمسار، وJEV كيختار أفعالاً محدودة، وMineflayer كينفذها عبر البروتوكول العادي، وحساس للقراءة فقط كيدعم قتال التنين بدقة. التشغيل الموثوق كيتطلب تدبيراً حذراً لبيانات الدخول، وعالماً جديداً فعلاً، وتسجيلاً أصلياً متزامناً، وسجلات محفوظة، واختبارات آلية، ومراجعة نهائية لحالة اللعبة ولأدلة الفيديو بجوج.

للاطّلاع على الأسس ذات الصلة، راجع التقديم الرسمي ديال TypeSafe، ومستودع Mineflayer، والتوثيق الرسمي لنموذج Astra.