Cron וטריגרים
סוכני Triggerfish אינם מוגבלים לשאלה-ותשובה תגובתית. מערכת ה-cron והטריגרים מאפשרת התנהגות יזומה: משימות מתוזמנות, בדיקות תקופתיות, תדריכי בוקר, ניטור רקע וזרימות עבודה אוטונומיות רב-שלביות.
משימות Cron
משימות cron הן משימות מתוזמנות עם הוראות קבועות, ערוץ מסירה ותקרת סיווג. הן משתמשות בתחביר ביטויי cron סטנדרטי.
תצורה
הגדירו משימות cron ב-triggerfish.yaml או תנו לסוכן לנהל אותן בזמן ריצה דרך כלי ה-cron:
yaml
scheduler:
cron:
jobs:
- id: morning-briefing
schedule: "0 7 * * *" # 7 בבוקר יומי
task: "Prepare morning briefing with calendar,
unread emails, and weather"
channel: telegram # לאן למסור
classification: INTERNAL # זיהום מקסימלי למשימה זו
- id: pipeline-check
schedule: "0 */4 * * *" # כל 4 שעות
task: "Check Salesforce pipeline for changes"
channel: slack
classification: CONFIDENTIALכיצד זה עובד
- ה-CronManager מנתח ביטויי cron סטנדרטיים ומתחזק מרשם משימות עמיד ששורד אתחולים מחדש.
- כאשר משימה מופעלת, ה-OrchestratorFactory יוצר אורקסטרטור וסשן מבודדים במיוחד לביצוע זה.
- המשימה רצה במרחב עבודה סשן רקע עם מעקב זיהום משלה.
- הפלט נמסר לערוץ המוגדר, בכפוף לכללי הסיווג של אותו ערוץ.
- היסטוריית הביצוע מתועדת לביקורת.
Cron מנוהל על ידי הסוכן
הסוכן יכול ליצור ולנהל משימות cron משלו דרך כלי cron:
| פעולה | תיאור | אבטחה |
|---|---|---|
cron.list | רשימת כל המשימות המתוזמנות | בעלים בלבד |
cron.create | תזמון משימה חדשה | בעלים בלבד, תקרת סיווג נאכפת |
cron.delete | הסרת משימה מתוזמנת | בעלים בלבד |
cron.history | צפייה בביצועים קודמים | מסלול ביקורת נשמר |
יצירת משימת cron דורשת אימות בעלים. הסוכן אינו יכול לתזמן
משימות בשם משתמשים חיצוניים או לחרוג מתקרת הסיווג המוגדרת. :::
ניהול Cron ב-CLI
ניתן לנהל משימות cron גם ישירות משורת הפקודה:
bash
triggerfish cron add "0 9 * * *" morning briefing
triggerfish cron add "0 */4 * * *" check pipeline --classification=CONFIDENTIAL
triggerfish cron list
triggerfish cron history <job-id>
triggerfish cron delete <job-id>דגל --classification מגדיר את תקרת הסיווג למשימה. רמות תקפות הן PUBLIC, INTERNAL, CONFIDENTIAL ו-RESTRICTED. אם מושמט, ברירת המחדל היא INTERNAL.
מערכת טריגרים
טריגרים הם לולאות "בדיקה" תקופתיות שבהן הסוכן מתעורר כדי להעריך האם נדרשת פעולה יזומה כלשהי. בניגוד למשימות cron עם משימות קבועות, טריגרים נותנים לסוכן שיקול דעת להחליט מה צריך תשומת לב.
TRIGGER.md
TRIGGER.md מגדיר מה הסוכן צריך לבדוק במהלך כל התעוררות. הוא נמצא ב-~/.triggerfish/config/TRIGGER.md והוא קובץ markdown חופשי שבו מציינים עדיפויות ניטור, כללי אסקלציה והתנהגויות יזומות.
אם TRIGGER.md נעדר, הסוכן משתמש בידע הכללי שלו כדי להחליט מה צריך תשומת לב.
דוגמת TRIGGER.md:
markdown
# TRIGGER.md -- מה לבדוק בכל התעוררות
## בדיקות עדיפות
- הודעות שלא נקראו בכל הערוצים ישנות מעל שעה
- התנגשויות לוח שנה ב-24 השעות הקרובות
- משימות באיחור ב-Linear או Jira
## ניטור
- GitHub: PRs הממתינים לסקירה שלי
- דוא"ל: כל דבר מאנשי קשר VIP (סמן להתראה מיידית)
- Slack: אזכורים בערוץ #incidents
## יזום
- אם בוקר (7-9 בבוקר), הכן תדריך יומי
- אם שישי אחר הצהריים, נסח סיכום שבועיתצורת טריגרים
תזמון ומגבלות טריגרים מוגדרים ב-triggerfish.yaml:
yaml
scheduler:
trigger:
enabled: true # הגדירו ל-false להשבתת טריגרים (ברירת מחדל: true)
interval_minutes: 30 # בדיקה כל 30 דקות (ברירת מחדל: 30)
# הגדירו ל-0 להשבתת טריגרים ללא הסרת תצורה
classification_ceiling: CONFIDENTIAL # תקרת זיהום מקסימלית (ברירת מחדל: CONFIDENTIAL)
quiet_hours:
start: 22 # אל תעיר בין 22:00 ...
end: 7 # ... ל-7:00| הגדרה | תיאור |
|---|---|
enabled | האם התעוררויות טריגר תקופתיות פעילות. הגדירו ל-false להשבתה. |
interval_minutes | כל כמה זמן (בדקות) הסוכן מתעורר לבדוק טריגרים. ברירת מחדל: 30. הגדירו ל-0 להשבתת טריגרים ללא הסרת בלוק התצורה. |
classification_ceiling | רמת סיווג מקסימלית שסשן הטריגר יכול להגיע אליה. ברירת מחדל: CONFIDENTIAL. |
quiet_hours.start / quiet_hours.end | טווח שעות (שעון 24) שבו טריגרים מדוכאים. |
להשבתה זמנית של טריגרים, הגדירו interval_minutes: 0. זה שקול
ל-enabled: false ומאפשר לשמור על שאר הגדרות הטריגר כדי שתוכלו להפעיל מחדש בקלות. :::
ביצוע טריגר
כל התעוררות טריגר עוקבת אחר רצף זה:
- המתזמן מופעל במרווח המוגדר.
- סשן רקע חדש נוצר עם זיהום
PUBLIC. - הסוכן קורא את
TRIGGER.mdלהוראות הניטור שלו. - הסוכן מעריך כל בדיקה, באמצעות כלים ושרתי MCP זמינים.
- אם נדרשת פעולה, הסוכן פועל -- שולח התראות, יוצר משימות או מוסר סיכומים.
- זיהום הסשן עשוי לעלות ככל שניגשים לנתונים מסווגים, אך אינו יכול לחרוג מהתקרה המוגדרת.
- הסשן מועבר לארכיון לאחר השלמה.
טריגרים ומשימות cron משלימים זה את זה. השתמשו ב-cron למשימות
שצריכות לרוץ בזמנים מדויקים ללא קשר לתנאים (תדריך בוקר ב-7 בבוקר). השתמשו בטריגרים לניטור הדורש שיקול דעת (בדקו אם משהו צריך את תשומת הלב שלי כל 30 דקות). :::
כלי הקשר טריגר
הסוכן יכול לטעון תוצאות טריגר לשיחה הנוכחית שלו באמצעות כלי trigger_add_to_context. זה שימושי כאשר משתמש שואל על משהו שנבדק במהלך התעוררות הטריגר האחרונה.
שימוש
| פרמטר | ברירת מחדל | תיאור |
|---|---|---|
source | "trigger" | איזה פלט טריגר לטעון: "trigger" (תקופתי), "cron:<job-id>", או "webhook:<source>" |
הכלי טוען את תוצאת הביצוע האחרונה עבור המקור המצוין ומוסיף אותה להקשר השיחה.
אכיפת אין-כתיבה-למטה
הזרקת הקשר טריגר מכבדת את כלל אין-כתיבה-למטה:
- אם סיווג הטריגר עולה על זיהום הסשן, זיהום הסשן עולה להתאמה
- אם זיהום הסשן עולה על סיווג הטריגר, ההזרקה מותרת -- נתונים בסיווג נמוך יותר תמיד יכולים לזרום לסשן בסיווג גבוה יותר (התנהגות
canFlowToרגילה). זיהום הסשן אינו משתנה.
סשן CONFIDENTIAL יכול לטעון תוצאת טריגר PUBLIC ללא בעיה --
נתונים זורמים כלפי מעלה. ההפך (הזרקת נתוני טריגר CONFIDENTIAL לסשן עם תקרת PUBLIC) יעלה את זיהום הסשן ל-CONFIDENTIAL. :::
עמידות
תוצאות טריגר מאוחסנות דרך StorageProvider עם מפתחות בפורמט trigger:last:<source>. רק התוצאה האחרונה לכל מקור נשמרת.
שילוב אבטחה
כל הביצוע המתוזמן משתלב עם מודל האבטחה הליבתי:
- סשנים מבודדים -- כל משימת cron והתעוררות טריגר רצים בסשן נפרד משלהם עם מעקב זיהום עצמאי.
- תקרת סיווג -- משימות רקע אינן יכולות לחרוג מרמת הסיווג המוגדרת שלהן, גם אם הכלים שהן מפעילות מחזירים נתונים בסיווג גבוה יותר.
- ווי מדיניות -- כל הפעולות בתוך משימות מתוזמנות עוברות דרך אותם ווי אכיפה כמו סשנים אינטראקטיביים (PRE_TOOL_CALL, POST_TOOL_RESPONSE, PRE_OUTPUT).
- סיווג ערוץ -- מסירת פלט מכבדת את רמת הסיווג של ערוץ היעד. תוצאה
CONFIDENTIALאינה יכולה להישלח לערוץPUBLIC. - מסלול ביקורת -- כל ביצוע מתוזמן מתועד עם הקשר מלא: מזהה משימה, מזהה סשן, היסטוריית זיהום, פעולות שננקטו ומצב מסירה.
- עמידות -- משימות cron מאוחסנות דרך
StorageProvider(מרחב שמות:cron:) ושורדות אתחולי שער.
