
بيئة تشغيل آمنة* للوكلاء الاصطناعيين المستقلين. سياسة من دساتير مكتوبة بالإنجليزية البسيطة. (*https://ironcurtain.dev)
بيئة تشغيل آمنة* لوكلاء الذكاء الاصطناعي المستقلين، حيث تُستمد السياسة الأمنية من دستور مكتوب بلغة مفهومة للبشر.
*عندما يكتب أحدهم كلمة "آمن"، ينبغي أن تكون متشككًا فورًا. ما الذي نعنيه بكلمة آمن؟
[!WARNING] نموذج بحثي أولي. IronCurtain مشروع بحثي في مرحلة مبكرة يستكشف كيفية جعل وكلاء الذكاء الاصطناعي آمنين بما يكفي ليكونوا مفيدين حقًا. قد تتغير واجهات البرمجة وصيغ الإعداد والبنية. نرحب بالمساهمات والملاحظات.
يُطلب من الوكيل استنساخ مستودع ودفع التغييرات. يتم تصعيد كل من git_clone و git_push بواسطة محرك السياسة، لكن الموافق التلقائي يوافق عليهما تلقائيًا — إذ وفّرت مدخلات المستخدم الموثوقة من وضع الأوامر (Ctrl-A) نية واضحة، فلم تكن هناك حاجة إلى /approve يدوي.
يمكن لوكلاء الذكاء الاصطناعي المستقلين إدارة الملفات وتشغيل أوامر git وإرسال الرسائل والتفاعل مع واجهات البرمجة نيابةً عنك. لكن أطر الوكلاء الحالية تمنح الوكيل نفس صلاحيات المستخدم، مثل الوصول الكامل إلى نظام الملفات وبيانات الاعتماد والشبكة. يسمي الباحثون الأمنيون هذا السلطة المحيطة، وهو يعني أن حقنة توجيه واحدة أو انحرافًا عبر عدة جولات قد يتسبب في أن يحذف الوكيل ملفات أو يسرّب بيانات أو يدفع تعليمات برمجية ضارة.
الاستجابة الشائعة هي إما تقييد الوكلاء في صندوق رملي ضيق (مما يحد من فائدتهم) أو مطالبة المستخدم بالموافقة على كل إجراء (مما يحد من استقلاليتهم). لا هذا ولا ذاك مُرضٍ.
يتبع IronCurtain مسارًا مختلفًا: عبّر عن نيتك الأمنية بالإنجليزية البسيطة، ثم دع النظام يكتشف كيفية الإنفاذ.
تكتب دستورًا، وهو مستند قصير يصف ما يُسمح لوكيلك بفعله وما لا يُسمح له به. يترجم IronCurtain هذا إلى سياسة أمنية حتمية باستخدام خط أنابيب LLM، ويتحقق من صحة القواعد المترجمة مقابل سيناريوهات اختبار مُولّدة، ثم يفرض السياسة في وقت التشغيل على كل استدعاء أداة. والنتيجة وكيل يمكنه العمل باستقلالية ضمن حدود تحددها أنت باللغة الطبيعية.
الأفكار الأساسية:
يدعم IronCurtain وضعي جلسة بنماذج ثقة مختلفة:
الوكيل المدمج (وضع الكود) — يكتب وكيل LLM الخاص بـ IronCurtain مقتطفات TypeScript تُنفَّذ في صندوق رملي V8. يتحكم IronCurtain في الوكيل والصندوق الرملي ومحرك السياسة. يخرج كل استدعاء أداة من الصندوق الرملي كطلب MCP مُهيكل، ويمر عبر محرك السياسة (سماح / رفض / تصعيد)، وعندها فقط يصل إلى خادم MCP الحقيقي.
وضع وكيل Docker — يعمل وكيل خارجي (Claude Code، Goose، Codex) داخل حاوية دون وصول مباشر إلى الشبكة العامة. يتوسط IronCurtain في التأثيرات الخارجية: تمر استدعاءات واجهة برمجة LLM عبر وكيل MITM يُنهي TLS (قائمة مضيفين مسموح بها، تبديل المفتاح المزيف بالحقيقي)، وتمر استدعاءات أدوات MCP عبر محرك السياسة نفسه، وتمر عمليات تثبيت الحزم المدعومة عبر وكلاء حزم يتحققون منها.
يمنح Docker المتداخل الاختياري جلسات المطورين خدمة خفية خاصة ومعزولة دون كشف مقبس Docker الخاص بالمضيف. تغطي الملفات الشخصية المنفذة Apple Container و Docker Desktop على macOS، و WSL2 مع Docker Desktop على amd64. وتفصل أوضاعه offline و images و packages بين استخدام الصور المحلية، وعمليات سحب الصور العامة المتوسطة، وبناء الحزم المدعومة. لا يُقبل محرك Linux الأصلي للتداخل؛ راجع مرجع الإعداد للمتطلبات المسبقة والقيود.
في كلا الوضعين، يكون الوكيل غير موثوق. لا يعتمد الأمان على اتباع النموذج للتعليمات — بل يُفرض عند الحدود.
راجع SANDBOXING.md للاطلاع على البنية الكاملة مع المخططات، وتحليل الثقة طبقةً بطبقة، وملاحظات منصة macOS.
isolated-vm الثنائية المُجمّعة مسبقًا. Node 25 غير مدعوم وغير مُختبر.container كخلفية بديلة (جهاز افتراضي لكل حاوية؛ يُستخدم تلقائيًا عندما تكون خدماته قيد التشغيل — راجع containerRuntime في ironcurtain config)كأداة CLI عامة (للمستخدمين النهائيين):
npm install -g @provos/ironcurtain
من المصدر (التطوير):
git clone https://github.com/provos/ironcurtain.git
cd ironcurtain
npm install
1. قم بتعيين مفتاح API الخاص بك:
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):
ironcurtain setup
يأخذك عبر إعداد رمز GitHub، ومزوّد البحث على الويب، واختيار النموذج، وإعدادات أخرى. ينشئ ~/.ironcurtain/config.json بخياراتك.
يأتي IronCurtain بسياسة افتراضية موجّهة نحو تجربة المطوّر — يُسمح بالعمليات للقراءة فقط، بينما تُصعَّد التعديلات (الكتابة، والدفع، وإنشاء طلبات السحب) لموافقة بشرية. يمكنك البدء في استخدامه فورًا بعد الإعداد.
الطريقة الموصى بها لاستخدام IronCurtain. يمنحك القوة الكاملة لواجهة TUI التفاعلية لوكيلك (Claude Code أو Goose) بينما يتوسّط IronCurtain كل استدعاء أداة عبر محرّك السياسات الخاص به — كل ذلك في طرفية واحدة.
ironcurtain mux
القدرات الرئيسية:
/approve+ N لإضافة نطاق أو مسار إلى القائمة البيضاء لبقية الجلسة.git_push اللاحق./new)، وبدّل بينها (/tab N، Alt-1..9)، وأغلقها (/close). يمكن تشغيل عدة نسخ من mux بالتوازي.راجع DEVELOPER_GUIDE.md للحصول على الشرح الكامل: أوضاع الإدخال، ونموذج أمان الإدخال الموثوق، وسير عمل التصعيد، ومرجع لوحة المفاتيح.