Skip to main content
מדיניות מותאמות אישית מאפשרת לך לכתוב כללים לכל התנהגות סוכן: אכוף קונוונציות של פרויקט, עצור סטייה, חסום פעולות הרסניות, גלה סוכנים תקועים, או השתלב עם Slack, זרימות אישור, ועוד. הם משתמשים באותה מערכת אירועי hook וה-allow, deny, instruct כמו מדיניות מובנית.

דוגמה מהירה

התקנה:

שתי דרכים לטעון מדיניות מותאמת אישית

אפשרות 1: מבוססת קונוונציה (מומלץ)

זרוק קבצים *policies.{js,mjs,ts} לתוך .failproofai/policies/ והם נטענים באופן אוטומטי — אין צורך בדגלים או שינויי תצורה. זה עובד כמו git hooks: זרוק קובץ, זה פשוט עובד.
איך זה עובד:
  • שני הספריות של פרויקט ומשתמש נסרקים (union — לא first-scope-wins)
  • קבצים נטענים בסדר אלפבתי בתוך כל ספריה. הוסף קידומת עם 01-, 02- כדי לשלוט בסדר
  • רק קבצים התואמים *policies.{js,mjs,ts} נטענים; קבצים אחרים מתעלמים
  • כל קובץ נטען באופן עצמאי (fail-open לכל קובץ)
  • עובד לצד --custom מפורש ומדיניות מובנית
מדיניות קונוונציה היא הדרך הקלה ביותר לבנות תקן איכות לארגון שלך. Commit .failproofai/policies/ ל-git וכל חברי הצוות יקבלו את אותם הכללים באופן אוטומטי — אין צורך בהגדרה לכל מפתח. כשהצוות שלך מגלה מצבי כשלים חדשים, הוסף מדיניות ודחוף. עם הזמן אלה הופכים לתקן איכות חי שמשתפר עם כל תרומה.

אפשרות 2: נתיב קובץ מפורש

הנתיב המוחלט המוחזר מאוחסן ב-policies-config.json כ-customPoliciesPath. הקובץ נטען בטרי בכל אירוע hook - אין caching בין אירועים.

שימוש בשניהם יחד

מדיניות קונוונציה וקובץ --custom מפורש יכולים להתקיים. סדר טעינה:
  1. קובץ customPoliciesPath מפורש (אם מוגדר)
  2. קבצי קונוונציה של פרויקט ({cwd}/.failproofai/policies/, בסדר אלפבתי)
  3. קבצי קונוונציה של משתמש (~/.failproofai/policies/, בסדר אלפבתי)

API

Import

customPolicies.add(hook)

רושם מדיניות. קרא זאת כמו שרוצה פעמים רבות עבור מדיניות מרובה באותו קובץ.

עוזרי החלטות

deny(message) - ההודעה מופיעה ל-Claude עם קידומת "Blocked by failproofai:". ה-deny יחיד מקצר הערכה נוספת. instruct(message) - ההודעה מצורפת להקשר של Claude לקריאת הכלי הנוכחי. כל הודעות instruct מצטברות ומועברות יחד.
אתה יכול לצרף הנחיה נוספת לכל הודעת deny או instruct על ידי הוספת שדה hint ב-policyParams — אין צורך בשינוי קוד. זה עובד עבור מדיניות מותאמת אישית (custom/), קונוונציה של פרויקט (.failproofai-project/), וקונוונציה של משתמש (.failproofai-user/) גם כן. ראה Configuration → hint לפרטים.

הודעות allow אינפורמטיביות

allow(message) מאפשר את הפעולה וגם שולח הודעה אינפורמטיבית חזרה ל-Claude. ההודעה מועברת כ-additionalContext בתגובת stdout של מטפל ה-hook — אותו מנגנון המשמש ל-instruct, אך שונה מבחינה סמנטית: זה עדכון סטטוס, לא אזהרה. מקרי שימוש:
  • אישורי סטטוס: allow("All CI checks passed.") — אומר ל-Claude שהכל ירוק
  • הסברי fail-open: allow("GitHub CLI not installed, skipping CI check.") — אומר ל-Claude למה בדיקה דלגה כדי שיהיה לו הקשר מלא
  • הודעות מרובות מצטברות: אם כמה מדיניות כל אחת מחזירה allow(message), כל ההודעות מחוברות עם עלינוליים ומועברות יחד

שדות PolicyContext

שדות SessionMetadata

סוגי אירועים


סדר הערכה

מדיניות מוערכת בסדר זה:
  1. מדיניות מובנית (בסדר הגדרה)
  2. מדיניות מותאמת אישית מפורשת מ-customPoliciesPath (בסדר .add())
  3. מדיניות קונוונציה מ-.failproofai/policies/ של פרויקט (קבצים אלפבתיים, סדר .add() בתוך)
  4. מדיניות קונוונציה מ-~/.failproofai/policies/ של משתמש (קבצים אלפבתיים, סדר .add() בתוך)
ה-deny הראשון מקצר את כל המדיניות הלאה. כל הודעות instruct מצטברות ומועברות יחד.

ייבוא טרנזיטיבי

קבצי מדיניות מותאמים אישית יכולים לייבא מודולים מקומיים באמצעות נתיבים יחסיים:
כל היבוא יחסי הנגיע מקובץ ההרשמה מתוחזר. זה מיושם על ידי כתיבה מחדש של ייבוא from "failproofai" לנתיב dist בפועל ויצירת קבצי .mjs זמניים כדי להבטיח תאימות ESM.

סינון סוג אירוע

השתמש ב-match.events כדי להגביל מתי מדיניות משתלחת:
השמט match לחלוטין כדי להיות בעל יכולת בכל סוג אירוע.

טיפול בשגיאות ומצבי כשל

מדיניות מותאמת אישית היא fail-open: שגיאות לעולם לא חוסמות מדיניות מובנית או קורסות מטפל ה-hook.
כדי לתפוס שגיאות מדיניות מותאמת אישית, צפה בקובץ היומן:

דוגמה מלאה: מדיניות מרובה


דוגמאות

ספרייה examples/ מכילה קבצי מדיניות מוכנים להפעלה:

שימוש בדוגמאות קבצים מפורשות

שימוש בדוגמאות מבוססות קונוונציה

אין צורך בפקודת התקנה — הקבצים נתונים באופן אוטומטי בהודעת hook הבאה.