تخطَّ إلى المحتوى

الإعدادات

تتواجد جميع الإعدادات في ملف .env في جذر المشروع. هذا الملف مُستثنى في gitignore — ولن يتم تضمينه أبداً في الإيداعات.

تدعم الحاوية وضعين للمصادقة حصريين بشكل متبادل (حسب الأولوية):

  • وكيل LiteLLM — عيّن LITELLM_BASE_URL و LITELLM_API_KEY للتوجيه عبر وكيل LiteLLM (انظر أدناه).
  • وضع OAuth — عيّن CLAUDE_CODE_OAUTH_TOKEN فقط (انظر أدناه).

لا تجمع بين الوضعين — استخدم وضعاً واحداً فقط.

المتغيرالوصفمثال
CLAUDE_CODE_OAUTH_TOKENرمز OAuth من اشتراك Claude Maxsk-ant-oat01-...

عند تعيينه، يقوم Claude Code بالمصادقة مباشرة مع Anthropic باستخدام OAuth — دون الحاجة إلى مفتاح API أو وكيل. احصل على الرمز من إعدادات Claude Code أو وحدة تحكم Anthropic.

إذا كان وكيل LiteLLM (أو غيره) يتحدث بالفعل واجهة Anthropic Messages API الأصلية — بما في ذلك web_search، والبث، واستخدام الأدوات — عيّن LITELLM_BASE_URL إلى نطاق الوكيل. تستنتج الحاوية تلقائياً عناوين URL الخاصة بالمزود:

  • نقطة نهاية Anthropic ← ${LITELLM_BASE_URL}/anthropic (يستخدمها Claude Code)
  • نقطة نهاية متوافقة مع OpenAI ← ${LITELLM_BASE_URL}/openai/v1
المتغيرالوصفمثال
LITELLM_BASE_URLنطاق وكيل LiteLLM (بدون لاحقة مسار)https://litellm.example.com
LITELLM_API_KEYمفتاح API لمصادقة الوكيلyour-api-key أو القيمة الافتراضية litellm-proxy

يحتاج المستخدمون فقط إلى تعيين النطاق — تُضاف لاحقات مسارات المزود تلقائياً. عند التشغيل، يستنتج نص نقطة الدخول ANTHROPIC_API_KEY من LITELLM_API_KEY حتى يتمكن Claude Code من استهلاك بيانات اعتماد الوكيل دون الحاجة إلى متغير منفصل يواجه المستخدم.

أسماء النماذج لا يُعاد تعيينها في هذا الوضع. يرسل Claude Code معرفات النماذج القياسية (مثل claude-sonnet-4-6) ويقوم LiteLLM بتوجيهها إلى الواجهة الخلفية المُعدّة لديك.

بشكل افتراضي، يتحقق Node.js من شهادات TLS لجميع اتصالات HTTPS. إذا كان مزود API الخاص بك يستخدم شهادة موقعة ذاتياً (شائع مع وكلاء Open WebUI أو LiteLLM الداخليين)، يمكنك تعطيل التحقق بإضافة هذا إلى ملف .env:

NODE_TLS_REJECT_UNAUTHORIZED=0

هذا غير مُوصى به للاستخدام في بيئة الإنتاج. عيّن هذا فقط عندما تثق بمسار الشبكة بين الحاوية ونقطة نهاية API.

وكلاء البرمجة بالذكاء الاصطناعي

Section titled “وكلاء البرمجة بالذكاء الاصطناعي”

تتضمن الحاوية عدة وكلاء برمجة بالذكاء الاصطناعي بالإضافة إلى Claude Code:

الوكيلالأمرالمزود
Codexcodexمتوافق مع OpenAI
Pipiمتعدد المزودين (يُعدّ عند التشغيل)
Oh-My-Piompمتعدد المزودين (يُعدّ عند التشغيل)

يتم تثبيت Pi و Oh-My-Pi كحزم npm عامة. أما Codex فهو ملف تنفيذي مستقل يُحدّث نفسه تلقائياً عند التشغيل.

تشغّل الحاوية حزمة عرض افتراضية لمراقبة والتفاعل مع المتصفحات ذات الواجهة الرسومية. انظر العرض عن بُعد (noVNC) للحصول على تعليمات الاتصال ومتغيرات البيئة (ENABLE_VNC، VNC_RESOLUTION، DISPLAY، NOVNC_HOST_PORT).

تتضمن الحاوية خادم Chrome DevTools MCP مُعدّ مسبقاً لأتمتة المتصفح بدون واجهة رسومية. يمكن لـ Claude Code التنقل في صفحات الويب، والتقاط لقطات شاشة، وفحص DOM دون أي إعداد إضافي. انظر Chrome DevTools MCP للتفاصيل.

المتغيرالوصفكيفية التعيين
GIT_AUTHOR_NAMEالاسم لإيداعات gitgit config user.name
GIT_AUTHOR_EMAILالبريد الإلكتروني لإيداعات gitgit config user.email

إذا كان git مُعدّاً على جهازك المضيف، يمكنك ملء القيمتين تلقائياً:

Terminal window
echo "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .env
echo "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env
المتغيرالوصفكيفية التعيين
SSH_PRIVATE_KEYالمفتاح الخاص المُرمّز بـ Base64base64 < ~/.ssh/id_ed25519
المتغيرالوصفكيفية التعيين
GH_TOKENرمز وصول شخصي لـ GitHub لواجهة gh CLI وgit عبر HTTPSgh auth token (إذا كان gh مُثبتاً محلياً)

