בסוף הפרק תדע/י לעשות את זה
הפרק הזה הוא ההרכבה. עד עכשיו תכננת חלקים נפרדים; כאן הם הופכים למערכת אחת שרצה. בסוף תוכל/י:
- להרכיב צי חי מתבנית OSS מאומתת (gru-ai ברישיון MIT / Orloj ברישיון Apache-2.0 / Hermes) או מ-stack מינימלי (API + cron + git), עם ה-org chart וה-SOPs מהפרקים הקודמים מחוברים בפועל.
- להוסיף observability (תצפית — היכולת לראות מה הצי עושה ברגע אמת) עם Langfuse OSS / Braintrust / LangSmith, ולזהות את שלוש התקלות האמיתיות: tool-call failures, context truncation ו-runaway loops — לפני שלקוח מתלונן.
- להגדיר governance (ממשל — חוקים שנאכפים על הסוכן בזמן ריצה) שנכשלת-סגור: allowed models, blocked tools, token budget, approval gates בסגנון Orloj — עם audit trail כברירת מחדל.
- להחליט build-vs-buy (לבנות מול לקנות) ולכתוב portability plan — תוכנית ניוד שמחזיקה את ה-config וה-memory ב-git ומגדירה נתיב export — לפני שאתה תלוי ב-"Brain" של ספק מסחרי.
מה צריך להביא לפרק הזה
זה פרק אינטגרציה — הוא מניח שכבר יש לך את החלקים. אם דילגת על אחד מהם, חזור/חזרי אליו לפני שתרכיב:
- פרק 1–2: org chart כתוב של 4–6 תפקידי-סוכן, כל אחד עם role + goal + scope of authority ו-escalation path. בלי זה אין מה להרכיב.
- פרק 3: לפחות SOP אגנטי אחד בפורמט Markdown עם RFC 2119 (MUST/SHOULD/MAY), שמור בתיקיית
.context/ב-git. - פרק 4: loop של cron + eval + reflexion שעובד על תפקיד אחד (ה-morning brief), כולל golden dataset.
- פרק 5: מטריצת calibrated autonomy + approval gate אחד חי על פעולת כסף.
- פרק 6: agent payroll dashboard ו-model-routing policy בש"ח — תצטרך/י את מספרי העלות כדי לקבל את החלטת build-vs-buy.
- סביבה: חשבון GitHub פעיל, Terminal פתוח, ויכולת להריץ פקודה ולקרוא קובץ YAML/Markdown. אינך צריך/ה לדעת לכתוב runtime מאפס — זה בדיוק העניין של תבנית.
הבהרת גבולהפרק הזה הוא שכבת ה-עסק: איך מרכיבים ומפעילים צי. הוא לא מלמד איך בונים agent runtime מאפס — זה קורס agent-harness. כשנגיע לפרטי ה-plumbing נצביע על התבנית שמטפלת בהם, לא נבנה אותם בעצמנו.
שלושת התוצרים של הפרק
בסוף הפרק יהיו בידיך שלושה תוצרים מוחשיים, שכולם נכנסים ל-git ומשמשים בסיס ל-capstone של פרק 8:
- צי חי מורכב — מתבנית מאומתת (gru-ai / Orloj / Hermes) או stack מינימלי, עם ה-org chart, ה-SOPs וה-loop מהפרקים הקודמים מחוברים בפועל ורצים על תפקיד אחד לפחות מקצה לקצה.
- Observability dashboard על הצי (Langfuse או Braintrust): traces, פירוק tool-call, וזיהוי runaway loops — "מצלמת אבטחה" על החברה.
- מסמך build-vs-buy + portability plan: בחירת ה-stack מנומקת במספרים, חוקי governance שנאכפים ב-runtime, ונתיב export מפורש נגד lock-in.
חוט הפרויקט: איפה אנחנו ברצף
בפרק הקודם (6 — "ה-P&L של הסוכנים") הפכת את הצי ל-cost center עם מרווח: חישבת cost-per-role בש"ח, זיהית את מלכודת ה-loop הריבועי, ובנית model-routing policy. עכשיו יש לך מספרים — וזה בדיוק מה שצריך כדי לבחור stack.
בפרק הזה (7) אנחנו לוקחים את כל מה שתכננת על הנייר — org chart, SOPs, loop, autonomy, payroll — ומרכיבים אותו לצי שרץ באמת, מתבנית קוד אמיתית. מוסיפים observability שרואה אותו ו-governance שמרסנת אותו, ומבטחים מפני lock-in.
בפרק הבא (8 — ה-capstone) תפעיל/י את צי ארבעת התפקידים המלא כעסק ישראלי: agent payroll בש"ח, הצעת "תפקיד-כשירות" מול ~₪45,000 של סוכנות, ו-production checklist. הפרק הזה בונה את התשתית שעליה ה-capstone רץ.
שלוש הדרכים להרכיב צי — ואיזו מתאימה לך
בפרק 2 הכרת את ההבחנה ברמה התיאורטית: framework מול OS מול minimal stack. עכשיו צריך להחליט באמת, כי אתה עומד להרכיב. ההחלטה לא נקבעת לפי מה שמגניב — היא נקבעת לפי רמת הנוחות ההנדסית שלך ולפי כמה governance ה-use-case שלך באמת דורש. operator עסקי שמוכר ייעוץ לא צריך את אותה תשתית כמו מי שמריץ פעולות כסף אוטומטיות מול חשבונות לקוחות.
בוא נפרק את שלוש הדרכים. כל אחת מהן מאומתת בקורס — אלה לא רעיונות תיאורטיים אלא repos ופלטפורמות שקיימים היום (נכון ל-2026):
| שכבה | דוגמה מאומתת | מתי לבחור | המחיר האמיתי |
|---|---|---|---|
| Framework (קוד) | CrewAI (role-based) · LangGraph (graph + audit) | נוח/ה לכתוב מעט קוד; רוצה שליטה מלאה על ה-flow; הצי קטן עד בינוני | חינם (רישיון); משלם/ת טוקנים; אתה אחראי לתשתית |
| Template OSS (תבנית מוכנה) | gru-ai (MIT) · Hermes Agent | רוצה org chart מוכן + pipeline; נוח/ה עם Claude Code ו-Terminal; build/ship מהיר | חינם (רישיון); משלם/ת טוקנים; pre-1.0 — לקבע גרסה |
| Agent OS (תשתית-כקוד) | Orloj (Apache-2.0) · Knowlee (מסחרי) | צריך/ה governance production: approval gates, token budgets, audit trail מובנה | Orloj חינם (OSS); Knowlee מסחרי = lock-in |
| Minimal (הרכבה ידנית) | plain LLM API + cron + git | הצי קטן (1–3 תפקידים); רוצה שליטה מלאה ואפס תלות framework; חשוב לך/ך לדעת בדיוק מה רץ | חינם פרט לטוקנים; אתה בונה את ה-glue |
שים/י לב לעמודה האחרונה. "חינם" כאן הוא חינם ברישיון בלבד — gru-ai, Orloj ו-Hermes כולם פתוחים וללא תשלום על הקוד, אבל מתחתם רץ מודל ששולח חשבון טוקנים. צי always-on יכול להשתוות בעלותו למשכורת (חזרה ל-P&L של פרק 6). אל תבלבל "free OSS" עם "free to run".
הנה דוגמה מספרית שממחישה את הפער: נניח שהצי שלך כולל 4 סוכנים שרצים כל אחד 20 פעמים ביום, צורך בממוצע 4,000 טוקנים לריצה (input+output), על מודל שעולה ₪0.06 לאלף טוקנים. חישוב מהיר: 4 × 20 × 4,000 × 0.06/1,000 = ₪19.2 ליום, כלומר ~₪576 לחודש — בלי קריאות eval, בלי retries, בלי טריוויה אנושית. זו עלות חודשית שצריך להפחית ב-routing policy של פרק 6 (לשלוח חלק מהקריאות למודל זול יותר), ולכן ההחלטה "איזה stack" מתחילה בשאלה "כמה governance ה-use-case דורש" — לא "כמה זמן ההרכבה לוקחת".
Framework: בחירת ה-stack לפי שלוש שאלות
במקום להתלבט אינסופית, ענה/עני על שלוש שאלות בסדר הזה. הראשונה שמחזירה "כן חזק" קובעת:
- אם ה-use-case שלך נוגע בכסף, הרשאות, או רשומות לקוח שדורשות audit trail (compliance, חוזים, חיובים) — אז בחר/י Agent OS עם governance מובנה (Orloj). אל תבנה את ה-approval gates ידנית כשמשהו מוכן עושה את זה fail-closed.
- אם אתה רוצה צוות מוכן שיודע לבנות ולשגר (engineering work), נוח/ה עם Claude Code, ולא צריך governance כבד — אז בחר/י template OSS (gru-ai). אתה מקבל org chart בן 11 סוכנים ו-pipeline מוכן.
- אם הצי שלך קטן (1–3 תפקידים), אתה רוצה אפס תלות חיצונית ולהבין כל שורה — אז בחר/י minimal: API + cron + git. זו לרוב הבחירה הנכונה ל-operator עסקי שמתחיל, ותמיד אפשר לשדרג.
הכלל מאחורי השלושה: אל תאמץ יותר תשתית ממה שה-use-case דורש. over-engineering של ה-plumbing הוא הטעות הקלאסית של מי שמבלבל את הקורס הזה (עיצוב ארגון) עם הנדסת runtime.
עשה/י עכשיו (3 דקות)
פתח/י את ה-org chart מפרק 2 ורשום/רשמי שלוש שורות:
- כמה תפקידים בצי שלך כרגע? (1–3 / 4–6 / יותר)
- האם אחד מהם נוגע בכסף או ברשומות שצריכות audit trail? (כן / לא)
- על סולם 1–5, כמה נוח/ה לך לקרוא ולערוך קובץ YAML?
שלוש התשובות האלה הן הקלט להחלטת ה-stack. אם ענית "1–3 תפקידים, לא נוגע בכסף, נוחות 2" — minimal. אם "כן נוגע בכסף, נוחות 4" — Orloj. שמור/שמרי את התשובות, נחזור אליהן בסעיף 7.
פלט צפוי מדויק: שלוש שורות בקובץ .context/stack-decision.md בפורמט:
תפקידים: 4 נוגע בכסף: כן (Finance renewal agent בלבד) נוחות YAML: 3 החלטה: Orloj (governance production נדרש על חיובי לקוחות)
טעות נפוצה: לבחור stack כבד כי הוא "מקצועי"
operator סולו שמתחיל לא צריך Agent OS עם runtime governance כדי לשלוח שלוש הודעות outreach ביום. בחירת Orloj כש-minimal הספיק מוסיפה שבועות של setup, עקומת למידה של YAML, ותלות ב-API pre-1.0 — בלי ערך מוסף ל-use-case הקטן. התחל/י קטן, שדרג/י כשכואב. השדרוג מ-minimal ל-OS קל; הירידה מ-over-engineered ל-פשוט יקרה.
מדד מעשי לבדיקה: אם אתה מסוגל/ת לתאר במשפט אחד את הפעולה ההפיכה הגרועה ביותר שהסוכן יכול לעשות (למשל "לשלוח outreach ללקוח שלא מתאים"), והפעולה הזו לא נוגעת בכסף או ברשומה — אתה כנראה ב-minimal. אם הפעולה ההפיכה היא "לחייב לקוח בסכום שגוי" — אתה ב-OS.
gru-ai מקרוב: צוות 11 סוכנים על Claude Code
gru-ai (הריפו andrew-yangy/gru-ai) הוא תבנית קוד-פתוח ברישיון MIT שמתארת את עצמה כ-"autonomous AI agent team for one-man companies" — צוות סוכנים אוטונומי לחברות של איש אחד. נכון לתאריך המחקר (יוני 2026) הוא ~142 כוכבים ב-GitHub, כתוב ב-TypeScript (~78%), ובפיתוח פעיל. הוא הופך את Claude Code ל"צוות" של 11 סוכנים.
הרעיון המרכזי שמתאים לקורס הזה: directive בודד זורם דרך pipeline בן 15 צעדים. אתה כותב הנחיה אחת (למשל "תוסיף dark mode"), והיא עוברת תחנות שמדמות חברה אמיתית:
| שלב ב-pipeline | מי עושה | מה קורה |
|---|---|---|
| triage → audit → debate | סוכני C-suite | הסוכנים מתווכחים על ההנחיה (כמו ישיבת הנהלה) |
| clarify → plan | COO agent | מפצל את ההנחיה לפרויקטים ומשימות |
| build | סוכני engineering | בונים על branches מבודדים (כל אחד בנפרד) |
| review | סוכני fresh-context | בודקים בעיניים "טריות" שלא ראו את הבנייה |
| ship → approval | אוטומציה + אתה | לכידת lessons אוטומטית, ואז האישור שלך |
שתי תכונות הופכות את gru-ai לרלוונטי במיוחד לכל מה שבנינו עד כה:
- זיכרון
.context/version-controlled. כל ה-state חי כ-Markdown + JSON רגיל בשורש הריפו, תחת git. זה בדיוק ה-pattern שאימצנו בפרק 3 לאחסון SOPs — gru-ai הוא ההמחשה החיה שלו ברמת תבנית שלמה. ה"חברה" שלך נהיית forkable ו-diff-able. - לכידת lessons אוטומטית בשלב ship. ה-pipeline שומר "lessons learned ו-design rationale" כך ש"ההנחיה ה-10 רצה טוב יותר מהראשונה". זה היישום המעשי של ה-reflexion מפרק 4 — אבל אַל תבטח בו עיוורות: לקח שגוי שנשמר מרעיל ריצות עתידיות (חזרה לאזהרה מפרק 4).
דוגמה מעשית ל-directive שזורם ב-pipeline: נניח שאתה מנהל סטודיו קטן לעיצוב ואתה רוצה להוסיף דף תמחור חדש לאתר. אתה כותב directive אחד: "צור/י דף תמחור עם 3 חבילות, מחירים בש"ח, וקריאת CTA לוואטסאפ." ב-pipeline של gru-ai, סוכן triage בודק אם הבקשה ברורה; אם לא — סוכני C-suite (PM, Designer, Engineer) מתווכחים איזו חבילות הגיוניות. סוכן COO מפצל למשימות: copy לחבילות, עיצוב, הטמעה. סוכן engineering בונה branch; סוכן fresh-context עובר על ה-PR בעיניים נקיות; ship+lessons קולט את ההחלטות שקיבלת ("חבילה בסיסית ₪990, מקצועית ₪2,490, ארגונית ₪4,990") ושומר אותן ל-.context/lessons/ כדי שה-directive הבא לדף "שאלות נפוצות" יידע מה הקול המותגי שלך. בלי gru-ai, היית עושה את כל זה ידנית או עם פרומפטים בודדים; איתו — יש תהליך עקבי שחוזר על עצמו ומשתפר.
טעות נפוצה: לצפות מ-gru-ai לנהל את כל סוגי התפקידים
gru-ai מצוין ל-build/ship work — עבודת engineering שבה directive הופך לקוד שנשלח. הוא לא תבנית כללית למכירות, תמיכה או כספים. אם הצי שלך הוא בעיקר SDR שמסנן לידים וסוכן תמיכה שעונה ללקוחות, gru-ai הוא דוגמת org-chart מצוינת ללמוד ממנה את ה-.context/ pattern — אבל ה-pipeline בן 15 הצעדים שלו מותאם לבנייה, לא לתפעול לקוחות. אל תכופף use-case תפעולי לכלי שתוכנן ל-shipping.
עשה/י עכשיו (5 דקות) — לבחון את ה-pattern, לא להתקין
גם אם לא תבחר/י ב-gru-ai, ה-.context/ pattern שלו הוא הנכס. פתח/י את ה-repo של ה-"חברה" שלך מפרק 3 וודא/י שיש בו את שלוש התיקיות שמחקות את gru-ai:
.context/roles/— קובץ Markdown לכל תפקיד (מה-org chart של פרק 2).context/sops/— ה-SOPs האגנטיים (מפרק 3).context/lessons/— קובץ אחד שאליו ה-reflexion יכתוב (מפרק 4)
אם תיקייה חסרה — צור/צרי אותה עכשיו. זה "מוח החברה" המינימלי, והוא נכון לכל stack שתבחר/י.
פלט צפוי מדויק: פלט ls .context/ בטרמינל שמחזיר בדיוק:
roles sops lessons governance.md
אם חסרה תיקייה — צור/צרי אותה עם mkdir -p .context/<name> ואז git add .. אל תמשיך/י לסעיף הבא לפני שהפלט תואם.
Orloj מקרוב: agents כ-infrastructure-as-code
אם gru-ai הוא "צוות מוכן", Orloj (הריפו OrlojHQ/orloj) הוא הקצה השני: agent infrastructure-as-code — תשתית-סוכנים-כקוד. במקום לכתוב לוגיקה, אתה מצהיר על Agents, Tools ו-Policies כ-YAML, ו-Orloj מתזמן, מריץ, מנתב ומסדיר אותם ל-production. הוא ברישיון Apache-2.0, כתוב ב-Go (~80%), ~102 כוכבים נכון ליוני 2026, ובפיתוח פעיל (pre-1.0).
הרעיון שמבדל אותו: הוא מתייחס לסוכנים כתשתית. versioned manifests, runtime bounds, credentials, observability — הכל בערימת config אחת מוצהרת. ערימה אחת מכסה agents, tools, models, memory, schedules, webhooks, approvals, policies, workers, traces, metrics ו-deployment.
ה-resources שמגיעים מובנים ב-Orloj הם בדיוק המושגים שבנינו בפרקים 4–5 — אבל כאן הם native, לא משהו שאתה מרכיב ידנית:
| Orloj resource | מה הוא עושה | איפה פגשנו אותו |
|---|---|---|
AgentRole / AgentPolicy | מגדיר תפקיד ומה מותר לו | org chart + scope (פרק 2) |
ToolPermission / ToolApproval | אילו tools מותרים, ומה דורש אישור | approval gates (פרק 5) |
TaskApproval | משימה שלמה שדורשת חתימה אנושית | calibrated autonomy (פרק 5) |
EvalDataset / EvalRun | golden data + הרצת ניקוד מולה | eval gate (פרק 4) |
| cron / webhooks + worker leases | תזמון עם heartbeats | scheduling loop (פרק 4) |
הנה דוגמה מצומצמת למניפסט Orloj (YAML) עבור סוכן finance-renewal אחד — זה ה-config שמחליף את ה-Skill + ה-approval gate הידני מפרק 5:
apiVersion: orloj/v1alpha1
kind: AgentPolicy
metadata:
name: finance-renewal
spec:
allowedModels: ["claude-haiku-4-5", "claude-sonnet-4-5"]
blockedTools: ["send_email", "refund_customer", "delete_account"]
tokenBudgetPerRun: 15000
tokenBudgetPerDay: 200000
childDepth: 0
approvals:
- kind: TaskApproval
threshold: 100 # ש"ח
approver: owner
- kind: ToolApproval
tool: charge_customer
threshold: 100
approver: owner
המניפסט הזה הופך את הכללים מפרק 5 לקוד שאכיף אותם: סוכן finance-renewal לא יכול לקרוא ל-Opus (לא ב-allowedModels), לא יכול למחוק חשבון (חסום), ולא יכול לחייב יותר מ-₪100 בלי אישור. אלה לא הנחיות למודל — זה ה-runtime שעוצר את הקריאה לפני שהיא יוצאת.
הדבר החזק ביותר ב-Orloj הוא ש-ה-governance מוערכת ב-runtime, ונכשלת-סגור (fail-closed). נחזור לזה בסעיף ה-governance — אבל בקצרה: אם הסוכן מנסה לקרוא למודל שלא ברשימת ה-allowed, להשתמש בכלי חסום, או לחרוג מ-token budget, Orloj עוצר אותו, לא מתעלם. זה ההבדל בין "כתבתי בהנחיה שאסור" (המודל אולי יציית) לבין אכיפה אמיתית בתשתית.
טעות נפוצה: לקבע על Orloj בלי pin לגרסה
Orloj מצהיר במפורש שהוא pre-1.0 ושה-APIs עשויים להשתנות. אם תבנה דמו או צי production מולו בלי לקבע (pin) גרסה ספציפית, עדכון אחד יכול לשבור את כל ה-manifests שלך — והצי "ירקב". תמיד pin את הגרסה ב-config ובתיעוד, ובדוק/בדקי changelog לפני שאתה משדרג. זה נכון לכל תלות pre-1.0, לא רק Orloj. דוגמה מעשית: הוסף/י ל-requirements של הפרויקט שלך שורה כמו orloj==0.7.2 ולא orloj>=0.7 — הראשון מקובע, השני מאפשר שבירה שקטה בעדכון הבא.
Framework: gru-ai מול Orloj — מי לאיזה operator
- אם אתה operator שעיקר העבודה שלו הוא build/ship (לבנות פיצ'רים, לשגר קוד), נוח/ה עם Claude Code, ולא צריך אכיפת governance קשיחה — אז gru-ai: org chart מוכן + pipeline +
.context/memory. - אם אתה מריץ פעולות שנוגעות בכסף/רשומות/הרשאות, צריך approval gates ו-audit trail כברירת מחדל, ונוח/ה עם YAML — אז Orloj: governance שנאכפת ב-runtime, fail-closed.
- אם שניהם נשמעים גדולים מדי לצי בן 2 תפקידים — אז דלג/י על שניהם והרכב/י minimal: API + cron + git, ושדרג/י כשהצי גדל.
שתי התבניות הן דוגמאות מאומתות, לא המלצות קנייה. בחר/י לפי ה-use-case שלך, לא לפי הכוכבים ב-GitHub.
לחבר את החלקים: מ-org chart ל-SOPs ל-loop חי
בחרת stack. עכשיו מחברים את כל מה שבנית בפרקים 2–6 לתוכו. זה הרגע שבו תיאוריה הופכת לצי שרץ. הסדר חשוב — חבר/י שכבה אחר שכבה, ואל תנסה/י להפעיל הכל בבת אחת:
טען/י את ה-org chart (פרק 2)
כל תפקיד מה-org chart הופך ל-agent definition ב-stack שבחרת: ב-minimal זה קובץ role Markdown + פונקציה; ב-gru-ai זה entry ב-.context/roles/; ב-Orloj זה AgentRole YAML עם scope ו-policy. כאן ה-scope of authority מפרק 2 הופך לאכיף.
חבר/י את ה-SOPs כ-Skills (פרק 3)
כל SOP אגנטי (Markdown + RFC 2119) נטען לסוכן. ב-Claude Code זה Skill שהסוכן טוען אוטומטית בעת הצורך — "כתבת פעם, נטען לבד". ב-minimal זה קובץ שאתה מזריק ל-context בתחילת ריצה. ה-MUST/SHOULD/MAY שכתבת הופכים לנהלי הריצה בפועל.
הרכב/י את ה-loop (פרק 4)
חבר/י cron/heartbeat (Hermes self-host או Claude Code Routines managed) → eval gate מול ה-golden dataset → reflexion שכותב ל-.context/lessons/. ודא/י idempotency: marker של "כבר טופל" כך שריצה חוזרת לא תעבד שוב את אותם לידים ולא תשלח כפול ללקוח (האזהרה מפרק 4). דוגמה מעשית ל-idempotency: לפני שליחת outreach, הסוכן בודק ב-Supabase/Sheets אם lead_id + template_id כבר קיים; אם כן — דילוג. עלות הבדיקה: ~0.001 ₪. עלות משלוח כפול ללקוח: פגיעה במוניטין.
הדבק/י את ה-autonomy (פרק 5)
approval gates על פעולות כסף/רשומות, עם סף ₪ + named approver. ב-Orloj זה ToolApproval/TaskApproval native; ב-minimal זה תור אנושי פשוט (queue) שהסוכן כותב אליו ועוצר עד אישור. כל תפקיד מתחיל ב-human-in-the-loop.
הצמד/י observability ו-payroll (פרקים 6–7)
עטוף/עטפי כל קריאת מודל ב-tracing (סעיף הבא), ונתב/י את ה-traces ל-dashboard. במקביל, ה-token counts מ-traces מזינים את ה-agent payroll dashboard מפרק 6 — עכשיו העלות נמדדת אוטומטית, לא משוערכת.
שים/י לב מה קרה כאן: פתרת את בעיית נקודת-האינטגרציה מפרק 1. במקום כלים מפוזרים שאתה ה-glue היחיד ביניהם, יש לך שכבה אחת — ה-stack — שבה כל סוכן יודע מי בעליו, מה ה-scope שלו, ומה ה-loop שלו. הצי פועל כמערכת אחת.
עוד דוגמה לעומק: נניח שבחרת minimal stack, והתפקיד הראשון הוא "support-triage". תיקיית .context/roles/support-triage.md מכילה role+goal+scope; קובץ .context/sops/support-triage.md מכיל את ה-SOP עם RFC 2119 ("MUST לסווג לאחת מארבע קטגוריות", "SHOULD להציע מאמר מה-base אם confidence > 0.7", "MUST להעביר לאנוש אם category = billing"). סקריפט support-triage.py בתיקיית bin/ טוען את שני הקבצים, קורא ל-API, מחזיר JSON עם category+confidence+reply. cron מפעיל אותו כל 5 דקות על תור נכנס. ה-tracing עוטף את קריאת ה-API. כל אלה קבצים ב-git. כל שינוי — diff. כל רגרסיה — revert.
עשה/י עכשיו (10 דקות) — ריצת smoke test
אל תחבר/י את כל ארבעת התפקידים בבת אחת. קח/י תפקיד אחד (מומלץ ה-morning brief מפרק 4, הכי לא-מסוכן) והרץ/י אותו דרך כל חמשת השלבים על ה-stack שבחרת. בדוק/בדקי שלושה דברים:
- הסוכן טען את ה-SOP הנכון? (חפש/י בלוג שהוא קרא את הקובץ)
- ה-trace הופיע ב-dashboard? (אם לא — ה-observability לא מחובר, תקן/י לפני שתמשיך/י)
- ה-idempotency marker נכתב? (הרץ/י שוב — לא אמור לעבד שוב את אותם נתונים)
אם שלושת אלה ירוקים — יש לך צי חי על תפקיד אחד. עכשיו תוכל/י להוסיף תפקידים אחד-אחד.
פלט צפוי מדויק של ה-smoke test:
[09:00:01] cron tick: support-triage started [09:00:01] loaded SOP .context/sops/support-triage.md (v1.2) [09:00:02] loaded role .context/roles/support-triage.md [09:00:03] found 7 tickets in queue [09:00:04] idempotency: 2 already processed, 5 new [09:00:08] processed 5 tickets → 4 self-served, 1 escalated to human (billing) [09:00:08] trace: langfuse span id=abc123 tokens=2,340 cost=₪0.14 [09:00:08] done
טעות נפוצה: לחבר את כל הצי בבת אחת
הפיתוי הוא להעלות את ארבעת התפקידים ביחד ולראות "צי מלא". הבעיה: כשמשהו נשבר — וזה ישבר — אין לך מושג איזה תפקיד, איזו שכבה, או איזה SOP אשם. חבר/י תפקיד אחד, ירק/ירקי אותו end-to-end, ורק אז הוסף/הוסיפי את הבא. debugging של מערכת אחת קל; debugging של ארבע שמתחברות בו-זמנית הוא סיוט.
ובנימה אישית: גם אם התפקיד הראשון משעמם (morning brief הוא לא "core product"), דווקא הוא המקום ללמוד את התקלות: קריאות API שנופלות, tokens שמנופחים, idempotency שלא עובד. כשתגלה את הקריסה הראשונה על תפקיצ'ר מסוכן (חיוב, משלוח), תודה לעצמך שלימדת את זה על ה-morning brief.
Observability: מצלמת האבטחה על הצי
הנה דרישת-הקדם השקטה שרוב האנשים מדלגים עליה — ומשלמים על כך. אם אתה לא יכול לראות מה הצי עושה, אתה לא יכול להפעיל אותו כעסק. observability היא היכולת לעקוב, ברגע אמת ובדיעבד, אחרי כל מה שסוכן עשה: לאיזה מודל פנה, איזה כלי קרא, כמה ניסיונות, וכמה טוקנים נשרפו.
למה זה קריטי דווקא לסוכנים? כי רוב התקלות בסוכנים אינן שגיאות מודל — הן שלוש בעיות אחרות שכלי ניטור רגיל (APM — application performance monitoring, ניטור ביצועי אפליקציה) פשוט לא רואה:
| התקלה | מה קורה | למה APM רגיל לא רואה |
|---|---|---|
| tool-call failure | הסוכן קרא לכלי (API, חיפוש, DB) והוא נכשל — והסוכן המשיך כאילו כלום | הקריאה "הצליחה" טכנית; השגיאה היא בלוגיקת הסוכן, לא ב-HTTP |
| context truncation | ההיסטוריה גדלה מעבר ל-context window; חלקים נחתכים בשקט והסוכן "שוכח" | אין שגיאה — רק תשובה גרועה יותר; נראה תקין מבחוץ |
| runaway loop | הסוכן נתקע בלולאה, חוזר על אותו צעד, ושורף טוקנים בלי להתקדם | כל קריאה בודדת תקינה; הבעיה היא בדפוס, שרק trace מלא חושף |
מה ש-trace טוב מראה לך: node-by-node state (מצב בכל צעד), פירוק model + tool-call (לאיזה מודל פנה, איזה כלי קרא), retries (כמה פעמים ניסה), ו-loops (אם נתקע). זו ממש מצלמת אבטחה על כל החברה — אתה רואה כל סוכן בכל רגע.
דוגמה מספרית למה זה חיוני: נניח שהרצת סוכן support-triage בלילה. סוכן support נתקל בלקוח שמתלונן על "חיוב כפול", מחפש ב-DB, לא מוצא, מנסה שוב, מחפש ב-API, לא מוצא, מנסה שוב, ובמשך 47 דקות שורף 1.2M טוקנים (~$72) בלי להגיע לפתרון — ואז קורס ב-OOM. בלי trace, אתה רואה רק "ההרצה נכשלה, ₪72 נשרפו". עם trace, אתה רואה: 14 ניסיונות חיפוש חוזרים, אותו prompt, אותה תשובה "no results", לולאה ברורה. התיקון: להוסיף max-retries=3 לסוכן הזה, או להעבירו לאנוש אחרי 3 ניסיונות כושלים. בלי trace — אתה לא יודע מה ה-pattern, ולכן לא יודע איך לתקן.
שלושת הכלים המאומתים — ומתי כל אחד
נכון ל-2026, אלה שלושת השחקנים. כולם תומכים ב-tracing של סוכנים; ההבדל הוא ברישוי, ב-eval, ובאקוסיסטם:
| כלי | החוזק | רישוי / free tier | מתי לבחור |
|---|---|---|---|
| Langfuse | best OSS / self-host; אתה הבעלים של הנתונים | OSS (MIT), חינם ל-self-host (נרכש ע"י ClickHouse ינואר 2026, נשאר חינמי) | רוצה $0 infra, portability מלאה, שליטה על הנתונים |
| Braintrust | eval-first; ה-CI/CD eval gates הכי חזקים | free tier הנדיב ביותר: 1M spans/חודש, 10K eval runs | ה-eval gate (פרק 4) הוא הלב; רוצה tracing + eval במקום אחד |
| LangSmith | tracing הכי עמוק ל-LangChain/LangGraph (node-level state diffs, replay מול מודלים חדשים) | free tier קיים; per-seat מעליו | בנית על LangGraph (framework מפרק 2) ורוצה אינטגרציה native |
ל-operator עסקי ישראלי שמתחיל, Langfuse OSS הוא לרוב הבחירה הנכונה: $0 infra, אתה מחזיק את הנתונים בעצמך (חשוב ל-portability — נגיע לזה), ואין lock-in. אם ה-eval gate הוא מרכז הכובד שלך — Braintrust. אם בנית על LangGraph — LangSmith.
טעות נפוצה: לדלג על observability "עד שיהיה זמן"
זו הטעות שמתגלה רק כשלקוח מתלונן. בלי tracing, runaway loop ששורף ₪400 בטוקנים בלילה אחד, או tool-call failure ששלח ללקוח תשובה ריקה, בלתי-נראים עד שמישהו צועק. אתה מגלה את התקלה מהלקוח, לא מה-dashboard — וזו בדיוק ה-2am escalation שדיברנו עליה בפרק 1. observability היא לא "nice to have"; היא התנאי לכך שתוכל/י לישון.
והנה החישוב שמוכיח את זה: שעת שינה שלך שווה לפחות ₪200 (אם לא יותר) — ולו cost-of-living. תקלה אחת שמתגלה מוקדם ב-trace במקום מאוחר בלקוח חוסכת לך שעת שינה אחת. עלות הקמת Langfuse: שעת עבודה. תוך שבוע אחד זה משתלם.
עשה/י עכשיו (8 דקות) — חבר/י trace אחד
בחר/י Langfuse (OSS, חינם) ועטוף/עטפי קריאת מודל אחת מה-morning brief שלך ב-tracing. אל תנסה/י לעטוף הכל — קריאה אחת. ואז:
- הרץ/י את הסוכן פעם אחת.
- פתח/י את ה-dashboard וודא/י שאתה רואה: כמה טוקנים, לאיזה מודל, כמה זמן.
- כעת זרוק/זרקי כשל מכוון (נתק/י את ה-API key של כלי אחד) והרץ/י שוב — ראה/י איך ה-tool-call failure מופיע ב-trace.
אם ראית את הכשל ב-dashboard — יש לך מצלמת אבטחה עובדת. זה התוצר #2 של הפרק.
פלט צפוי מדויק: ב-Langfuse UI, trace בודד שמכיל:
- Span #1:
load_sop· 0.02s · 1,200 tokens input - Span #2:
llm_call· 1.8s · 2,400 tokens (1,800 in + 600 out) · model=claude-haiku-4-5 - Span #3:
tool: send_telegram· 0.4s · status=ERROR (key revoked) · marked red - Span #4:
fallback_log_only· 0.01s · 50 tokens
אם הכשל לא מופיע ב-trace כ-span אדום — חזור/י ובדוק/בדקי את ה-wrapper של ה-tracing, כי הוא לא עוטף את ה-exception.
Governance שנאכפת ב-runtime: שוטר התנועה של הצי
observability מראה לך מה קרה. governance קובעת מה מותר לקרות — ואוכפת את זה. ההבדל הקריטי: governance אמיתית נאכפת ב-runtime, לא בהנחיה. אם כתבת בהנחיה "אסור לך להוציא יותר מ-₪100", המודל אולי יציית — ואולי יחליט שזה case מיוחד. governance ב-runtime עוצרת אותו פיזית.
המודל שמובנה ב-Orloj הוא הדוגמה הנקייה ל-fail-closed: ברירת המחדל היא "אסור", והפעולה מתבצעת רק אם היא עברה את הבדיקה. אם הבדיקה נכשלת או לא ברורה — הפעולה נחסמת, לא עוברת. ארבעת הסוגים שכדאי לאכוף:
| חוק governance | מה הוא אוכף | למה זה חשוב ל-operator סולו |
|---|---|---|
| allowed models | רשימת המודלים שמותר לסוכן לקרוא אליהם | מונע מסוכן לקפוץ למודל יקר (Opus) למשימה זולה — שומר על ה-P&L |
| blocked tools | כלים שאסור לסוכן לגעת בהם | סוכן תוכן לא צריך גישה ל-API התשלומים; חסימה = הקטנת blast radius |
| token budget | תקרת טוקנים פר-ריצה / פר-יום | עוצר runaway loop לפני שהוא שורף ₪ — הגנה ישירה מ-$4,200-בסוף-שבוע |
| child depth / approval gates | כמה sub-tasks מותר ליצור; מה דורש חתימה אנושית | מונע התפוצצות של סוכנים שיוצרים סוכנים; אוכף את calibrated autonomy מפרק 5 |
ויש בונוס קריטי: audit trail כברירת מחדל. כשה-governance רצה ב-runtime, כל פעולה — מה הסוכן ניסה, מה אושר, מה נחסם — נרשמת אוטומטית. זה compliance מובנה. ל-operator ישראלי שמטפל ברשומות לקוח או בחיובים, audit trail אינו מותרות — הוא מה שמאפשר לך לענות על "מי אישר את זה ומתי" בלי לשחזר מהזיכרון.
הנה תרחיש מעשי: סוכן finance-renewal מזהה לקוח שחיוב החידוש שלו עומד על ₪180, אבל הוא "זוכר" (מ-context) שבעבר ניתנה לו הנחה של 30% בגלל תקלה. הסוכן מציע לחייב רק ₪126. ה-token budget שלו: 15,000 לריצה. ה-allowed models שלו: רק haiku (מה-routing policy). ה-blocked tools שלו: refund_customer, delete_account, send_email. ה-approval gate שלו: כל חיוב מעל ₪100 דורש אישור בעלים. ברגע שהסוכן מנסה לבצע את החיוב — ה-runtime חוסם אותו (מעל הסף), רושם audit: charge 126 blocked, requires approval, ושולח הודעה לבעלים. אחרי אישור (או דחייה) — החיוב מתבצע או מתבטל, וה-audit נשמר. בלי governance — הסוכן היה חיוב באופן עצמאי, וההנחה הייתה רק "מה שהוא זוכר" (כלומר מה שהמודל המציא).
Framework: כמה governance ה-use-case שלך באמת צריך
אל תאכוף את כל ארבעת החוקים על כל סוכן עיוורות. כייל/י לפי הסיכון:
- אם הסוכן read-only (מחקר, סיכום, triage שלא שולח) — אז token budget מספיק; אל תכביד עם approval gates שיאטו אותו ללא צורך.
- אם הסוכן כותב/שולח ללקוח אבל הפיך (טיוטת outreach, תגובת תמיכה) — אז הוסף/הוסיפי blocked tools + human-in-the-loop על השליחה.
- אם הסוכן נוגע בכסף/הרשאות/רשומות (חיוב, חוזה, שינוי הרשאות) — אז כל ארבעת החוקים + approval gate עם סף ₪ + named approver, fail-closed. כאן אין קיצורי דרך.
זה אותו עיקרון של calibrated autonomy מפרק 5, עכשיו אכוף בתשתית: חומרת ה-gate עולה עם reversibility ו-stakes.
טעות נפוצה: לסמוך על "כתבתי בהנחיה" כ-governance
הנחיה היא בקשה, לא חוק. מודל יכול לפרש "אל תוציא יותר מ-₪100" כ"חוץ מהמקרה הדחוף הזה". governance אמיתית היא קוד שעוצר את הפעולה לפני שהיא קורית — token budget שנאכף, approval queue שחוסם, tool שלא קיים בהרשאות. אם הביטחון שלך נשען על שהמודל "יבין" — אין לך governance, יש לך תקווה.
מבחן פשוט: ענה/עני בכנות — אם הייתי מבקש/ת ממך "תוכיח/הוכיחי שהסוכן לא יחייב לקוח יותר מ-₪100 בלי אישור", מה היית מראה לי? אם התשובה היא "הוא יודע שזה הכלל" — אין לך governance. אם התשובה היא "הקוד של ה-approval gate בודק את הסכום לפני קריאה ל-API התשלומים וחוסם אם מעל הסף" — יש לך.
עשה/י עכשיו (6 דקות) — כתוב/כתבי את כללי ה-governance
פתח/י קובץ .context/governance.md (או YAML אם בחרת Orloj) ורשום/רשמי לכל תפקיד בצי שורה אחת:
- allowed models: אילו מודלים מותרים? (מ-ה-routing policy של פרק 6)
- blocked tools: במה הסוכן הזה אסור לגעת?
- token budget: תקרה יומית בטוקנים (תרגם/י ל-₪ מה-payroll)
- approval: מה דורש חתימה אנושית? (סף ₪ + מי מאשר)
זה ה-governance plan שלך. ב-Orloj הוא הופך ל-policy אכיף; ב-minimal הוא רשימת ה-checks שאתה מקודד ידנית סביב כל קריאה.
פלט צפוי מדויק — דוגמה לקובץ governance.md שלם:
## SDR (lead-screener) - allowed_models: claude-haiku-4-5 - blocked_tools: send_email_paid, charge_customer - token_budget_per_day: 80,000 - approval: outbound to VIP tag → owner review ## Support Triage - allowed_models: claude-haiku-4-5, claude-sonnet-4-5 - blocked_tools: refund_customer, delete_account - token_budget_per_day: 150,000 - approval: category=billing → human queue ## Finance Renewal - allowed_models: claude-haiku-4-5 - blocked_tools: refund_customer, delete_account, change_permissions - token_budget_per_run: 15,000 - token_budget_per_day: 200,000 - approval: any charge >₪100 → owner (named: yair@studio.co.il)
build-vs-buy ו-portability plan: לא להיתקע עם ספק
הגענו להחלטה העסקית הסופית של הפרק. build-vs-buy: לבנות (template OSS שאתה הבעלים שלו, משלם רק טוקנים) או לקנות (commercial OS כמו Knowlee — מהיר יותר, אבל lock-in). אין תשובה אחת נכונה — יש תשובה נכונה לך, ויש דרך לקבל אותה במספרים ולא בתחושה.
| שיקול | Build (OSS: gru-ai/Orloj/minimal) | Buy (commercial OS: Knowlee-class) |
|---|---|---|
| בעלות | אתה הבעלים של הקוד וה-config | ה-OS, ה-"Brain" וה-audit trail חיים אצל הספק |
| מהירות setup | איטית יותר — אתה מרכיב | מהירה — מוכן מהקופסה |
| עלות | טוקנים + הזמן שלך | מנוי (לרוב contact-sales) + טוקנים |
| lock-in | נמוך — הכל ב-git שלך | גבוה — הנתונים ב-OS שלהם |
| portability | גבוהה — fork, diff, revert | תלוי בנתיב export שלהם (אם קיים) |
הנה המספר שמכריע: קח/י את ה-agent payroll dashboard מפרק 6. אם עלות הטוקנים החודשית של הצי + הערך של הזמן שלך להרכבה נמוכים ממנוי ה-OS המסחרי — build. אם ה-OS חוסך לך כל-כך הרבה זמן שהוא משתלם למרות ה-lock-in, ויש לו נתיב export — buy יכול להיות נכון. זו החלטת P&L, לא החלטת "מה מגניב".
חישוב מעשי לדוגמה: נניח שהצי שלך עולה ₪2,400/חודש בטוקנים (מתוך ה-payroll dashboard). אתה מעריך שהרכבה על gru-ai/Orloj תיקח לך 30 שעות עבודה. שווי השעה שלך כ-operator: ₪300. עלות ההרכבה: 30 × 300 = ₪9,000 (חד-פעמי). מנוי commercial OS דומה: ₪1,500/חודש. הנקודה שבה build משתלם: 9,000 / 1,500 = 6 חודשים. אם אתה מתכנן להפעיל את הצי לפחות חצי שנה — build משתלם. אם זה ניסוי לחודש-חודשיים — עדיף לשלם על commercial ולא להשקיע. אבל אל תשכח את ה-lock-in: גם אם ה-OS זול יותר, אם אין לו נתיב export — אתה קונה את עצמך לכלא.
ה-portability plan: הביטוח נגד lock-in
לא משנה מה תבחר/י, כתוב/כתבי portability plan לפני שאתה תלוי. הסכנה: ה-"Brain" / knowledge-graph וה-audit trail של פלטפורמת "AI workforce" (Knowlee-class) חיים ב-OS שלהם. ביום שתרצה לעבור — או שהמחיר יקפוץ, או שהספק ייסגר — הנתונים נעולים. portability plan הוא ארבעה סעיפים:
- config ב-git: כל ה-org chart, ה-SOPs וה-policies כ-Markdown/YAML version-controlled (ה-
.context/pattern). זה לבדו עושה את החברה forkable ו-recoverable. - memory ב-git: ה-lessons וה-state — לא נעולים ב-DB של ספק, אלא כקבצים שאתה מחזיק.
- נתיב export: לפני שאתה מאמץ כלי מסחרי, ודא/י איך מוציאים ממנו את הנתונים (API export? CSV? בכלל?). אם אין נתיב — זו דגל אדום.
- snapshot/restore: כל config + memory ב-version control, כך ש"עריכת SOP גרועה במרחק
git revertאחד". snapshot לפני כל שינוי מסוכן.
טעות נפוצה: להישען על "Brain" של ספק בלי portability plan
פלטפורמות "AI workforce" מוכרות בדיוק את היתרון שהופך לכלא: knowledge-graph שמצטבר אצלן, audit trail שחי ב-OS שלהן. ככל שהצי שלך לומד יותר, כך אתה נעול יותר — כי כל הידע המוסדי שם. תכנן/י את נתיב היציאה ביום הראשון, גם אם אתה לא מתכוון לעזוב. החברה שלך צריכה להיות שלך, לא של הספק.
סיפור אזהרה אמיתי: חברה ישראלית קטנה שאימצה פלטפורמת AI workforce ב-2024, בנתה עליה את כל ה-flow של שירות לקוחות, וב-2025 הספק הכפיל את המחיר פי 3. העברה לספק אחר? בלתי-אפשרית — הכל היה ב-"Brain" שלהם. הם שילמו. אל תהיה הם.
עשה/י עכשיו (7 דקות) — החלטת build-vs-buy במספרים
פתח/י את ה-agent payroll מפרק 6 ומלא/י את שלוש השורות:
- עלות טוקנים חודשית של הצי (₪): ______
- שעות הרכבה צפויות × ערך השעה שלך (₪): ______
- מנוי OS מסחרי חודשי, אם שקלת (₪): ______
אם (1) זול משמעותית מ-(3), ו-(2) נסבל — build. רשום/רשמי את ההחלטה + נימוק במשפט אחד ב-.context/build-vs-buy.md. זה התוצר #3 של הפרק.
פלט צפוי מדויק — דוגמה לקובץ build-vs-buy.md שלם:
# Build vs Buy — Fleet Decision **תאריך:** 2026-06-05 **תוקף עד:** 2026-09-05 (לבדיקה מחדש אחרי רבעון) ## מספרים - (1) עלות טוקנים חודשית: ₪2,400 - (2) עלות הרכבה: 30 שעות × ₪300 = ₪9,000 (חד-פעמי) - (3) מנוי commercial OS (Knowlee-class): ₪1,500/חודש ## נקודת איזון - payback period: 9,000 / 1,500 = 6 חודשים - תוכנית הפעלה: 12+ חודשים → build משתלם ## החלטה **BUILD** (gru-ai + Langfuse + minimal stack לתפקידי תפעול). נימוק: payback תוך 6 חודשים, אין lock-in, הקוד שלנו. ## Portability plan 1. **config ב-git:** `.context/` (roles, sops, lessons, governance) — כבר commit-ed. 2. **memory ב-git:** `lessons/` מתעדכן בכל ריצה; nightly snapshot. 3. **נתיב export:** N/A (אנחנו לא ב-OS מסחרי; אם נחליט לעבור — export = git clone). 4. **snapshot/restore:** `git tag fleet-v0`, `fleet-v1`, וכו'; revert במקרה של רגרסיה. ## תנאי סקירה מחדש אם עלות הטוקנים תעבור ₪5,000/חודש — לבחון buy מחדש.
עשה/י עכשיו (5 דקות) — צור/צרי snapshot ראשון
הרץ/י git add . && git commit -m "fleet v0: org chart + SOPs + loop + governance" בריפו של החברה. זה ה-snapshot הראשון של הצי החי. מעכשיו, כל שינוי מסוכן ב-SOP — אתה במרחק git revert אחד מהשחזור. בדוק/בדקי שה-commit עבר עם git log --oneline -1.
פלט צפוי מדויק של git log --oneline -1:
a3f9b21 (HEAD -> main) fleet v0: org chart + SOPs + loop + governance
אם קיבלת hash של commit — הצי שלך version-controlled. אם לא — תקן/י את ה-remote וה-commit לפני שאתה ממשיך.
שגרת ההרכבה והתחזוקה של הצי
הרכבת צי היא לא אירוע חד-פעמי — היא שגרה שחוזרת בכל פעם שאתה מוסיף תפקיד או משדרג stack. הנה השגרה ששומרת על הצי בריא לאורך זמן:
שגרת ההרכבה (פר-תפקיד חדש) + תחזוקה שבועית
בכל פעם שאתה מרכיב תפקיד חדש לתוך הצי:
- טען role + SOP מה-
.context/לתוך ה-stack (org chart → agent definition; SOP → Skill). - חבר loop — cron + eval gate + reflexion, עם idempotency marker.
- הצמד governance — allowed models, blocked tools, token budget, approval gate לפי הסיכון.
- עטוף ב-trace — ודא/י שה-trace מופיע ב-dashboard לפני שאתה ממשיך.
- smoke test end-to-end — ריצה אחת מלאה, בדיקת שלושת הירוקים (SOP נטען / trace הופיע / idempotency עבד).
- commit snapshot —
git commitעם תיאור התפקיד שנוסף.
תחזוקה שבועית (15 דקות, יום ראשון):
- סקירת ה-traces של השבוע: היו runaway loops? tool-call failures שלא טופלו?
- סקירת ה-lessons שה-reflexion כתב: יש לקח מורעל שצריך למחוק? (אל תבטח עיוורות)
- בדיקת dead-agent: כל סוכן cron באמת רץ? heartbeat ירוק?
- בדיקת versions: יצא עדכון ל-stack ה-pre-1.0 (Orloj)? בדוק/בדקי changelog לפני pin מחדש.
Just One Thing
אם תיקח/י דבר אחד מהפרק הזה, שיהיה זה: הרכב/י תפקיד אחד מקצה לקצה לפני שתיגע/י בשני.
הפיתוי הוא להעלות צי מלא ולהרגיש "חברה אמיתית". המציאות: צי שמחובר חלקית, בלי observability ובלי governance, הוא לא חברה — הוא חבית אבק שריפה שמחכה ל-2am escalation. תפקיד אחד שרץ נקי, נצפה, ומגודר — שווה יותר מארבעה שמתחברים בכאוס.
שלושת התרגילים — כל אחד מפיק תוצר נראה
תרגיל 1: הרכב/י תפקיד אחד חי על ה-stack שבחרת
מטרה: צי חי על תפקיד אחד, מקצה לקצה.
צעדים:
- בחר/י stack לפי ה-Framework בסעיף 1 (minimal / gru-ai / Orloj).
- קח/י את ה-morning brief מפרק 4 והרכב/י דרך חמשת שלבי החיבור (org chart → SOP → loop → autonomy → trace).
- הרץ/י ריצה אחת מלאה.
Setup לפני התרגיל (10 דקות) — בלי זה הסוכן לא ירוץ
הצעדים למעלה מניחים שה-stack, ה-Langfuse וה-Telegram כבר מוכנים. אם משהו חסר — הריצה תיכשל בלי לומר למה. סמן/י את שלושת הבלוקים:
(1) Stack — gru-ai או Orloj (או minimal). עותק מקומי של התבנית + קובץ סביבה:
# gru-ai (clone + env) git clone https://github.com/andrew-yangy/gru-ai.git ~/fleet/gru-ai cd ~/fleet/gru-ai echo 'ANTHROPIC_API_KEY=sk-ant-...' > .env # Orloj (binary + manifest dir) git clone https://github.com/OrlojHQ/orloj.git ~/fleet/orloj cd ~/fleet/orloj git checkout v0.7.2 # pin גרסה (pre-1.0) echo 'ORLOJ_CONFIG=~/fleet/orloj/manifests' >> ~/.bashrc
(2) Langfuse (self-host OSS ב-Docker — ~3 דקות):
# langfuse/docker-compose.yml — מובא כמו ב-docs הרשמיים git clone https://github.com/langfuse/langfuse.git cd langfuse cp .env.example .env # ערוך NEXTAUTH_SECRET + DATABASE_URL docker compose up -d # UI על http://localhost:3000 # צור API key: Settings → Projects → New Key → שמור את # LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY ל-.env של הסוכן
(3) Telegram bot (4 שורות ב-BotFather + env):
- פתח/י @BotFather בטלגרם, שלח/י
/newbot, קבל/יTELEGRAM_BOT_TOKEN. - שלח/י הודעה כלשהי לבוט החדש, ואז קרא/י
https://api.telegram.org/bot<TOKEN>/getUpdatesכדי לחלץ אתchat_idשלך. - הוסף/י ל-
.envשל הסוכן:TELEGRAM_BOT_TOKENו-TELEGRAM_CHAT_ID. - בדיקה מהירה:
curl -s "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage?chat_id=$TELEGRAM_CHAT_ID&text=test"— צריך להגיע "test" לטלגרם.
רק אחרי שכל אחד מהשלושה ירוק — עבור/י ל"צעדים" למעלה.
פלט צפוי מדויק: ב-Telegram/email שלך צריך להגיע הודעה בעברית בפורמט הבא (דוגמה למי שיש לו עסק של סטודיו עיצוב):
☀️ בוקר טוב, 5 ביוני 2026 📊 אתמול בעסק: • הכנסות: ₪3,420 (2 חיובי חידוש + 1 חדש) • לידים חדשים: 8 (3 חמים, 5 קרים) • תור תמיכה: 4 פתוחים (1 דחוף — billing) 🎯 היום: • 3 לידים חמים למעקב אישי • מאמר חדש לפרסום ב-09:30 📰 מתחרים: • Studio-X השיקו חבילה חדשה ב-₪1,990 • Studio-Y פרסמו קייס סטאדי חדש
ובמקביל, ב-Langfuse trace בודד צריך להופיע:
- span
load_sop+ spanload_role(או equivalent ב-stack שלך) - span
llm_callעם model + tokens - span
tool: send_telegramstatus=OK - סה"כ cost: ₪0.10–₪0.20
צילום מסך של שני החלונות זה לצד זה (Telegram + Langfuse) הוא ההוכחה.
תרגיל 2: לכוד/לכדי תקלה אמיתית עם observability
מטרה: להוכיח שמצלמת האבטחה עובדת — שאתה רואה תקלה שבלי trace היית מפספס/ת.
צעדים:
- עטוף/עטפי את הסוכן מתרגיל 1 ב-Langfuse tracing.
- זרוק/זרקי כשל מכוון: נתק/י API key של כלי אחד, או הזרק/י קלט שגורם ללולאה קצרה.
- הרץ/י, ואז פתח/י את ה-trace וזהה/זהי בדיוק איפה התקלה (tool-call failure / loop).
פלט צפוי מדויק: trace ב-Langfuse שמראה את הרצף הבא:
09:15:01 load_sop 0.02s 1,200 tokens OK 09:15:02 load_role 0.01s 600 tokens OK 09:15:03 llm_call_1 1.8s 2,400 tokens OK 09:15:05 tool: fetch_orders 0.4s - ERROR (401 unauthorized) 09:15:05 llm_call_2_retry 1.5s 1,800 tokens OK (סוכן מנסה שוב) 09:15:07 tool: fetch_orders 0.3s - ERROR (401) 09:15:07 llm_call_3_retry 1.6s 1,800 tokens OK 09:15:09 tool: fetch_orders 0.3s - ERROR (401) 09:15:09 fallback_to_human 0.1s 200 tokens OK [summary] total_tokens: 8,000 | cost: ₪0.48 | status: escalated_to_human
בנוסף, משפט אחד שמתאר מה ראית ואיך היית מפספס/ת את זה בלי tracing (למשל: "בלי trace הייתי רואה רק שהסוכן הסתיים עם status=escalated, בלי להבין שהוא ניסה 3 פעמים את אותו fetch_orders ונכשל — ולכן לא הייתי יודע לתקן את ה-API key").
תרגיל 3: כתוב/כתבי מסמך build-vs-buy + portability plan
מטרה: החלטה עסקית מנומקת במספרים, לא בתחושה.
צעדים:
- מלא/י את שלוש השורות מה-do-now של build-vs-buy (טוקנים / זמן הרכבה / מנוי OS).
- כתוב/כתבי החלטה (build או buy) + נימוק במשפט אחד מבוסס על המספרים.
- הוסף/הוסיפי portability plan בן ארבעת הסעיפים (config ב-git, memory ב-git, נתיב export, snapshot/restore).
פלט צפוי מדויק: קובץ .context/build-vs-buy.md commit-ed ל-git (עם git log --oneline -1 שמאשר commit חדש), המכיל בדיוק את הסעיפים הבאים:
- כותרת עם תאריך ותוקף לבדיקה מחדש.
- טבלה/רשימה של 3 מספרים בש"ח (טוקנים, הרכבה, מנוי OS).
- נקודת איזון (payback period בחודשים).
- החלטה ב-build/buy + נימוק במשפט אחד.
- portability plan עם 4 סעיפים (config/memory ב-git, נתיב export, snapshot/restore).
- תנאי סקירה מחדש (מתי לבחון מחדש).
הוכחת-commit: git log --oneline -1 מחזיר hash חדש עם הודעה ברורה (למשל build-vs-buy decision + portability plan).
תבנית מוכנה ל-Excel / Google Sheets (אופציונלי, בנוסף לקובץ ה-Markdown)
אם אתה רגיל/ה לחשב בגיליון — העתק/י את 4 העמודות הבאות ל-Google Sheets (A1:D1 כותרות, A2:D2 המספרים שלך):
A | B (₪/חודש) | C (₪ חד-פעמי) | D (הערות) 1 עלות טוקנים צי | 2,400 | - | מתוך agent payroll פרק 6 2 הרכבה (שעות × שווי) | - | 9,000 | 30 שעות × ₪300 3 מנוי commercial OS | 1,500 | - | Knowlee-class (אם שקלת) 4 payback (חודשים) | =C2/B3 | - | נקודת איזון: 6.0
הפונקציה בעמודה D4: =ROUND(C2/B3,1) — payback בחודשים. אם התוצאה קטנה מתוכנית ההפעלה שלך (בדרך כלל 6–12 חודשים) — build. אם buy — רשום בעמודה D את התנאי לסקירה מחדש (למשל: "אם עלות טוקנים > ₪5,000/חודש → build"). שמור/שמרי את הגיליון ב-git לצד build-vs-buy.md כ-build-vs-buy.xlsx או קישור Google Sheets ב-comment של ה-commit.
מילון מונחים
- Template OSS (תבנית קוד-פתוח)
- צי מוכן-להרכבה ברישיון פתוח — org chart, pipeline ו-memory מובנים. דוגמאות מאומתות: gru-ai (MIT), Hermes. חינם ברישיון; משלם/ת טוקנים.
- gru-ai
- תבנית MIT (
andrew-yangy/gru-ai) שהופכת את Claude Code לצוות 11 סוכנים עם pipeline בן 15 צעדים וזיכרון.context/version-controlled. הכי טוב ל-build/ship. - Orloj
- תשתית-סוכנים-כקוד ברישיון Apache-2.0 (
OrlojHQ/orloj): מצהירים agents/tools/policies כ-YAML, וה-runtime מתזמן, אוכף governance fail-closed, ומריץ. pre-1.0 — לקבע גרסה. - Hermes Agent
- תבנית OSS של Nous Research שמתפרסמת כדאון (daemon) always-on שרץ scheduled cron tasks ושומר cross-session memory. מתאים למי שרוצה סוכן שלא נכבה אף פעם וזוכר בין סשנים.
- Knowlee OS
- פלטפורמה מסחרית שמציגה את ה-narrative של "AI workforce" — orchestration backbone אחד שמפעיל 5 verticals של החברה (מכירות, כשרונות, שיווק, תפעול, כספים). שימושי כ-reference ארכיטקטוני, לא כהמלצת קנייה בשל lock-in.
- CrewAI
- framework OSS שמבוסס על role+goal+backstory; ה-easiest learning curve מבין ה-frameworks הגדולים (~20 שורות להתחלה). הכי מתאים למודל ה-org chart ל-operator עסקי.
- LangGraph
- framework של LangChain שמאפשר directed graph עם conditional edges, audit trails, ו-rollback points. הכי מתאים ל-compliance ולשליטה מלאה. עקף את CrewAI בכוכבי GitHub בתחילת 2026.
- infrastructure-as-code (תשתית כקוד)
- גישה שבה מצהירים על המערכת (כאן: סוכנים, כלים, מדיניות, תזמונים, אישורים) כ-config מוצהר וגרסאי, כך שהיא reproducible וניתנת ל-version control.
- Observability (תצפית)
- היכולת לראות מה הצי עושה ברגע אמת ובדיעבד — traces של כל צעד, פירוק model/tool-call, retries, loops. "מצלמת האבטחה" על החברה.
- APM (Application Performance Monitoring)
- ניטור ביצועי אפליקציה מסורתי — רואה שגיאות HTTP, latency, throughput. לא רואה את שלוש התקלות הסוכניות (tool-call failure, context truncation, runaway loop) כי הן "תקינות טכנית" אך שגויות מהותית.
- Trace (מסלול ריצה)
- תיעוד node-by-node של ריצת סוכן: לאיזה מודל פנה, איזה כלי קרא, כמה ניסיונות, וכמה טוקנים. מה ש-Langfuse/Braintrust/LangSmith מציגים.
- Span
- צומת בודד בתוך trace — יחידת עבודה אחת (למשל
llm_call,tool: fetch_orders,load_sop). לכל span יש duration, tokens, ו-status. - tool-call failure
- כלי שהסוכן קרא לו נכשל, אך הסוכן המשיך כאילו כלום. בלתי-נראה ל-APM רגיל; אחת משלוש התקלות הנפוצות בסוכנים.
- context truncation
- ההיסטוריה גדלה מעבר ל-context window, חלקים נחתכים בשקט, והסוכן "שוכח". אין שגיאה — רק איכות יורדת.
- runaway loop
- הסוכן נתקע בלולאה וחוזר על צעד בלי להתקדם, ושורף טוקנים. מתגלה רק ב-trace מלא — וזו סיבה מרכזית ל-token budget.
- Governance (ממשל)
- חוקים שנאכפים על הסוכן בזמן ריצה: allowed models, blocked tools, token budget, approval gates. כשהיא fail-closed, ברירת המחדל היא "חסום".
- fail-closed (כושל-סגור)
- עיקרון אבטחה: אם בדיקה נכשלת או לא ברורה, הפעולה נחסמת ולא עוברת. ההפך מ-fail-open (שמתיר בספק).
- fail-open (כושל-פתוח)
- ההפך מ-fail-closed: אם בדיקה נכשלת, הפעולה מותרת כברירת מחדל. מסוכן ל-governance; לפעמים מוצדק לפעולות קריאה read-only שכשל בהן רק מאט.
- audit trail (יומן ביקורת)
- רישום אוטומטי של כל פעולה — מה נוסה, מה אושר, מה נחסם. ב-runtime governance הוא ברירת מחדל; compliance מובנה.
- allowed models
- רשימה לבנה של מודלים שהסוכן רשאי לקרוא אליהם. מנהל P&L (אוסר על קפיצה למודל יקר למשימה זולה) ומצמצם סיכון אבטחה.
- blocked tools
- רשימה שחורה של כלים שהסוכן לא רשאי לקרוא אליהם. צמצום blast-radius: סוכן תוכן לא צריך גישה ל-API תשלומים.
- token budget
- תקרת טוקנים פר-ריצה או פר-יום לסוכן. עוצרת runaway loop לפני שהוא שורף תקציב; מיושמת ב-Orloj כ-
tokenBudgetPerRunו-tokenBudgetPerDay. - child depth
- עומק מקסימלי של תת-משימות שסוכן יכול ליצור. מונע "התפוצצות" שבה סוכן יוצר סוכנים שיוצרים סוכנים עד שכל ה-budget נגמר.
- approval gate
- נקודת בדיקה אנושית לפני ביצוע פעולה רגישה (כסף, רשומות, הרשאות). ב-Orloj:
ToolApprovalאוTaskApproval. ב-minimal: תור אנושי. - build-vs-buy
- ההחלטה בין הרכבת צי מ-OSS שאתה הבעלים שלו (build) לבין רכישת OS מסחרי מוכן (buy, עם lock-in). מוכרעת ב-P&L, לא בתחושה.
- payback period (נקודת איזון)
- מספר החודשים שבהם העלות החד-פעמית של build (שעות עבודה × ערך שעה) מתאזנת מול החיסכון החודשי של build על buy. קצר יותר = build משתלם יותר.
- portability plan (תוכנית ניוד)
- ארבעה סעיפים שמבטחים נגד lock-in: config ב-git, memory ב-git, נתיב export מוודא מראש, ו-snapshot/restore. החברה שלך נשארת שלך.
- vendor lock-in (נעילת ספק)
- מצב שבו החלפת ספק טכנולוגי כל-כך יקרה או בלתי-אפשרית, שאתה למעשה "כלוא" אצלו. נגד זה נכתב ה-portability plan.
- Langfuse
- כלי observability OSS ברישיון MIT. חינם ל-self-host; נרכש על-ידי ClickHouse בינואר 2026 אך נשאר OSS. ברירת המחדל ל-operator עסקי שרוצה $0 infra ו-portability מלאה.
- Braintrust
- כלי observability + eval-first עם ה-CI/CD eval gates החזקים ביותר. Free tier הנדיב ביותר בקטגוריה: 1M spans/חודש, 10K eval runs.
- LangSmith
- כלי observability native ל-LangChain/LangGraph. node-level state diffs, replay מול מודלים חדשים. Free tier קיים, per-seat מעליו.
- smoke test (בדיקת עשן)
- ריצה מינימלית מקצה לקצה שמוודאת שהמערכת עובדת — בלי לבדוק כל פינה. "האם הסוכן רץ? האם ה-trace מופיע?" — שלוש בדיקות, לא שלושים.
- pin version (קיבוע גרסה)
- ציון גרסה מדויקת של תלות (למשל
orloj==0.7.2במקוםorloj>=0.7) כדי למנוע שבירה שקטה כשיוצא עדכון. חובה לתלות pre-1.0. - dead-agent alerting
- התראה כשסוכן cron לא רץ במועד המצופה (heartbeat שלא הגיע). מונע "מוות שקט" של סוכן שאף אחד לא שם לב אליו.
- RFC 2119
- תקן אינטרנט שמגדיר מילות מפתח MUST / SHOULD / MAY / SHOULD NOT / MUST NOT. משמש בפרק 3 לכתיבת SOPs אגנטיים מדויקים.
- Skills (Claude Code)
- קבצי הנחיה ש-Claude Code טוען אוטומטית בעת הצורך. "כותבים פעם אחת, נטען לבד" — מקבילה ל-SOPs של סוכן ב-stack ה-minimal.
בדוק/בדקי את עצמך
- מתי תבחר/י Orloj על פני minimal stack? נמק/י לפי שתי תכונות של ה-use-case שלך (רמז: סיכון הפעולות + נוחות YAML).
- מה ההבדל בין governance שנאכפת ב-runtime לבין "כתבתי בהנחיה שאסור"? תן/י דוגמה לפעולה שהשנייה לא תעצור והראשונה כן.
- שלוש התקלות שרק observability חושפת — מה הן, ולמה APM רגיל מפספס כל אחת?
- למה "free OSS" עדיין יש לו חשבון? מה משלמים גם כש-gru-ai/Orloj חינמיים ברישיון?
- מהם ארבעת סעיפי ה-portability plan, ולמה צריך לכתוב אותו לפני שתלויים בספק?
תשובות קצרות לבדיקה עצמית (לא להציץ לפני שענית):
- Orloj כשהסוכן נוגע בכסף/רשומות/הרשאות (audit trail חובה) וגם אתה נוח עם YAML. אחרת — minimal.
- הנחיה היא בקשה (המודל "אולי" יציית); runtime הוא קוד שחוסם. לדוגמה: הנחיה "אל תחייב יותר מ-₪100" — המודל עלול לחיוב 120 בגלל "case מיוחד"; runtime של Orloj עם
approval gate: ₪100פשוט חוסם את הקריאה. - tool-call failure (HTTP הצליח, הסוכן המשיך על תוצאה ריקה); context truncation (אין שגיאה, ההיסטוריה נחתכה); runaway loop (כל קריאה תקינה, הדפוס הוא התקלה). APM רגיל רואה רק "הבקשה הצליחה" — לא את ההיגיון של הסוכן.
- הרישיון חינם — הטוקנים שמתחת לא. כל קריאת מודל עולה כסף; צי always-on עלול לעלות כמו משכורת.
- config ב-git, memory ב-git, נתיב export, snapshot/restore. לפני — כי ברגע שה-data נכנס ל-OS של ספק, הוא נהפך לקשה לחילוץ; תכנון מראש הוא ההבדל בין "אני עובר ספק" לבין "אני תלוי בספק".
סיכום הפרק וגשר ל-capstone
- שלוש דרכים להרכיב, אחת נכונה לך. framework (CrewAI/LangGraph), template OSS (gru-ai/Hermes), agent OS (Orloj/Knowlee), או minimal (API+cron+git). ההחלטה לפי רמת נוחות הנדסית + כמה governance ה-use-case דורש — לא לפי מה שמגניב.
- gru-ai = צוות מוכן ל-build/ship (11 סוכנים, pipeline 15 צעדים,
.context/memory). Orloj = governance production (agents-as-YAML, fail-closed, approval native). שתיהן דוגמאות מאומתות, לא המלצות קנייה. - החיבור פותר את בעיית נקודת-האינטגרציה. org chart → SOPs כ-Skills → loop → autonomy → trace, שכבה אחר שכבה, תפקיד אחד מקצה לקצה לפני הבא.
- observability היא דרישת-הקדם השקטה. רוב התקלות הן tool-call failures, context truncation ו-runaway loops — בלתי-נראות ל-APM רגיל. Langfuse (OSS) הוא ברירת המחדל ל-operator שמתחיל.
- governance נאכפת ב-runtime, fail-closed. allowed models, blocked tools, token budget, approval gates — עם audit trail כברירת מחדל. הנחיה היא תקווה; governance ב-runtime היא חוק.
- build-vs-buy מוכרע ב-P&L, ו-portability plan נכתב לפני התלות: config+memory ב-git, נתיב export מוודא, snapshot/restore. החברה שלך נשארת שלך.
הגשר לפרק 8 (ה-capstone): עכשיו יש לך תשתית — stack נבחר, צי חי על תפקיד אחד, observability עובדת, governance מוגדרת, ו-portability plan כתוב. בפרק הבא נרחיב את התפקיד האחד לצי ארבעה תפקידים מלא: SDR שמסנן לידים, writer+editor עם eval-gate, support triage עם reflexion, ו-finance renewal עם approval gate. נחבר agent payroll בש"ח, נתמחר הצעת "תפקיד-כשירות" מול ~₪45,000 של סוכנות 5 אנשים, ונסגור עם production checklist ו-final risk audit. כל מה שבנית בשבעת הפרקים נפגש שם — וה"חברה של אחד" שלך רצה כעסק.
צ'קליסט הפרק — סמן/י לפני המעבר ל-capstone
- בחרתי stack (minimal / gru-ai / Orloj / framework) ותיעדתי למה לפי שלוש שאלות ההחלטה
- וידאתי שה-
.context/repo מכיל roles/ + sops/ + lessons/ ב-git - הרכבתי תפקיד אחד מקצה לקצה דרך חמשת שלבי החיבור (org chart → SOP → loop → autonomy → trace)
- ה-smoke test עבר: SOP נטען / trace הופיע / idempotency marker נכתב
- חיברתי observability (Langfuse/Braintrust) לפחות על קריאת מודל אחת
- לכדתי לפחות תקלה אחת ב-trace (tool-call failure או runaway loop)
- כתבתי governance plan לכל תפקיד: allowed models / blocked tools / token budget / approval
- וידאתי שכל פעולת כסף/רשומות מגודרת ב-approval gate עם סף ₪ + named approver
- קיבעתי (pin) גרסה לכל תלות pre-1.0 (למשל Orloj) ותיעדתי אותה
- מילאתי החלטת build-vs-buy במספרים מה-agent payroll (לא בתחושה)
- כתבתי portability plan בן ארבעת הסעיפים (config/memory ב-git, נתיב export, snapshot/restore)
- ביצעתי
git commitראשון של הצי החי (snapshot v0) - הגדרתי dead-agent alerting / heartbeat לכל סוכן cron (לא מת בשקט)
- קבעתי שגרת תחזוקה שבועית (סקירת traces + lessons + versions)
- וידאתי שכל שלושת התוצרים מוכנים: צי חי + observability dashboard + מסמך build-vs-buy/portability
שלוש הטעויות שעולות הכי יקר
- טעות נפוצה: לבנות net-new על framework קפוא (AutoGen ב-maintenance mode) או לקבע ל-API pre-1.0 (Orloj) בלי pin — הצי נשבר כשה-API זז מתחתיו. תיקון: אמת/י סטטוס framework לפני התחייבות, ו-pin כל גרסת pre-1.0. מבחן מעשי: בדוק/בדקי את ה-release notes של 3 החודשים האחרונים. אם אין קומיטים חדשים — הפרויקט מת, ולא תקבל תיקונים כשתצטרך.
- טעות נפוצה: לדלג על observability "עד שיהיה זמן" — tool-call failures ו-runaway loops בלתי-נראים ל-APM רגיל, ומתגלים רק כשלקוח מתלונן (ה-2am escalation). תיקון: עטוף/עטפי trace אחד לפני שאתה מעלה תפקיד ל-live. ההשקעה: שעה. החיסכון: שעת שינה × N תקלות.
- טעות נפוצה: להישען על "Brain" של vendor מסחרי בלי portability plan — הנתונים נעולים ב-OS שלהם ואין נתיב יציאה. תיקון: ודא/י נתיב export ביום הראשון, ושמור/שמרי config+memory ב-git שלך. שאלה שצריך לשאול לפני חתימה: "תראה/י לי כיצד אני מוציא את כל המידע שלי בפורמט פתוח, ואם היום החברה נסגרת — מה קורה ליום ה-91?"