البرنامج التعليمي 29: الغوص العميق في الأمان
Tutorial 29: Security Deep Dive — easy-to-understand guide based on official docs
البرنامج التعليمي 29: الغوص العميق في الأمان
مرحبًا بعودتكم يا مديري العملاء! اليوم سنرتدي خوذات السلامة ونقوم بغوص عميق في نموذج الأمان الخاص بـ Hermes Agent. إذا تساءلت يومًا عمّا يحدث خلف الكواليس للحفاظ على أمان جلساتك، فهذا البرنامج التعليمي مخصص لك.
الصورة الكبيرة: ثماني طبقات دفاعية
لا يعتمد Hermes على قفل واحد على الباب. بدلًا من ذلك، يستخدم نهج الدفاع المتعمق مع ثماني طبقات أمان متميزة. تخيّلها كقلعة: حتى لو تجاوز شخص ما الخندق المائي، فلا يزال يواجه الجدران والبوابات والحراس في الداخل.
إليك التشكيلة:
- تفويض المستخدم — من يُسمح له بالتحدث مع الوكيل
- الموافقة على الأوامر الخطرة — فحص بشري للإجراءات التدميرية
- سلامة كتابة الملفات — قوائم الحظر والصناديق الرملية لعمليات الملفات
- عزل الحاويات — العزل عبر Docker/Singularity/Modal
- تصفية بيانات اعتماد MCP — إبقاء الأسرار بعيدًا عن العمليات الفرعية
- فحص ملفات السياق — اكتشاف حقن الأوامر في ملفات المشروع
- العزل بين الجلسات — لا يمكن للجلسات الاطلاع على بيانات بعضها البعض
- تنقية المدخلات — منع حقن الأوامر عبر معاملات دليل العمل
كل طبقة مهمة، لكننا اليوم نركّز على الطبقة التي ستتفاعل معها أكثر: الموافقة على الأوامر الخطرة.
كيف تعمل الموافقة على الأوامر الخطرة
قبل أن ينفّذ Hermes أي أمر، يتحقق منه مقابل قائمة منسقة من الأنماط الخطرة. إذا كان هناك تطابق، فأنت من يقرر ما يحدث بعد ذلك.
تتحكم في هذا السلوك عبر قسم approvals في ملف ~/.hermes/config.yaml:
approvals:
mode: smart # smart | manual | off
timeout: 300 # seconds to wait for user response
cron_mode: deny # deny | approve
single_query_mode: deny # deny | approve
mcp_reload_confirm: true # confirm before reloading MCP tools
destructive_slash_confirm: true # confirm before /clear, /new, etc.
ثلاثة أوضاع للموافقة
يمنحك مفتاح mode ثلاثة خيارات:
| الوضع | السلوك |
|---|---|
| smart (الافتراضي) | يستخدم LLM مساعدًا لتقييم المخاطر. الأوامر منخفضة الخطورة (مثل python -c "print('hello')") تتم الموافقة عليها تلقائيًا. الأوامر الخطيرة فعلًا تُرفض تلقائيًا. الحالات غير المؤكدة تُرفع إلى طلب موافقة يدوي. |
| manual | يطلب منك دائمًا الموافقة على الأوامر الخطرة. دون استثناءات. |
| off | يعطّل جميع فحوصات الموافقة. يعادل التشغيل مع --yolo. |
⚠️ تحذير: تعيين
approvals.mode: offيعطّل جميع مطالبات الأمان. افعل ذلك فقط في البيئات الموثوقة مثل خطوط CI/CD أو الحاويات القابلة للتخلص.
وضع YOLO: الزر الأحمر الكبير
يتجاوز وضع YOLO جميع مطالبات الموافقة على الأوامر الخطرة للجلسة الحالية. يمكنك تفعيله بثلاث طرق:
- علم CLI:
hermes --yoloأوhermes chat --yolo - أمر الشرطة المائلة: اكتب
/yoloأثناء الجلسة - متغير البيئة: عيّن
HERMES_YOLO_MODE=1
أمر /yolo هو مفتاح تبديل — كل استخدام يقلبه تشغيلًا أو إيقافًا:
> /yolo
⚡ YOLO mode ON — all commands auto-approved. Use with caution.
> /yolo
⚠ YOLO mode OFF — dangerous commands will require approval.
عندما يكون YOLO نشطًا، يتأكد Hermes من أنك لا تنساه. سترى شريطًا أحمر في بداية الجلسة وقطعة ⚠ YOLO في شريط الحالة، تُحدَّث مباشرة أثناء التبديل.
⚠️ خطر: وضع YOLO يعطّل جميع فحوصات سلامة الأوامر الخطرة — باستثناء قائمة الحظر الصارمة. استخدمه فقط عندما تثق تمامًا في الأوامر التي يتم توليدها (مثلًا، نصوص أتمتة مُختبَرة جيدًا في بيئات قابلة للتخلص).
الجديد في هذا الإصدار: مفاتيح إعدادات أذكى
مفتاحان جديدان يستحقان اهتمامًا خاصًا:
mcp_reload_confirm (الافتراضي: true) — عندما يكون true، يطلب /reload-mcp التأكيد قبل إعادة بناء مجموعة أدوات MCP. لماذا؟ لأن إعادة البناء تُبطل ذاكرة التخزين المؤقت لمطالبة المزود، مما يعني أن الرسالة التالية ستعيد إرسال رموز الإدخال الكاملة. هذه تكلفة قد ترغب في الموافقة عليها أولًا.
destructive_slash_confirm (الافتراضي: true) — عندما يكون true، تطلب أوامر الجلسة التدميرية (/clear, /new, /reset, /undo) التأكيد قبل التخلص من حالة المحادثة. تحصل على حوار بثلاثة خيارات: موافقة مرة واحدة / موافقة دائمة / إلغاء. على Telegram وDiscord وSlack، يتم ذلك عبر أزرار نعم/لا الأصلية. في أماكن أخرى، يتراجع إلى نص.
يكرّم TUI أيضًا هذا الإعداد في نافذته المنبثقة لأوامر /clear و/new و/reset. وإذا كنت تؤتمت الأمور، فإن HERMES_TUI_NO_CONFIRM=1 يتخطى تلك النافذة المنبثقة تمامًا.
الجلسات بدون واجهة: Cron والاستعلام الفردي
ماذا يحدث عندما يصطدم مهمة cron أو جلسة hermes chat -q لمرة واحدة بأمر خطير؟ لا يوجد إنسان ينتظر للرد على مطالبة.
هنا يأتي دور cron_mode وsingle_query_mode:
deny(الافتراضي) — يمنع الأمر. يجب على الوكيل إيجاد مسار آخر.approve— يوافق تلقائيًا على كل شيء في ذلك السياق.
كلاهما يضع الافتراضي على deny لسبب وجيه: الوقاية خير من العلاج عندما لا يوجد من يراقب.
الخلاصة
نموذج أمان Hermes Agent يدور حول منحك التحكم دون أن يعيق طريقك. وضع الموافقة الذكي يتعامل مع الأمور المملة تلقائيًا، بينما يمنحك الوضع اليدوي إشرافًا كاملًا عندما تحتاجه. وإذا كنت في بيئة موثوقة، فإن وضع YOLO يتيح لك التحرك بسرعة.
فقط تذكر: القوة العظيمة تأتي مع مسؤولية عظيمة. استخدم YOLO بحكمة!
في المرة القادمة، سنستكشف كيفية تخصيص نظام الموافقة ليناسب سير عملك المحدد. حتى ذلك الحين، ابقَ آمنًا في الميدان!
📖 التوثيق الرسمي
この記事は Hermes Agent のالتوثيق الرسميに基づいています:التوثيق الرسمي › user-guide/security