
بيئة تشغيل آمنة* للوكلاء الاصطناعيين المستقلين. سياسة من دساتير مكتوبة بالإنجليزية البسيطة. (*https://ironcurtain.dev)
بيئة تشغيل آمنة* للوكلاء الاصطناعيين المستقلين، حيث تُشتق سياسة الأمان من دستور قابل للقراءة البشرية.
*عندما يكتب أحدهم "آمن"، يجب أن تشك على الفور. ماذا نعني بآمن؟
[!WARNING] نموذج بحثي. IronCurtain هو مشروع بحثي في مرحلة مبكرة يستكشف كيفية جعل وكلاء الذكاء الاصطناعي آمنين بما يكفي ليكونوا مفيدين فعليًا. قد تتغير واجهات البرمجة (APIs)، وصيغ الإعدادات، والبنية المعمارية. المساهمات والملاحظات مرحّب بها.
يُطلب من الوكيل استنساخ مستودع ودفع التغييرات. يتم تصعيد كلٍّ من git_clone وgit_push بواسطة محرك السياسات، لكن الموافق التلقائي يعتمدهما تلقائيًا — إذ وفّر إدخال المستخدم الموثوق من وضع الأوامر (Ctrl-A) نية واضحة، لذا لم تكن هناك حاجة إلى /approve يدوي.
تستطيع وكلاء الذكاء الاصطناعي المستقلون إدارة الملفات، وتشغيل أوامر git، وإرسال الرسائل، والتفاعل مع واجهات البرمجة (APIs) نيابةً عنك. لكن أُطر عمل الوكلاء الحالية تمنح الوكيل نفس صلاحيات المستخدم، مثل الوصول الكامل إلى نظام الملفات وبيانات الاعتماد والشبكة. يطلق باحثو الأمان على هذا السلطة المحيطة (ambient authority)، ويعني ذلك أن حقنة تعليمات واحدة (prompt injection) أو انحرافًا عبر جولات متعددة (multi-turn drift) يمكن أن يدفع الوكيل إلى حذف الملفات، أو تسريب البيانات، أو دفع تعليمات برمجية خبيثة.
الاستجابة الشائعة هي إما تقييد الوكلاء في صندوق رمل ضيق (مما يحد من فائدتهم) أو مطالبة المستخدم بالموافقة على كل إجراء (مما يحد من استقلاليتهم). لا يرضي أيٌّ من الخيارين.
تتبع IronCurtain مسارًا مختلفًا: عبّر عن نيتك الأمنية بالإنجليزية البسيطة، ثم دع النظام يكتشف كيفية التنفيذ.
أنت تكتب دستورًا وهو مستند قصير يصف ما يُسمح لوكيلك وما لا يُسمح له بفعله. تقوم IronCurtain بتجميع ذلك في سياسة أمان حتمية باستخدام خط أنابيب LLM، وتتحقق من صحة القواعد المجمّعة مقابل سيناريوهات اختبار مولّدة، ثم تطبّق السياسة في وقت التشغيل على كل استدعاء أداة. النتيجة هي وكيل يمكنه العمل باستقلالية ضمن حدود تحددها أنت باللغة الطبيعية.
الأفكار الأساسية:
تدعم IronCurtain وضعين للجلسات بنماذج ثقة مختلفة:
الوكيل المدمج (وضع الكود Code Mode) — يكتب وكيل LLM الخاص بـ IronCurtain مقاطع TypeScript تُنفَّذ في صندوق رمل V8. تتحكم IronCurtain في الوكيل وصندوق الرمل ومحرك السياسات. يخرج كل استدعاء أداة من صندوق الرمل كطلب MCP منظم، ويمر عبر محرك السياسات (سماح / رفض / تصعيد)، وعندها فقط يصل إلى خادم MCP الحقيقي.
وضع وكيل Docker — وكيل خارجي (Claude Code أو Goose أو غيره) يعمل داخل حاوية Docker دون وصول إلى الشبكة. تقوم IronCurtain بالتوسط في التأثيرات الخارجية: تمر استدعاءات API الخاصة بـ LLM عبر وكيل MITM ينهي TLS (قائمة مضيفين مسموح بها، واستبدال المفاتيح من الوهمية إلى الحقيقية)، وتمر استدعاءات أدوات MCP عبر نفس محرك السياسات، وتُثبَّت الحزم (npm/PyPI) عبر وكيل سجل تحقق.
في كلا الوضعين، الوكيل غير موثوق. لا يعتمد الأمان على اتباع النموذج للتعليمات — بل يُفرض عند الحدود.
انظر SANDBOXING.md للبنية الكاملة مع الرسوم البيانية، وتحليل الثقة طبقة-بطبقة، وملاحظات منصة macOS.
isolated-vm؛ يعمل 24 و26 بتثبيت ملفات ثنائية مُجهزة مسبقًا، بينما يُجمَّع Node 22 من المصدر عند التثبيت ويحتاج إلى سلسلة أدوات C/C++). الإصدارات ذات الأرقام الفردية (23، 25) تعمل لكنها غير مُختبرة — يحذّر ironcurtain doctor عند ذلك.container من Apple كبديل للخلفية (VM لكل حاوية؛ يُستخدم تلقائيًا عندما تكون خدماته قيد التشغيل — انظر containerRuntime في ironcurtain config)كأداة CLI عمومية (للمستخدمين النهائيين):```bash npm install -g @provos/ironcurtain
**من المصدر (التطوير):**```bash
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. عيّن مفتاح API الخاص بك:```bash export ANTHROPIC_API_KEY=sk-ant-...
يمكنك أيضًا وضع المفاتيح في ملف `.env` في جذر المشروع (يتم تحميله تلقائيًا عبر `dotenv`)، أو إضافتها إلى `~/.ironcurtain/config.json` عبر `ironcurtain config`. متغيرات البيئة لها الأولوية على قيم ملف الإعداد. المدعومة: `ANTHROPIC_API_KEY`, `GOOGLE_GENERATIVE_AI_API_KEY`, `OPENAI_API_KEY`.
**2. تشغيل معالج الإعداد الأول** (قم بتشغيله صراحةً قبل استخدام مسار mux الموصى به؛ كما يتم تشغيله تلقائيًا عند أول `ironcurtain start` غير mux):```bash
ironcurtain setup
يرشدك خلال إعداد رمز GitHub، وموفر البحث على الويب، واختيار النموذج، والإعدادات الأخرى. ينشئ ~/.ironcurtain/config.json بخياراتك.
يأتي IronCurtain مع سياسة افتراضية موجهة نحو تجربة المطور — العمليات للقراءة فقط مسموحة، بينما التغييرات (الكتابة، الدفع، إنشاء طلبات السحب) تتطلب موافقة بشرية. يمكنك البدء باستخدامه فورًا بعد الإعداد.
الطريقة الموصى بها لاستخدام IronCurtain. تمنحك القوة الكاملة لواجهة TUI التفاعلية لوكيلك (Claude Code أو Goose) بينما يتوسط IronCurtain في كل استدعاء أداة عبر محرك السياسات الخاص به — كل ذلك في محطة طرفية واحدة.```bash ironcurtain mux
**القدرات الأساسية:**
- **واجهة TUI كاملة للوكيل** — يعمل الوكيل في PTY داخل حاوية Docker بدون وصول إلى الشبكة. تتفاعل معه تمامًا كما لو كان يعمل محليًا.
- **معالجة التصعيد المضمّنة** — عندما تحتاج استدعاء أداة إلى موافقة، تظهر أداة اختيار التصعيد فوق الشاشة بإجراءات بمفتاح واحد (a/d/w للموافقة/الرفض/القائمة البيضاء). استخدم `/approve+ N` لإضافة نطاق أو مسار إلى القائمة البيضاء لبقية الجلسة.
- **إدخال مستخدم موثوق** — النص المكتوب في وضع الأوامر (Ctrl-A) يُلتقط على جانب المضيف قبل دخول الحاوية. وهذا ينشئ إشارة نية موثَّقة يمكن للموافِق التلقائي استخدامها — على سبيل المثال، كتابة "push my changes to origin" ستوافق تلقائيًا على تصعيد `git_push` لاحق.
- **إدارة التبويبات** — قم بإنشاء جلسات متزامنة متعددة (`/new`)، والتبديل بينها (`/tab N`، Alt-1..9)، وإغلاقها (`/close`). يمكن تشغيل مثيلات mux متعددة بالتوازي.
انظر [DEVELOPER_GUIDE.md](https://github.com/provos/ironcurtain/blob/master/DEVELOPER_GUIDE.md) للشرح الكامل: أوضاع الإدخال، نموذج أمان الإدخال الموثوق، سير عمل التصعيد، ومرجع لوحة المفاتيح.
### جلسات غير mux