🤖HermesBlog
Hermes Feature Guides · جزء 168/9/2026

Docker + Hermes Agent: طريقتان للاستخدام

Event Hooks — Auto-Trigger at Key Moments — easy-to-understand guide based on official docs (updated 2026-08-09)

hermes-feature-16-hooks

Docker + Hermes Agent: طريقتان للاستخدام

إذا تساءلت يومًا كيف يتناسب Docker مع صورة Hermes Agent، فأنت في المكان الصحيح. في الحقيقة، هناك طريقتان مختلفتان يمكن لهذين الاثنين العمل معًا من خلالهما، ومن الجدير معرفة الفرق قبل أن تبدأ بكتابة docker run.

وضعا Docker الأساسيان

  1. تشغيل Hermes داخل Docker — الوكيل نفسه يعيش داخل حاوية. هذا هو المحور الرئيسي لهذا الدليل.
  2. Docker كخلفية طرفية (terminal backend) — يعمل Hermes على جهازك المضيف، لكن كل أمر ينفذه يحدث داخل صندوق رمل (sandbox) واحد ثابت. هذا الصندوق الرملي يستمر عبر استدعاءات الأدوات، و /new، وحتى الوكلاء الفرعيين طالما كانت عملية Hermes حية.

هذا المقال يغطي الخيار الأول. الشيء الأساسي الذي يجب معرفته: كل بياناتك (الإعدادات، مفاتيح API، الجلسات، المهارات، الذكريات) تعيش في مجلد واحد على جهازك المضيف، مثبّتة في /opt/data داخل الحاوية. الصورة نفسها عديمة الحالة (stateless)، لذا يمكنك سحب نسخة جديدة في أي وقت دون فقدان إعداداتك.


بداية سريعة: الإعداد الأول

إذا كانت هذه أول تجربة لك، أنشئ مجلد بيانات وابدأ الحاوية بشكل تفاعلي لتشغيل معالج الإعداد:

mkdir -p ~/.hermes
docker run -it --rm \
  -v ~/.hermes:/opt/data \
  nousresearch/hermes-agent setup

هذا ينقلك إلى المعالج، الذي يطلب مفاتيح API ويكتبها في ~/.hermes/.env. تحتاج فقط لفعل هذا مرة واحدة. وبينما أنت في هذا، إنه وقت ممتاز لإعداد نظام محادثة (Telegram، Discord، إلخ) حتى يكون لبوابتك مكان تتحدث فيه.

⚠️ كلمة تحذير: تجنب استخدام وحدات تحكم VPS المستندة إلى المتصفح لأوامر التثبيت هذه. بعض المزودين (مثل Hetzner) يشوهون الأحرف الخاصة — قد تصل : كـ ;، و @ تُعرض بشكل خاطئ، ومفاتيح API الملصوقة قد تتلف بصمت. اتصل دائمًا عبر SSH لإدخال أوامر آمنة من حيث النسخ واللصق. إذا اضطررت لاستخدام وحدة تحكم المتصفح، اكتب الأوامر يدويًا وتحقق جيدًا من كل : و @ و = و /.

نصيحة احترافية: داخل الحاوية، شغّل hermes setup --portal مرة واحدة — رمز التحديث (refresh token) يستمر في مجلد ~/.hermes المثبّت لديك.


التشغيل في وضع البوابة (Gateway Mode)

بعد الإعداد، شغّل الحاوية في الخلفية كبوابة مستمرة:

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  nousresearch/hermes-agent gateway run

المنفذ 8642 يعرض خادم API المتوافق مع OpenAI الخاص بالبوابة ونقطة فحص الصحة. إنه اختياري إذا كنت تستخدم منصات المحادثة فقط، لكنه مطلوب إذا أردت لوحة التحكم أو الأدوات الخارجية للوصول إلى البوابة.

ما الجديد: البوابة الخاضعة للإشراف (Supervised Gateway)

