
ironcurtain memory-mcp-server/v0.2.1
بيئة تشغيل آمنة* للوكلاء الاصطناعيين المستقلين. سياسة من دساتير مكتوبة بالإنجليزية البسيطة. (*https://ironcurtain.dev)
IronCurtain
بيئة تشغيل آمنة* لوكلاء الذكاء الاصطناعي المستقلين، حيث تُستمد السياسة الأمنية من دستور مكتوب بلغة مفهومة للبشر.
*عندما يكتب أحدهم كلمة "آمن"، ينبغي أن تكون متشككًا فورًا. ما الذي نعنيه بكلمة آمن؟
[!WARNING] نموذج بحثي أولي. IronCurtain مشروع بحثي في مرحلة مبكرة يستكشف كيفية جعل وكلاء الذكاء الاصطناعي آمنين بما يكفي ليكونوا مفيدين حقًا. قد تتغير واجهات البرمجة وصيغ الإعداد والبنية. نرحب بالمساهمات والملاحظات.
عرض توضيحي
يُطلب من الوكيل استنساخ مستودع ودفع التغييرات. يتم تصعيد كل من git_clone و git_push بواسطة محرك السياسة، لكن الموافق التلقائي يوافق عليهما تلقائيًا — إذ وفّرت مدخلات المستخدم الموثوقة من وضع الأوامر (Ctrl-A) نية واضحة، فلم تكن هناك حاجة إلى /approve يدوي.
المشكلة
يمكن لوكلاء الذكاء الاصطناعي المستقلين إدارة الملفات وتشغيل أوامر git وإرسال الرسائل والتفاعل مع واجهات البرمجة نيابةً عنك. لكن أطر الوكلاء الحالية تمنح الوكيل نفس صلاحيات المستخدم، مثل الوصول الكامل إلى نظام الملفات وبيانات الاعتماد والشبكة. يسمي الباحثون الأمنيون هذا السلطة المحيطة، وهو يعني أن حقنة توجيه واحدة أو انحرافًا عبر عدة جولات قد يتسبب في أن يحذف الوكيل ملفات أو يسرّب بيانات أو يدفع تعليمات برمجية ضارة.
الاستجابة الشائعة هي إما تقييد الوكلاء في صندوق رملي ضيق (مما يحد من فائدتهم) أو مطالبة المستخدم بالموافقة على كل إجراء (مما يحد من استقلاليتهم). لا هذا ولا ذاك مُرضٍ.
النهج
يتبع IronCurtain مسارًا مختلفًا: عبّر عن نيتك الأمنية بالإنجليزية البسيطة، ثم دع النظام يكتشف كيفية الإنفاذ.
تكتب دستورًا، وهو مستند قصير يصف ما يُسمح لوكيلك بفعله وما لا يُسمح له به. يترجم IronCurtain هذا إلى سياسة أمنية حتمية باستخدام خط أنابيب LLM، ويتحقق من صحة القواعد المترجمة مقابل سيناريوهات اختبار مُولّدة، ثم يفرض السياسة في وقت التشغيل على كل استدعاء أداة. والنتيجة وكيل يمكنه العمل باستقلالية ضمن حدود تحددها أنت باللغة الطبيعية.
الأفكار الأساسية:
- الوكيل غير موثوق. يفترض IronCurtain أن نموذج اللغة قد يكون مخترقًا عبر حقن التوجيهات أو الانحراف. لا تعتمد الأمان على "كون النموذج جيدًا".
- إدخال بالإنجليزية، وإنفاذ بالمخرجات. تكتب النية ("لا عمليات git مدمّرة دون موافقة")؛ ويترجمها النظام إلى قواعد حتمية تُنفَّذ دون أي تدخل إضافي من نموذج اللغة في وقت التشغيل.
- التدخل الدلالي. بدلًا من منح الوكيل وصولًا خامًا إلى النظام، تمر جميع التفاعلات عبر خوادم MCP (نظام الملفات، git، إلخ). يمر كل استدعاء أداة عبر محرك سياسة يمكنه السماح أو الرفض أو التصعيد إلى المستخدم للموافقة.
- الدفاع في العمق. يعمل كود الوكيل في عزل V8 دون وصول مباشر إلى المضيف. والسبيل الوحيد للخروج هو عبر استدعاءات أدوات MCP ذات معنى دلالي، وكل واحد منها يُفحص مقابل السياسة.
البنية
يدعم 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.
البدء السريع
المتطلبات المسبقة
- Node.js 24 أو 26 — الإصدارات الرئيسية الزوجية التي يختبرها IronCurtain. كلاهما يثبّت ملفات
isolated-vmالثنائية المُجمّعة مسبقًا. Node 25 غير مدعوم وغير مُختبر. - Docker — غير مطلوب لكنه موصى به بشدة لوضع وكيل Docker، الذي يوفر أقوى عزل. على macOS 26+ (Apple silicon)، يعمل Apple
containerكخلفية بديلة (جهاز افتراضي لكل حاوية؛ يُستخدم تلقائيًا عندما تكون خدماته قيد التشغيل — راجعcontainerRuntimeفيironcurtain config) - مفتاح API لمزود LLM واحد على الأقل (Anthropic أو Google أو OpenAI)
التثبيت
كأداة 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 بسياسة افتراضية موجّهة نحو تجربة المطوّر — يُسمح بالعمليات للقراءة فقط، بينما تُصعَّد التعديلات (الكتابة، والدفع، وإنشاء طلبات السحب) لموافقة بشرية. يمكنك البدء في استخدامه فورًا بعد الإعداد.
مُضاعِف الطرفية (موصى به)
الطريقة الموصى بها لاستخدام IronCurtain. يمنحك القوة الكاملة لواجهة TUI التفاعلية لوكيلك (Claude Code أو Goose) بينما يتوسّط IronCurtain كل استدعاء أداة عبر محرّك السياسات الخاص به — كل ذلك في طرفية واحدة.
ironcurtain mux
القدرات الرئيسية:
- واجهة مستخدم طرفية كاملة للوكيل — يعمل الوكيل في 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 للحصول على الشرح الكامل: أوضاع الإدخال، ونموذج أمان الإدخال الموثوق، وسير عمل التصعيد، ومرجع لوحة المفاتيح.