pnpm-lock.yaml. وتستخدم حزم OpenClaw المنشورة على npm الملف npm-shrinkwrap.json، وهو ملف npm القابل للنشر لقفل التبعيات، بحيث تستخدم عمليات تثبيت الحزم مخطط التبعيات الذي خضع للمراجعة أثناء الإصدار.
لماذا يهم ذلك
يمثّل ملف Shrinkwrap إيصالًا لشجرة التبعيات التي تُشحن مع حزمة npm: فهو يحدد لـ npm الإصدارات الانتقالية الدقيقة المطلوب تثبيتها.
بالنسبة إلى إصدارات OpenClaw، يعني ذلك ما يلي:
- لا تطلب الحزمة المنشورة من npm إنشاء مخطط تبعيات جديد وقت التثبيت؛
- يمكن مراجعة تغييرات التبعيات لأنها تظهر في فرق ملف القفل؛
- يختبر التحقق من صحة الإصدار المخطط نفسه الذي سيثبّته المستخدمون؛
- تظهر مفاجآت حجم الحزمة أو التبعيات الأصلية قبل النشر.
openclaw security audit أو التحقق من منشأ الحزمة أو اختبارات التثبيت الأولية.
يعمل OpenClaw بوصفه Gateway ومضيف Plugins وموجّه نماذج وبيئة تشغيل للوكلاء، لذا يؤثر التثبيت الافتراضي في وقت بدء التشغيل واستخدام القرص وتنزيلات الحزم الأصلية والتعرض لمخاطر سلسلة التوريد. يوفّر Shrinkwrap حدًا ثابتًا لمراجعة الإصدار: يرى المراجعون حركة التبعيات الانتقالية، وترفض أدوات التحقق الانحراف غير المتوقع في ملف القفل، وتحمل حزم Plugins مخطط تبعياتها المقفول بدلًا من الاعتماد على الحزمة الجذرية.
الإنشاء والتحقق
تتضمن حزمة npm الجذريةopenclaw وحزم Plugins المملوكة لـ OpenClaw والمنشورة على npm (مثل @openclaw/discord) وحزم مساحة العمل القابلة للنشر، مثل @openclaw/ai، الملف npm-shrinkwrap.json عند نشرها. تُستبعد تبعيات مساحة العمل من ملف Shrinkwrap الجذري لأنها تُنشر إلى جانب الحزمة الجذرية؛ وبدلًا من ذلك، تثبّت كل حزمة قابلة للنشر في مساحة العمل شجرة تبعياتها الانتقالية الخاصة. ويمكن لحزم Plugins المناسبة أيضًا النشر باستخدام bundledDependencies صريحة، بحيث تحمل ملفات تبعيات وقت التشغيل داخل أرشيف Plugin بدلًا من الاعتماد فقط على الحل وقت التثبيت.
pnpm-lock.yaml. يحافظ ذلك على حدود مراجعة عمر تبعيات pnpm وعمليات التجاوز والتصحيحات.
راجع ما يلي بوصفه حساسًا أمنيًا:
pnpm-lock.yamlnpm-shrinkwrap.json- حمولات تبعيات Plugins المضمّنة
- أي فرق في
package-lock.json
package-lock.json للحزم المنشورة. يتحقق مسار نشر Plugins على npm من ملف Shrinkwrap المحلي الخاص بـ Plugin، ويثبّت التبعيات المضمّنة المحلية للحزمة، ثم يحزمها أو ينشرها.