عن المشروع

Agent Interlock هو إطار عمل بلغة Python 3.11 (ترخيص Apache-2.0) يطبق مفهوم الهندسة الوقائية (interlock) على التفاعل بين الوكلاء. يتم التصريح عن الجهات الفاعلة في بيانات ActorSpec، ويتم تغليف واجهة كل جهة فاعلة باستخدام SDK أو وكيل (proxy)، وتتم مراقبة الاتصالات بينهم والبت فيها وحظرها بحيث لا يتم الاتصال إلا عبر الروابط المصرح بها. يركز المشروع على بوابة أدوات MCP. يتم التعامل مع التهديدات من M1 إلى M9 - تسميم الأدوات، وسحب البساط (rug pull)، وتظليل الأدوات، ونشر الأدوات المسمومة، والوكيل المرتبك أو تمرير الرموز، واختراق المضيف من خادم MCP، واكتشاف أو تعديل تكوين الوكيل، وحصاد بيانات الاعتماد، وتسريب البيانات - على مستوى تدفق البيانات، مع أحكام افتراضية مثل الحجر الصحي (QUARANTINE)، أو الحظر (BLOCK)، أو التعليق (HOLD)، أو التحدي (CHALLENGE)، أو التطهير (SANITIZE). يتم ترقية الإنفاذ في مراحل تبدأ من المراقبة (OBSERVE) ثم الظلال (SHADOW) وصولاً إلى الإنفاذ (ENFORCE)، وتتطلب الترقية إلى مرحلة ENFORCE موافقتين موقعتين. يوجد جدول فحص واحد يحتوي على 29 فحصاً خلف ثلاث نقاط إنفاذ، تختار كل منها ملفها الخاص: بوابة MCP (21 فحصاً)، وSDK (19 فحصاً)، ووسيط A2A (17 فحصاً). ويذكر ملف README بوضوح أن الآلية مشتركة ولكن التغطية ليست كذلك، وأن الوسيط لا يملك تحكماً في الخروج أو الحجم أو التلوث. تشمل المكونات SDK (define_actor, connect, wrap)، وبيئة تشغيل تعترض الاتصالات بين الجهات الفاعلة، ومنسقاً ينفذ مخططات DAG للمهام الموثقة عبر وسائل نقل A2A وMCP والبشر، ووسيط A2A يتعامل مع بطاقات الوكلاء والمهام مع إنفاذ مسبق، وسجلاً غير قابل للتعديل يسجل أحداث الطلبات والأحكام والإجراءات والنتائج بشكل منفصل، وعروضاً رسومية لمسارات التصميم والتشغيل والهجوم، وواجهة مستخدم Studio تعتمد على الصناديق لتحرير البنية وتصدير البيانات، ومحول Anthropic Tool Runner، وأمر interlock verify الذي يشغل تسعة سيناريوهات L1 ضد الأدوات المحمية الخاصة بالمشروع بدلاً من النماذج الجاهزة للإطار. تشمل المجالات الأخرى المثبتة أدوات MCP JSON-RPC (tools/list, tools/call) وإنفاذ list-changed المرتبط بملخصات البنية؛ وعميل Streamable HTTP JSON/SSE مع ربط الجلسة؛ واكتشاف MCP OAuth، وPKCE S256، وفحص RFC 7662، والتحقق الاختياري من JWKS/JWT وموافقة loopback؛ وعميل stdio JSONL مع تثبيت المصنوعات، وتصديق sandbox موقع، وخطط إطلاق Bubblewrap؛ وقبول المصدر الموقع للناشرين؛ وحراس الخروج لكل وجهة يتم تجميعها من بيانات البنية؛ وتقسيم PostgreSQL، وFORCE RLS بناءً على session_user ومحول سجل غير قابل للتعديل مع واجهات برمجة تطبيقات HTTP للأحداث والتتبع؛ واستيعاب OTLP/HTTP JSON؛ ومصبات تدقيق موقعة؛ وتسوية الانحراف بين التصميم والتشغيل لحواف الوكلاء المتعددين؛ وحدود ثقة داخلية/خارجية اتجاهية؛ ومجموعة سيناريوهات شاملة ببيانات وهمية باستخدام عناوين .invalid حتمية. لا يحتوي النواة المرجعية على تبعيات تشغيل خارجية، مع اعتبار تكاملات PostgreSQL وAnthropic إضافات اختيارية. يتسم ملف README بالصراحة بشأن ما لم يتم شحنه: لا يوجد محول لـ LangGraph أو Claude Agent SDK، ولا وكيل sidecar، وتم استبعاد اعتراض موصل MCP من جانب الخادم لأن تلك الأدوات تنفذ من جانب المزود، ومقيم قبول هيكلي فقط، ومحلل بيانات لا يزال يسقط بعض الحقول وإجراءات التأثير الجانبي. كما يسجل أن SDK لا يمكنه الوصول إلى واجهة برمجة تطبيقات الموافقة الخاصة بالبوابة، لذا فإن الكتابة الخارجية من أداة مغلفة تفشل في الإغلاق بدلاً من أن تكون قابلة للموافقة من SDK. أما أعمال التكامل الخارجي الحقيقية مثل Sigstore وKMS/HSM ومزودي الهوية وsidecars الخروج الحقيقية وTLS وتحديد معدل التوزيع فهي مدرجة كأعمال متبقية.