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

דוגמה מהירה

התקן אותה:

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

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

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

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

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

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

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

API

ייבוא

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 הבא.