Screeps AI Architect

Screeps AI Architect · ملف الإصدار

مراجعة مستودع المشروع نفسه: ما نُفِّذ، وما بقي جزئيًا، وما توقف عند الوثائق.

نصفان: روبوت من ٢١ وحدة CommonJS مدمجة في main.js واحد ينفّذه خادم اللعبة، وبوابة React 19 مع Vite 6 على خادم Express. لا شيء يعمل من المتصفح كموقع ثابت.

٢ منفَّذ · ٣ جزئيًا · ١ غير منفَّذ · ١ تمثيلي

رسم مفاهيمي: Screeps AI Architect. ليس لقطة شاشة للمنتج

ما يُقرأ في الشيفرة

  • يعلن CANON.md أن المجلد القانوني هو screeps-ai-architect v3؛ ومجلدات archive وrar وbase موسومة كلقطات أقدم

    الملف CANON.md

  • كود الروبوت: ٢١ وحدة في screeps_runtime/modules بإجمالي ١٦٬٠٣٩ سطرًا؛ أكبرها static_creeps.js بـ ٤٬٣٢٤ سطرًا

    الملف screeps_runtime/modules

  • نقطة دخول الدورة واحدة هي module.exports.loop في main_entry.js؛ و٢٠ وحدة في ORCHESTRA_MODULES، و٢٢ استدعاءً لـ kernel.registerProcess يحدد الأولويات (الفسخ ٩٨ والدفاع ١٠٠ والمسح ١٠٥ والمختبرات ٤٠ والتجارة ٣٠ والعرض ٢٠)

    الملف screeps_runtime/modules/main_entry.js

  • ثوابت CPU: الحد الافتراضي ٢٠، ونطاق bucket من ٥٠٠ إلى ٩٥٠٠، والهدف ٩٠٠٠ على shard3، وعتبات cpuMode عند ٧٠٠ و٣٥٠٠ و٩٠٠٠

    الملف screeps_runtime/modules/bucket_governor.js

  • تسليم الكود عبر POST إلى /api/user/code على الفرع 1st والمضيف screeps.com افتراضيًا؛ ويثبّت مانييفست آخر نشر ٢١ ملفًا مع sha256 لكلٍّ والإصدار ٢٫١٢٫١٧٧

    الملف server.ts

  • حالة المستعمرة الحيّة وفق القياس: غرفة واحدة E22N53 بالرتبة RCL1، و٧ كريبرز، وطاقة ٣٤ من ٣٠٠، وعلامة جوع، و١٩٢ دورة متوقفة، وتقدّم صفر

    الملف audit-results/telemetry/colony-watch.jsonl

  • يدير الفقس ١٣ دورًا بأهداف وأوزان: staticHarvester وpuller وhauler وupgrader وbuilder وdefender وscout وlooter وguard وremoteHarvester وremoteHauler وreserver وclaimer

    الملف screeps_runtime/modules/spawn_manager.js

  • الفحوص أربعة نصوص tsx (bootstrap وmodules_syntax وexport_formats وinvariants) واختبار Playwright واحد؛ ولا إعداد CI في المستودع

    الملف test_modules_syntax.ts

