
بيئة تشغيل معزولة لوكلاء الذكاء الاصطناعي المستقلين مع سياسات YAML تعريفية تفرض قيودًا على نظام الملفات والشبكة والعمليات، بالإضافة إلى حقن بيانات الاعتماد المرتبطة بنقاط النهاية.
OpenShell هو بيئة التشغيل الآمنة والخاصة لوكلاء الذكاء الاصطناعي المستقلين. يوفر بيئات تنفيذ معزولة تحمي بياناتك وبيانات الاعتماد والبنية التحتية الخاصة بك — وتُدار عبر سياسات YAML التصريحية التي تمنع الوصول غير المصرح به إلى الملفات، وتسريب البيانات، والنشاط الشبكي غير المنضبط.
تم بناء OpenShell مع التركيز على الوكلاء أولاً. فهو يوفر مهارات عامة للوكلاء لاستخدام وتشغيل OpenShell، بالإضافة إلى سير عمل منفصلة واعية بالمستودع للمساهمين والمشرفين.
الملف الثنائي (موصى به):```bash curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
يقوم المثبّت بتثبيت أحدث إصدار مستقر افتراضيًا. لتثبيت إصدار محدد، اضبط `OPENSHELL_VERSION`. يتوفر أيضًا إصدار [`dev`](https://github.com/NVIDIA/OpenShell/releases/tag/dev) يتابع أحدث commit على `main`.
توفر حزمة `openshell` على PyPI حزمة تطوير Python SDK فقط. وهي لا تثبّت واجهة سطر الأوامر `openshell` CLI. أضف SDK إلى مشروع Python باستخدام [uv](https://docs.astral.sh/uv/):```bash
uv add openshell
مخطط Helm:
تجريبي — مسار النشر على Kubernetes قيد التطوير النشط. توقّع وجود عيوب وتغييرات كاسرة.
انشر بوابة OpenShell في عنقود Kubernetes من مخطط OCI المنشور على GHCR:```bash helm install openshell oci://ghcr.io/nvidia/openshell/helm-chart
راجع [`deploy/helm/openshell/README.md`](https://github.com/nvidia/openshell/blob/main/deploy/helm/openshell/README.md) للإصدارات المتاحة، واصطلاحات وسوم التطوير، والإعدادات.
لنشر OpenShell على OpenShift، راجع [`deploy/helm/openshell/README.md#install-on-openshift`](https://github.com/nvidia/openshell/blob/main/deploy/helm/openshell/README.md#install-on-openshift).
### إنشاء بيئة معزولة```bash
openshell sandbox create -- claude # or opencode, codex, copilot
يتضمن حاوية البيئة المعزولة الأدوات التالية افتراضيًا:
لمزيد من التفاصيل راجع https://github.com/NVIDIA/OpenShell-Community/tree/main/sandboxes/base.
تبدأ كل بيئة معزولة بـ وصول خارجي أدنى. يمكنك فتح وصول إضافي عبر سياسة YAML قصيرة يفرضها الوسيط على مستوى طريقة HTTP والمسار، دون إعادة تشغيل أي شيء.```bash
openshell sandbox create
sandbox$ curl -sS https://api.github.com/zen curl: (56) Received HTTP code 403 from proxy after CONNECT
sandbox$ exit openshell policy set demo --policy examples/sandbox-policy-quickstart/policy.yaml --wait
openshell sandbox connect demo sandbox$ curl -sS https://api.github.com/zen Anything added dilutes everything else.
sandbox$ curl -sS -X POST https://api.github.com/repos/octocat/hello-world/issues -d '{"title":"oops"}' {"error":"policy_denied","detail":"POST /repos/octocat/hello-world/issues not permitted by policy"}
راجع [الدليل الكامل](https://github.com/nvidia/openshell/blob/main/examples/sandbox-policy-quickstart) أو شغّل العرض التوضيحي الآلي:```bash
bash examples/sandbox-policy-quickstart/demo.sh
يعزل OpenShell كل بيئة معزولة (sandbox) في حاويتها الخاصة مع توجيه خارجي مفروض بالسياسات. تنسّق بوابة خفيفة دورة حياة البيئة المعزولة، ويتم اعتراض كل اتصال خارجي بواسطة محرك السياسات، الذي يقوم بأحد ثلاثة أمور:
| المكوّن | الدور |
|---|
يشغّل OpenShell مستوى تحكم للبوابة يدير دورة حياة البيئة المعزولة عبر مشغّل حوسبة مُهيّأ. تشمل منصات الحوسبة المدعومة Docker وPodman وMicroVM وKubernetes.
يطبّق OpenShell الدفاع في العمق عبر أربعة نطاقات سياسات:
السياسات هي ملفات YAML تصريحية. الأقسام الثابتة (نظام الملفات، العمليات) تُقفل عند الإنشاء؛ يمكن تحديث سياسة الشبكة ومرفقات المزوّد على بيئة معزولة قيد التشغيل.
يحتاج الوكلاء إلى بيانات اعتماد — مفاتيح API، ورموز، وحسابات خدمة. يدير OpenShell هذه كـ مزوّدين: حزم بيانات اعتماد مُسمّاة تُحقن في البيئات المعزولة عند الإنشاء. يكتشف CLI تلقائيًا بيانات الاعتماد للوكلاء المعروفين (Claude، Codex، OpenCode، Copilot) من بيئة الصدفة لديك، أو يمكنك إنشاء مزوّدين صراحةً باستخدام openshell provider create. لا تتسرب بيانات الاعتماد أبدًا إلى نظام ملفات البيئة المعزولة؛ بل تُحقن كمتغيرات بيئة أثناء التشغيل.
يستخدم الوصول إلى الاستدلال نفس سير عمل المزوّد. أرفق مزوّدًا قادرًا على الاستدلال ببيئة معزولة، واستدعِ نقطة النهاية الأصلية للمزوّد، واختر النموذج في العميل. تساهم ملفات تعريف المزوّد في سياسة نقطة النهاية وتربط عناصر نائبة لبيانات الاعتماد بالوجهة المصرّح بها.
تجريبي — يعمل تمرير GPU على المضيفين المدعومين لكنه قيد التطوير النشط. توقّع بعض الخشونة والتغييرات الكاسرة.
يمكن لـ OpenShell تمرير وحدات GPU الخاصة بالمضيف إلى البيئات المعزولة للاستدلال المحلي، أو الضبط الدقيق، أو أي عبء عمل على GPU. أضف --gpu عند إنشاء بيئة معزولة:```bash
openshell sandbox create --gpu --from [gpu-enabled-sandbox] -- claude
تُحدَّد بيئات GPU الرملية المدعومة بـ Docker تلقائيًا CDI عند توفره، وإلا فإنها تعود إلى مسار طلب GPU الخاص بـ Docker (`--gpus all`).
**المتطلبات:** يجب تثبيت برامج تشغيل NVIDIA و[NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) على المضيف. يجب أن تتضمن صورة البيئة الرملية نفسها برامج تشغيل ومكتبات GPU المناسبة لعبء العمل الخاص بك — صورة `base` الافتراضية لا تفعل ذلك. راجع [مثال BYOC](https://github.com/NVIDIA/OpenShell/tree/main/examples/bring-your-own-container) لبناء صورة بيئة رملية مخصصة مع دعم GPU.
## الوكلاء المدعومون
| الوكيل | المصدر | ملاحظات |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | [`base`](https://github.com/NVIDIA/OpenShell-Community/tree/main/sandboxes/base) | يعمل مباشرة. يستخدم المزوّد `ANTHROPIC_API_KEY`. |
| [OpenCode](https://opencode.ai/) | [`base`](https://github.com/NVIDIA/OpenShell-Community/tree/main/sandboxes/base) | يعمل مباشرة. يستخدم المزوّد `OPENAI_API_KEY` أو `OPENROUTER_API_KEY`. |
| [Codex](https://developers.openai.com/codex) | [`base`](https://github.com/NVIDIA/OpenShell-Community/tree/main/sandboxes/base) | يعمل مباشرة. يستخدم المزوّد `OPENAI_API_KEY`. |
| [GitHub Copilot CLI](https://docs.github.com/en/copilot/github-copilot-in-the-cli) | [`base`](https://github.com/NVIDIA/OpenShell-Community/tree/main/sandboxes/base) | يعمل مباشرة. يستخدم المزوّد `GITHUB_TOKEN` أو `COPILOT_GITHUB_TOKEN`. |
| [OpenClaw](https://openclaw.ai/) | [NemoClaw](https://github.com/NVIDIA/NemoClaw) | شغّل OpenClaw بأمان أكبر داخل NVIDIA OpenShell باستخدام مخطط NemoClaw. |
| [Hermes Agent](https://github.com/NousResearch/hermes-agent) | [NemoClaw](https://github.com/NVIDIA/NemoClaw) | شغّل Hermes Agent بأمان أكبر داخل NVIDIA OpenShell باستخدام مخطط NemoClaw. |
| [Ollama](https://ollama.com/) | [Community](https://github.com/NVIDIA/OpenShell-Community) | شغّله باستخدام `openshell sandbox create --from ollama`. |
| [Pi](https://pi.dev/) | [Community](https://github.com/NVIDIA/OpenShell-Community) | شغّله باستخدام `openshell sandbox create --from pi`. |
## الأوامر الرئيسية
| الأمر | الوصف |
| ---------------------------------------------------------- | ----------------------------------------------- |
| `openshell sandbox create -- <agent>` | إنشاء بيئة رملية وتشغيل وكيل. |
| `openshell sandbox connect [name]` | الاتصال عبر SSH ببيئة رملية قيد التشغيل. |
| `openshell sandbox list` | عرض جميع البيئات الرملية. |
| `openshell provider create --type [type] --from-existing` | إنشاء مزوّد بيانات اعتماد من متغيرات البيئة. |
| `openshell sandbox provider attach <sandbox> <provider>` | إرفاق مزوّد ببيئة رملية قيد التشغيل. |
| `openshell policy set <name> --policy file.yaml` | تطبيق أو تحديث سياسة على بيئة رملية قيد التشغيل. |
| `openshell policy get <name>` | عرض السياسة النشطة. |
| `openshell logs [name] --tail` | بث سجلات البيئة الرملية. |
| `openshell term` | تشغيل واجهة الطرفية في الوقت الفعلي لتصحيح الأخطاء. |
راجع [التوثيق الكامل](https://docs.nvidia.com/openshell/latest) لأدلة الأوامر والدروس والمواد المرجعية.
## واجهة الطرفية
يتضمن OpenShell لوحة تحكم طرفية في الوقت الفعلي لمراقبة البوابات والبيئات الرملية والمزوّدين — مستوحاة من [k9s](https://k9scli.io/).```bash
openshell term
تمنحك واجهة TUI عرضًا حيًا يُدار بلوحة المفاتيح لبوابتك وصناديقك الرملية. تنقّل باستخدام Tab للتبديل بين اللوحات، وj/k للتنقل عبر القوائم، وEnter للتحديد، و: لوضع الأوامر. يتم تحديث صحة البوابة وحالة الصندوق الرملي تلقائيًا كل ثانيتين.
استخدم --from لإنشاء صناديق رملية من كتالوج OpenShell Community أو من صورة حاوية:```bash
openshell sandbox create --from gemini # community catalog
docker build -t my-sandbox:latest ./my-sandbox-dir # Docker gateway
openshell sandbox create --from my-sandbox:latest # Docker built image
podman build -t localhost/my-sandbox:latest ./my-sandbox-dir # Podman gateway
openshell sandbox create --from localhost/my-sandbox:latest # Podman built image
openshell sandbox create --from registry.io/img:v1 # container image
ابنِ باستخدام محرك الحاويات الذي تستخدمه بوابتك المحلية. بالنسبة لبوابة
بعيدة، ادفع الصورة إلى سجل يمكن للبوابة السحب منه.
راجع كتالوج [OpenShell Community](https://github.com/NVIDIA/OpenShell-Community) و[مثال BYOC](https://github.com/NVIDIA/OpenShell/tree/main/examples/bring-your-own-container) للحصول على التفاصيل.
## استخدم OpenShell مع وكيلك
يوفر OpenShell أربع مهارات محمولة للمستخدمين والمشغلين: سير عمل CLI (`openshell-cli`)، واستكشاف أخطاء البوابة (`debug-openshell-cluster`)، واستكشاف أخطاء الاستدلال (`debug-inference`)، وإنشاء السياسات (`generate-sandbox-policy`). ثبّتها باستخدام Agent Skills CLI:```bash
npx skills add NVIDIA/OpenShell
تعيش هذه المهارات العامة القابلة للتثبيت في skills/ وتستخدم مساعدة CLI المثبّتة والوثائق المنشورة كمصادر حقيقة لها. وهي لا تتطلب نسخة مصدرية من OpenShell.
يُطوَّر OpenShell باستخدام نفس سير عمل الوكلاء الذي يمكّنه. تعيش مهارات المساهمين والمشرفين بشكل منفصل في .agents/skills/؛ فهي تُؤتمت العمل على مستودع OpenShell ولا تُضمَّن عندما يثبّت المستخدمون المهارات العامة:
create-spike؛ يقبلها إنسان عبر state:accepted أو وضعها في خارطة الطريق، أو يرفضها. يمكن أن يبقى العمل المقبول مملوكًا للبشر أو يدخل سير عمل التخطيط والتنفيذ الاختياري المُوجَّه بشريًا agent:*.triage-issue. يثبّت الوكلاء الصلاحية التقنية والتأثير؛ ويقرر البشر ما إذا كان ينبغي للمشروع التصرف وأين يقع العمل على خارطة الطريق.review-security-issue تقييمًا للخطورة وخطة معالجة. وينفّذها fix-security-issue.sync-agent-infra وupdate-docs-from-commits وسير العمل الداخلي الأخرى على اتساق الكود والوثائق والبنية التحتية للوكلاء.تنفيذ الوكلاء مُوجَّه بشريًا: يمكن للمستخدم طلب مرحلة مباشرةً، أو قد يستخدم المشرفون سير العمل الاختياري agent:* لجدولة واعتماد التخطيط والتنفيذ. راجع AGENTS.md للاطلاع على التوثيق الكامل لسلسلة سير العمل.
npx skills add NVIDIA/OpenShellrfcبُني OpenShell بمبدأ الوكيل أولًا. ينبغي أن تتضمن المشكلات قصة مستخدم، وبيان مشكلة، وتأثيرًا، ومعايير قبول. ينبغي أن يشرح التأثير عواقب السلوك الحالي ولماذا الحلول البديلة الحالية غير كافية. تتطلب طلبات الميزات أيضًا تصميمًا مقترحًا على مستوى سير العمل وبدائل؛ وتضيف تقارير الأخطاء خطوات إعادة الإنتاج وتفاصيل البيئة والسجلات ذات الصلة. بمجرد تفويض العمل عبر سير عمل المشروع أو طلب مباشر، ينبغي للمساهمين استخدام المهارات في .agents/skills/ لفحص الكود والسلوك الحاليين، وتنفيذ التغيير، والتحقق منه. إذا احتوت مشكلة على تشخيصات سابقة، فتحقق منها بدلًا من الاعتماد عليها. راجع CONTRIBUTING.md للاطلاع على جدول مهارات الوكلاء الكامل، وسير عمل المساهمة، وإعداد التطوير.
يجمع OpenShell قياسًا عن بُعد مجهول الهوية للمساعدة في تحسين المشروع للمطورين. لا تُستخدم هذه البيانات لتتبع سلوك المستخدم الفردي. وهي تساعدنا على فهم الاستخدام الإجمالي لسير عمل sandbox والمزوّد والسياسات حتى نتمكن من ترتيب أولويات تحسينات المنتج ومشاركة اتجاهات الاستخدام مع المجتمع.
عطّل القياس عن بُعد في وقت التشغيل بضبط OPENSHELL_TELEMETRY_ENABLED=false على نشر البوابة. بالنسبة لتثبيتات Helm، اضبط server.telemetryEnabled=false. ينشر OpenShell إعداد النشر هذا إلى بيئات مشرف sandbox بحيث يُعطَّل جمع القياس عن بُعد من جانب sandbox أيضًا.
يمكنك أيضًا استبعاد القياس عن بُعد بالكامل عند الترجمة. دعم القياس عن بُعد هو ميزة Cargo telemetry المفعّلة افتراضيًا، وكل crate يحملها يعرّف أيضًا اسمًا بديلًا defaults-without-telemetry يغطي كل ميزة افتراضية أخرى. ابنِ حزمًا خالية من القياس عن بُعد باستخدام --no-default-features --features defaults-without-telemetry:```shell
cargo build --release -p openshell-gateway --no-default-features --features defaults-without-telemetry
cargo build --release -p openshell-sandbox --no-default-features --features defaults-without-telemetry
cargo build --release -p openshell-driver-vm --no-default-features --features defaults-without-telemetry
لا تحتوي الملفات الثنائية الناتجة على أي نقطة نهاية للقياس عن بُعد، ولا على أي عميل HTTP للقياس عن بُعد، ولا على أي شيفرة إرسال. وعند تجميع القياس عن بُعد خارج البناء، لا تُصدر البوابة شيئًا وتُبلّغ صناديق الحماية التي تُشغّلها بأن القياس عن بُعد معطّل. ولا تتيح Cargo أي طريقة لطرح ميزة افتراضية واحدة، لذا يجب إقران `defaults-without-telemetry` مع `--no-default-features`؛ فتمريره بمفرده يُبقي الإعدادات الافتراضية في مكانها ويُفشل البناء بدلًا من إنتاج ملف ثنائي لا يزال يُصدر.
كما تكشف البوابة عن ميزات Cargo منفصلة لمشغّلات الحوسبة المدمجة فيها: `compute-driver-kubernetes`، و`compute-driver-docker`، و`compute-driver-podman`، و`compute-driver-vm`، و`compute-driver-mxc`. عطّل مجموعة الميزات الافتراضية، ثم فعّل فقط المشغّلات ووضع القياس عن بُعد المطلوبين للملف الثنائي الهدف. على سبيل المثال:```shell
# Docker only, with telemetry support.
cargo build --release -p openshell-gateway --no-default-features --features telemetry,compute-driver-docker
# Docker and VM only, with telemetry compiled out.
cargo build --release -p openshell-gateway --no-default-features --features compute-driver-docker,compute-driver-vm
# Windows MXC only, with telemetry support and bundled Z3.
cargo build --release -p openshell-gateway --no-default-features --features telemetry,compute-driver-mxc,bundled-z3
تحتفظ البنيات العادية بمجموعة برامج التشغيل الخاصة بالمنصة من خلال ميزة التوافق الافتراضية in-tree-compute-drivers. على Windows، يحدد compute-driver-mxc برنامج MXC؛ بينما تُثبّت الميزات الأربع الأخرى بدائل لبرامج تشغيل غير مدعومة. على المنصات الأخرى، يتم استبعاد MXC.
تقتصر أحداث القياس عن بُعد على فئات تشغيلية مجهولة الهوية وأعدادها، مثل نتائج دورة حياة بيئة العزل، وفئات ملفات تعريف المزوّد، وأعداد قرارات السياسات، وفئات رفض نشاط الشبكة الإجمالية. لا تجمع القياسات عن بُعد الخاصة بـ OpenShell أسماء أو معرّفات بيئات العزل، أو أسماء المضيفين، أو مسارات الملفات، أو مسارات الملفات التنفيذية، أو المطالبات (prompts)، أو بيانات الاعتماد، أو أسماء المزوّدين، أو أسماء النماذج، أو محتوى المستخدم.
ينطبق إلغاء الاشتراك فقط على القياسات عن بُعد الصادرة عن OpenShell. قد تكون لخدمات الطرف الثالث، أو مزوّدي النماذج، أو نقاط نهاية الاستدلال، أو الوكلاء، أو الأدوات التي تقوم بإعدادها واستخدامها مع OpenShell شروطها وممارساتها الخاصة بالخصوصية.
ننشر اتجاهات الاستخدام الإجمالية من هذه القياسات عن بُعد كل أسبوعين. راجع تقارير القياس عن بُعد المجتمعية للحصول على أحدث ملخص.
يقوم هذا البرنامج تلقائيًا باسترداد أو الوصول إلى أو التفاعل مع مواد خارجية. لا يتم توزيع تلك المواد المستردة مع هذا البرنامج وتخضع حصريًا لشروط وأحكام وتراخيص منفصلة. أنت وحدك المسؤول عن العثور على جميع الشروط والأحكام والتراخيص المعمول بها ومراجعتها والامتثال لها، وعن التحقق من أمان وسلامة وملاءمة أي مواد مستردة لحالة الاستخدام المحددة لديك. يُقدَّم هذا البرنامج "كما هو"، دون أي ضمان من أي نوع. لا يقدم المؤلف أي تعهدات أو ضمانات بشأن أي مواد مستردة، ولا يتحمل أي مسؤولية عن أي خسائر أو أضرار أو التزامات أو عواقب قانونية ناتجة عن استخدامك أو عدم قدرتك على استخدام هذا البرنامج أو أي مواد مستردة. استخدم هذا البرنامج والمواد المستردة على مسؤوليتك الخاصة.
هذا المشروع مرخّص بموجب Apache License 2.0.
| الفئة | الأدوات |
|---|
| الوكيل | claude, opencode, codex, copilot |
| اللغة | python (3.14), node (22) |
| المطوّر | gh, git, vim, nano |
| الشبكات | ping, dig, nslookup, nc, traceroute, netstat |
| البوابة | واجهة برمجة تطبيقات مستوى التحكم التي تنسّق دورة حياة البيئة المعزولة وتعمل كحدّ للمصادقة. |
| البيئة المعزولة | بيئة تشغيل معزولة مع إشراف على الحاويات وتوجيه خارجي مفروض بالسياسات. |
| محرك السياسات | يفرض قيود نظام الملفات والشبكة والعمليات من طبقة التطبيق وصولاً إلى النواة. |
| وصول المزوّد | نقاط نهاية محددة في الملف التعريفي، وسياسة الملفات التنفيذية، وحقن بيانات الاعتماد المرتبطة بنقاط النهاية لواجهات برمجة تطبيقات النماذج والخدمات الأخرى. |
| الطبقة | ما تحميه | متى تُطبَّق |
|---|
| نظام الملفات | يمنع القراءة/الكتابة خارج المسارات المسموح بها. | يُقفل عند إنشاء البيئة المعزولة. |
| الشبكة | يحظر الاتصالات الخارجية غير المصرّح بها. | قابل لإعادة التحميل أثناء التشغيل. |
| العمليات | يحظر تصعيد الامتيازات واستدعاءات النظام الخطرة. | يُقفل عند إنشاء البيئة المعزولة. |
| المزوّدون | يمنح بيانات الاعتماد المرتبطة بنقاط النهاية والوصول إلى الشبكة. | قابل لإعادة التحميل أثناء التشغيل. |