يسمح صندوق حماية وكيل البرمجة (Coding Agent Sandbox) بتشغيل الأوامر والتغييرات البرمجية التي يولدها الوكيل داخل مساحة عمل محدودة يمكن التحكم من خلالها في الملفات والعمليات والوصول إلى الشبكة والأسرار والسجلات ونتائج المراجعة. الهدف العملي ليس التظاهر بأن الكود المولد عشوائيًا غير ضار. الهدف هو معاملة الوكيل كمساهم غير موثوق به مع جهاز تطوير قابل للاستخدام لمرة واحدة، وحدود واضحة، وتنفيذ قابل للملاحظة، ومسار موافقة بشرية قبل أن يصل أي شيء إلى الإنتاج.
ما يحتاج صندوق حماية وكيل البرمجة إلى عزله
يصبح وكيل البرمجة مفيدًا عندما يتمكن من فحص مستودع، وتحرير الملفات، وتشغيل الاختبارات، وتثبيت التبعيات، وتسليم التصحيح. هذه أيضًا هي الإجراءات التي تجعل البيئة محفوفة بالمخاطر. يمكن أن يتسبب تثبيت تبعية تم حقنها عن طريق المطالبة، أو أمر شل مدمر، أو سر مكشوف عن طريق الخطأ في ضرر أكبر من إجابة نصية سيئة.
صمم صندوق الحماية حول الموارد التي يمكن لوكيل البرمجة لمسها:
| السطح | ما يجب التحكم به | لماذا هو مهم |
|---|---|---|
| سحب المستودع | الفرع، SHA الالتزام، نطاق الكتابة، الوحدات الفرعية، الملفات المولدة | يمنع الوكيل من تغيير قاعدة الشيفرة الخاطئة أو إخفاء التغييرات خارج مسار المراجعة. |
| نظام الملفات | جذر مساحة العمل، الملفات المثبتة، المسارات المتجاهلة، أدلة الإخراج | يمنع الوصول الواسع إلى ملفات المضيف وبيانات الاعتماد وذاكرة التخزين المؤقت والمشاريع غير ذات الصلة. |
| تنفيذ الصدفة | الأوامر المسموح بها، دليل العمل، المهلة، التقاط الإخراج، بوابات الموافقة | يمنح الوكيل طاقة كافية للبناء والاختبار مع الحد من الإجراءات عالية المخاطر. |
| تثبيت الحزم | سياسة السجل، ملفات القفل، الإصدارات المثبتة، استراتيجية التخزين المؤقت، سجلات التثبيت | يقلل من غموض سلسلة التوريد عندما يطلب الوكيل تبعيات جديدة. |
| الوصول إلى الشبكة | حركة الخروج الافتراضية، قوائم السماح، سلوك DNS، وجهات API، مرايا الحزم | يساعد في منع نقل البيانات غير المقصود ويجعل المكالمات الخارجية قابلة للمراجعة. |
| الأسرار | بيانات اعتماد محدودة النطاق، رموز قصيرة العمر، تنقيح، لا مفاتيح إنتاج افتراضية | يمنع الوكيل من قراءة أو تسريب بيانات اعتماد لا يحتاجها. |
| النتائج | تقارير الاختبار، مخرجات البناء، لقطات الشاشة، الملفات المولدة، السجلات | يمنح المراجعين أدلة دون الاعتماد فقط على ملخص الوكيل. |
| دورة الحياة | إيقاف مؤقت، استئناف، لقطة، إعادة تعيين، تنظيف، سياسة الاحتفاظ | يجعل عمليات تشغيل الوكيل قابلة للتكرار ويمكن التخلص منها بدلاً من أن تكون آلات غامضة طويلة العمر. |
استخدم هذا الجدول كقائمة مرجعية للتصميم. ينطبق سواء كان صندوق الحماية الخاص بك مبنيًا على الحاويات أو الآلات الافتراضية أو الأجهزة الافتراضية الصغيرة أو صناديق الحماية السحابية المدارة أو مشغل داخلي. طبقة العزل المحددة مهمة، لكن الضوابط التشغيلية حول الطبقة مهمة أيضًا.
سير العمل المرجعي لتشغيل كود الوكيل
أكثر سير عمل آمن لوكيل البرمجة يشبه خط أنابيب طلب سحب (Pull Request) محكومًا أكثر من كونه دردشة روبوت.
- إنشاء مساحة عمل جديدة للمهمة.
- سحب المستودع المستهدف عند فرع أو التزام محددين.
- إعطاء الوكيل مهمة محددة، وأمر اختبار، ونطاق ملفات.
- السماح للوكيل بفحص الملفات واقتراح خطة.
- تشغيل أوامر القراءة فقط منخفضة المخاطر تلقائيًا.
- طلب الموافقة أو فحوصات السياسة للأوامر عالية المخاطر.
- التقاط كل أمر، رمز الخروج، stdout، stderr، كتابة الملفات، والنتائج المولدة.
- تشغيل الاختبارات وفحوصات النوع والمصححات اللغوية والبناءات أو البرامج النصية المستهدفة داخل صندوق الحماية.
- تصدير التصحيح والفرق ونتائج الاختبار وحزمة النتائج.
- إعادة تعيين أو تدمير مساحة العمل بعد المراجعة، ما لم يتم حفظ لقطة عن قصد.
التفصيل المهم هو أن صندوق الحماية ليس فقط مكانًا لتنفيذ الكود. إنه أيضًا مسجل الأدلة. يجب أن يكون المراجع قادرًا على الإجابة: ما المستودع الذي تم سحبه؟ ما الذي تغير؟ ما الأوامر التي تم تشغيلها؟ ما الذي فشل؟ ما الذي نجح؟ ما الملفات التي تم إنتاجها؟ وما الموارد الخارجية التي تم الاتصال بها؟
بالنسبة للوكلاء البسيطين، يمكن تنفيذ ذلك كقائمة انتظار من الإجراءات مع فحوصات سياسة حول كل إجراء. بالنسبة للوكلاء الأكثر قدرة، حافظ على نفس الحدود ولكن اجعل طبقة التحكم أكثر وضوحًا: مكون واحد يقرر ما يُسمح للوكيل بطلبه، ومكون واحد ينفذ الإجراءات المعتمدة، ومكون واحد يسجل التشغيل.
مهمة المستخدم
-> الوكيل يقترح قراءات وتحريرات وأوامر للملفات
-> طبقة السياسة تصنف كل إجراء
-> صندوق الحماية ينفذ الإجراءات المعتمدة
-> يتم التقاط السجلات والفروقات والنتائج
-> يراجع الإنسان التصحيح قبل الدمج أو النشر
يفصل هذا الفصل بين النموذج كونه المخطط والسلطة النهائية على العمليات الخطيرة.
نقاط التفتيش الأمنية قبل تنفيذ الأوامر
ابدأ بافتراض أن الأوامر المولدة قد تكون خاطئة أو واسعة النطاق أو متأثرة بمحتوى المستودع. قد يقرأ وكيل البرمجة تعليمات ضارة من أداة اختبار أو ملف README أو نص مشكلة أو برنامج نصي لحزمة أو صفحة ويب. يجب أن يجعل صندوق الحماية هذه الإخفاقات مرئية ومحتواة.
قبل تنفيذ الصدفة، حدد فئات الأوامر:
| فئة الأمر | أمثلة | السياسة الافتراضية |
|---|---|---|
| فحص للقراءة فقط | pwd، ls، git status، rg، cat package.json |
عادةً السماح والتسجيل. |
| تحقق محلي | npm test، pytest، go test، cargo test |
السماح مع مهلة والتقاط الإخراج. |
| بناء أو توليد | npm run build، توليد الكود، توليد الوثائق |
السماح عندما تكون مسارات الإخراج متوقعة. |
| تغييرات التبعيات | تثبيت مدير الحزم، تحديث ملف القفل | تتطلب فحوصات سياسة أو موافقة. |
| أوامر شبكية | جلب عناوين URL، استدعاء APIs، استنساخ مستودعات إضافية | تتطلب سياسة وجهة وتسجيل. |
| أوامر مدمرة | حذف، إعادة تعيين قسري، تنظيف القرص، chmod/chown واسع | منع أو طلب موافقة بشرية صريحة. |
| الوصول إلى الأسرار | قراءة ملفات البيئة، مخازن بيانات الاعتماد، تكوينات النشر | منع ما لم تكن المهمة محددة ومحدودة النطاق. |
لا يتطلب هذا محللًا ثابتًا مثاليًا. حتى الضوابط البسيطة تساعد: قيود دليل العمل، أنماط الرفض الصريحة، مهلات الأوامر، حدود حجم الإخراج، ومطالبة موافقة للأوامر التي تغير التبعيات أو تلمس بيانات الاعتماد أو تتصل بمضيفين خارجيين.
يجب أن تكون حدود نظام الملفات ملموسة بنفس القدر. قم بتثبيت المستودع والأدلة المؤقتة التي يحتاجها الوكيل فقط. تجنب تثبيت دليل المنزل للمشغل أو مفاتيح SSH أو تكوين السحابة أو بيانات اعتماد مدير الحزم أو ملفات تعريف المتصفح أو ملفات بيئة الإنتاج. إذا كانت هناك حاجة إلى ذاكرة تخزين مؤقت للسرعة، ففضل ذاكرات التخزين المؤقت للقراءة فقط أو المحددة بالمهمة مع احتفاظ واضح.
كيفية التعامل مع تثبيت الحزم والوصول إلى الشبكة
يعد تثبيت الحزمة أحد أصعب أجزاء عزل وكيل البرمجة لأنه مفيد ومحفوف بالمخاطر في نفس الوقت. يحتاج الوكلاء إلى إعادة إنتاج البناءات وتشغيل الاختبارات، لكن نصوص التثبيت يمكنها تنفيذ كود وسحب تبعيات متعددة والاتصال بالبنية التحتية الخارجية.
استخدم سياسة أكثر صرامة لعمل الحزمة:
- فضل عمليات التثبيت المستندة إلى ملفات القفل على حل التبعية الحر.
- سجل أمر مدير الحزمة وعنوان URL للسجل وأسماء الحزم والإصدارات وتغييرات ملف القفل.
- قم بتوجيه تنزيلات التبعيات من خلال سجلات أو مرايا معتمدة عندما يكون ذلك ممكنًا.
- تعامل مع إضافات التبعيات الجديدة كتغييرات برمجية تتطلب مراجعة.
- امنع نصوص التثبيت لسير العمل عالية المخاطر ما لم يكن المشروع بحاجة إليها صراحة.
- احتفظ بذاكرة تخزين مؤقت للتبعيات منفصلة عن الأسرار والمستودعات غير ذات الصلة.
تستحق حركة الخروج من الشبكة نفس المعاملة. قد يحتاج وكيل البرمجة إلى الوصول إلى الإنترنت لسجلات الحزم أو وثائق API أو فحوصات المتصفح أو اختبارات التكامل. هذا لا يعني أنه يحتاج إلى وصول غير مقيد للخروج.
على الأقل، حدد الافتراضي:
| سؤال الشبكة | الافتراضي الأكثر أمانًا |
|---|---|
| هل يمكن لصندوق الحماية الوصول إلى الإنترنت؟ | لا، ما لم تكن المهمة تتطلب ذلك. |
| هل يمكنه حل أسماء DNS عشوائية؟ | تقييد أو تسجيل DNS والمضيفين الوجهة. |
| هل يمكنه استدعاء واجهات برمجة تطبيقات الإنتاج؟ | استخدم نقاط نهاية الاختبار أو الخدمات الوهمية افتراضيًا. |
| هل يمكنه جلب تبعيات الحزمة؟ | استخدم السجلات والمرايا وملفات القفل المعتمدة. |
| هل يمكنه تحميل الملفات أو السجلات؟ | منع ما لم تكن الوجهة متوقعة ومراجعة. |
لا تصف هذه الضوابط على أنها ضمان بعدم حدوث تسريب أو اختراق للتبعية. الادعاء الواقعي أضيق: السياسة والعزل والتسجيل والمراجعة تقلل من نصف قطر الانفجار وتجعل السلوك المحفوف بالمخاطر أسهل في الكشف قبل الوثوق بالتصحيح.
الفروقات والنتائج والسجلات للمراجعة البشرية
تكون المراجعة البشرية أكثر فعالية عندما ينتج صندوق الحماية حزمة مراجعة مضغوطة، وليس نص محادثة طويل.
لكل تشغيل، التقط:
- عنوان URL للمستودع والفرع وSHA الالتزام المستخدمة في السحب.
- مطالبة المهمة أو ملخص المشكلة.
- الملفات المقروءة والملفات المكتوبة.
- كل أمر ودليل العمل ووقت البدء ووقت الانتهاء ورمز الخروج وstdout وstderr.
- أوامر تثبيت التبعيات وتغييرات ملف القفل.
- نتائج الاختبار والتدقيق اللغوي وفحص النوع والبناء.
- النتائج المولدة مثل لقطات الشاشة والتقارير والتغطية والملفات الثنائية أو عناوين URL المعاينة.
- الفرق النهائي بتنسيق تصحيح أو طلب سحب قياسي.
يجب على المراجع فحص الفرق أولاً، ثم استخدام السجلات والنتائج للإجابة على أسئلة محددة. هل تم تشغيل الاختبارات حقًا؟ هل قام الوكيل بتعديل ملفات خارج النطاق المطلوب؟ هل أضاف تبعية؟ هل أعد كتابة الملفات المولدة؟ هل استدعى خدمة شبكة؟ هل ترك وراءه نتائج كبيرة أو حساسة؟
بالنسبة لفرق الإنتاج، اجعل بوابة المراجعة صريحة:
- يمكن للوكيل اقتراح تصحيح.
- يمكن لصندوق الحماية تشغيل التحقق.
- يمكن للنظام فتح طلب سحب.
- يجب على الإنسان أو السياسة المعتمدة أن تقرر ما إذا كان سيتم الدمج أو النشر أو منح أذونات أوسع.
هذه الحدود مهمة بشكل خاص للمستودعات التي تتضمن مسارات البنية التحتية والفوترة والمصادقة والنشر أو بيانات العملاء.
أين يتناسب Novita Agent Sandbox
تم تصميم Novita Agent Sandbox لبيئات تنفيذ معزولة ذات حالة حيث يمكن للوكلاء تشغيل الكود وتثبيت التبعيات والوصول إلى الملفات واستخدام سير عمل المتصفح والحفاظ على حالة التنفيذ عبر الجلسات. يصف نظرة عامة على Agent Sandbox ثلاث كتل بناء أساسية: صناديق الحماية لتنفيذ المهام المعزولة، والقوالب للبيئات المعدة مسبقًا، واللقطات لإعادة استخدام الحالة المهيأة.
بالنسبة لسير عمل وكيل البرمجة، تتوافق هذه الأساسيات بشكل طبيعي مع مساحة عمل تطوير محكومة:
| احتياج وكيل البرمجة | نمط صندوق الحماية |
|---|---|
| البدء من بيئة معروفة | استخدام قالب مع وقت التشغيل والأدوات المتوقعة. |
| تشغيل الأوامر والاختبارات بعيدًا عن المضيف | التنفيذ داخل نظام ملفات وبيئة وقت تشغيل خاصة بصندوق الحماية. |
| إعادة استخدام إعداد مُعد | حفظ لقطة بعد تثبيت التبعيات المعتمدة أو أدوات المشروع. |
| تصحيح عمل وكيل طويل الأمد | الحفاظ على الحالة عبر الجلسات عندما يحتاج سير العمل إلى الاستمرارية. |
| التنظيف بعد المراجعة | إعادة تعيين أو إيقاف أو التخلص من صندوق الحماية وفقًا لسياسة الاحتفاظ الخاصة بك. |
حافظ على فصل استخدام المنتج وسياسة الأمان. يمكن لـ Novita Agent Sandbox توفير بيئة التنفيذ المعزولة للوكلاء الذين يشغلون الكود، لكن تطبيقك لا يزال بحاجة إلى تحديد الوصول إلى المستودع وسياسة الأوامر ونطاق الأسرار وقواعد الشبكة والاحتفاظ بالنتائج وبوابات الموافقة البشرية. تعتمد هذه الخيارات على نموذج التهديد الخاص بك ويجب مراجعتها من قبل مهندسيك ومسؤولي الأمان قبل الاستخدام في الإنتاج العام.
يمكن للمطورين الذين يرغبون في مثال عملي أيضًا قراءة دليل Novita حول بناء خادم MCP لتنفيذ الكود عن بعد مع Novita Sandbox. لوثائق المنتج، ابدأ بـ وثائق Novita Agent Sandbox و دليل تثبيت SDK و CLI.
الأسئلة الشائعة
هل صندوق حماية وكيل البرمجة كافٍ لجعل الكود المولد آمنًا؟
لا. صندوق الحماية هو طبقة تحكم واحدة. ما زلت بحاجة إلى وصول محدود إلى المستودع، وسياسة الأوامر، وضوابط التبعيات، وقيود الشبكة، ومعالجة الأسرار، والسجلات، ومراجعة النتائج، والموافقة البشرية قبل الدمج أو النشر.
هل يجب أن يكون للوكلاء البرمجيين وصول إلى الإنترنت؟
فقط عندما تتطلب المهمة ذلك. يمكن للعديد من سير عمل مراجعة الكود وإعادة الهيكلة والاختبار أن تعمل دون وصول عام إلى الإنترنت بعد تحضير التبعيات. عندما تكون هناك حاجة إلى الوصول إلى الإنترنت، سجل الوجهات وفضل سجلات الحزم المسموح بها ومواقع التوثيق وواجهات برمجة تطبيقات الاختبار أو الخدمات الوهمية.
هل يجب أن يتلقى الوكلاء أسرار الإنتاج؟
تجنب إعطاء أسرار الإنتاج للوكلاء البرمجيين افتراضيًا. استخدم بيانات اعتماد محدودة النطاق وقصيرة العمر للمهمة المحددة، وفضل خدمات الاختبار، ونقح السجلات، وأبعد الوصول إلى الأسرار عن مساحة عمل المستودع ما لم يكن هناك سبب مراجع.
ما الذي يجب مراجعته قبل الوثوق بتصحيح الوكيل؟
راجع الفرق والتبعيات المتغيرة والملفات المولدة وسجل الأوامر ونتائج الاختبار والنشاط الشبكي وأي نتائج. انتبه بشكل خاص لتغييرات المصادقة والتفويض والنشر والفوترة والبنية التحتية والوصول إلى البيانات وإدارة الحزم.
متى يجب إعادة تعيين صندوق الحماية؟
أعد تعيين أو دمر مساحة العمل بعد كل مهمة ما لم تحفظ لقطة عن قصد. الحالة الدائمة مفيدة لسير العمل الطويل، لكن يجب أن تكون خيارًا متعمدًا مع قواعد الملكية والاحتفاظ والتنظيف.
