> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
מפרט זה מגדיר מערכת לקבוצות כלים עבור סוכני TrustGraph, המאפשרת שליטה מדויקת על אילו כלים זמינים עבור בקשות ספציפיות. המערכת מציגה סינון כלים מבוסס קבוצות באמצעות תצורה ומפרט ברמת הבקשה, ומאפשרת גבולות אבטחה טובים יותר, ניהול משאבים וחלוקת פונקציונליות של יכולות הסוכנים.
### 1. סקירה כללית
#### 1.1 הצגת הבעיה
כיום, לסוכני TrustGraph יש גישה לכל הכלים המוגדרים, ללא קשר להקשר הבקשה או לדרישות האבטחה. זה יוצר מספר אתגרים:
**סיכון אבטחה**: כלים רגישים (לדוגמה, שינוי נתונים) זמינים גם עבור שאילתות לקריאה בלבד.
**בזבוז משאבים**: כלים מורכבים נטענים גם כאשר שאילתות פשוטות אינן דורשים אותם.
**בלבול פונקציונלי**: סוכנים עשויים לבחור כלים לא מתאימים כאשר קיימות חלופות פשוטות יותר.
**בידוד מרובה דיירים**: קבוצות משתמשים שונות צריכות גישה לקבוצות כלים שונות.
#### 1.2 סקירה כללית של הפתרון
מערכת קבוצות הכלים מציגה:
1.**סיווג קבוצות**: כלים מסומנים עם שייכות לקבוצות במהלך התצורה.
2.**סינון ברמת הבקשה**: בקשת סוכן מציינת אילו קבוצות כלים מותרות.
3.**אכיפה בזמן ריצה**: לסוכנים יש גישה רק לכלים התואמים לקבוצות המבוקשות.
4.**קיבוץ גמיש**: כלים יכולים להיות שייכים למספר קבוצות עבור תרחישים מורכבים.
### 2. שינויים בסכימה
#### 2.1 שיפור סכימת תצורת הכלים
תצורת הכלים הקיימת משופרת עם שדה `group`:
**לפני:**
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph"
}
```
**אחרי:**
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph",
"group": ["read-only", "knowledge", "basic"]
}
```
**מפרט שדה קבוצה:**
`group`: Array(String) - רשימה של קבוצות שאליהן הכלי הזה שייך
**אופציונלי**: כלים ללא שדה קבוצה שייכים לקבוצה "ברירת מחדל"
**חברות מרובות**: כלים יכולים להיות שייכים למספר קבוצות
**רגישות לאותיות**: שמות הקבוצות חייבים להיות התאמה מדויקת של מחרוזות
#### 2.1.2 שיפור מעבר מצבים של כלי
כלים יכולים לציין אופציונלית מעברי מצבים וזמינות מבוססת מצב:
```json
{
"name": "knowledge-query",
"type": "knowledge-query",
"description": "Query the knowledge graph",
"group": ["read-only", "knowledge", "basic"],
"state": "analysis",
"available_in_states": ["undefined", "research"]
}
```
**מפרט שדה מצב:**
`state`: מחרוזת - **אופציונלי** - המצב שאליו יש לעבור לאחר ביצוע מוצלח של הכלי
`available_in_states`: מערך(מחרוזת) - **אופציונלי** - מצבים שבהם הכלי זמין
**התנהגות ברירת מחדל**: כלים ללא `available_in_states` זמינים בכל המצבים
בדיקת התנהגות של קבוצות עם תווים מיוחדים (wildcard)
אימות טיפול בקבוצות ריקות
בדיקת תרחישים משולבים של סינון קבוצות + מצבים
**אימות תצורה:**
בדיקת טעינת כלים עם תצורות שונות של קבוצות ומצבים
אימות של תקינות הסכימה עבור מפרטי קבוצות ומצבים לא חוקיים
בדיקת תאימות לאחור עם תצורות קיימות
אימות של הגדרות מעברים בין מצבים ומחזורים
#### 9.2 בדיקות אינטגרציה
**התנהגות של סוכן (Agent):**
אימות שהסוכן רואה רק כלים שעברו סינון לפי קבוצה + מצב
בדיקת ביצוע בקשות עם שילובים שונים של קבוצות
בדיקת מעברים בין מצבים במהלך ביצוע הסוכן
אימות של טיפול בשגיאות כאשר אין כלים זמינים
בדיקת התקדמות של זרימת עבודה דרך מצבים שונים
**בדיקות אבטחה:**
בדיקת מניעת העלאת הרשאות
אימות של דיוק רישום ביקורת (audit trail)
בדיקת שילוב של שער (gateway) עם הרשאות משתמש
#### 9.3 תרחישים מקצה לקצה
**שימוש מרובה דיירים (Multi-tenant) עם זרימות עבודה מבוססות מצבים:**
```
Scenario: Different users with different tool access and workflow states
Given: User A has "read-only" permissions, state "undefined"
And: User B has "write" permissions, state "analysis"
When: Both request knowledge operations
Then: User A gets read-only tools available in "undefined" state
And: User B gets write tools available in "analysis" state
And: State transitions are tracked per user session
And: All usage and transitions are properly audited
```
**התקדמות מצב העבודה:**
```
Scenario: Complete workflow execution
Given: Request with groups ["knowledge", "compute"] and state "undefined"
When: Agent executes knowledge-query tool (transitions to "analysis")
And: Agent executes complex-analysis tool (transitions to "results")
And: Agent executes reset-workflow tool (transitions to "undefined")
Then: Each step has correctly filtered available tools
And: State transitions are logged with timestamps
And: Final state allows initial workflow to repeat
```
### 10. שיקולי ביצועים
#### 10.1 השפעת טעינת כלים
**טעינת תצורה:**
מטא-נתונים של קבוצה ומצב נטענים פעם אחת בעת ההפעלה
תקורה מינימלית של זיכרון לכל כלי (שדות נוספים)
אין השפעה על זמן אתחול הכלי
**עיבוד בקשות:**
סינון משולב של קבוצה+מצב מתבצע פעם אחת לכל בקשה
מורכבות O(n) כאשר n = מספר הכלים המוגדרים
מעברים של מצבים מוסיפים תקורה מינימלית (הקצאת מחרוזות)
השפעה זניחה עבור מספר טיפוסי של כלים (<100)
#### 10.2 אסטרטגיות אופטימיזציה
**סטים של כלים מחושבים מראש:**
שמירת סטים של כלים לפי שילוב של קבוצה+מצב
הימנעות מסינון חוזר עבור דפוסי קבוצה/מצב נפוצים
פשרה בין זיכרון לחישוב עבור שילובים בשימוש תכוף
**טעינה עצלה:**
טעינת יישומי כלים רק כאשר נדרש
הפחתת זמן אתחול עבור פריסות עם מספר רב של כלים
רישום דינמי של כלים בהתאם לדרישות הקבוצה
### 11. שיפורים עתידיים
#### 11.1 הקצאת קבוצות דינמית
**קיבוץ מודע להקשר:**
הקצאת כלים לקבוצות בהתבסס על הקשר הבקשה
זמינות קבוצה מבוססת זמן (שעות עסקים בלבד)
הגבלות קבוצה מבוססות עומס (כלים יקרים בזמן שימוש נמוך)
#### 11.2 היררכיות קבוצות
**מבנה קבוצות מקונן:**
```json
{
"knowledge": {
"read": ["knowledge-query", "entity-search"],
"write": ["graph-update", "entity-create"]
}
}
```
#### 11.3 המלצות כלים
**הצעות מבוססות קבוצות:**
הצעת קבוצות כלים אופטימליות עבור סוגי בקשות
למידה מדפוסי שימוש לשיפור ההמלצות
מתן קבוצות חלופיות כאשר הכלים המועדפים אינם זמינים
### 12. שאלות פתוחות
1.**אימות קבוצות**: האם שמות קבוצות לא חוקיים בבקשות צריכים לגרום לכישלונות קשים או אזהרות?
2.**גילוי קבוצות**: האם המערכת צריכה לספק API לרשימת קבוצות זמינות והכלים שלהן?
3.**קבוצות דינמיות**: האם הקבוצות צריכות להיות ניתנות להגדרה בזמן ריצה או רק בזמן ההתחלה?
4.**ירושה של קבוצות**: האם כלים צריכים לרשת קבוצות מהקטגוריות או המימושים הראשיים שלהם?
5.**ניטור ביצועים**: אילו מדדים נוספים נחוצים למעקב יעיל אחר שימוש בכלים מבוססי קבוצות?
### 13. סיכום
מערכת קבוצות הכלים מספקת:
**אבטחה**: בקרת גישה מפורטת על יכולות הסוכן
**ביצועים**: הפחתת עומס טעינה ובחירת כלים
**גמישות**: סיווג רב-ממדי של כלים
**תאימות**: שילוב חלק עם ארכיטקטורות סוכן קיימות
מערכת זו מאפשרת לפריסות TrustGraph לנהל טוב יותר את גישת הכלים, לשפר את גבולות האבטחה ולייעל את השימוש במשאבים תוך שמירה על תאימות מלאה לאחור עם תצורות ובקשות קיימות.