عند تعيين GH_TOKEN في .env، تتم مصادقة واجهة gh CLI تلقائياً — دون الحاجة لتشغيل gh auth login. يُشغّل نص نقطة الدخول أيضاً gh auth setup-git، الذي يُعدّ مساعد بيانات اعتماد git بحيث تعمل عمليات git clone و git push عبر HTTPS دون مفاتيح SSH.

إذا كان gh مُثبتاً ومُصادقاً عليه على جهازك المضيف، استخرج الرمز مباشرة:

Terminal window
echo "GH_TOKEN=$(gh auth token)" >> .env

وإلا، أنشئ رمز وصول شخصي وأضفه يدوياً. تعمل كل من الرموز الدقيقة (مُوصى بها) والرموز الكلاسيكية. تتيح لك الرموز الدقيقة تحديد نطاق الوصول لمستودعات معينة. تتطلب الرموز الكلاسيكية نطاق repo للوصول إلى المستودعات الخاصة.

للتحقق من المصادقة داخل الحاوية:

Terminal window
gh auth status

يتم تثبيت كل بيئة تشغيل لغة، وواجهة سطر أوامر، وأداة مباشرة في Dockerfile عند وقت بناء الصورة. تُنشر الصورة المبنية مسبقاً إلى ghcr.io/f5-sales-demo/devcontainer:latest مع كل دفع إلى main، لذا لا يحتاج معظم المستخدمين أبداً إلى البناء محلياً.

تشغيل docker compose up -d يسحب الصورة المبنية مسبقاً تلقائياً. للبناء محلياً بعد تخصيص Dockerfile، مرّر ملف البناء صراحة:

Terminal window
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build

انظر التطوير المحلي للتفاصيل.

يستخدم Dockerfile بناء من مرحلتين مُحسّن للتخزين المؤقت لطبقات Docker. انظر التطوير المحلي — بنية البناء ذات المرحلتين للحصول على التفصيل الكامل للطبقات وتفاصيل ذاكرة التخزين المؤقت للبناء.

تتضمن الحاوية إعدادات مدمجة تمنع Claude Code من الخلط بين أسماء الأدوات. يتم تثبيت الوعي بالأدوات في مستويين من الذاكرة كدفاع متعمق:

  • السياسة المُدارة (/etc/claude-code/CLAUDE.md) — تُثبّت عند وقت بناء Docker. هذا هو المستوى الأعلى أولوية في تسلسل ذاكرة Claude Code ويُحمّل دائماً، حتى عند وجود ملف CLAUDE.md كبير للمشروع في دليل العمل.
  • ذاكرة المستخدم (~/.claude/CLAUDE.md) — تُزرع بواسطة نص نقطة الدخول عند أول تشغيل. توفر طبقة احتياطية ونسخة مرئية وقابلة للتخصيص للمستخدمين.

أولوية مستويات الذاكرة

Section titled “أولوية مستويات الذاكرة”

يُحمّل Claude Code التعليمات من مستويات ذاكرة متعددة (من الأعلى إلى الأدنى أولوية):

  1. السياسة المُدارة (/etc/claude-code/) — تُحمّل دائماً، ولا يمكن استبعادها
  2. ذاكرة المشروع (./CLAUDE.md) — تُحمّل لكل دليل مشروع
  3. ذاكرة المستخدم (~/.claude/CLAUDE.md) — تُحمّل عالمياً لجميع الجلسات
  4. الذاكرة المحلية (./CLAUDE.local.md) — تجاوزات شخصية لكل مشروع

بدون مستوى السياسة المُدارة، يمكن أن يُخفّض الوعي بالأدوات في ذاكرة المستخدم أولويته عند التنافس مع ملف CLAUDE.md كبير على مستوى المشروع، مما يتسبب في فقدان Claude لوعيه بأسماء أدواته بنمط PascalCase. يضمن المستوى المُدار أن الوعي بالأدوات يُحمّل دائماً بالأولوية القصوى.

شغّل الاختبار الذاتي المدمج للتحقق من الإعدادات:

Terminal window
claude-self-test

يتحقق هذا من أن جميع ملفات الإعدادات في مكانها وتحتوي على مراجع الأدوات المتوقعة.

لإضافة أدوات إلى الصورة، عدّل Dockerfile وأعد البناء محلياً. انظر التطوير المحلي — إضافة الأدوات للحصول على تعليمات إضافة حزم APT، وأدوات npm، وأدوات pip، وتنزيلات الملفات التنفيذية.

تُعدّ الإضافات في .devcontainer/devcontainer.json تحت customizations.vscode.extensions وتُثبّت تلقائياً عند الفتح في VS Code.

تتواجد جميع البيانات في وحدات تخزين مُسمّاة — لا يتم تحميل أي أدلة من المضيف:

وحدة التخزيننقطة التحميلالمحتويات
workspace/workspaceمستودعاتك المستنسخة وملفات المشروع
home/home/vscodeسجل الأوامر، وإعدادات الأدوات، والذاكرة المؤقتة، ومفاتيح SSH

تستمر كلتاهما عبر إعادة تشغيل الحاوية وإعادة بنائها. شغّل docker compose pull لجلب أحدث صورة مبنية مسبقاً قبل إعادة التشغيل.

الإجراءالبيانات
docker compose downمحفوظة
docker compose down -vمحذوفة
المضيفالحاويةالخدمة
127.0.0.1:${NOVNC_HOST_PORT:-6080}6080عرض noVNC عن بُعد (localhost فقط، يمكن التجاوز بـ NOVNC_HOST_PORT)

المنافذ مرتبطة بـ 127.0.0.1 بحيث تكون متاحة فقط من جهازك، وليس من الشبكة.