Screeps AI Architect · ملف الإصدار
مراجعة مستودع المشروع نفسه: ما نُفِّذ، وما بقي جزئيًا، وما توقف عند الوثائق.
نصفان: روبوت من ٢١ وحدة CommonJS مدمجة في main.js واحد ينفّذه خادم اللعبة، وبوابة React 19 مع Vite 6 على خادم Express. لا شيء يعمل من المتصفح كموقع ثابت.
٢ منفَّذ · ٣ جزئيًا · ١ غير منفَّذ · ١ تمثيلي
ما يُقرأ في الشيفرة
يعلن 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
حالة الوحدات
منفَّذ
الاقتصاد وفقس الأدوار والبناء والدفاع
استدعاءات حقيقية لـ spawnCreep وcreateConstructionSite، وإطلاق أبراج وactivateSafeMode، ومُخطِّط قاعدة يختار المركز ويضع الحاويات والطرق والملحقات.
الملف
screeps_runtime/modules/dt_planner.jsمنفَّذ
النواة ذات الأولوية ومنظّم CPU وذاكرة القطع
يرتب kernel.js العمليات مع هامش تجاوز، ويحسب bucket_governor.js هدف bucket المتكيّف وأنصبة الفئات، ويعمل packer.js على RawMemory ضمن حدّ ٩٥٠٠٠ بايت للقطعة.
الملف
screeps_runtime/modules/kernel.jsجزئيًا
العمليات البعيدة: الشيفرة موجودة والمستعمرة لم تبلغها
العمليتان remote_ops وloot مسجّلتان والأدوار البعيدة تُحسب، لكن عند RCL1 لا يتحقق شرط الجاهزية للبعيد فيبقى المسار غير مستخدم.
الملف
screeps_runtime/modules/remote_logistics.jsجزئيًا
المختبرات: التفاعلات موجودة والإنتاج لا
runReaction وprocessPower حقيقيتان، لكن chooseFactoryProduct وrunFactory تُرجعان صفرًا، وطلبات التعبئة فارغة، ولا استدعاء boostCreep في أي من ٢١ وحدة.
الملف
screeps_runtime/modules/lab_reactor.jsغير منفَّذ
السوق وناقل المعزلات وCI/CD لا منفَّذة
تُرجع findHighlyProfitableDeals صفرًا دائمًا ولا استدعاءات سوق؛ وعملية الناقل تعمل بعلم لم يُفعَّل في أي مكان؛ ولا ملفات سير عمل.
الملف
screeps_runtime/modules/market_arbitrage.jsتمثيلي
مُخطِّط الجدران بالقطع الأدنى وحجوزات Gantt
تبني generateMinCutBorders غلافًا مستطيلًا بنصف قطر من ٣ إلى ٩: لا شبكة تدفق ولا Ford-Fulkerson ولا Dinic؛ ويحدّ GanttEngine المهام بـ ٢٤ ويمسحها بلا قفل فعلي للموارد.
الملف
screeps_runtime/modules/min_cut.jsجزئيًا
لوحة البوابة
تعمل عشرة شاشات، لكن كل واحدة تخاطب خادم 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 بالمتصفح. الاستضافة الساكنة تعطي شاشة ميتة وهدفًا مكشوفًا لسرقة الرمز.