إليك تغيير كبير: داخل صورة Docker الرسمية، أصبح gateway run الآن خاضعًا للإشراف تلقائيًا عبر s6-overlay. إذا تعطلت البوابة، فإنها تعيد التشغيل خلال ثوانٍ دون فقدان الحاوية. لوحة التحكم (عند تفعيلها) تخضع للإشراف أيضًا بجانبها.

سترى سطرًا واحدًا في docker logs يؤكد الترقية. للانسحاب والحصول على السلوك القديم (خروج الحاوية = خروج البوابة)، مرر --no-supervise أو عيّن HERMES_GATEWAY_NO_SUPERVISE=1. هذا مفيد لاختبارات CI السريعة؛ للإنتاج، الوضع الافتراضي الخاضع للإشراف أفضل بلا منازع.

إيقاف حلقة الأدوات القسري (Tool-Loop Hard Stops)

إعداد مهم للبوابات غير المراقبة: tool_loop_guardrails.hard_stop_enabled الافتراضي هو false. هذا جيد للجلسات التفاعلية حيث يمكن للإنسان رؤية التحذيرات. لكن في النشر غير المراقب، التحذيرات وحدها قد لا توقف وكيلًا عالقًا في حلقة. إذا أردت سلوك قاطع الدائرة (circuit-breaker)، فعّله في config.yaml الخاص بملفك الشخصي:

tool_loop_guardrails:
  hard_stop_enabled: true
  hard_stop_after:
    exact_failure: 5
    idempotent_no_progress: 5

تعريض خادم API

خادم API مُقيّد بـ API_SERVER_ENABLED=true. لتعريضه خارج 127.0.0.1 داخل الحاوية، عيّن أيضًا API_SERVER_HOST=0.0.0.0 و API_SERVER_KEY (بحد أدنى 8 أحرف — ولّد واحدًا باستخدام openssl rand -hex 32):

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  -e API_SERVER_ENABLED=true \
  -e API_SERVER_HOST=0.0.0.0 \
  -e API_SERVER_KEY="$(openssl rand -hex 32)" \
  -e API_SERVER_CORS_ORIGINS='*' \
  nousresearch/hermes-agent gateway run

ملاحظة أمنية: فتح أي منفذ على جهاز مواجه للإنترنت هو مخاطرة. لا تفعل ذلك إلا إذا كنت تفهم العواقب تمامًا.


تشغيل لوحة التحكم

لوحة التحكم المدمجة تعمل كخدمة s6-rc خاضعة للإشراف بجانب البوابة في نفس الحاوية. فقط عيّن HERMES_DASHBOARD=1:

docker run -d \
  --name hermes \
  --restart unless-stopped \
  -v ~/.hermes:/opt/data \
  -p 8642:8642 \
  -p 9119:9119 \
  -e HERMES_DASHBOARD=1 \
  nousresearch/hermes-agent gateway run

إذا تعطلت لوحة التحكم، يعيدها s6-supervise تشغيلها تلقائيًا بعد فترة انتظار قصيرة. مخرجاتها تذهب إلى docker logs <container>.


أين تذهب السجلات

للخريطة الكاملة للتوجيه (بوابات لكل ملف شخصي، لوحة التحكم، مُنسّق الإقلاع، وسجلات الحاوية الكاملة)، راجع القسم المخصص في التوثيق. الخلاصة: كل شيء يصل في النهاية إلى docker logs، لكن مع بادئات واضحة حتى تعرف ما هو ما.


الخلاصة

يمنحك Docker طريقة نظيفة وقابلة للترقية لتشغيل Hermes Agent. الحاوية عديمة الحالة، بياناتك تعيش بأمان على المضيف، والإشراف الجديد عبر s6 يعني أن بوابتك تبقى نشطة حتى لو تعطلت. سواء كنت تشغّل إعدادًا بسيطًا أو مزيجًا كاملًا من لوحة التحكم + خادم API، الأوامر أعلاه توصلك إلى هناك في دقائق.

📖 التوثيق الرسمي

この記事は Hermes Agent のالتوثيق الرسميに基づいています:التوثيق الرسمي › user-guide/features/hooks