حالة الوحدات

  1. منفَّذ

    الاقتصاد وفقس الأدوار والبناء والدفاع

    استدعاءات حقيقية لـ spawnCreep وcreateConstructionSite، وإطلاق أبراج وactivateSafeMode، ومُخطِّط قاعدة يختار المركز ويضع الحاويات والطرق والملحقات.

    الملف screeps_runtime/modules/dt_planner.js

  2. منفَّذ

    النواة ذات الأولوية ومنظّم CPU وذاكرة القطع

    يرتب kernel.js العمليات مع هامش تجاوز، ويحسب bucket_governor.js هدف bucket المتكيّف وأنصبة الفئات، ويعمل packer.js على RawMemory ضمن حدّ ٩٥٠٠٠ بايت للقطعة.

    الملف screeps_runtime/modules/kernel.js

  3. جزئيًا

    العمليات البعيدة: الشيفرة موجودة والمستعمرة لم تبلغها

    العمليتان remote_ops وloot مسجّلتان والأدوار البعيدة تُحسب، لكن عند RCL1 لا يتحقق شرط الجاهزية للبعيد فيبقى المسار غير مستخدم.

    الملف screeps_runtime/modules/remote_logistics.js

  4. جزئيًا

    المختبرات: التفاعلات موجودة والإنتاج لا

    runReaction وprocessPower حقيقيتان، لكن chooseFactoryProduct وrunFactory تُرجعان صفرًا، وطلبات التعبئة فارغة، ولا استدعاء boostCreep في أي من ٢١ وحدة.

    الملف screeps_runtime/modules/lab_reactor.js

  5. غير منفَّذ

    السوق وناقل المعزلات وCI/CD لا منفَّذة

    تُرجع findHighlyProfitableDeals صفرًا دائمًا ولا استدعاءات سوق؛ وعملية الناقل تعمل بعلم لم يُفعَّل في أي مكان؛ ولا ملفات سير عمل.

    الملف screeps_runtime/modules/market_arbitrage.js

  6. تمثيلي

    مُخطِّط الجدران بالقطع الأدنى وحجوزات Gantt

    تبني generateMinCutBorders غلافًا مستطيلًا بنصف قطر من ٣ إلى ٩: لا شبكة تدفق ولا Ford-Fulkerson ولا Dinic؛ ويحدّ GanttEngine المهام بـ ٢٤ ويمسحها بلا قفل فعلي للموارد.

    الملف screeps_runtime/modules/min_cut.js

  7. جزئيًا

    لوحة البوابة

    تعمل عشرة شاشات، لكن كل واحدة تخاطب خادم Express المدمج وتحتاج رمزًا؛ ولا تُنشر كموقع ثابت، ووثيقة المعمارية مولَّدة من سجل أسماء الوحدات.

    الملف src/App.tsx

كيف تحقَّق هذا

  • الروبوت على الخادم الرسمي مباشرة لا خادم خاص

    تسجل قياسات المضيف screeps.com والمعزلة shard3 وحد CPU ٢٠ وغرفة مملوكة؛ والتسليم إلى الفرع 1st للمضيف نفسه.

    الملف docs/merged-from-optimizer/long-horizon-telemetry/screeps.com-shard3.latest.json

  • المستعمرة في طور التأسيس لا قاعدة متقدمة

    يثبّت colony-watch.jsonl الرتبة ١ وسبعة كريبرز وعلامة جوع و١٩٢ دورة توقّف وتقدّمًا صفرًا وتحذيرًا من وحدات أساس غير موصولة.

    الملف audit-results/telemetry/colony-watch.jsonl

  • الاختبارات لا تؤكد السلوك داخل اللعبة

    ملف test_bootstrap_contract.ts بطول ٢٬١٧٠ سطرًا لا يحوي أي استدعاء assert؛ وtest_modules_syntax.ts يشغّل الوحدات في vm بمتغيرات وهمية دون خادم حقيقي.

    الملف test_bootstrap_contract.ts

  • عتبات التوقف مثبّتة في الإعداد لا في النثر

    يحدد scripts/invariants.json القيم: controllerTicksToDowngradeMin‏ 10000 وconstructionStallTicks‏ 300 وenergyFullnessMin‏ 0.9 وcpuBucketForGrowth‏ 5000.

    الملف scripts/invariants.json

حدود هذه الادعاءات

  • لا يمكن نشر البوابة كموقع ثابت: الواجهة تعتمد كليًا على مسارات الخادم ورمز المستخدم.
  • رمز الحساب محفوظ في localStorage للمتصفح، فأي نشر للواجهة في الشبكة يجعله هدفًا للسرقة عبر XSS.
  • جزء كبير من الوحدات الخوارزمية للزينة: min_cut وmarket_arbitrage وshard_bus وGanttEngine لا تعمل عملًا مفيدًا يُذكر.
  • يحتفظ main_entry.js بقائمة غرف بعيدة ثابتة وقديمة بينما القاعدة الحيّة في غرفة أخرى.
  • دور escort معروف لكنه غائب عن جدول أهداف الفقس، فلا يمكن إنشاؤه بشكل اعتيادي.
  • v3 وحده قانوني: الجذر ولقطتا base وarchive ليستا مستودعي git، فلا تاريخ ولا فروقات لهما.
  • محاكي بقاء محلي موصوف في الوثائق، لكن المستودع لا يحمل إعداده ولا أثر تشغيله.

لماذا لا يوجد إصدار حيّ

لماذا لا يوجد إصدار حيّ

النشر غير ممكن: الواجهة بالكامل تستدعي مسارات /api/screeps على خادم Express المدمج وتحتاج رمز حساب، والرمز محفوظ في localStorage بالمتصفح. الاستضافة الساكنة تعطي شاشة ميتة وهدفًا مكشوفًا لسرقة الرمز.

العودة إلى وصف المشروع ↗