סקירת ארכיטקטורה
Triggerfish היא פלטפורמת סוכני AI מאובטחת ורב-ערוצית עם עיקרון ליבה אחד:
אבטחה האבטחה היא דטרמיניסטית ומתחת ל-LLM. כל החלטת אבטחה מתקבלת
על ידי קוד טהור שה-LLM לא יכול לעקוף, לדרוס או להשפיע עליו. ל-LLM אין סמכות כלל -- הוא מבקש פעולות; שכבת המדיניות מחליטה. :::
עמוד זה מספק את התמונה הגדולה של איך Triggerfish עובדת. כל רכיב עיקרי מקושר לעמוד ייעודי מפורט.
ארכיטקטורת המערכת
זרימת נתונים
כל הודעה עוברת את הנתיב הזה דרך המערכת:
בכל נקודת אכיפה, ההחלטה היא דטרמיניסטית -- אותו קלט תמיד מייצר את אותה תוצאה. אין קריאות LLM בתוך Hook-ים, אין אקראיות, ואין דרך ל-LLM להשפיע על התוצאה.
רכיבים עיקריים
מערכת הסיווג
נתונים זורמים דרך ארבע רמות מסודרות: RESTRICTED > CONFIDENTIAL > INTERNAL > PUBLIC. הכלל הליבתי הוא אי-כתיבה למטה: נתונים יכולים לזרום רק לסיווג שווה או גבוה יותר. סשן CONFIDENTIAL לא יכול לשלוח נתונים לערוץ PUBLIC. ללא חריגות. ללא דריסה על ידי ה-LLM.
מנוע המדיניות ו-Hook-ים
שמונה Hook-י אכיפה דטרמיניסטיים מיירטים כל פעולה בנקודות קריטיות בזרימת הנתונים. Hook-ים הם פונקציות טהורות: סינכרוניות, מתועדות ובלתי ניתנות לזיוף. מנוע המדיניות תומך בכללים קבועים (שאינם ניתנים להגדרה), כללים הניתנים לכוונון על ידי מנהל, ו-escape hatches הצהרתיים ב-YAML לסביבות ארגוניות.
סשנים ו-Taint
כל שיחה היא סשן עם מעקב Taint עצמאי. כאשר סשן ניגש לנתונים מסווגים, ה-Taint שלו עולה לרמה זו ולעולם לא יכול לרדת בתוך הסשן. איפוס מלא מנקה את ה-Taint וגם את היסטוריית השיחה. כל אלמנט נתונים נושא מטא-נתונים של מקור דרך מערכת מעקב שושלת.
Gateway
ה-Gateway הוא מישור הבקרה המרכזי -- שירות מקומי שרץ לאורך זמן ומנהל סשנים, ערוצים, כלים, אירועים ותהליכי סוכן דרך נקודת קצה WebSocket JSON-RPC. הוא מתאם את שירות ההתראות, מתזמן cron, קליטת webhook-ים וניתוב ערוצים.
אחסון
כל הנתונים בעלי מצב זורמים דרך הפשטת StorageProvider מאוחדת. מפתחות עם מרחבי שמות (sessions:, taint:, lineage:, audit:) שומרים על הפרדת אחריות תוך מתן אפשרות להחלפת תשתיות ללא נגיעה בלוגיקה עסקית. ברירת המחדל היא SQLite WAL ב-~/.triggerfish/data/triggerfish.db.
הגנה בעומק
האבטחה מרובדת ב-13 מנגנונים עצמאיים, מאימות ערוצים וגישה לנתונים מודעת הרשאות, דרך Taint של סשן, Hook-י מדיניות, ארגז חול לתוספים, ארגז חול לכלי מערכת קבצים ורישום ביקורת. אף שכבה בודדת אינה מספיקה לבדה; יחד הן מרכיבות הגנה שמתדרדרת בחן גם אם שכבה אחת נפרצת.
עקרונות תכנון
| עיקרון | מה זה אומר |
|---|---|
| אכיפה דטרמיניסטית | Hook-י מדיניות משתמשים בפונקציות טהורות. ללא קריאות LLM, ללא אקראיות. אותו קלט תמיד מייצר את אותה החלטה. |
| הפצת Taint | כל הנתונים נושאים מטא-נתונים של סיווג. Taint של סשן יכול רק לעלות, לעולם לא לרדת. |
| אי-כתיבה למטה | נתונים לא יכולים לזרום לרמת סיווג נמוכה יותר. לעולם. |
| תיעוד הכול | כל החלטות המדיניות מתועדות עם הקשר מלא: חותמת זמן, סוג Hook, מזהה סשן, קלט, תוצאה, כללים שהוערכו. |
| Hook-ים בלתי ניתנים לזיוף | ה-LLM לא יכול לעקוף, לשנות או להשפיע על החלטות Hook-י המדיניות. Hook-ים רצים בקוד מתחת לשכבת ה-LLM. |
| בידוד סשנים | כל סשן עוקב אחר Taint באופן עצמאי. סשני רקע מתחילים עם Taint PUBLIC טרי. סביבות עבודה של סוכנים מבודדות לחלוטין. |
| הפשטת אחסון | אף מודול לא יוצר אחסון משלו. כל ההתמדה זורמת דרך StorageProvider. |
מחסנית טכנולוגית
| רכיב | טכנולוגיה |
|---|---|
| סביבת ריצה | Deno 2.x (TypeScript strict mode) |
| תוספי Python | Pyodide (WASM) |
| בדיקות | Deno built-in test runner |
| ערוצים | Baileys (WhatsApp), grammY (Telegram), Bolt (Slack), discord.js (Discord) |
| אוטומציית דפדפן | puppeteer-core (CDP) |
| קול | Whisper (STT מקומי), ElevenLabs/OpenAI (TTS) |
| אחסון | SQLite WAL (ברירת מחדל), תשתיות ארגוניות (Postgres, S3) |
| סודות | OS keychain (אישי), אינטגרציית vault (ארגוני) |
Triggerfish לא דורשת כלי בנייה חיצוניים, לא Docker ולא תלות בענן. היא
רצה מקומית, מעבדת נתונים מקומית ומעניקה למשתמש ריבונות מלאה על הנתונים שלו. :::
