title: السياسات المخصصة description: “اكتب سياساتك الخاصة في JavaScript - فرض الاتفاقيات والوقاية من الانجراف واكتشاف الأعطال والتكامل مع الأنظمة الخارجية” icon: code
تتيح لك السياسات المخصصة كتابة قواعد لأي سلوك وكيل: فرض اتفاقيات المشروع والوقاية من الانجراف وحجب العمليات المدمرة واكتشاف الوكلاء المحتجزين أو التكامل مع Slack وسير عمل الموافقة والمزيد. تستخدم نفس نظام أحداث الخطاف وقراراتallow و deny و instruct مثل السياسات المدمجة.
مثال سريع
طريقتان لتحميل السياسات المخصصة
الخيار 1: المستند على الاتفاقية (موصى به)
انقل ملفات*policies.{js,mjs,ts} إلى .failproofai/policies/ وسيتم تحميلها تلقائياً — بدون حاجة إلى علامات أو تغييرات في الإعدادات. يعمل هذا مثل git hooks: انقل ملف، ويعمل فقط.
- يتم مسح كلا دليل المشروع والمستخدم (اتحاد — ليس أول نطاق-يفوز)
- يتم تحميل الملفات أبجدياً في كل دليل. البادئة مع
01-و02-للتحكم في الترتيب - يتم تحميل الملفات المطابقة فقط
*policies.{js,mjs,ts}؛ يتم تجاهل الملفات الأخرى - يتم تحميل كل ملف بشكل مستقل (fail-open لكل ملف)
- يعمل إلى جانب السياسات المخصصة والمدمجة الواضحة
--custom
الخيار 2: مسار الملف الصريح
policies-config.json كـ customPoliciesPath. يتم تحميل الملف بشكل جديد في كل حدث خطاف — لا يوجد تخزين مؤقت بين الأحداث.
استخدام الاثنين معاً
يمكن للسياسات الاتفاقية والملف--custom الصريح أن يتعايشوا. ترتيب التحميل:
- ملف
customPoliciesPathالصريح (إذا تم تكوينه) - ملفات اتفاقية المشروع (
{cwd}/.failproofai/policies/، أبجدياً) - ملفات اتفاقية المستخدم (
~/.failproofai/policies/، أبجدياً)
واجهة برمجية التطبيقات
استيراد
customPolicies.add(hook)
يسجل سياسة. استدعِ هذا عدة مرات حسب الحاجة لسياسات متعددة في نفس الملف.
مساعدات القرار
deny(message) - تظهر الرسالة في Claude مسبوقة بـ "Blocked by failproofai:". يقطع deny واحد كل التقييم الإضافي.
instruct(message) - يتم إضافة الرسالة إلى سياق Claude للاستدعاء الأداة الحالي. يتم تجميع جميع رسائل instruct وتسليمها معاً.
رسائل allow إعلامية
allow(message) يسمح بالعملية و يرسل رسالة معلوماتية مرة أخرى إلى Claude. يتم تسليم الرسالة كـ additionalContext في استجابة stdout لمعالج الخطاف — نفس الآلية المستخدمة من قبل instruct، ولكن مختلفة من الناحية الدلالية: إنها تحديث حالة، وليس تحذير.
حالات الاستخدام:
- تأكيدات الحالة:
allow("All CI checks passed.")— يخبر Claude بأن كل شيء أخضر - شروحات fail-open:
allow("GitHub CLI not installed, skipping CI check.")— يخبر Claude سبب تخطي الفحص حتى يكون لديه السياق الكامل - رسائل متعددة تتراكم: إذا أرجعت عدة سياسات
allow(message)، يتم دمج جميع الرسائل مع فواصل الأسطر وتسليمها معاً
حقول PolicyContext
حقول SessionMetadata
أنواع الأحداث
ترتيب التقييم
يتم تقييم السياسات بهذا الترتيب:- السياسات المدمجة (بترتيب التعريف)
- السياسات المخصصة الصريحة من
customPoliciesPath(بترتيب.add()) - سياسات الاتفاقية من مشروع
.failproofai/policies/(ملفات أبجدياً، ترتيب.add()بالداخل) - سياسات الاتفاقية من مستخدم
~/.failproofai/policies/(ملفات أبجدياً، ترتيب.add()بالداخل)
يقطع أول
deny جميع السياسات اللاحقة. يتم تجميع جميع رسائل instruct وتسليمها معاً.الاستيرادات المتعددة
يمكن لملفات السياسات المخصصة أن تستورد الوحدات المحلية باستخدام المسارات النسبية:from "failproofai" إلى مسار التوزيع الفعلي وإنشاء ملفات .mjs مؤقتة لضمان التوافق ESM.
تصفية نوع الحدث
استخدمmatch.events لتقييد وقت تشغيل السياسة:
match بالكامل للتشغيل على كل نوع حدث.
معالجة الأخطاء وأنماط الفشل
السياسات المخصصة fail-open: الأخطاء لا تحجب السياسات المدمجة أو تعطل معالج الخطاف.مثال كامل: سياسات متعددة
أمثلة
يحتوي دليلexamples/ على ملفات سياسات جاهزة للتشغيل:

