💀→🟢 حادثة الموت الكامل (code 78 / Invalid config) — 2026-08-01 05:20 فجراً
السبب الجذري (مُثبَت بالأدلة الخام):
- الخطأ القاتل: أضفتُ يدوياً (05:18) مفتاحاً مكرراً
fallback (مفرد) بجانب fallbacks (جمع) في agents.defaults.model.
- schema OpenClaw =
{primary, fallbacks} + additionalProperties:false → أي مفتاح زائد يرفض الكائن كاملاً → agents.defaults.model: Invalid input → exit 78 (EX_CONFIG).
- المفتاح كان نسخة طبق الأصل من fallbacks (32=32، IDENTICAL=True) → ميت، مجهول للبرنامج، صفر معلومة فريدة.
لماذا صار موتاً 4 ساعات (خطئي المزدوج):
1. المفتاح المكرر.
2.
طلبتُ gateway restart 3 مرات فوق كونفيغ باطل (05:19/05:22/05:22) بدل إصلاح البايت الواحد. + الـ entrypoint (
restart:unless-stopped) دخل حلقة إحياء لا نهائية.
3. الـ watchdog نسخ الكونفيغ الخاطئ (
clobbered.watchdog.*) بدل استعادة last-good.
لماذا doctor --fix وحده لم يكفِ:
- وظيفته ترقية أسماء الموديلات المتقاعدة فقط، لا حذف مفاتيح مجهولة. بل عدّل داخل
fallback الدخيل نفسه. الحل الفعلي = حذف fallback المفرد يدوياً (فعله النموذج الآخر ~17:33).
ما فعله النموذج الآخر (صحيح):
- حذف
fallback المفرد + doctor --fix + غيّر primary من opus-5 (كان يرفض السيبراني) إلى opus-4-8 + أعاد القنوات. عمل نظيف. الفرق النهائي عن آخر نسخة سليمة = بندان فقط (primary + timestamp).
تصحيحان بأمانة على تقرير النموذج الآخر (بدليل حيّ):
1.
الـ entrypoint لا يكتب fallback — قرأتُ /entrypoint.sh: فقط
chown -R node:node /data +
runuser -u node. لا
plugins enable/install فيه. إذاً
fallback كان من تعديلي اليدوي أنا، لا من الصورة. (النموذج الآخر رجّح أنها أداة/entrypoint — غير دقيق.)
2.
الـ 19 سكيل «المعطّلة» غير مفقودة — هي symlinks لـ ~/.claude/skills لكن
الملفات الحقيقية موجودة في ~/.agents/skills (مُتحقَّق: hyperframes/media-use/slideshow موجودة هناك) وهي التي تظهر في قائمة السكيلز المحقونة. فالسكيلز متاحة فعلاً عبر ~/.agents/skills — التحذير symlink-escape تجميلي.
ما فُقد فعلاً (ليس من الإصلاح):
- 5 subagent runs orphan (ماتت في حلقة restart). لا credentials/ذاكرة/جلسات/بلاگنات فُقدت.
الوقاية الدائمة (خط أحمر — أبنيها):
1. ❌ لا
gateway restart قبل
openclaw config validate = valid. أي تعديل كونفيغ → validate فوراً بعده.
2. auto-heal: عند Invalid config يستعيد .last-good المُتحقَّق بدل الموت/نسخ الخطأ.
3. ✅ لا تلمس ملكية الملفات (chown 0:0 كارثة — الـ entrypoint يرجّعها node عند كل إقلاع؛ التحذيرات الـ44 تجميلية، 23 بلاگن محمّلة وتعمل).